Most of a GoGo CTV integration is built against published IAB standards, not against anything proprietary — so a good deal of the work can start before you talk to us. This page covers what you can build today, and exactly what to ask us for.
Being direct about this, because your time is worth more than our marketing.
| Area | Status |
|---|---|
| Standards and message formats | Published. VAST, VMAP, OpenRTB and SCTE-35 are IAB specifications — see standards. You can build against these now. |
| Integration models | Published. Server-side, client-side and server-side bidding — see integration paths. |
| Insertion mechanics | Published. Manifest manipulation, beaconing, failure modes — see SSAI. |
| Endpoint URLs | Not published. Issued per account. |
| Authentication | Not published. Provided with account credentials. |
| Request and response schemas | Not published. Sent as a versioned specification on request. |
| Error codes, rate limits, sandbox | Not published. Included in the same specification. |
An API reference that does not exactly match what the service accepts costs an integrating engineer more time than no reference at all — they build against the document, it fails, and they no longer trust either. We would rather send you a current, versioned specification than publish one that drifts.
Email contact@gogoctv.com with the details in what to send us and you will get the specification with a solutions engineer attached, under NDA if you need one.
The message formats are public specifications. If your player already speaks them, most of the integration surface is already familiar — only the destination and the credentials are ours.
For a client-side integration, the ad server returns a VAST document. That shape is defined by the IAB, not by us. Any player that handles VAST today will handle ours. Structurally, what comes back is:
<!-- IAB VAST structure — the public specification, not a GoGo-specific format -->
<VAST version="4.2">
<Ad id="...">
<InLine>
<AdSystem>...</AdSystem>
<Impression><!-- fired on first frame --></Impression>
<Creatives>
<Creative>
<Linear>
<Duration>00:00:15</Duration>
<TrackingEvents><!-- quartiles, complete --></TrackingEvents>
<MediaFiles><!-- one per rendition --></MediaFiles>
</Linear>
</Creative>
</Creatives>
</InLine>
</Ad>
</VAST>
Work you can do now: confirm your player handles VAST wrappers without excessive latency, verify it fires all quartile events, and check its behaviour on an empty response. That last one matters more than teams expect — an unfilled avail is normal traffic, not an error, and a player that mishandles it shows a black frame.
For programmatic demand, requests and responses follow OpenRTB. Version 2.6 is the one that matters for CTV because it carries pod structure, so a whole ad break is auctioned as a unit rather than slot by slot.
Work you can do now: establish how your inventory expresses pod duration and slot count, and whether break signalling reaches you as SCTE-35, as a VMAP document, or from your own schedule. This determines the integration path and is the first thing a solutions engineer will ask.
In a server-side integration your app requests a manifest from the insertion layer rather than directly from your CDN origin. In practice that is a change to the playback URL your app constructs, and it is worth locating that code before the project starts.
Read what SSAI requires for the packaging-side prerequisites, and beaconing for the part that determines whether your impression counts will agree with your buyers'.
So you can plan the work before you have the document. Every ad-serving API has to answer these, and ours is no exception:
Include these and the first reply can be the specification plus a scoped integration plan, rather than a discovery call.
HLS or DASH; whether you package in-house or use a third-party packager; and which CDN serves your segments.
SCTE-35 markers, a VMAP document, a fixed schedule, or player-side logic. If you are not sure, say so — that is a common answer and it is diagnosable.
Which platforms you ship on, and which player or SDK each one uses.
Live changes the signalling requirements and the concurrency profile substantially.
Direct-sold campaigns, current programmatic partners, and any house or sponsorship inventory that must keep working through a change.
An order of magnitude is enough. It determines the shape of the sandbox and the shadow test.
That list is deliberately the same as what you need before you start — gathering it once serves both purposes.
Worth saying, because waiting on a document is a common reason evaluations stall. Two routes need no integration work from you at all:
Send the six items above and you will get the current versioned specification and a solutions engineer, under NDA if you need one.