Skip to content

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.

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.

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:

Terminal window
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.

Terminal window
npm install @certivu/sdk
# or
bun add @certivu/sdk
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 image
console.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
// Token provided — fast path
const result = await certivu.verify({
content: imageBuffer,
token: 'ctv_7f3kx9mq2...',
})
// No token — Certivu auto-extracts from XMP metadata or frequency-domain watermark
const result = await certivu.verify({ content: imageBuffer })
if (result.authentic && result.confidence === 'high') {
console.log('Verified:', result.provenance.org, result.provenance.signed_at)
}

No API key required to verify. Call POST /v1/verify directly or use the public verifier at certivu.ai/verify.