Partner integration guide

Bring programmatic demand to your screens

Four ways to connect your inventory to Eskimi, from opening a web page on the screen up to a full OpenRTB endpoint. Every one of them serves real ads today. Pick what fits your CMS, and nothing here requires exclusivity with your existing SSPs or exchanges.

Four ways to integrate

Every path below reaches the same demand and is live today. They are ordered easiest first, so the right one for you is usually the first one your screens or CMS can already do.

Method Best for Effort Real-time Reporting
1 TV browser player HTML container

Your screen opens our player URL and plays whatever the next slot returns. Pair it by scanning the QR code on your screen page, or by reading the six-digit code the screen puts on itself and entering it there. Nothing to install, no SDK and no credentials to exchange. The same URL works two ways: as the screen's own full-screen browser page, or pasted into a web-page widget inside the CMS you already schedule in, so an owner on Xibo, Yodeck or ScreenCloud never has to leave it. The widget route also takes an optional ?slots=N parameter, so a playlist item can ask for a fixed number of slots (?slots=1 for a single spot) instead of polling forever: once N slots have played the player stops requesting new ads and leaves the last creative on screen, which is what makes it behave as one discrete spot in your loop rather than a continuously polling player.

Before you commit inventory: Test the widget route on your own hardware before you commit inventory to it. We have tested a plain browser iframe, not any specific CMS product, and two separate faults look the same from your dashboard: some older Android players save a still snapshot of a web page instead of keeping it live, and some Samsung Tizen panels paint an embedded HTML ad solid black. Working looks like this. Stand in front of the screen, watch the creative change on its own within a slot or two, and check that the impressions on your screen page climb while you watch. A frozen image, or a black rectangle that still reports impressions, means the widget is not rendering live and the screen's own browser page is the route to use instead.

Any screen that can open a browser, or any CMS that can show a web page Lowest, no engineering Yes Automatic
2 VAST tag Ad tag

Your player calls a per-screen tag URL and gets a VAST document back, exactly as it would call any video ad server. The screen identifier can arrive as a path segment or as a query parameter, and the parameter names, screen lookup and VAST version are configurable per supplier. We relay the buyer's own VAST document and add a single impression beacon, so their trackers stay intact.

A player or CMS that already takes a video ad tag Low, paste a URL Yes Automatic
3 JSON slot API API integration

Your CMS asks us for the next slot over HTTP and gets back a small JSON object: kind, slot_token, media_url or html, mime, duration_ms, w, h and trackers. A kind of idle means the slot is yours to fill. Parameters can arrive in the query string or in a JSON body, and every payload key can be renamed to match what your CMS already expects.

A CMS or player you can add a little code to Low to moderate Yes Automatic
4 OpenRTB SSP / exchange integration

Your SSP posts an OpenRTB 2.6 DOOH bid request to our /rtb/bid endpoint with your key as a bearer token, and reads a standard bid response. Win and billing notices are rewritten through us, so nurl and burl point at single-use Eskimi URLs that relay to the buyer once the play is confirmed.

A network already running an SSP or exchange Highest, but usually already built Yes Automatic

Not sure which fits? The online application walks through a few technical questions and mirrors this same table back as a recommendation.

How impressions are estimated

A "play" on a screen is not the same as an impression — a screen typically has more than one viewer per play. We apply an impression multiplier (average viewers per play) to turn logged plays into estimated audience impressions, the same way outdoor audience measurement has always worked. If you already have footfall or dwell-time data for your locations, we use it; otherwise a conservative default applies until real measurement is available. This keeps reporting honest: plays are a fact, impressions are always a transparent estimate built on top of them.

Creative formats we deliver

Campaigns are booked as image, video, HTML5 or animated creative. Your screens only need to accept what they can actually play, so tell us what is supported and we serve within those limits. One exception is worth planning for: a VAST tag can only carry video, so a VAST-only integration receives the video campaigns and skips the rest. The other three paths can take every format below.

Format File types Specs
Static image JPEG, PNG Native resolution, max 10MB
Video MP4 (H.264), MOV Native resolution, 10-15s, max 50MB, 25-30fps
HTML5 HTML + ZIP Responsive, max 5MB
Animated GIF Native resolution, max 10MB

Reporting fields

We log every play ourselves. All four paths hand back an impression beacon with the ad, so proof of play is generated on our side and appears in your supplier portal without you sending us anything. This table is the reporting vocabulary behind it: required fields are the ones every play record carries, and recommended fields are the ones that make audience estimates richer when you can provide them.

Field Description Priority
date Calendar date the plays occurred (YYYY-MM-DD). Required
time_hour Hour of day the plays occurred, for daypart analysis. Recommended
campaign_id Identifier of the campaign the plays belong to. Required
creative_id Identifier of the creative that played. Required
screen_id Identifier of the screen the plays occurred on. Required
screen_name Human-readable name of the screen or site. Recommended
location City, venue, or address of the screen. Recommended
plays Number of times the creative played in the period. Required
duration_sec Total seconds the creative played in the period. Required
impressions Estimated audience impressions delivered. Recommended
impression_multiplier Average viewers per play used to derive impressions. Recommended
reach Estimated unique audience reached. Recommended
cost Media cost for the period, in the agreed currency. Required

Keep your own play logs as well? Send a sample export and we will reconcile it against ours during onboarding, so both sides agree on the numbers before your first campaign runs.

Frequently asked questions

Do I need real-time bidding to work with Eskimi?

No. OpenRTB is the deepest of the four paths and the least common starting point. Most partners begin with the hosted browser player, which needs no credentials and no engineering time, or with a VAST tag when their player already knows how to call one.

Can I keep working with my existing SSPs and exchanges?

Yes. Integrating with Eskimi is not exclusive — your inventory can be connected here alongside any other demand source you already run.

What if my screens don't have audience measurement?

That's fine to start. We apply a standard impression multiplier until real footfall or dwell-time data is available, and switch to your measurement the moment you can provide it.

How long does onboarding take?

It depends on the method. A screen running the hosted player can be paired and live the same day. A VAST tag is a URL your player already knows how to call. The JSON slot API is a small amount of code against your CMS. OpenRTB takes longest because it involves two engineering teams. Submit the application below and your technical contact will confirm a timeline.

Ready to connect your screens?

Tell us about your inventory and technical setup — it takes a few minutes, and lands directly with our partnerships team.

Apply to integrate →