Overview for VOD streams
Stay organized with collections
Save and categorize content based on your preferences.
The DAI Pod Serving API provides adaptive-bitrate video ad pod manifests,
prepared in such a way that they can be stitched directly into a user-facing HLS
or MPEG-DASH media playlist.
A typical integration with the DAI Pod Serving API has three main components:
Google Ad Manager, a client video player app—commonly built using
the Interactive Media Ads (IMA) SDK—and a
manifest manipulator.

Ad Manager
Ad Manager is responsible for delivering ad pods to the manifest manipulator.
The manifest manipulator interacts with Ad Manager's Pod Serving
API
to request the ad pods. The service has these responsibilities:
- Creating a stream session for each request from the client video player
app, selecting ads, building ad pods and providing renditions to match
your content encoding profiles, also called "video creative conditioning".
(Steps 1 and 2 in the diagram above)
- Responding to ad pod requests from the manifest manipulator and
providing properly encoded ad pod manifests for stitching into streams.
(Steps 4 and 5)
- Responding to ad pod metadata requests from the client video player app
and providing a lookup table for ad events. (Steps 7 and 8)
- Receiving and processing tracking pings received by the client video player
app. (Step 10)
Client video player app
The client video player app can be a TV app, mobile app, or web app where
users watch the video stream. The player has these responsibilities:
- Requesting a stream resource from Ad Manager and receiving a stream object
that represents a single playback session of a specific video asset. (Steps
1 and 2)
- Requesting a stream manifest from the manifest manipulator and beginning
playback. (Steps 3 and 6)
- Requesting ad pod metadata from Ad Manager, which describes the ad events
embedded in the stream's timed metadata events. (Steps 7 and 8)
- Listening to the video player for callbacks with timed metadata events
embedded in the audio or video stream that contain ad media IDs. (Step 9)
- Looking up the verification URLs by matching these embedded IDs to ad events
and notifying Ad Manager that these ad events have successfully occurred.
(Step 10)
To learn more about implementing the client video player app, see the
IMA SDK guide for your platform:
Android,
HTML5,
iOS, or
tvOS.
For custom implementations, see our client video player app
guide for the DAI
VOD Pod Serving API.
Manifest manipulator
The manifest manipulator is the server in charge of hosting the stream manifest
provided to the client video player app. The server has these responsibilities:
- Requesting ad pod manifests from Ad Manager. (Steps 4 and 5)
- Stitching these ad manifests into the existing VOD content stream and
providing the final manifest to the client video player app. (Steps 3
and 6)
To learn more about implementing a custom manifest manipulator, see the
manifest manipulator
guide for the
DAI VOD Pod Serving API.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-20 UTC.
[null,null,["Last updated 2025-08-20 UTC."],[[["\u003cp\u003eThe DAI Pod Serving API delivers adaptive bitrate video ad pods for seamless integration into HLS or MPEG-DASH playlists.\u003c/p\u003e\n"],["\u003cp\u003eA typical integration involves Google Ad Manager, a client video player app (often using the IMA SDK), and a manifest manipulator.\u003c/p\u003e\n"],["\u003cp\u003eAd Manager handles ad pod delivery, stream session creation, ad selection, encoding, and tracking.\u003c/p\u003e\n"],["\u003cp\u003eThe client video player app requests streams, manifests, and ad metadata, and handles ad event verification.\u003c/p\u003e\n"],["\u003cp\u003eThe manifest manipulator stitches ad manifests into the content stream, creating the final manifest for the client video player.\u003c/p\u003e\n"]]],["The DAI Pod Serving API involves three components: Ad Manager, a client video player app, and a manifest manipulator. Ad Manager delivers ad pods, manages stream sessions, provides ad pod manifests and metadata, and processes tracking pings. The client app requests streams, requests and plays manifests, retrieves ad metadata, and sends ad event notifications. The manifest manipulator requests ad pod manifests from Ad Manager and then stitches them into the content stream, providing the final manifest to the client app.\n"],null,["# Overview for VOD streams\n\nThe DAI Pod Serving API provides adaptive-bitrate video ad pod manifests,\nprepared in such a way that they can be stitched directly into a user-facing HLS\nor MPEG-DASH media playlist.\n\nA typical integration with the DAI Pod Serving API has three main components:\nGoogle Ad Manager, a client video player app---commonly built using\nthe [Interactive Media Ads (IMA) SDK](/interactive-media-ads)---and a\nmanifest manipulator.\n\nAd Manager\n----------\n\nAd Manager is responsible for delivering ad pods to the manifest manipulator.\nThe manifest manipulator interacts with Ad Manager's [Pod Serving\nAPI](//support.google.com/admanager/answer/10492367#dai-pod-serving)\nto request the ad pods. The service has these responsibilities:\n\n- Creating a stream session for each request from the client video player app, selecting ads, building ad pods and providing renditions to match your content encoding profiles, also called \"video creative conditioning\". (Steps 1 and 2 in the diagram above)\n- Responding to ad pod requests from the manifest manipulator and providing properly encoded ad pod manifests for stitching into streams. (Steps 4 and 5)\n- Responding to ad pod metadata requests from the client video player app and providing a lookup table for ad events. (Steps 7 and 8)\n- Receiving and processing tracking pings received by the client video player app. (Step 10)\n\nClient video player app\n-----------------------\n\nThe client video player app can be a TV app, mobile app, or web app where\nusers watch the video stream. The player has these responsibilities:\n\n- Requesting a stream resource from Ad Manager and receiving a stream object that represents a single playback session of a specific video asset. (Steps 1 and 2)\n- Requesting a stream manifest from the manifest manipulator and beginning playback. (Steps 3 and 6)\n- Requesting ad pod metadata from Ad Manager, which describes the ad events embedded in the stream's timed metadata events. (Steps 7 and 8)\n- Listening to the video player for callbacks with timed metadata events embedded in the audio or video stream that contain ad media IDs. (Step 9)\n- Looking up the verification URLs by matching these embedded IDs to ad events and notifying Ad Manager that these ad events have successfully occurred. (Step 10)\n\nTo learn more about implementing the client video player app, see the\nIMA SDK guide for your platform:\n[Android](/ad-manager/dynamic-ad-insertion/sdk/android?service=pod),\n[HTML5](/ad-manager/dynamic-ad-insertion/sdk/html5?service=pod),\n[iOS](/ad-manager/dynamic-ad-insertion/sdk/ios?service=pod), or\n[tvOS](/ad-manager/dynamic-ad-insertion/sdk/tvos?service=pod).\nFor custom implementations, see our [client video player app\nguide](/ad-manager/dynamic-ad-insertion/api/pod-serving/vod/client) for the DAI\nVOD Pod Serving API.\n\nManifest manipulator\n--------------------\n\nThe manifest manipulator is the server in charge of hosting the stream manifest\nprovided to the client video player app. The server has these responsibilities:\n\n- Requesting ad pod manifests from Ad Manager. (Steps 4 and 5)\n- Stitching these ad manifests into the existing VOD content stream and providing the final manifest to the client video player app. (Steps 3 and 6)\n\nTo learn more about implementing a custom manifest manipulator, see the\n[manifest manipulator\nguide](/ad-manager/dynamic-ad-insertion/api/pod-serving/vod/manipulator) for the\nDAI VOD Pod Serving API."]]