Important: Payload vs Requirements
For payload schemas (the structure of the actual asset data supplied in creative manifests), see:- Asset Type Registry - Links to all payload schemas
- Core Asset Schemas at
/schemas/3.0.19/core/assets/- Individual asset payload definitions
- Whether an asset is required or optional
- Acceptable file or container formats
- Duration, dimension, or aspect ratio limits
- File size and bitrate limits
- Allowed or restricted features (for tag-based assets)
urlcontent(for inline text or inline tag markup)width/height(when declared)duration_ms(when applicable)format(declared container type)
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. Two related but distinct fields describe a URL asset:url_type(on the manifest asset) — the mechanism the receiver uses to invoke this URL.url-asset-requirements.role(on the format) — the purpose this URL slot serves in the creative.
click_tracker (purpose) and accept a tracker_pixel (mechanism) URL — those describe different things.
Manifest-side: url_type (mechanism)
Senders SHOULD include url_type on every URL asset. The valid values are:
| Value | Mechanism |
|---|---|
clickthrough | User-click destination (landing page or ad-tech redirector) |
tracker_pixel | Fires HTTP GET, expects 1×1 pixel or 204 response (impression / event / 3P trackers) |
tracker_script | Loads as a <script> tag — measurement SDKs (OMID verification, native event trackers using method: 2) |
url_type is absent, receivers SHOULD fall back to the format’s url-asset-requirements.role:
role (format) | Fallback url_type (mechanism) |
|---|---|
clickthrough, landing_page | clickthrough |
impression_tracker, click_tracker | tracker_pixel |
viewability_tracker | tracker_script — OMID and equivalent verification SDKs require a <script> tag; firing them as a pixel produces no measurement |
third_party_tracker | No safe fallback. Mechanism is integration-specific (DV/IAS ship both pixel and script forms). Receivers MAY reject or warn. |
url_type nor a format-side role is available, receivers MUST NOT silently pick a mechanism — firing a clickthrough URL as a pixel (or vice versa) silently corrupts measurement and breaks the user flow. Receivers SHOULD reject the manifest.
VAST/DAAST URLs are not URL assets. A URL pointing to ad-server XML markup is parsed, not GET-fired. Useasset_type: "vast"withdelivery_type: "url"for VAST tags, and the dedicated tracker types (vast_tracker/daast_tracker) once those land per RFC #2915. A VAST tag declared asasset_type: "url"withurl_type: "tracker_pixel"is non-conformant under these mechanism semantics.
Migration cue for sellers. If your tooling previously emitted only{asset_type: "url", url: ...}(per the older docs), you can keep doing so through 3.x — but plan to addurl_typebefore 4.0, when this field becomes required.
Format-side: role (purpose)
In format requirements, role declares what the URL slot is for:
role enum: clickthrough, landing_page, impression_tracker, click_tracker, viewability_tracker, third_party_tracker.
Other URL-asset-requirements properties
protocols: Allowed schemes (https,http)allowed_domains: List of allowed hostnamesmax_length: Maximum URL lengthmacro_support: Whether macro substitution is permitted
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. Valid values are defined by the VAST Tracking Event enum. Includes IAB VAST 4.2 TrackingEvents plus flattened representations of Impression, Error, VideoClicks, and ViewableImpression elements:- Playback:
impression(billing event),creativeView,loaded,start,firstQuartile,midpoint,thirdQuartile,complete - Interaction:
mute,unmute,pause,resume,rewind,skip,playerExpand,playerCollapse,fullscreen(pre-4.0 compat),exitFullscreen(pre-4.0 compat),otherAdInteraction,interactiveStart(SIMID) - Progress:
progress(for custom progress points via VASToffsetattribute),notUsed(prefetched but not played) - Click & close:
clickTracking,customClick,close,closeLinear - Verification:
viewable,notViewable,viewUndetermined,measurableImpression(AdCP extension),viewableImpression - Errors:
error
- Playback:
- 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 events. Valid values are defined by the DAAST Tracking Event enum. Includes DAAST-applicable events plus flattened Impression, Error, and ViewableImpression elements:- Playback:
impression(billing event),creativeView(companion ad display),loaded,start,firstQuartile,midpoint,thirdQuartile,complete - Interaction:
mute,unmute,pause,resume,skip - Progress:
progress - Click & close:
clickTracking,customClick,close - Verification:
viewable,notViewable,viewUndetermined,measurableImpression(AdCP extension),viewableImpression - Errors:
error
- Playback:
companion_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 fields:asset_id: Unique identifier within the formatasset_type: The asset’s type (image, video, text, url, etc.)asset_role: Semantic purpose (hero_video, logo, cta_button)required: Whether the asset is mandatory
Asset ID vs Asset Role
asset_id: A stable identifier used by manifests to supply values.
asset_role: A semantic label describing the asset’s purpose.
Example:
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)
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 where possible
- Declare all constraints explicitly
- Use standard units:
- File size: MB (video/audio), KB (images)
- Duration: seconds
- Bitrate: Mbps (video), Kbps (audio)
- Dimensions: pixels
- Balance quality with performance
- Document edge cases using notes