FOR DEVELOPERS

Replace refusal with verification

Rights.dev gives AI platforms a machine-queryable music licensing decision. One query returns a signed credential or a rejection reason.

Join →
THE PROBLEM

Without verification, decline is default

Without independent verification, refusal is the safe default. Query Rights.dev before serving: status: "cleared" means proceed; status: "not_cleared" means decline with a reason code.

AUDIT TRAIL

Every query is logged

Every verification query is logged and timestamped, creating a documented basis for each serve-or-decline decision.

HOW IT WORKS

One query. Signed answer.

Send a license ID and receive either a signed credential or a rejection reason code.

Query
GET api.rights.dev/v1/verify/{license_id}
Authorization: Bearer {api_key}
Response — verified
{
  "status": "cleared",
  "credential": {
    "license_id": "rd-2026-0042817",
    "rights_holder": {
      "id": "rh-00194",
      "name": "[Rights Holder Name]"
    },
    "publisher": {
      "id": "pub-00831",
      "name": "[Publisher Name]"
    },
    "permissions": [
      "digital_delivery",
      "ai_commerce",
      "print_on_demand"
    ],
    "valid_from": "2026-01-01T00:00:00Z",
    "valid_until": "2026-12-31T23:59:59Z",
    "revoked": false,
    "issued_by": "rights.dev",
    "issued_at": "2026-01-15T09:32:11Z",
    "signature": "eyJhbGciOiJFZERTQSJ9..."
  }
}
Response — not verified
{
  "status": "not_cleared",
  "reason": "license_expired",
  "license_id": "rd-2025-0019204",
  "checked_at": "2026-03-15T14:22:07Z"
}
THE CREDENTIAL
RightsClearedCredential
interface RightsClearedCredential {
  license_id:     string;
  rights_holder:  Entity;
  publisher:      Entity;
  permissions:    Permission[];
  valid_from:     ISO8601;
  valid_until:    ISO8601 | null;
  revoked:        boolean;
  revoked_at?:    ISO8601;
  issued_by:      "rights.dev";
  issued_at:      ISO8601;
  signature:      string;       // Ed25519
  schema_version: string;
}

type Permission =
  | "digital_delivery"
  | "ai_commerce"
  | "pay_per_download"
  | "print_on_demand"
  | "self_print"
  | "educational"
  | "commercial";

Schema: schema.rights.dev/v1publishing Q3 2026

Endpoints
GET  api.rights.dev/v1/verify/{license_id}
GET  api.rights.dev/v1/credential/{credential_id}
GET  api.rights.dev/v1/publisher/{publisher_id}/credentials
POST api.rights.dev/v1/webhook
Base URL
https://api.rights.dev/v1
Auth
Bearer token
Format
JSON
Target latency
<100ms p95
COMPATIBILITY

Works with both AI commerce protocols

Rights.dev sits above both major AI commerce protocols as a licensing verification layer. One integration. Both protocols. Any licensed content request that arrives through either protocol can be verified before completion.

AGENTIC COMMERCE PROTOCOL
OpenAI + Stripe

Query Rights.dev before completing a transaction via the Agentic Commerce Protocol. Receive a signed credential or a structured rejection with a reason code.

GET api.rights.dev/v1/verify/{license_id}
UNIVERSAL COMMERCE PROTOCOL
Google + Shopify

Query Rights.dev before serving a Universal Commerce Protocol content request. The same signed credential format applies across both protocols.

GET api.rights.dev/v1/verify/{license_id}

Base URL: https://api.rights.dev/v1 —  Target latency: <100ms p95

Join as a developer

Join