PRE-GENerationalAuthorization.
PRE-GEN is the open protocol for licensing AI-generated content. Rights holders set the terms. AI companies ask before they generate. Everyone gets signed proof.
“Did anyone authorize this generation?” · “Am I allowed to generate it?” — one protocol answers both. With signatures, not promises.
Provenance standards label output. None of them ask permission.
C2PA and similar efforts describe what was generated. PRE-GEN determines whether it should be generated — the consent decision happens before the model runs.
Consent, not detection
Detection and watermarking happen after the fact. PRE-GEN puts a rights registry and a license check in front of generation — the model asks first.
Proof, not policy
Every decision is Ed25519-signed over canonical bytes and written to a hash-chained audit log. Your compliance record is verifiable by anyone — including a court — years later.
Refusals you can act on
Denials carry machine-readable PG_* codes with hard/soft classification — so your product can offer a license flow, back off, or reshape the request instead of guessing.
Chain of title for AI content — generated automatically.
Film and TV studios, ad agencies, and game teams using generative tools face a distribution-blocking question: prove the rights behind every AI-generated scene. PRE-GEN turns that paper chase into a pipeline artifact — scoped license, signed decision, receipt, audit chain — exportable as evidence for E&O insurers, distributors, and courts. And with C2PA assertions, the permission travels inside the file itself.
The file insurers ask for
Every authorized generation leaves an evidence bundle: who granted the right, on what terms, who asked, what was produced. Signed, hash-chained, independently verifiable — hand it to the insurer instead of an inbox of PDFs.
Permission inside the C2PA manifest
A PRE-GEN assertion rides inside the content’s C2PA manifest, pointing at the signed decision and license. Strip the file from your archive and the metadata still answers the question.
PG codes are permanent
Cited in a license today, resolvable by anyone in ten years — pregen.org/lookup resolves any code without an account. Chain of title that outlives the vendor.
Three calls between your prompt and the model.
Detect
Poll the subject index (ETag-cached) and match user prompts against registered people, brands, voices, styles. Both SDKs ship identical matching semantics.
Verify
POST /v1/verify/ with the matched subject. You get a signed decision: allowed (with obligations) or refused (with a reason code).
Prove
Verify the signature against the operator key set, store the decision, and — after generation — file a receipt proving what was actually produced.
from prampta import Prampta
pg = Prampta(
base_url="https://api2.prampta.com",
provider_id="your-provider-id",
licensee_id="your-licensee-id",
token="pair-token",
)
hits = pg.match_subjects(user_prompt)
for h in hits:
pg.assert_allowed(h["subject_id"], prompt=user_prompt, modality="image")
# no exception → all matched subjects authorized, proceed with generation
Five signed objects. Every one carries its schema version.
Each object is canonical JSON, signed with Ed25519, with the signature excluded from its own signed bytes. Additive field changes are free; meaning changes bump the version.
| Object | Version marker | Signed by | What it proves |
|---|---|---|---|
| Decision | pg.decision.v1 | Registry operator | The allow/deny answer, its policy version, and cache scope |
| License | pg.license.v2 | Rights holder + operator | Scoped permission: modality, channel, territory, time |
| Receipt | pg.receipt.v2 | Provider | That a specific generation actually happened, under which decision |
| Evidence bundle | pg.evidence.v1 | Registry operator | The full decision + license + audit chain, verifiable offline |
| Assertion | pg.assertion.v1 | Registry operator | Portable provenance claim — embeddable in C2PA manifests |
PG codes: permanent, check-summed, human-transcribable.
Every subject and license carries an identifier designed to be read off a screenshot and retyped correctly. Crockford base32 — no I L O U — with a mod-37 check character that catches every single-character substitution and every adjacent transposition. The format is frozen; codes are cited forever.
PG-000042*
Serial + check character. Assigned once, resolves forever — including two legacy shapes from before the check character existed.
PG-STD-000001-K7M2QX9
Class + subject serial + random tail. A license id names its subject without a lookup — but is always resolved by lookup, never parsed.
Open specification. Commercial registry.
The PRE-GEN specification, test vectors, and SDKs are Apache-2.0 — free for anyone to implement, no permission required. PRAMPTA is the protocol’s first commercial implementation and registry operator, where rights holders register and AI providers get credentials.