Quickstart
Certivu gives your AI-generated content a cryptographic signature — a tamper-evident, quantum-resistant proof of provenance. Anyone can verify that signature for free, forever.
1. Create an account
Section titled “1. Create an account”Sign up at certivu.ai/register. You’ll get a Free tier organization immediately — no credit card required.
After signing up, verify your email to unlock all features.
2. Register a generator
Section titled “2. Register a generator”A generator represents an AI model or pipeline. Each generator has its own ML-DSA keypair — the private key stays on your server, the public key is registered with Certivu.
In your project:
bun run infra/scripts/gen-keys.ts --name "stable-diffusion-xl"# Prints: kid, public key (base64), private key (keep secret)Then register it in the dashboard → Generators page using the Add generator wizard, or via CLI.
3. Install the SDK
Section titled “3. Install the SDK”npm install @certivu/sdk# orbun add @certivu/sdk4. Sign content
Section titled “4. Sign content”import { CertivuClient } from '@certivu/sdk'
const certivu = new CertivuClient({ apiKey: process.env.CERTIVU_API_KEY, // ctv_key_… from the dashboard generatorId: process.env.CERTIVU_GENERATOR_ID, privateKey: process.env.CERTIVU_PRIVATE_KEY, // from gen-keys.ts — never expose})
const imageBuffer = await fs.readFile('./output.jpg')
const { token } = await certivu.sign({ content: imageBuffer, model: 'stable-diffusion-xl',})
// Embed `token` in XMP metadata or pass it alongside the imageconsole.log(token) // ctv_7f3kx9mq2...The SDK automatically:
- Hashes the content with SHA-3
- Signs the hash with ML-DSA (FIPS 204, post-quantum)
- Stores a provenance record in Certivu
- Returns a compact
ctv_token
5. Verify content
Section titled “5. Verify content”// Token provided — fast pathconst result = await certivu.verify({ content: imageBuffer, token: 'ctv_7f3kx9mq2...',})
// No token — Certivu auto-extracts from XMP metadata or frequency-domain watermarkconst result = await certivu.verify({ content: imageBuffer })
if (result.authentic && result.confidence === 'high') { console.log('Verified:', result.provenance.org, result.provenance.signed_at)}Verification is always free
Section titled “Verification is always free”No API key required to verify. Call POST /v1/verify directly or use the public verifier at certivu.ai/verify.
What’s next
Section titled “What’s next”- Authentication guide — account flow, API keys vs session JWTs
- SDK Usage guide — batch verification, audit log, advanced options
- Pricing & Quotas — plan limits and overage billing
- API Reference: Auth — all
/v1/auth/*endpoints - API Reference: Sign — raw HTTP signing endpoint