For DSP partners
Adbustr is a direct supply integration target for performance-focused DSPs, aggregating long-tail video and display inventory served as web (site) supply: in-stream VAST, banner, ADM and pop. One OpenRTB 2.5 / 2.6 wire contract, a SupplyChain object on every request, and impression-level logs for reconciliation.
Integration brief
HTTPS POST, application/json, x-openrtb-version 2.5 or 2.6, keep-alive, UTF-8. Exactly one imp per request. Standard objects throughout: any ext field is agreed at onboarding, never assumed.
Each impression we surface carries source.ext.schain (ver 1.0) with asi, sid, and hp=1 on the Adbustr node. sellers.json, ads.txt, and app-ads.txt are published at their canonical locations.
Every eligible seat is called in parallel inside tmax and ranked after normalisation to a base currency (Norm = price, times currency rate, times BidRate). Anything under the endpoint bidfloor never clears. The auction type carried on your seat is set in configuration and confirmed at onboarding, and the clearing price recorded per request is available to you in the impression-level logs for reconciliation.
Revenue share is configured per integration with per-country (ISO2) overrides. bidfloor, BidRate, and request throttling (ReqFilter) are set per seat and per zone, read from configuration rather than hardcoded.
The request we send
Every request is enriched before it leaves us (real client IP, GeoIP resolution, and browser, OS, and device class from the user agent), then built into a canonical OpenRTB BidRequest and fanned out to every eligible seat in parallel, inside tmax.
Video profile
The response we expect
Put the URL of your VAST tag in adm. We wrap it in our own VAST wrapper through VASTAdTagURI and hand it to the publisher's player. Inline VAST markup in adm will not render.
adm carries the HTML markup. It is served through our banner container with price macros already substituted.
adm carries the landing URL, flagged with imp.instl=1. nurl is accepted as an alternative carrier for the destination.
Notices & macros
nurl
Called server-side the moment your bid wins, after macro substitution. On the OpenRTB channel the win notice can be proxied through /rtb/nurl/{id} so it fires on the billable impression rather than at auction time.
burl
Passed into the rendered creative and fired by the client on the billable impression: by the publisher's player for video, from the impression pixel list for pop.
lurl
Fired on every valid losing bid, with the loss reason carried in ${AUCTION_LOSS}.
Supported macros
Macros are substituted server-side before the notice is fired, on nurl, burl and lurl alike. Any additional macro or encoding your seat requires is agreed at onboarding.
Validation
Requests that never reach your QPS budget are logged with a bid / no-bid verdict and the reason below, per request, and surfaced in reporting.
How partnerships work
01
Initial outreach goes through a@adbustr.com. We execute a mutual NDA and exchange technical documentation, including QPS profiles, geographic coverage, seat and currency setup, and inventory class breakdowns.
02
We register your bidder URL, agree tmax and currency, and verify connectivity: a GET on the OpenRTB endpoint is treated as a ping, not a bid request. Test traffic validates schain propagation, macro substitution, and nurl / burl handling end to end.
03
Traffic opens under ReqFilter throttling and a per-endpoint QPS cap, then scales as bid rate, timeout rate, and downstream performance hold. Every step is reversible: the demand fan-out toggle is fail-safe OFF and flips instantly.
Specifications
Demand endpointyour bidder URL (regional URLs supported)OpenRTB inboundhttps://rtb.adbustr.com/rtb/{uid}POST = bid request · GET = pingProtocolHTTPS POST · application/json · UTF-8Headersx-openrtb-version: 2.5 / 2.6 · keep-aliveSpecOpenRTB 2.5 / 2.6Auction timeouttmax 300 to 500 ms (per publisher / zone)Bidder timeout500 ms · late responses discardedAuctionreal-time · at value per seat, confirmed at onboardingCurrencyper-seat cur · USD-based rates, hot-reloadedThrottlingReqFilter share per seat · maxqps per endpointNo-bidHTTP 204One OpenRTB endpoint, schain 1.0, cookie sync and QPS controls. The wire contract on this page is the whole of it: read it before you commit engineering time, then talk to the people who wrote it.
Email is the fastest path for a seat request, an NDA or a QPS profile. It reaches the partnerships team directly.