Skip to main content

Documentation Index

Fetch the complete documentation index at: https://agenticadvertisingorg-changeset-release-main.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

AdCP uses two related but distinct concepts when working with creative formats. Their names are similar, which causes a recurring implementation error β€” this page defines both precisely and names the two failure modes.

format_id β€” structured reference object

format_id is always a JSON object, never a plain string. It identifies a format by the agent that declared it and the format’s local slug:
{
  "agent_url": "https://creative.adcontextprotocol.org",
  "id": "display_300x250"
}
Optional dimension and duration fields extend it for parameterized template formats:
{
  "agent_url": "https://creative.adcontextprotocol.org",
  "id": "display_static",
  "width": 300,
  "height": 250
}
format_id is a pointer β€” it names a format without carrying its definition.

format β€” full definition object

format is the complete specification of a creative format. It is returned by list_creative_formats and related tasks. A format object contains a format_id as one of its properties, plus the asset requirements, render specs, and all other metadata:
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_300x250"
  },
  "name": "Display Banner 300Γ—250",
  "assets": [
    { "asset_id": "image", "asset_type": "image", "item_type": "individual", "required": true }
  ],
  "renders": [
    { "role": "primary", "dimensions": { "width": 300, "height": 250 } }
  ]
}
A format is a definition β€” it describes what the format requires and how it renders.

Contrast at a glance

ConceptField nameJSON typeUse
Format identifierformat_idobject β€” { agent_url, id }Pointer. Used in creative manifests, request filters, placement declarations.
Format definitionformatobject β€” full specReturned by list_creative_formats. Contains format_id as a nested field.
Array of identifiersformat_idsarray of format_id objectsFilter parameter on list_creatives, list_creative_formats, and related requests.
Array of definitionsformatsarray of format objectsResponse field on list_creative_formats.

Two named failure modes

Anti-pattern A β€” string in a format_id slot

Wrong β€” format_id must be an object, not a plain string:
{ "format_id": "display_300x250" }
Correct:
{ "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" } }
AJV error: format_id must be of type object. Cause: the .id string inside the format_id object looks like a self-contained name and is sometimes extracted and used directly.

Anti-pattern B β€” format_id object in a format / formats slot

Wrong β€” a formats[] element must be a full definition object, not a bare format_id:
{
  "formats": [
    { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" }
  ]
}
Correct:
{
  "formats": [
    {
      "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" },
      "name": "Display Banner 300Γ—250",
      "assets": [ { "asset_id": "image", "asset_type": "image", "item_type": "individual", "required": true } ]
    }
  ]
}
AJV error: formats[0] must have required property 'name'. Cause: format_id and format are both objects; the shorter object is sometimes put in the slot that expects the larger one.

See also