Skip to main content
This guide covers how AdCP represents audio advertising formats for streaming audio, podcasts, and radio.

Audio Format Characteristics

Audio formats include:
  • Hosted Audio - Direct audio file URLs (MP3, M4A)
  • VAST Audio - DAAST/VAST tags for programmatic audio
  • With Companion Banners - Audio + synchronized display companion
  • Podcast Insertion - Dynamic ad insertion (DAI) for podcasts
  • Broadcast Radio Spots - Scheduled spot files identified by traffic or clearance IDs and measured through audience currency rather than pixels
Audio ads are typically non-skippable and play during natural content breaks. Streaming and podcast inventory may support impression trackers, completion events, and companion clickthroughs. Broadcast radio does not have a renderer that can fire pixels; buyers reconcile it through spot logs, station affidavits, and audience measurement sources declared on the product or package.

Standard Audio Formats

Streaming Audio (15s, 30s, 60s)

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "audio_30s"
  },
  "type": "audio",
  "assets": [
    {
      "asset_id": "audio_file",
      "asset_type": "audio",
      "asset_role": "hero_audio",
      "required": true,
      "requirements": {
        "duration": "30s",
        "format": ["MP3", "M4A"],
        "bitrate_min": "128kbps",
        "max_file_size_mb": 5
      }
    }
  ]
}

Audio with Companion Banner

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "audio_30s_companion"
  },
  "type": "audio",
  "assets": [
    {
      "asset_id": "audio_file",
      "asset_type": "audio",
      "asset_role": "hero_audio",
      "required": true,
      "requirements": {
        "duration": "30s",
        "format": ["MP3", "M4A"],
        "bitrate_min": "128kbps"
      }
    },
    {
      "asset_id": "companion_banner",
      "asset_type": "image",
      "asset_role": "companion_banner",
      "required": false,
      "requirements": {
        "width": 640,
        "height": 640,
        "file_types": ["jpg", "png", "webp"],
        "notes": "Displays during audio playback on screen-enabled devices"
      }
    }
  ]
}

Podcast Mid-Roll (60s)

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "podcast_midroll_60s"
  },
  "type": "audio",
  "assets": [
    {
      "asset_id": "audio_file",
      "asset_type": "audio",
      "asset_role": "hero_audio",
      "required": true,
      "requirements": {
        "duration": "60s",
        "format": ["MP3", "M4A"],
        "bitrate_min": "128kbps",
        "max_file_size_mb": 10
      }
    }
  ]
}

Broadcast Radio Spot (30s)

Broadcast radio uses the same canonical audio_hosted creative asset shape as streaming audio, narrowed to the radio channel. The spot is scheduled into a station or network log, and the creative is usually referenced by an Ad-ID or ISCI. The canonical product-format declaration is the preferred 3.1+ shape:
{
  "format_kind": "audio_hosted",
  "format_option_id": "broadcast_radio_30s",
  "display_name": "Broadcast radio :30 spot",
  "applies_to_channels": ["radio"],
  "params": {
    "duration_ms_exact": 30000,
    "audio_codecs": ["mp3", "wav"],
    "audio_sample_rates": [44100, 48000],
    "audio_channels": ["mono", "stereo"],
    "loudness_lufs": -16,
    "loudness_tolerance_db": 2,
    "true_peak_dbfs": -2,
    "asset_source": "buyer_uploaded",
    "composition_model": "deterministic",
    "slots": [
      {
        "asset_group_id": "audio_main",
        "asset_type": "audio",
        "required": true
      }
    ]
  }
}
Legacy named-format catalogs can still expose the equivalent shape through format_id:
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "broadcast_radio_30s"
  },
  "type": "audio",
  "assets": [
    {
      "asset_id": "audio_file",
      "asset_type": "audio",
      "asset_role": "hero_audio",
      "required": true,
      "requirements": {
        "duration": "30s",
        "format": ["MP3", "WAV"],
        "sample_rates": [44100, 48000],
        "channels": ["stereo", "mono"],
        "loudness_lufs": -16,
        "loudness_tolerance_db": 2,
        "true_peak_dbfs": -2
      }
    }
  ]
}

Dynamic Audio Creative (DAC)

Multi-segment audio assembled dynamically:
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "audio_dynamic_30s"
  },
  "type": "audio",
  "assets": [
    {
      "asset_id": "intro_audio",
      "asset_type": "audio",
      "asset_role": "intro",
      "required": true,
      "requirements": {
        "duration": "5s",
        "format": ["MP3"]
      }
    },
    {
      "asset_id": "product_audio",
      "asset_type": "audio",
      "asset_role": "product_message",
      "required": true,
      "requirements": {
        "duration": "15s",
        "format": ["MP3"]
      }
    },
    {
      "asset_id": "cta_audio",
      "asset_type": "audio",
      "asset_role": "call_to_action",
      "required": true,
      "requirements": {
        "duration": "10s",
        "format": ["MP3"]
      }
    }
  ],
  "delivery": {
    "method": "server_side_stitching"
  }
}

Creative Manifests

Hosted Audio Manifest

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "audio_30s"
  },
  "assets": {
    "audio_file": {
      "asset_type": "audio",
      "url": "https://cdn.brand.com/audio_spring_30s.mp3",
      "duration": 30,
      "format": "audio/mpeg"
    },
    "impression_tracker": {
      "asset_type": "url",
      "url_type": "tracker_pixel",
      "url": "https://track.brand.com/imp?buy={MEDIA_BUY_ID}&station={APP_BUNDLE}&cb={CACHEBUSTER}"
    },
    "landing_url": {
      "asset_type": "url",
      "url_type": "clickthrough",
      "url": "https://brand.com/spring?campaign={MEDIA_BUY_ID}"
    }
  }
}

VAST Audio Tag Manifest

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

Audio with Companion Banner Manifest

{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "audio_30s_companion"
  },
  "assets": {
    "audio_file": {
      "asset_type": "audio",
      "url": "https://cdn.brand.com/audio_spring_30s.mp3",
      "duration": 30,
      "format": "audio/mpeg"
    },
    "companion_banner": {
      "asset_type": "image",
      "url": "https://cdn.brand.com/companion_640x640.jpg",
      "width": 640,
      "height": 640
    },
    "landing_url": {
      "asset_type": "url",
      "url_type": "clickthrough",
      "url": "https://brand.com/spring-sale?source=audio&cb={CACHEBUSTER}"
    }
  }
}

Broadcast Radio Manifest

Use the protocol creative_id for the seller/buyer library object, and use the existing industry_identifiers field for the traffic or clearance identifier that the radio workflow expects. Ad-ID is appropriate when that is the identifier the buyer, agency, or broadcaster uses. Broadcast radio also still sees ISCI and Ad-ID/ISCI labels used interchangeably, and non-US markets may require other identifiers such as Clearcast clock numbers or IDcrea. For canonical 3.1+ manifests, slot keys come from the audio_hosted declaration:
{
  "creative_id": "nova_spring_radio_30s",
  "name": "Nova Spring Campaign :30 Radio",
  "format_kind": "audio_hosted",
  "format_option_ref": {
    "scope": "product",
    "format_option_id": "broadcast_radio_30s"
  },
  "industry_identifiers": [
    { "type": "isci", "value": "NOVA123430" }
  ],
  "assets": {
    "audio_main": {
      "asset_type": "audio",
      "url": "https://cdn.nova-brands.example/radio/spring_30s.wav",
      "duration_ms": 30000,
      "container_format": "wav",
      "codec": "pcm",
      "sampling_rate_hz": 48000,
      "channels": "stereo",
      "loudness_lufs": -16,
      "true_peak_dbfs": -2
    }
  }
}
When the same source creative has different cuts (:15, :30, :60), assign the traffic identifier at the manifest level so each cut can carry its own Ad-ID, ISCI, clock number, or IDcrea. creative-identifier-type is intentionally limited to shared industry or market-standard schemes. If an adopter needs another scheme, add it to the enum by PR with evidence that it is a real shared workflow identifier rather than a seller-local traffic code.

Audio-Specific Macros

In addition to universal macros, audio formats support:

Content Context

  • {CONTENT_GENRE} - podcast, music, news, talk
  • {CONTENT_RATING} - Explicit, Clean
  • {COLLECTION_NAME} - Podcast or collection name
  • {INSTALLMENT_ID} - Episode identifier
  • {ARTIST_NAME} - Currently playing artist (music platforms)
  • {TRACK_GENRE} - Music genre of current track

Platform Context

  • {APP_BUNDLE} - Streaming app ID (Spotify, Apple Music, etc.)
  • {STATION_ID} - Radio station ID
  • {LISTENING_MODE} - Free tier, Premium, Trial
  • {DEVICE_TYPE} - Mobile, Desktop, Smart Speaker, Auto

Ad Insertion

  • {INSERTION_TYPE} - preroll, midroll, postroll
  • {TIME_OF_DAY} - morning, afternoon, evening, night
  • {DAY_PART} - Commute, Workout, Work, Relaxation

Platform-Specific Requirements

Streaming Music (Spotify, Pandora, Apple Music)

  • Free tier: Non-skippable audio between songs
  • Typical durations: 15s or 30s
  • Optional companion banner on screen-enabled devices

Podcast Insertion

  • Baked-in: Permanently encoded in installment
  • Dynamic insertion (SSAI): Personalized, with targeting and reporting

Broadcast Radio

  • Station or network logs provide spot-level proof that the creative was scheduled or aired
  • Station affidavits may be used for invoice reconciliation
  • Audience size, GRPs, reach, and frequency come from the product’s measurement source rather than creative-embedded tracking

Companion Banners

Appear alongside audio on screen-enabled devices:
  • Mobile apps, desktop players, smart speakers with displays
  • Common sizes: 640x640 (square), 320x50 (mobile banner)

Common File Specifications

Audio Files

  • Format: MP3 or M4A
  • Bitrate: Minimum 128kbps, recommended 192kbps
  • Sample Rate: 44.1kHz or 48kHz
  • Channels: Stereo or mono
  • Loudness: A target around -16 LUFS/LKFS with +/- 2 dB tolerance is a practical cross-audio recommendation; sellers may normalize final playout for their platform or transmitter chain

Durations

  • 15s: Quick message, high frequency
  • 30s: Standard, most common
  • 60s: Story-driven, common in podcasts

Measurement and Reporting

Audio measurement depends on the distribution context:
ContextTypical evidenceTypical metrics
Streaming audio / SSAIAd-server logs, DAAST/VAST tracking, completion eventsimpressions, starts/views, completed_views, completion_rate, quartile_data
Podcast DAIDownload or insertion logs, platform reporting windowsdownloads, impressions, reach, frequency, completed_views where available
Broadcast radioStation affidavits, playout logs, audience measurement currencyplays, impressions or measured impressions, grps, reach, frequency
For broadcast radio, the protocol should receive the reliable audience number and its basis, not a made-up digital completion surrogate. Sellers can expose forecasted audience through DeliveryForecast with measurement_source, demographic_system, demographic, reach_unit, and metrics such as grps, reach, frequency, impressions, or measured_impressions. After the buy runs, delivery reports use the standard delivery metrics (plays, impressions, grps, reach, frequency) plus vendor_metric_values when the authoritative audience source provides a named metric outside the standard delivery-metrics list. If billing depends on a third-party or audience-currency count, set measurement_terms.billing_measurement.vendor and, when needed, measurement_window or a vendor metric commitment on the package. Station affidavits and playout logs prove that scheduled spots aired; audience measurement sources turn those plays into the audience-size number used for planning, guarantees, and reconciliation.