For AI companies. Replace guess with proof.
A single server-to-server call at inference time tells your model whether a depiction is authorized — cryptographically signed, 5–30 ms, no prompt changes.
Why it's worth integrating.
Every allow-decision carries a signed license with the rights-holder's own key. When a complaint arrives, the answer is an evidence bundle that any third party can verify offline — not a debate about model behavior.
Brand campaigns, celebrity endorsements, estate-authorized depictions — anything that's legitimately licensed today gets blocked by blanket safety filters tomorrow. PP gives the model a clean way to say "yes, this one is authorized".
A verification round-trip is typically 5–30 ms. No protocol material in prompts, no UI changes, no SDK gymnastics — a single server-to-server call slotted into the existing serving pipeline.
The EU AI Act and emerging US legislation increasingly demand authorization, attribution, and auditability for synthetic content. PP's append-only hash-chained audit log with external anchoring produces the evidence record regulators are starting to ask for.
PP is open source under Apache-2.0, with no privileged operator. The architecture supports multiple registries cross-signing each other — providers integrate once, not per-vendor.
How it fits into your pipeline.
When a user sends a prompt, the provider detects whether it references a registered subject, then issues a server-to-server query to the registry. The registry evaluates opt-outs, license status, scope, and extensions — returning a signed decision.
Integration example.
A single server-to-server call before generation. No SDK required.
// Pre-generation verification — server-side // Call this before generating any content depicting a subject const response = await fetch('https://registry.prampta.com/v1/verify', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + PROVIDER_TOKEN, }, body: JSON.stringify({ provider_id: 'your-provider-id', licensee_id: 'licensee-account-id', subject_id: 'subject-id-or-null', prompt: userPrompt, model: 'your-model-name', modality: 'image', intended_use: { channel: 'social', product: 'campaign-spring-2026', } }) }); const decision = await response.json(); // decision.allowed — boolean // decision.code — PP_ALLOWED | PP_SUBJECT_OPTED_OUT | ... // decision.obligations — required disclosures, labels // decision.decision_id — unique, for audit trail if (decision.allowed) { generateContent(userPrompt, decision); } else { refuseGeneration(decision.code); }
Unknown rules are enforced by refusal, never by skip. If the verifier doesn't understand a license term, it does not pass.