PRE-GEN
Integrate
Open protocol · Apache-2.0

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.

01 — The gap

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.

/01

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.

/02

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.

/03

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.

02 — The studio file

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.

E&O-READY

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.

TRAVELS IN-FILE

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.

RESOLVES FOREVER

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.

See the full ecosystem →

03 — Integration

Three calls between your prompt and the model.

CALL 1

Detect

Poll the subject index (ETag-cached) and match user prompts against registered people, brands, voices, styles. Both SDKs ship identical matching semantics.

CALL 2

Verify

POST /v1/verify/ with the matched subject. You get a signed decision: allowed (with obligations) or refused (with a reason code).

CALL 3

Prove

Verify the signature against the operator key set, store the decision, and — after generation — file a receipt proving what was actually produced.

python · quickstartpip install prampta
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
04 — Protocol objects

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.

ObjectVersion markerSigned byWhat it proves
Decisionpg.decision.v1Registry operatorThe allow/deny answer, its policy version, and cache scope
Licensepg.license.v2Rights holder + operatorScoped permission: modality, channel, territory, time
Receiptpg.receipt.v2ProviderThat a specific generation actually happened, under which decision
Evidence bundlepg.evidence.v1Registry operatorThe full decision + license + audit chain, verifiable offline
Assertionpg.assertion.v1Registry operatorPortable provenance claim — embeddable in C2PA manifests
05 — Identifiers

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.

SUBJECT

PG-000042*

Serial + check character. Assigned once, resolves forever — including two legacy shapes from before the check character existed.

LICENSE

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.

SDKs on GitHub PRAMPTA ↗