Every asset policy matches and the stated total is within budget.
One call. One decision.
POST a declared set of asset identifiers plus the intended use and budget. Receive a composite decision, quote, obligations, source evidence, and signed receipt.
At least one policy contains a hard prohibition for the requested use.
Authority, policy data, or budget alignment needs a human decision.
POST /v1/clearance
Demo asset IDs work without authentication. Publisher assets requireAuthorization: Bearer with a key issued in Studio.
{
"request_id": "campaign-1042",
"assets": [{ "asset_id": "asset:original-001" }],
"use": {
"purpose": "generation",
"commercial": true,
"attribution_supported": true,
"territory": "worldwide",
"model": "creative-model-v1"
},
"budget": { "max_total_cents": 2000 }
}{
"decision": "ALLOW",
"reason_code": "COMPOSITE_POLICY_RESULT",
"quote": { "currency": "USD", "total_cents": 850 },
"obligations": [
{ "type": "attribution", "value": "Sound source: Northline" },
{ "type": "revenue_share", "value": 250 }
],
"receipt": {
"schema": "iprs.receipt/1",
"request_id": "campaign-1042",
"decision": "ALLOW",
"signature": { "alg": "HS256", "value": "..." }
}
}Safe defaults
Composite
Any hard prohibition makes the complete request DENY. Any unresolved element makes it REVIEW.
Idempotent
For authenticated calls, repeating the same request_id returns the stored response.
Budget-aware
A quote above the caller maximum produces REVIEW instead of silently rewriting terms.
Evidence-first
Every outcome is signed. The receipt proves evaluation, not ownership or legality.
Source-preserving
Each asset result names the policy source used in the decision.
Bounded
The proof accepts 1–50 declared assets and does not perform similarity detection.
Start with a policy, not an integration meeting.
Sign in, publish an asset, issue a key, and call the endpoint. No other IPRS API is required.
Open publisher studio