DAI Pod Serving API overview

Pod serving lets you perform server-side ad insertion with Google ads, without sending your content to Google's DAI servers. You can work with your existing Video Technical Partner to manipulate your manifest or implement your own manifest manipulation server using the DAI Pod Serving API (Live or VOD).

You can use the Interactive Media Ads (IMA) DAI SDK to develop client apps for the web and mobile platforms that seamlessly interact with the DAI Pod Serving API. To configure the IMA DAI SDK with DAI Pod Serving API, refer to the guide that's specific to your client app's platforms (Android, Chromecast, HTML5, iOS, Roku, tvOS) for Live or VOD stream format.

If you have special requirements that are not supported by the IMA DAI SDK, you can follow the client video player guide (Live or VOD) to develop your own client apps.

DAI pod serving components

An implementation of the DAI Pod Serving API consists of three main components:

Google Ad Manager is a hosted service that creates and manages user stream sessions, selects ads to serve, encodes them as streaming segments, and delivers them to the client video player when requested.

In live streams, ads are inserted in real time when specific segments are requested by the client video player and are delivered to the player as URL redirects for those media segments.

In VOD streams, ads are selected before playback begins and are delivered to the manifest manipulator as a set of stream manifests corresponding to each ad pod.

Manifest manipulator

A manifest manipulator is a server that receives a stream session ID from the client video player, uses it to associate ads with that stream, and embed those ads into the stream manifest.

For HLS live streams, the manifest manipulator doesn't communicate directly with Ad Manager. Instead, it places ad media segments in the stream manifest with Ad Manager URLs so that the client video player can request the ad media segment files.

For VOD streams, the manifest manipulator communicates directly with Ad Manager to request ads, and receives a set of streaming manifests to merge with the content stream. The combined manifest is then sent to the client video player for playback.

Client video player

The client video player is the app or website that eventually plays back the video stream containing ads. Before doing so, it requests a stream ID from Ad Manager and then passes that ID to the manifest manipulator to receive a streaming manifest to play. It's also in charge of watching for in-stream metadata and triggering ad tracking events.

Livestream versus VOD pod serving

At a glance, livestream and VOD pod serving might appear very similar. However, there are several significant differences between the two workflows.

Livestream pod serving VOD pod serving
The client video player requests ads from Ad Manager as needed throughout playback. These ads can be preselected using early ad break notifications. The manifest manipulator requests all ads from Ad Manager before playback begins.
With HLS streams, the manifest manipulator doesn't directly interact with Ad Manager, but instead generates ad segment URLs for the client video player to request as needed. The manifest manipulator directly requests ads from Ad Manager before generating the stream manifest for the client video player.
Ad Manager might insert slate if an ad pod is shorter than a specified ad break. Slate is not needed or supported.
You must register the livestream event and encoding profiles with Ad Manager before ads can be requested. You don't need to perform any setup in Ad Manager before ads can be requested, but the manifest manipulator must provide the relevant encoding profiles and ad tag for your stream on each ad request.

It's important to keep these differences in mind as you proceed with Live or VOD pod serving.