Important: Payload vs Requirements
This document describes format requirements (constraints and specifications defined in format specs). For payload schemas (the structure of actual asset data you send in creative manifests), see:- Asset Type Registry - Links to all payload schemas
- Core Asset Schemas at
/schemas/v2/core/assets/- Individual asset payload definitions
- Format requirements (this doc):
max_file_size_mb,required: true/false,acceptable_formats, duration constraints - Payload schemas (schemas):
url,width,height,content,duration_ms,format
requirements field. Asset payloads use the core schemas.
Asset Type Schema
The official JSON schema for asset types is available at:- Production: https://adcontextprotocol.org/schemas/asset-types-v1.json
- GitHub: https://github.com/adcontextprotocol/adcp/blob/main/static/schemas/asset-types-v1.json
Core Asset Types
Video Asset
Video assets represent video files with specific technical requirements.duration_seconds: Expected video durationmin_duration_seconds/max_duration_seconds: Duration range (if flexible)acceptable_formats: Container formats (mp4, webm, mov)acceptable_codecs: Video codecs (h264, h265, vp8, vp9, av1)acceptable_resolutions: List of width x height stringsaspect_ratio: Required aspect ratio (16:9, 9:16, 1:1, etc.)max_file_size_mb: Maximum file size in megabytesmin_bitrate_mbps/max_bitrate_mbps: Bitrate range in Mbpsfeatures: Additional requirements (e.g., [“non-skippable”, “sound on”])
Image Asset
Static image assets for banners, logos, and visual content.width/height: Dimensions in pixelsmin_width/min_height: Minimum dimensions (px; typically used by responsive/sizeless formats)aspect_ratio: Required aspect ratioacceptable_formats: Image formats (jpg, png, gif, webp, svg)max_file_size_kb: Maximum file size in kilobytestransparency: Whether transparency is required/supportedanimation_allowed: Whether animated GIFs are acceptednotes: Additional requirements (e.g., “Must be free of text”)
- Fixed layout: provide
widthandheight. Do not includemin_width,min_height, oraspect_ratio. - Responsive (fixed image aspect ratio): provide
min_width,min_heightandaspect_ratio. Do not includewidthorheight. - Responsive (any image aspect ratio): provide
min_widthandmin_heightonly. Do not includewidth,height, oraspect_ratio.
width and height. In responsive layouts, the renderer will resize the image; use min_width/min_height to ensure there are enough pixels for a sharp result after scaling. Use aspect_ratio only when the image asset itself must be a specific shape (e.g., 16:9); omit it if any image aspect ratio is acceptable
Text Asset
Text content for headlines, descriptions, CTAs, etc.text_type: Specific type (title, headline, description, body, cta, advertiser_name, disclaimer)max_length: Maximum character countmin_length: Minimum character countdefault: Default value if not providedallowed_characters: Regex pattern for validationformat: Expected format (plain, currency, percentage)
URL Asset
Links for clickthroughs, tracking, and landing pages.url_type: The purpose of the URL (used only in format requirements):clickthrough- User clicks this URL (may redirect through ad tech platforms before reaching destination)impression_tracker- Fires in background (returns 1x1 pixel, JavaScript snippet, or 204 No Content)video_tracker- Video ad tracking URL (for VAST, video events, etc.)landing_page- Landing page URL
must_be_https: Whether HTTPS is requiredallowed_domains: List of allowed domains (if restricted)tracking_macros_supported: Whether URL macros are supported
url_type field is only used in format requirements to specify how the URL will be used. When providing URLs in creative manifests, you only need to supply the url value - the asset_id already indicates the semantic purpose (e.g., impression_tracker, video_start_tracker, landing_url).
Audio Asset
Audio files for audio ads and podcasts.duration_seconds: Expected durationacceptable_formats: Audio formats (mp3, m4a, aac, ogg)min_bitrate_kbps: Minimum bitrate in kilobits per secondmax_file_size_mb: Maximum file size in megabytesstereo_required: Whether stereo audio is required
HTML Asset
HTML5 creative assets for rich media formats and third-party display tags.content: Inline HTML contenturl: URL to externally hosted HTML file (alternative to inline content)format: HTML format type (html5, amphtml)max_initial_load_kb: Maximum initial load sizemax_total_size_kb: Maximum total size including all assetsallowed_features: Allowed HTML5 featuresrestricted_features: Features that must not be used
VAST Asset
VAST (Video Ad Serving Template) tags for third-party video ad serving. URL Delivery:delivery_type: “url” or “inline” (required discriminator)url: URL endpoint that returns VAST XML (required when delivery_type is “url”)content: Inline VAST XML content (required when delivery_type is “inline”)vast_version: VAST specification version (2.0, 3.0, 4.0, 4.1, 4.2)vpaid_enabled: Whether VPAID (Video Player-Ad Interface Definition) is supportedmax_wrapper_depth: Maximum allowed wrapper/redirect depthduration_ms: Expected video duration in milliseconds (if known)tracking_events: Array of supported tracking events
- Third-party video ad servers
- Programmatic video buying
- Video ad networks
- VPAID interactive video ads
DAAST Asset
DAAST (Digital Audio Ad Serving Template) tags for third-party audio ad serving. URL Delivery:delivery_type: “url” or “inline” (required discriminator)url: URL endpoint that returns DAAST XML (required when delivery_type is “url”)content: Inline DAAST XML content (required when delivery_type is “inline”)daast_version: DAAST specification version (1.0, 1.1)duration_ms: Expected audio duration in milliseconds (if known)tracking_events: Array of supported tracking eventscompanion_ads: Whether companion display ads are included
- Third-party audio ad servers
- Podcast advertising networks
- Streaming audio platforms
- Radio-style digital audio ads
Common Properties
All asset types share these common properties:asset_id: Unique identifier for this asset within the format (e.g., “hero_image”, “video_file”, “headline”)asset_type: The type of asset (image, video, audio, text, html, css, javascript, vast, daast, url, promoted_offerings)asset_role: Semantic purpose of the asset (e.g., “hero_video”, “logo”, “cta_button”)required: Boolean indicating if the asset is mandatory
Asset ID vs Asset Role
asset_id: A unique identifier for this asset within the format specification. Used as the key when constructing manifests.
asset_role: Describes the semantic purpose or function of the asset in the creative. Helps buyers, AI systems, and publishers understand what the asset is for.
Example:
asset_id= “main_video” (the unique identifier for manifests)asset_role= “hero_video” (indicates this is the primary video content)
hero_image/hero_video- Primary visual contentlogo- Brand logoheadline- Main headline textdescription- Body copy or description textcta_button- Call-to-action buttonbackground_image- Background visualthumbnail- Preview imagecompanion_banner- Secondary display ad
Asset ID Usage
Theasset_id field is crucial for orchestrators and creative management systems. It provides a stable identifier for mapping uploaded assets to their correct positions in the creative format.
Example: Uploading Assets
When submitting creative assets, the orchestrator usesasset_id to map files:
asset_id values defined in the format.
Usage in Creative Formats
Creative formats specify their assets using theassets array. Each asset has a required boolean:
required: true- Asset MUST be provided for a valid creativerequired: false- Asset is optional, enhances the creative (e.g., companion banners, third-party tracking pixels)
Backward Compatibility: The
assets_required field is deprecated but still supported. Existing implementations can continue using assets_required for required assets only. New implementations should use assets with the required boolean for full asset discovery.Repeatable Asset Groups
For formats with asset sequences (like carousels, slideshows, stories), see the Carousel & Multi-Asset Formats guide for complete documentation on repeatable asset group patterns.Validation
Implementations should validate assets against these schemas to ensure compatibility. The JSON schema can be used for automated validation:Best Practices
- Be Specific: Use exact values rather than ranges when possible
- Include All Constraints: Document all technical requirements upfront
- Use Standard Units:
- File sizes: MB for video/audio, KB for images
- Bitrates: Mbps for video, Kbps for audio
- Durations: seconds
- Dimensions: pixels
- Provide Reasonable Limits: Balance quality with file size constraints
- Document Edge Cases: Use the
notesfield for special requirements