Skip to main content

Creative Formats

Creative formats define the structure, requirements, and delivery methods for advertising creatives. Each format specifies what assets are needed, their technical requirements, and how they should be assembled. For an overview of how formats, manifests, and creative agents work together, see the Creative Protocol Overview.

Standard vs Custom Formats

AdCP defines two categories of formats:

Standard Formats

Pre-defined, industry-standard specifications provided by the AdCP Reference Creative Agent (https://creative.adcontextprotocol.org):
  • Simplified: No platform-specific complexity
  • Portable: One creative works everywhere
  • Validated: Pre-tested IAB specifications
  • Discoverable: Available via list_creative_formats
  • Maintained: Centrally hosted and updated
Standard formats include common IAB ad units (300x250, 728x90), standard video specs (15s, 30s pre-roll), audio formats, DOOH, and more. See the Creative Channel Guides for format documentation. For sales agents: Before creating custom format definitions, check the reference creative agent to see if your formats already exist. Most publishers support some standard formats and should reference https://creative.adcontextprotocol.org. See Implementing Standard Format Support for detailed guidance.

Custom Formats

Publisher-specific formats for unique inventory that doesn’t match standard specifications:
  • Unique requirements: Custom dimensions, special asset needs, or unique technical specs
  • Specialized capabilities: Platform-specific features not available in standard formats
  • Premium experiences: Differentiated ad products like takeovers, rich media, or immersive units
  • Custom validation: Publisher-specific creative review or assembly logic
When to create custom formats: Only when you have truly unique requirements that aren’t covered by standard formats. Most publishers will reference standard formats for common ad units (300x250, video pre-roll, etc.) and only define custom formats for premium or specialized inventory.

Discovering Formats

Buyers discover available formats using the list_creative_formats task, which returns formats supported by a sales agent. Formats can come from two sources:
  1. Directly from the sales agent - Custom formats defined by the publisher
  2. Referenced creative agents - The sales agent points to other creative agents (like the reference agent) for additional format support
Example discovery response:
{
  "formats": [
    {
      "format_id": {
        "agent_url": "https://youragent.com",
        "id": "homepage_takeover_2024"
      },
      "name": "Homepage Takeover",
      "type": "rich_media"
    }
  ],
  "creative_agents": [
    "https://creative.adcontextprotocol.org"
  ]
}
This tells buyers: “We support our custom homepage takeover format, PLUS all standard formats from the reference creative agent.” For sales agents implementing format support: See Implementing Standard Format Support.

Format Authority

Each format includes an agent_url field pointing to its authoritative source:
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_hosted"
  },
  "name": "Standard 30-Second Video"
}
The creative agent at that URL is the definitive source for:
  • Complete format specifications
  • Asset validation rules
  • Preview generation
  • Format documentation
Buyers query the agent_url for full format details, validation, and preview capabilities.

Format Visual Presentation

Formats include two optional fields for visual presentation in format browsing UIs:

Preview Image

Field: preview_image Purpose: Thumbnail/card image for format browsing Specifications:
  • Dimensions: 400×300px (4:3 aspect ratio)
  • Format: PNG or JPG
  • Use case: Quick visual identification in format lists/grids

Example Showcase

Field: example_url Purpose: Link to full interactive demo/showcase page Content: Publisher-controlled page showing:
  • Video walkthroughs of the format
  • Interactive demos
  • Multiple creative examples
  • Technical specifications
  • Best practices
Why this approach?
  • Publishers control how to best showcase complex formats
  • No schema limitations on presentation methods
  • Handles video, interactive demos, DOOH installations, etc.
  • Structured card (preview_image) + deep link (example_url) pattern
Example:
{
  "format_id": {
    "agent_url": "https://publisher.com",
    "id": "homepage_takeover_premium"
  },
  "name": "Premium Homepage Takeover",
  "description": "Full-screen immersive experience with video, carousel, and companion units",
  "preview_image": "https://publisher.com/format-cards/homepage-takeover.png",
  "example_url": "https://publisher.com/formats/homepage-takeover-demo"
}

Referencing Formats

CRITICAL: AdCP uses structured format ID objects everywhere to avoid parsing ambiguity and handle namespace collisions.

Structured Format IDs (Required Everywhere)

ALL format references use structured format ID objects:
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_300x250"
  }
}
Why structured objects everywhere?
  • No parsing needed: Components are explicit
  • Unambiguous: Clear separation of namespace and identifier
  • Handles collisions: Same format ID from different agents are distinct
  • No exceptions: Simpler mental model - one format_id pattern everywhere
  • Validation-friendly: Easy to validate with JSON Schema
  • Extensible: Can add version or other metadata later

Where Structured Format IDs Are Used

Requests:
  • sync_creatives - Uploading creative assets
  • build_creative - Generating creatives via creative agents
  • preview_creative - Preview generation
  • create_media_buy - When specifying format requirements
Responses:
  • list_creatives - Returning creative details
  • get_products - Product format capabilities
  • list_creative_formats - Format definitions
  • Any response containing creative or format details
Filter parameters:
  • format_ids (plural) in request filters - Array of structured format_id objects

Validation Rules

All AdCP agents MUST:
  1. ✅ Accept structured format_id objects in ALL contexts
  2. ✅ Return structured format_id objects in ALL responses
  3. ❌ Reject string format_ids with clear error messages
  4. ❌ Never use string format_ids in any API contract
Error handling for invalid format_id:
{
  "error": "invalid_format_id",
  "message": "format_id must be a structured object with 'agent_url' and 'id' fields",
  "received": "display_300x250",
  "required_structure": {
    "agent_url": "https://creative-agent-url.com",
    "id": "display_300x250"
  }
}

Legacy Considerations

Some legacy systems may send string format_ids. Implementers have two options:
  1. Strict validation (recommended): Reject strings immediately with clear error
  2. Auto-upgrade with deprecation: Accept strings temporarily, log warnings, set removal timeline
If auto-upgrading, you MUST:
  • Only accept strings for well-known formats you can map to agent URLs
  • Fail loudly for unknown format strings
  • Log deprecation warnings on every request
  • Set and communicate a removal date (recommend 6 months maximum)

Format Structure

Formats are JSON objects with the following key fields:
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_hosted"
  },
  "name": "30-Second Hosted Video",
  "type": "video",
  "assets_required": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "required": true,
      "requirements": {
        "duration": "30s",
        "format": ["MP4"],
        "resolution": ["1920x1080", "1280x720"]
      }
    }
  ]
}
Key fields:
  • format_id: Unique identifier (may be namespaced with domain:id)
  • agent_url: The creative agent authoritative for this format
  • type: Category (video, display, audio, native, dooh, rich_media)
  • assets_required: Array of asset specifications
  • asset_role: Identifies asset purpose (hero_image, logo, cta_button, etc.)
  • renders: Array of rendered outputs with dimensions - see below

Rendered Outputs and Dimensions

Formats specify their rendered outputs via the renders array. Most formats produce a single render, but some (companion ads, adaptive formats, multi-placement) produce multiple renders:
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_300x250"
  },
  "type": "display",
  "renders": [
    {
      "role": "primary",
      "dimensions": {
        "width": 300,
        "height": 250,
        "responsive": {
          "width": false,
          "height": false
        },
        "unit": "px"
      }
    }
  ]
}
Multi-render example (companion ad):
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_with_companion_300x250"
  },
  "type": "video",
  "renders": [
    {
      "role": "primary",
      "dimensions": {
        "width": 1920,
        "height": 1080,
        "unit": "px"
      }
    },
    {
      "role": "companion",
      "dimensions": {
        "width": 300,
        "height": 250,
        "unit": "px"
      }
    }
  ]
}
Dimension types: Fixed dimensions (standard display ads):
{
  "role": "primary",
  "dimensions": {
    "width": 300,
    "height": 250,
    "responsive": {"width": false, "height": false},
    "unit": "px"
  }
}
Responsive width (fluid banners):
{
  "role": "primary",
  "dimensions": {
    "min_width": 300,
    "max_width": 970,
    "height": 250,
    "responsive": {"width": true, "height": false},
    "unit": "px"
  }
}
Aspect ratio constrained (native formats):
{
  "role": "primary",
  "dimensions": {
    "aspect_ratio": "16:9",
    "min_width": 300,
    "responsive": {"width": true, "height": true},
    "unit": "px"
  }
}
Physical dimensions (DOOH):
{
  "role": "primary",
  "dimensions": {
    "width": 48,
    "height": 14,
    "responsive": {"width": false, "height": false},
    "unit": "inches"
  }
}
Benefits of the renders structure:
  • Supports single and multi-render formats uniformly
  • No string parsing required - structured dimensions
  • Schema-validated dimensions
  • Supports responsive and fixed formats equally
  • Enables proper preview rendering
  • Allows dimension-based filtering
  • Supports physical units for DOOH
  • Clear semantic roles for each rendered piece

Format Categories

AdCP supports formats across multiple media types:

Video Formats

  • Standard video (15s, 30s, 60s)
  • Vertical video for mobile/stories
  • VAST/VPAID tags
  • Interactive video
See Video Channel Guide for complete specifications.

Display Formats

  • Standard IAB sizes (300x250, 728x90, etc.)
  • Responsive units
  • Rich media and expandable
  • HTML5 creative
See Display Channel Guide for complete specifications.

Audio Formats

  • Streaming audio (15s, 30s, 60s)
  • Podcast insertion
  • Companion banners
  • VAST audio tags
See Audio Channel Guide for complete specifications.

DOOH Formats

  • Digital billboards
  • Transit displays
  • Retail screens
  • Venue-based impression tracking
See DOOH Channel Guide for complete specifications.

Carousel/Multi-Asset Formats

  • Product carousels (3-10 items)
  • Story sequences
  • Slideshow formats
  • Frame-based structures
See Carousel Channel Guide for complete specifications.

Multi-Asset & Frame-Based Formats

Some formats like carousels, slideshows, and stories use repeatable asset groups where each frame contains a collection of assets. See the Carousel & Multi-Asset Formats guide for complete documentation on frame-based format patterns.

Format Cards

Format cards provide visual representations of creative formats for display in browsing and selection interfaces. Creative agents can optionally include card definitions that reference card formats and provide the assets needed to render attractive visual cards.

Card Types

Creative agents should provide at least the standard card, and optionally a detailed card: Standard Card (format_card):
  • Compact 300x400px card for format browsing
  • Supports 2x density images for retina displays
  • Quick visual understanding of format specs
Detailed Card (format_card_detailed, optional):
  • Responsive layout with text description alongside hero carousel showing format in context
  • Markdown specifications section below
  • Full format documentation similar to Yahoo’s ad specs

Structure

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_standard_30s"
  },
  "name": "Standard Video - 30 seconds",
  "type": "video",
  // ... other format fields ...

  "format_card": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "format_card_standard"
    },
    "manifest": {
      "display_name": "30-Second Video",
      "preview_mockup_url": "https://cdn.example.com/format-mockups/video_30s.png",
      "format_type_label": "Video"
    }
  },

  "format_card_detailed": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "format_card_detailed"
    },
    "manifest": {
      "display_name": "Standard 30-Second Video",
      "description": "The Edge A-Logs Horizon (desktop) format is an encompassing...",
      "carousel_images": [
        "https://cdn.example.com/formats/video_30s_context1.jpg",
        "https://cdn.example.com/formats/video_30s_context2.jpg"
      ],
      "specifications_markdown": "# Technical Specifications\n\n..."
    }
  }
}

Rendering Cards

Cards can be rendered in two ways:
  1. Via preview_creative: Pass the card format and manifest to generate a rendered card
  2. Pre-rendered: Creative agents can pre-generate cards and serve them directly
This flexibility allows implementations to choose between dynamic generation or static hosting based on their infrastructure.

Standard Card Formats

The AdCP reference creative agent defines two standard card formats:
  • format_card_standard (300x400px) - Compact card for format browsing
  • format_card_detailed (responsive) - Rich card with carousel and full specs
Creative agents can also define custom card formats to highlight unique format capabilities or match their branding. Note: Standard card format definitions are maintained in the creative-agent repository, not in this protocol specification.

When to Include Format Cards

Format cards are optional but recommended for:
  • Visual formats (display, video, DOOH) where mockups help explain the format
  • Complex formats with multiple asset requirements
  • Custom formats that differ from standard specifications
  • Formats where visual preview aids buyer understanding
Use the detailed card variant when you want to provide comprehensive format documentation similar to ad spec pages.

Client Rendering Guidelines

When displaying formats in UIs, clients should follow this fallback order:
  1. If format_card exists → Render card via preview_creative or display pre-rendered image
  2. If only preview_image exists → Display static image (deprecated but supported)
  3. If neither exists → Render text-only representation (format name + description)
  4. If card rendering fails → Gracefully fall back to text-only representation
This ensures a consistent user experience regardless of what format metadata is available.