Skip to main content

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.

This guide covers how AdCP represents video advertising formats for online video, CTV, and streaming platforms.

Video Format Characteristics

Video formats include:
  • Hosted Video - Direct video file URLs served by publisher ad servers
  • VAST Tags - Third-party ad server URLs returning VAST/VPAID XML
  • Inline VAST XML - Complete VAST XML provided in creative manifest
  • Multiple Resolutions - Same creative in different encoding profiles
Video ads play before (pre-roll), during (mid-roll), or after (post-roll) video content, or in-feed as out-stream video.

Standard Video Formats

Horizontal Video by Duration

15-Second Video

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_15s"
  },
  "type": "video",
  "assets_required": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "required": true,
      "requirements": {
        "duration": "15s",
        "format": ["MP4"],
        "codec": "H.264",
        "resolution": ["1920x1080", "1280x720"],
        "max_file_size_mb": 30,
        "bitrate_min": "4Mbps",
        "bitrate_max": "10Mbps",
        "audio_codec": "AAC"
      }
    }
  ]
}

30-Second Video

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s"
  },
  "type": "video",
  "assets_required": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "required": true,
      "requirements": {
        "duration": "30s",
        "format": ["MP4"],
        "codec": "H.264",
        "resolution": ["1920x1080", "1280x720"],
        "max_file_size_mb": 50,
        "bitrate_min": "4Mbps",
        "bitrate_max": "10Mbps",
        "audio_codec": "AAC"
      }
    }
  ]
}

6-Second Bumper

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_6s"
  },
  "type": "video",
  "assets_required": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "required": true,
      "requirements": {
        "duration": "6s",
        "format": ["MP4"],
        "codec": "H.264",
        "resolution": ["1920x1080", "1280x720"],
        "max_file_size_mb": 15,
        "bitrate_min": "4Mbps",
        "bitrate_max": "10Mbps"
      }
    }
  ]
}

Vertical/Mobile Video

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_vertical_15s"
  },
  "type": "video",
  "assets_required": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "required": true,
      "requirements": {
        "duration": "15s",
        "aspect_ratio": "9:16",
        "resolution": "1080x1920",
        "format": ["MP4"],
        "codec": "H.264",
        "max_file_size_mb": 30
      }
    }
  ]
}

CTV/OTT Video

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_ctv"
  },
  "type": "video",
  "assets_required": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "required": true,
      "requirements": {
        "duration": "30s",
        "format": ["MP4"],
        "codec": "H.264",
        "resolution": "1920x1080",
        "max_file_size_mb": 35,
        "bitrate_min": "4Mbps",
        "bitrate_max": "8Mbps",
        "audio_codec": "AAC",
        "audio_channels": "stereo"
      }
    }
  ]
}

VAST Tag Formats

For third-party ad servers:
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_vast"
  },
  "type": "video",
  "assets_required": [
    {
      "asset_id": "vast_tag",
      "asset_type": "url",
      "asset_role": "vast_url",
      "required": true,
      "requirements": {
        "vast_version": ["3.0", "4.0", "4.1", "4.2"],
        "duration": "30s"
      }
    }
  ]
}

VPAID Interactive Video

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_vpaid"
  },
  "type": "video",
  "assets_required": [
    {
      "asset_id": "vpaid_tag",
      "asset_type": "url",
      "asset_role": "vpaid_url",
      "required": true,
      "requirements": {
        "vpaid_version": ["2.0"],
        "duration": "30s",
        "api_framework": "VPAID"
      }
    }
  ]
}

Creative Manifests

Hosted Video Manifest

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s"
  },
  "assets": {
    "video_file": {
      "asset_type": "video",
      "url": "https://cdn.brand.com/spring_30s.mp4",
      "duration": 30,
      "width": 1920,
      "height": 1080,
      "format": "video/mp4",
      "codec": "H.264",
      "bitrate_kbps": 8000
    },
    "impression_tracker": {
      "asset_type": "url",
      "url_type": "tracker",
      "url": "https://track.brand.com/imp?buy={MEDIA_BUY_ID}&video={VIDEO_ID}&cb={CACHEBUSTER}"
    },
    "landing_url": {
      "asset_type": "url",
      "url_type": "clickthrough",
      "url": "https://brand.com/spring-sale?campaign={MEDIA_BUY_ID}"
    }
  }
}

VAST Tag Manifest (URL Delivery)

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_vast"
  },
  "assets": {
    "vast_tag": {
      "asset_type": "vast",
      "delivery_type": "url",
      "url": "https://ad-server.brand.com/vast?campaign={MEDIA_BUY_ID}&cb={CACHEBUSTER}",
      "vast_version": "4.2"
    }
  }
}

Inline VAST XML Manifest

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_vast"
  },
  "assets": {
    "vast_xml": {
      "asset_type": "vast",
      "delivery_type": "inline",
      "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"4.2\">\n  <Ad>\n    <InLine>\n      <Impression><![CDATA[https://track.brand.com/imp?buy={MEDIA_BUY_ID}&cb=[CACHEBUSTING]]]></Impression>\n      <Creatives>\n        <Creative>\n          <Linear>\n            <Duration>00:00:30</Duration>\n            <MediaFiles>\n              <MediaFile delivery=\"progressive\" type=\"video/mp4\" width=\"1920\" height=\"1080\">\n                <![CDATA[https://cdn.brand.com/spring_30s.mp4]]>\n              </MediaFile>\n            </MediaFiles>\n            <VideoClicks>\n              <ClickThrough><![CDATA[https://brand.com/spring?campaign={MEDIA_BUY_ID}]]></ClickThrough>\n            </VideoClicks>\n          </Linear>\n        </Creative>\n      </Creatives>\n    </InLine>\n  </Ad>\n</VAST>",
      "vast_version": "4.2"
    }
  }
}

Multi-Resolution Manifest

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s"
  },
  "assets": {
    "video_1080p": {
      "asset_type": "video",
      "url": "https://cdn.brand.com/spring_30s_1080p.mp4",
      "duration": 30,
      "width": 1920,
      "height": 1080,
      "bitrate_kbps": 8000
    },
    "video_720p": {
      "asset_type": "video",
      "url": "https://cdn.brand.com/spring_30s_720p.mp4",
      "duration": 30,
      "width": 1280,
      "height": 720,
      "bitrate_kbps": 5000
    },
    "video_480p": {
      "asset_type": "video",
      "url": "https://cdn.brand.com/spring_30s_480p.mp4",
      "duration": 30,
      "width": 854,
      "height": 480,
      "bitrate_kbps": 2500
    }
  }
}

Video-Specific Macros

In addition to universal macros, video formats support:

Video Content Context

  • {VIDEO_ID} - Content video identifier
  • {VIDEO_TITLE} - Content video title
  • {VIDEO_DURATION} - Content duration in seconds
  • {VIDEO_CATEGORY} - IAB content category
  • {CONTENT_GENRE} - Content genre (news, sports, comedy)
  • {CONTENT_RATING} - Content rating (G, PG, TV-14, etc.)
  • {PLAYER_WIDTH} / {PLAYER_HEIGHT} - Video player dimensions in pixels

Ad Pod Position

  • {POD_POSITION} - Position within ad break (1, 2, 3, etc.)
  • {POD_SIZE} - Total ads in this break
  • {AD_BREAK_ID} - Unique ad break identifier

Playback Context

  • {PLAYBACK_METHOD} - auto-play-sound-on, auto-play-sound-off, click-to-play
  • {PLAYER_SIZE} - small, medium, large, fullscreen
  • {VIDEO_PLACEMENT} - in-stream, in-banner, in-article, in-feed, interstitial

VAST Macros

AdCP macros ({CURLY_BRACES}) work alongside IAB VAST 4.x macros ([SQUARE_BRACKETS]):
  • [CACHEBUSTING] - Random number for cache prevention
  • [TIMESTAMP] - Unix timestamp
  • [DOMAIN] - Publisher domain
  • [IFA] - Device advertising ID (IDFA/AAID)
  • [REGULATIONS] - Privacy regulation signals (GDPR, CCPA)
  • [DEVICEUA] - Device user agent string
Example mixing both macro formats:
https://track.brand.com/imp?
  buy={MEDIA_BUY_ID}&
  video={VIDEO_ID}&
  device=[IFA]&
  domain=[DOMAIN]&
  cb=[CACHEBUSTING]

Video Tracking Assets

Standard Tracking Events

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s"
  },
  "assets": {
    "video_file": {
      "asset_type": "video",
      "url": "https://cdn.brand.com/video_30s.mp4"
    },
    "impression_tracker": {
      "asset_type": "url",
      "url_type": "tracker",
      "url": "https://track.brand.com/imp?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
    },
    "start_tracker": {
      "asset_type": "url",
      "url_type": "tracker",
      "url": "https://track.brand.com/start?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
    },
    "quartile_25_tracker": {
      "asset_type": "url",
      "url_type": "tracker",
      "url": "https://track.brand.com/q25?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
    },
    "quartile_50_tracker": {
      "asset_type": "url",
      "url_type": "tracker",
      "url": "https://track.brand.com/q50?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
    },
    "quartile_75_tracker": {
      "asset_type": "url",
      "url_type": "tracker",
      "url": "https://track.brand.com/q75?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
    },
    "complete_tracker": {
      "asset_type": "url",
      "url_type": "tracker",
      "url": "https://track.brand.com/complete?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
    },
    "click_tracker": {
      "asset_type": "url",
      "url_type": "tracker",
      "url": "https://track.brand.com/click?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
    }
  }
}

Interactive Tracking Events

For formats supporting user interaction:
{
  "pause_tracker": {
    "asset_type": "url",
    "url_type": "tracker",
    "url": "https://track.brand.com/pause?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
  },
  "resume_tracker": {
    "asset_type": "url",
    "url_type": "tracker",
    "url": "https://track.brand.com/resume?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
  },
  "skip_tracker": {
    "asset_type": "url",
    "url_type": "tracker",
    "url": "https://track.brand.com/skip?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
  },
  "mute_tracker": {
    "asset_type": "url",
    "url_type": "tracker",
    "url": "https://track.brand.com/mute?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
  },
  "unmute_tracker": {
    "asset_type": "url",
    "url_type": "tracker",
    "url": "https://track.brand.com/unmute?buy={MEDIA_BUY_ID}&cb={CACHEBUSTER}"
  }
}

Common Aspect Ratios

  • 16:9 (1920x1080, 1280x720) - Standard horizontal video
  • 9:16 (1080x1920) - Vertical mobile video
  • 4:3 (640x480) - Legacy format, rare
  • 1:1 (1080x1080) - Square social video

Video Placement Types

Pre-Roll

Video ad plays before content starts. Most common placement. Common durations: 6s, 15s, 30s

Mid-Roll

Video ad plays during content breaks. Uses ad pod macros for position tracking. Common durations: 15s, 30s

Post-Roll

Video ad plays after content ends. Common durations: 15s, 30s

Out-Stream

Video ad plays in-feed or in-article, not in a video player. Common formats: Vertical mobile video, in-feed video

VAST/VPAID Integration

VAST Versions

AdCP supports all VAST versions:
  • VAST 2.0 - Legacy support
  • VAST 3.0 - Adds verification and error handling
  • VAST 4.0 - Improved tracking, viewability
  • VAST 4.1 - Enhanced ad pod support
  • VAST 4.2 - Latest specification (recommended)

VPAID Support

VPAID (Video Player Ad-Serving Interface Definition) enables interactive video ads:
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_vpaid"
  },
  "assets_required": [
    {
      "asset_id": "vpaid_tag",
      "asset_type": "url",
      "asset_role": "vpaid_url",
      "requirements": {
        "vpaid_version": ["2.0"],
        "api_framework": "VPAID"
      }
    }
  ]
}

File Specifications

Video Codecs

  • H.264 - Most widely supported
  • H.265/HEVC - Better compression, limited support
  • VP8/VP9 - Open codec, growing support

Audio Codecs

  • AAC - Recommended for MP4
  • MP3 - Legacy support
  • Opus - High quality, growing support

Container Formats

  • MP4 - Industry standard
  • WebM - Open format
  • MOV - Apple format, transcoded by publishers

Bitrate Ranges

  • High Quality (1080p): 8-10 Mbps
  • Standard Quality (720p): 4-6 Mbps
  • Mobile Optimized (480p): 2-3 Mbps
  • CTV/OTT: 4-8 Mbps (file size limits apply)

Frame Rates

  • 23.976 fps, 24 fps, 25 fps, 29.97 fps, 30 fps, 60 fps

Common Resolutions

16:9 Landscape:
  • 1920x1080 (1080p Full HD)
  • 1280x720 (720p HD)
  • 854x480 (480p SD)
9:16 Portrait:
  • 1080x1920 (Mobile vertical)
1:1 Square:
  • 1080x1080 (Social video)