Skip to main content
Experimental. Brand rights lifecycle (get_rights, acquire_rights, update_rights) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks’ notice. Sellers implementing any of these tasks MUST declare brand.rights_lifecycle in experimental_features. See experimental status for the full contract.
Modify an existing rights grant — extend dates, adjust impression caps, change pricing, or pause/resume. Parallels update_media_buy. Only the fields you provide are updated; omitted fields remain unchanged.

Schema

Response time

Seconds for most updates. Pricing changes may require rights holder approval and take longer.

Quick start

{
  "rights_id": "janssen_likeness_voice",
  "end_date": "2026-09-30"
}
{
  "rights_id": "janssen_likeness_voice",
  "impression_cap": 200000
}
{
  "rights_id": "janssen_likeness_voice",
  "paused": true
}
{
  "errors": [
    {
      "code": "invalid_update",
      "message": "New impression_cap (50000) must be >= impressions already delivered (78432)"
    }
  ]
}
{
  "rights_id": "janssen_likeness_voice",
  "terms": {
    "pricing_option_id": "monthly_exclusive",
    "amount": 350,
    "currency": "EUR",
    "period": "monthly",
    "uses": ["likeness", "voice"],
    "impression_cap": 200000,
    "overage_cpm": 4.00,
    "start_date": "2026-04-01",
    "end_date": "2026-09-30",
    "exclusivity": {
      "scope": "Exclusive licensee for Daan Janssen in NL for food/restaurant brands",
      "countries": ["NL"]
    }
  },
  "generation_credentials": [
    {
      "provider": "midjourney",
      "rights_key": "rk_mj_abc123_renewed...",
      "uses": ["likeness"],
      "expires_at": "2026-09-30T23:59:59Z"
    },
    {
      "provider": "elevenlabs",
      "rights_key": "rk_el_def456_renewed...",
      "uses": ["voice"],
      "expires_at": "2026-09-30T23:59:59Z"
    }
  ],
  "rights_constraint": {
    "rights_id": "janssen_likeness_voice",
    "rights_agent": { "url": "https://agent.lotientertainment.com/mcp", "id": "loti_entertainment" },
    "valid_from": "2026-04-01T00:00:00Z",
    "valid_until": "2026-09-30T23:59:59Z",
    "uses": ["likeness", "voice"],
    "countries": ["NL"],
    "impression_cap": 200000,
    "approval_status": "approved",
    "verification_url": "https://agent.lotientertainment.com/rights/rts_abc123/verify"
  },
  "implementation_date": "2026-06-28T14:30:00Z"
}

Parameters

Request

FieldTypeRequiredDescription
rights_idstringYesRights grant identifier from acquire_rights
accountaccount-refConditionalAccount context. Pass when the brand agent has a governance agent bound to this brand+operator via sync_governanceupdate_rights is a modification-phase governance trigger, and the brand agent uses account to resolve the bound agent when computing the incremental commit delta. When both an inline governance_context token and a bound agent are present, the inline token wins.
end_datedateNoNew end date (must be >= current end date)
impression_capintegerNoNew impression cap (must be >= impressions already delivered)
pricing_option_idstringNoSwitch to a different pricing option from the original get_rights offering
pausedbooleanNoPause (true) or resume (false) the grant
idempotency_keystringNoClient-generated key for safe retries

Response

FieldTypeDescription
rights_idstringThe updated rights grant identifier
termsobjectUpdated contractual terms (same shape as acquire_rights acquired response)
generation_credentialsarrayRe-issued credentials with updated expiration and caps
rights_constraintobjectUpdated constraint for re-embedding in creative manifests
pausedbooleanWhether the grant is currently paused (included when pause state changes)
implementation_datedatetime|nullWhen changes take effect (null if pending approval)

Re-issued credentials

When you extend dates or change pricing, the rights agent re-issues generation credentials with updated expiration. Both old and new credentials may work during an overlap period — old credentials remain valid until their original expiry. Replace credentials in your creative pipeline promptly, but there is no hard cutover moment that would break in-flight generation requests. The updated rights_constraint should replace the constraint in any active creative manifests so downstream systems see the current terms.

Next steps

acquire_rights

The initial rights acquisition flow.

report_usage

Report impressions against rights grants.