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.
This guide covers how AdCP represents display advertising formats, from static image banners to third-party tags and HTML5 creatives.
Display formats in AdCP include:
- Hosted Images - Static image files (JPG, PNG, WebP, GIF)
- HTML5 Creatives - Multi-asset interactive banners
- Third-Party Tags - JavaScript or HTML tags served by external ad servers
- Responsive Formats - Adapt to multiple sizes
- Rich Media - Expandable and interactive formats
Medium Rectangle (300x250)
{
"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 }
}
}
],
"assets": [
{
"item_type": "individual",
"asset_id": "banner_image",
"asset_type": "image",
"asset_role": "hero_image",
"required": true,
"requirements": {
"min_width": 300,
"max_width": 300,
"min_height": 250,
"max_height": 250,
"formats": ["jpg", "png", "webp", "gif"],
"max_file_size_kb": 200,
"animation_allowed": true,
"max_animation_duration_ms": 15000
}
}
]
}
Leaderboard (728x90)
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_728x90"
},
"type": "display",
"assets": [
{
"asset_id": "banner_image",
"asset_type": "image",
"asset_role": "hero_image",
"required": true,
"requirements": {
"width": 728,
"height": 90,
"file_types": ["jpg", "png", "webp"],
"max_file_size_kb": 150
}
}
]
}
Wide Skyscraper (160x600)
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_160x600"
},
"type": "display",
"assets": [
{
"asset_id": "banner_image",
"asset_type": "image",
"asset_role": "hero_image",
"required": true,
"requirements": {
"width": 160,
"height": 600,
"file_types": ["jpg", "png", "webp"],
"max_file_size_kb": 150
}
}
]
}
Billboard (970x250)
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_970x250"
},
"type": "display",
"assets": [
{
"asset_id": "banner_image",
"asset_type": "image",
"asset_role": "hero_image",
"required": true,
"requirements": {
"width": 970,
"height": 250,
"file_types": ["jpg", "png", "webp"],
"max_file_size_kb": 300
}
}
]
}
Mobile Banner (320x50)
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "mobile_banner_320x50"
},
"type": "display",
"assets": [
{
"asset_id": "banner_image",
"asset_type": "image",
"asset_role": "hero_image",
"required": true,
"requirements": {
"width": 320,
"height": 50,
"file_types": ["jpg", "png", "webp"],
"max_file_size_kb": 150
}
}
]
}
Mobile Interstitial (320x480)
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "mobile_interstitial_320x480"
},
"type": "display",
"assets": [
{
"asset_id": "banner_image",
"asset_type": "image",
"asset_role": "hero_image",
"required": true,
"requirements": {
"width": 320,
"height": 480,
"file_types": ["jpg", "png", "webp"],
"max_file_size_kb": 300
}
}
]
}
Creative Manifests
Simple Image Banner Manifest
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250"
},
"assets": {
"banner_image": {
"asset_type": "image",
"url": "https://cdn.brand.com/banner_300x250.jpg",
"width": 300,
"height": 250
},
"landing_url": {
"asset_type": "url",
"url_type": "clickthrough",
"url": "https://brand.com/spring?campaign={MEDIA_BUY_ID}"
},
"impression_tracker": {
"asset_type": "url",
"url_type": "tracker_pixel",
"url": "https://track.brand.com/imp?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
}
}
}
Animated GIF Manifest
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250"
},
"assets": {
"banner_image": {
"asset_type": "image",
"url": "https://cdn.brand.com/animated_300x250.gif",
"width": 300,
"height": 250,
"animated": true,
"animation_duration_ms": 15000
},
"landing_url": {
"asset_type": "url",
"url_type": "clickthrough",
"url": "https://brand.com/spring"
}
}
}
HTML Display Formats with Execution Context
HTML display creatives run as executable code, not static media. Different publisher environments have different execution constraints - some allow full DOM access, others run in SafeFrame containers with restricted JavaScript capabilities.
AdCP defines explicit HTML asset requirements that specify the execution environment the HTML must be compatible with:
sandbox: Execution environment (none, iframe, safeframe, fencedframe)
external_resources_allowed: Whether the creative can load external scripts, images, or fonts
allowed_external_domains: Permitted domains for external resources (when allowed)
max_file_size_kb: Maximum file size for the HTML asset
SafeFrame-Compatible HTML Banner
SafeFrame is an IAB standard that provides secure isolation between ad creatives and publisher pages. SafeFrame-compatible creatives cannot use document.write(), must use SafeFrame expansion APIs, and cannot make arbitrary cross-origin requests.
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250_html_safeframe"
},
"name": "SafeFrame HTML Banner 300x250",
"type": "display",
"renders": [
{
"role": "primary",
"dimensions": {
"width": 300,
"height": 250,
"responsive": { "width": false, "height": false }
}
}
],
"assets": [
{
"item_type": "individual",
"asset_id": "banner_html",
"asset_type": "html",
"asset_role": "creative",
"required": true,
"requirements": {
"max_file_size_kb": 150,
"sandbox": "safeframe",
"external_resources_allowed": false
}
},
{
"item_type": "individual",
"asset_id": "landing_url",
"asset_type": "url",
"asset_role": "clickthrough",
"required": true,
"requirements": {
"protocols": ["https"]
}
}
]
}
Native DOM HTML Banner
Some publishers allow full DOM access for trusted creatives. These formats can use standard JavaScript APIs and load external resources.
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250_html_native"
},
"name": "Native HTML Banner 300x250",
"type": "display",
"renders": [
{
"role": "primary",
"dimensions": {
"width": 300,
"height": 250,
"responsive": { "width": false, "height": false }
}
}
],
"assets": [
{
"item_type": "individual",
"asset_id": "banner_html",
"asset_type": "html",
"asset_role": "creative",
"required": true,
"requirements": {
"max_file_size_kb": 200,
"sandbox": "none",
"external_resources_allowed": true,
"allowed_external_domains": ["cdn.brand.com", "fonts.googleapis.com"]
}
},
{
"item_type": "individual",
"asset_id": "landing_url",
"asset_type": "url",
"asset_role": "clickthrough",
"required": true,
"requirements": {
"protocols": ["https"]
}
}
]
}
Fenced Frame HTML Banner (Privacy Sandbox)
Chromeβs Privacy Sandbox introduces Fenced Frames for privacy-preserving ad rendering. These have the most restrictive execution environment.
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250_html_fencedframe"
},
"name": "Fenced Frame HTML Banner 300x250",
"type": "display",
"renders": [
{
"role": "primary",
"dimensions": {
"width": 300,
"height": 250,
"responsive": { "width": false, "height": false }
}
}
],
"assets": [
{
"item_type": "individual",
"asset_id": "banner_html",
"asset_type": "html",
"asset_role": "creative",
"required": true,
"requirements": {
"max_file_size_kb": 100,
"sandbox": "fencedframe",
"external_resources_allowed": false
}
}
]
}
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250_3p"
},
"type": "display",
"renders": [
{
"role": "primary",
"dimensions": {
"width": 300,
"height": 250,
"responsive": { "width": false, "height": false }
}
}
],
"assets": [
{
"item_type": "individual",
"asset_id": "tag",
"asset_type": "javascript",
"asset_role": "third_party_tag",
"required": true,
"requirements": {
"max_file_size_kb": 200,
"external_resources_allowed": true,
"strict_mode_required": false
}
}
]
}
JavaScript tag manifest:
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250_3p"
},
"assets": {
"tag": {
"asset_type": "javascript",
"content": "<script src=\"https://ad-server.brand.com/serve?campaign={MEDIA_BUY_ID}&size=300x250&cb={CACHEBUSTER}\"></script>"
}
}
}
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_728x90_html"
},
"type": "display",
"renders": [
{
"role": "primary",
"dimensions": {
"width": 728,
"height": 90,
"responsive": { "width": false, "height": false }
}
}
],
"assets": [
{
"item_type": "individual",
"asset_id": "tag",
"asset_type": "html",
"asset_role": "third_party_tag",
"required": true,
"requirements": {
"max_file_size_kb": 200,
"sandbox": "iframe",
"external_resources_allowed": true
}
}
]
}
HTML tag manifest:
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_728x90_html"
},
"assets": {
"tag": {
"asset_type": "html",
"content": "<iframe src=\"https://ad-server.brand.com/render?campaign={MEDIA_BUY_ID}&size=728x90&cb={CACHEBUSTER}\" width=\"728\" height=\"90\" frameborder=\"0\" scrolling=\"no\"></iframe>"
}
}
}
HTML5 formats specify multiple assets that the publisherβs ad server assembles into an interactive creative.
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250_html5"
},
"type": "display",
"assets": [
{
"asset_id": "background_image",
"asset_type": "image",
"asset_role": "background",
"required": true,
"requirements": {
"width": 300,
"height": 250,
"file_types": ["jpg", "png"]
}
},
{
"asset_id": "logo",
"asset_type": "image",
"asset_role": "logo",
"required": true,
"requirements": {
"max_width": 100,
"max_height": 50,
"file_types": ["png", "svg"]
}
},
{
"asset_id": "headline",
"asset_type": "text",
"asset_role": "headline",
"required": true,
"requirements": {
"max_length": 25
}
},
{
"asset_id": "cta_text",
"asset_type": "text",
"asset_role": "call_to_action",
"required": true,
"requirements": {
"max_length": 15
}
}
]
}
HTML5 manifest:
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250_html5"
},
"assets": {
"background_image": {
"asset_type": "image",
"url": "https://cdn.brand.com/bg.jpg",
"width": 300,
"height": 250
},
"logo": {
"asset_type": "image",
"url": "https://cdn.brand.com/logo.png",
"width": 80,
"height": 40
},
"headline": {
"asset_type": "text",
"content": "Spring Sale - 50% Off"
},
"cta_text": {
"asset_type": "text",
"content": "Shop Now"
},
"landing_url": {
"asset_type": "url",
"url_type": "clickthrough",
"url": "https://brand.com/spring"
}
}
}
Responsive formats adapt to multiple sizes based on placement context.
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_responsive"
},
"type": "display",
"responsive": true,
"supported_sizes": ["300x250", "728x90", "320x50"],
"assets": [
{
"asset_id": "background_image",
"asset_type": "image",
"asset_role": "background",
"required": true,
"requirements": {
"min_width": 728,
"min_height": 250,
"responsive": true,
"file_types": ["jpg", "png", "webp"]
}
},
{
"asset_id": "logo",
"asset_type": "image",
"asset_role": "logo",
"required": true
},
{
"asset_id": "headline",
"asset_type": "text",
"asset_role": "headline",
"required": true,
"requirements": {
"max_length": 30
}
}
]
}
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_970x250_expandable"
},
"type": "display",
"expandable": true,
"collapsed_size": "970x250",
"expanded_size": "970x600",
"assets": [
{
"asset_id": "collapsed_creative",
"asset_type": "html",
"asset_role": "collapsed_state",
"required": true,
"requirements": {
"width": 970,
"height": 250,
"max_file_size_kb": 200
}
},
{
"asset_id": "expanded_creative",
"asset_type": "html",
"asset_role": "expanded_state",
"required": true,
"requirements": {
"width": 970,
"height": 600,
"max_file_size_kb": 500
}
}
]
}
Display-Specific Macros
In addition to universal macros, display formats support:
Placement Context
{PLACEMENT_ID} - IAB Global Placement ID
{FOLD_POSITION} - above_fold, below_fold
{AD_WIDTH} / {AD_HEIGHT} - Ad slot dimensions in pixels
Web Context
{DOMAIN} - Publisher domain (e.g., βnytimes.comβ)
{PAGE_URL} - Full page URL (URL-encoded)
{REFERRER} - HTTP referrer URL
{KEYWORDS} - Page keywords (comma-separated)
Device Context
{DEVICE_TYPE} - mobile, tablet, desktop
{OS} - iOS, Android, Windows, macOS
{USER_AGENT} - Full user agent string
Example with display macros:
https://track.brand.com/imp?
buy={MEDIA_BUY_ID}&
placement={PLACEMENT_ID}&
domain={DOMAIN}&
fold={FOLD_POSITION}&
device={DEVICE_TYPE}&
cb={CACHEBUSTER}
Common File Specifications
Image Requirements
- File types: JPG, PNG, WebP, GIF
- Max file sizes:
- Standard banners: 150-200KB
- Large formats (970x250): 300KB
- Animated GIFs: 500KB
- HTML5 initial load: 200KB
Third-Party Tag Requirements
- HTTPS required: All tag URLs must use secure protocol
- Max file size: 200KB for tag content
- Async loading: Tags should not block page rendering
Animation Specifications
For animated GIF formats:
animated: true
animation_duration_ms: Duration in milliseconds
- Common durations: 15000ms (15 seconds)