> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adcontextprotocol.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Key concepts

> Assets, formats, manifests, and creative agents are the four building blocks of the AdCP Creative Protocol for programmatic ad creative.

> **AdCP 3.2:** products use canonical `format_options[]`, manifests use `format_kind` plus optional `format_option_ref`, and creative agents declare operations through `get_adcp_capabilities.creative.supported_formats[]`.

One upload, every format. This guide explains how creatives work in AdCP, from defining format requirements to assembling and delivering ads.

## The Four Key Concepts

### 1. **Assets**

Assets are the individual building blocks used to compose a creative. Each asset has a defined type that determines how it is used and validated.

**Examples:**

* An image file (PNG, JPG, WebP)
* A video file (MP4, WebM, MOV)
* A block of text (headline or CTA)
* An audio file (MP3, M4A)
* An HTML or JavaScript tag
* A tracking or clickthrough URL

### 2. **Canonical format declarations**

Canonical declarations define the buyer deliverable and its constraints. Publisher acceptance lives in `adagents.json.formats[]`; seller deliverability lives in each product's `format_options[]`. A declaration specifies:

* Media family (e.g., Display, Video, Audio, Native)
* The required asset types
* Technical constraints (duration, dimensions, codecs, file size)
* Rendering and interaction expectations

**Examples:**

* A Video format may require one video asset (MP4, 30 seconds, defined resolution and codec) and one clickthrough URL
* A Display format may require one or more image or HTML assets, optional text assets, and tracking URLs

### 3. **Manifests**

Manifests are portable creative payloads. They identify a canonical `format_kind`, optionally bind to a concrete product or publisher option with `format_option_ref`, and supply typed assets keyed by the declaration's slots.

**Example**: A `video_hosted` manifest supplies `video_main: { asset_type: "video", ... }`, plus any declared landing-page and tracker assets.

### 4. **Creative Agents**

Creative agents are services that:

* Declare which canonical contracts they can build, validate, or preview
* Explain and execute their renderer or production behavior
* Validate manifests against format requirements
* Generate previews showing how creatives will appear
* Optionally build manifests from natural-language briefs

Creative agents are capability providers, not the authority for publisher acceptance or seller deliverability.

## How They Fit Together

```
Canonical Format Declaration (by Publisher or Seller)
  ↓
  "video_30s format requires:
   - One video file asset (MP4, 30s, 1920x1080)
   - One clickthrough URL"

Creative Manifest (by Buyer)
  ↓
  "Here's my actual video file:
   https://cdn.brand.com/spring_30s.mp4
   Landing page: https://brand.com/spring-sale"

Sales Agent (validates & delivers)
  ↓
  - Checks: Is this really 30 seconds? Is it MP4?
  - Adds: Impression tracking, click tracking
  - Delivers: Creative to ad server
```

## The Workflow

### 1. **Discovery** - "What formats do you support?"

Buyers read publisher acceptance from `adagents.json.formats[]` and seller deliverability from each product's `format_options[]`. When they need production, they inspect a creative agent's `get_adcp_capabilities.creative.supported_formats[]`.

See [Creative Formats](/dist/docs/3.2.0-beta.0/creative/formats) for format discovery details.

### 2. **Assembly** - "Here are my assets"

Buyers create manifests that provide assets fulfilling the selected format's requirements. Manifests pair format specifications with actual asset URLs, text, and tracking data.

See [Creative Manifests](/dist/docs/3.2.0-beta.0/creative/creative-manifests) for manifest structure details.

### 3. **Validation** - "Does this match the requirements?"

Creative agents validate manifests by checking:

* Are all required assets present?
* Do assets meet technical constraints (duration, dimensions, file type, file size)?
* Are tracking URLs and macros correctly formatted?

### 4. **Delivery** - "Traffic this to the ad server"

Sales agents deliver validated creatives to their ad servers, translating AdCP universal concepts to platform-specific formats.

## Core Concepts

### Assets & Asset Types

Assets are the raw materials of a creative. Each asset has a type that defines its role:

* **image**: Static images (JPEG, PNG, WebP)
* **video**: Video files (MP4, WebM, MOV) or VAST tags
* **audio**: Audio files (MP3, M4A) or DAAST tags
* **text**: Headlines, descriptions, CTAs
* **html**: HTML5 creatives or third-party tags
* **javascript**: JavaScript tags
* **url**: Tracking pixels, clickthrough URLs, webhooks

See [Asset Types](/dist/docs/3.2.0-beta.0/creative/asset-types) for detailed specifications.

### Format authority and capability

Authority is contextual:

* Publishers declare accepted inventory shapes in `adagents.json.formats[]`.
* Sales agents declare the closed executable set on `Product.format_options[]`.
* Creative agents self-declare build, validation, and preview operations in `creative.supported_formats[]`.

**Standard vs. Custom Formats:**

* **Canonical formats** use a registered `format_kind` and its shared parameter/slot vocabulary.
* **Custom formats** use `format_kind: "custom"` with required `format_shape` and digest-pinned `format_schema`.
* A renderer is discovered separately; its endpoint-local `capability_id` never becomes portable manifest identity.

See the [Channel Guides](/dist/docs/3.2.0-beta.0/creative/channels/video) for format examples and patterns across video, display, audio, DOOH, and carousels.

### Manifests

Manifests are JSON structures that pair format-defined asset IDs with actual asset content. They supply the URLs, text values, and tracking endpoints required to assemble a complete creative.

See [Creative Manifests](/dist/docs/3.2.0-beta.0/creative/creative-manifests) for detailed documentation.

### Universal Macros

AdCP defines universal macros that work across platforms. Sales agents translate these macros into their ad server's native syntax.

* **For impression tracking**: Sales agents translate AdCP macros into the ad server's native macro format before serving the impression tracking URL.
* **For click tracking**: In addition to macro translation, sales agents replace `{REDIRECT_URL}` with the final destination click URL and serve the click tracking URL as the destination URL in the ad server, ensuring proper redirection after the click is recorded.

See [Universal Macros](/dist/docs/3.2.0-beta.0/creative/universal-macros) for complete reference.

## Common Patterns

### Third-Party Tags

Some formats support creatives that are served by third-party systems rather than assembled from first-party media elements.

In this pattern, the creative is provided as an HTML tag or a JavaScript tag. The format definition specifies the required element type and any applicable constraints (such as sandboxing or tracking expectations). Rendering, asset loading, and interaction logic are handled externally by the third-party system.

This pattern is most commonly used with Display formats. See the [Display Channel Guide](/dist/docs/3.2.0-beta.0/creative/channels/display) for third-party tag examples.

### Repeatable Asset Groups

Some formats allow or require repeated sets of creative elements under a common structure. This pattern is used for creatives such as carousels, slideshows, story-style sequences, and playlists or product lists.

Each repetition contains the same logical element roles (for example: image, text, and URL), with the number of repetitions defined or constrained by the format. Repeatable element groups describe structural patterns, not formats or layout guarantees, and may be used across Display, Native, or other compatible formats.

See the [Carousel & Multi-Asset Formats](/dist/docs/3.2.0-beta.0/creative/channels/carousels) guide for detailed documentation.

### DOOH Impression Tracking

Digital Out-of-Home (DOOH) environments require different measurement semantics than personal-device environments.

In this pattern:

* Impressions are tracked using venue- or screen-level identifiers
* Device-based identifiers are not used
* Tracking relies on environment-specific macros

This affects measurement and reporting only and does not change creative format classification or asset requirements. See the [DOOH Channel Guide](/dist/docs/3.2.0-beta.0/creative/channels/dooh) for DOOH-specific macro details.

## Channel-Specific Information

For detailed information on creatives by channel and format family, see [Creative Manifests](/dist/docs/3.2.0-beta.0/creative/creative-manifests), including:

* **Video Ads** - In-stream and outstream video formats (including CTV environments)
* **Display Ads** - Standard display formats (e.g., banners and interstitials)
* **Audio Ads** - In-stream audio formats (with optional companion display)
* **DOOH** - Digital out-of-home inventory and venue-based delivery environments

## Getting Started

1. **Discover formats**: Read canonical `format_options[]` on products and publisher declarations when referenced
2. **Choose your channel guide**: Pick the guide that matches your campaign type
3. **Build your manifest**: Follow the format requirements
4. **Use universal macros**: Add tracking with standardized macros
5. **Preview**: Use `preview_creative` to see how it looks
6. **Submit**: Include manifests in your `create_media_buy` request

## Additional Resources

* [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.0/protocol/get_adcp_capabilities) - Creative-agent operation discovery
* [Generative Creative](/dist/docs/3.2.0-beta.0/creative/generative-creative) - AI-powered creative generation guide
