Add and manage DSP seats
Add your bidder as a DSP seat so LtvAdx sends it OpenRTB bid requests for CTV inventory, then read its bid rate, timeouts, wins and cleared value.
A DSP seat is a bidder you run or represent. Once LtvAdx approves it, LtvAdx sends it an OpenRTB 2.6 video bid request when a CTV ad break on your network's inventory might go to open auction, or when a publisher's deal with your ad network could win the break. If the seat's bid beats LtvAdx's own demand, its ad plays.
This is the "LtvAdx calls your bidder" direction. If your side sends requests to LtvAdx instead, see Connect with OpenRTB.
Before you start
- You need an owner, admin or manager seat on your ad network account. Other seats can read the page but can't change a seat. See Team and seats.
- Your bidder needs a public https address that accepts a POST of an OpenRTB 2.6 request. LtvAdx refuses addresses that aren't public, such as
localhost, internal host names and private IP addresses. It also refuses an address with a user name or password in it, so put credentials in the auth header instead. - Your bidder must answer fast. The exchange waits 100 ms for all bidders. A seat can ask for a shorter wait but never a longer one.
- Every seat pays LtvAdx. LtvAdx bills your DSP, keeps its exchange fee and pays the publishers. Put the DSP's billing contact and payment terms on the seat.
Steps
- Open DSP Seats and select Add DSP seat.
- Fill in Name and the Bid endpoint (https).
- If your bidder needs a credential, set Auth header to the header name (for example Authorization) and Auth value to its value. The value is stored and never shown again. Leave it blank on a later edit to keep it.
- Set Timeout (ms), between 10 and 100. LtvAdx never waits longer than 100 ms for any bidder, so a longer value is refused.
- Choose the OpenRTB version header, 2.6 or 2.5. It is sent as the
x-openrtb-versionheader. The request body is the same for both, with the supply chain in both places a 2.5 or 2.6 bidder reads it. - Set Max requests / second (0 = no limit) if your bidder can only take so much. The limit is applied on each LtvAdx server separately.
- Optionally enter Only these publisher IDs (blank = every publisher in your network) to offer the seat only some publishers' inventory. The publishers must be in your network.
- Enter the DSP billing contact and Payment terms (days), up to 120.
- Select Submit for approval.
What happens next
The seat shows "Waiting for LtvAdx approval". LtvAdx reviews every new seat before it receives a request. When it is approved it becomes Active. If LtvAdx rejects it, the status is Rejected and the reason is shown under it.
An Active seat can be changed at any time. Changing its Bid endpoint (https) or the auth header sends it back for approval and stops bidding until it is approved again. Other changes, such as the timeout or request limit, apply within about a minute.
On the seat's row, the icons are:
- Edit to change it.
- Pause to stop requests. A paused seat can be resumed with Resume, but only if LtvAdx approved it before.
- Remove to delete it. You are asked to confirm, and a removed seat can't be turned back on.
Which requests your seat gets
A request goes to your seat only when all of these hold:
- The channel is in your network, or belongs to a publisher you listed on the seat.
- The channel's publisher has ticked RTB Enabled on the channel.
- The channel is verified as an authorized seller and the publisher is listed in LtvAdx's seller file.
- The impression would otherwise go to open auction. Deals, direct campaigns and addressable demand come first, and your seat is not asked about those, except for a deal a publisher agreed with your ad network.
- Your seat has not hit its request limit.
Your open bid wins only if it is higher than the best bid from LtvAdx's own open-auction demand for that break. A bid on one of your deals competes at the deal's rank instead; see Propose, negotiate and manage a deal. A deal reaches your seats even on a channel whose publisher hasn't ticked RTB Enabled: such a request accepts only bids on the deal.
These bids are ignored:
- a bid in a currency other than USD;
- a bid from an advertiser or in a category the publisher blocks;
- a bid whose video the channel's player can't use: the channel lists the video types it plays, and the VAST has no file of those types, or the channel refuses VAST wrappers and the bid is a wrapper;
- a bid on a deal your seat wasn't offered, from another seat, or under the deal's price.
Channels with sensitive categories blocked (Beta)
Some publishers block sensitive categories such as gambling, alcohol, crypto or prescription drugs, and children's channels block all of them. On those channels a bid is also refused when:
- it has neither
catnoradomain; - its
cat, read in itscattax(nocattaxmeans Content Taxonomy 1.0;8means Ad Product Taxonomy 2.0), is a blocked category; - LtvAdx staff have listed its
adomainunder a blocked category; - LtvAdx staff have not yet reviewed the creative (
cridwithadomain, per seat) or its brand domain. The first bid of a new creative files it for review. It is refused until staff decide, with loss code 201; - your seat is isolated from these channels. A seat is isolated after it bids several creatives of restricted brands without the matching
cat. Only LtvAdx staff restore it.
Your lurl gets the reason as an OpenRTB loss code: 10 (no cat or adomain), 209 (category), 205 (advertiser domain), 201 (waiting for review), 202 (rejected), 8 (no crid) or 104 (seat isolated). Channels without such blocks are not affected. To be reviewed quickly, send crid, adomain and an honest cat with every bid.
What your seat receives
The request carries the publisher and app (or site) details, the publisher's seller ID, a supply chain node for LtvAdx, the channel's floor, the maximum ad length, the video types the channel plays (imp.video.mimes: MP4 and HLS when the channel sets none), and the viewer's consent signals. It also carries the publisher's blocked advertisers in badv and blocked categories in bcat, and at: 1, because LtvAdx clears each auction at the winning bid. A channel that refuses wrappers is sent inline VAST protocols only. bcat uses IAB Content Taxonomy 1.0, with cattax: 1 for OpenRTB 2.6. The same blocks in IAB Ad Product Taxonomy 2.0 go in ext.ltvadx_bcat as {"cattax": 8, "bcat": [...]}. If your bidder reads Ad Product 2.0 in bcat, ask LtvAdx to switch your connection. You then get bcat in 2.0 with cattax: 8, and the 1.0 codes in ext.ltvadx_bcat. One request can carry only one cattax, so one of the two lists has to go in ext. A request for a channel where your ad network holds a live deal carries it in imp.pmp.deals.
It does not carry:
- Show or episode details such as title, genre or series.
- A household ID, extended user IDs or audience data. The user object holds only a consent string, when there is one.
- Latitude, longitude, region, city or postal code. The location is the country only.
- Device make, model or operating system. The device has its user agent, IP address and advertising ID.
- The advertising ID and the full IP address when the viewer has not given consent. For that viewer the IP address is shortened, and the request can be marked as limited tracking.
Win, billing and loss notices
If your bid includes notice URLs, LtvAdx calls them:
| Notice | When it is sent |
|---|---|
| Win notice | Your bid wins LtvAdx's auction. This is before the ad plays. |
| Billing notice | The impression is counted as valid. It is sent only if that happens in the 24 hours after the win, and not for impressions marked as invalid traffic. |
| Loss notice | A valid bid loses, either to a higher outside bid or to LtvAdx's own demand. Loss notices can be sampled, so not every loss is reported. |
The price macro is filled with your own bid, because LtvAdx clears each auction at the winning bid. On a loss it is empty. Each notice is a single GET with a short timeout. It is not retried if it fails, and a URL that points to a non-public address is not called.
Read the numbers
Each seat's row, and the four cards above the list, show this month in UTC days.
| Column | What it counts |
|---|---|
| Requests | Bid requests LtvAdx sent your seat. Requests held back by your request limit are not counted here. |
| Bid rate | Requests where you returned an acceptable bid, as a share of requests |
| Timeouts | Requests your seat did not answer in time, as a share of requests |
| Win rate | Wins as a share of your acceptable bids |
| Cleared (month) | The value of this month's impressions billed to the seat, at the clearing price |
A win means your bid beat the other demand. It is counted when the auction is decided, so it can be higher than the number of impressions that later play.
The "Cleared" value is what LtvAdx bills your DSP. It is before any LtvAdx fee. LtvAdx prepares the bill monthly for the billing contact on the seat.
If something goes wrong
| What you see | What to do |
|---|---|
| "Your bidder is timing out" alert | More than 30% of at least 50 requests to one of your seats timed out today (UTC). Check how fast the bidder responds and look at the Timeouts column on this page. Lower its processing time, or shorten Timeout (ms) only if you want LtvAdx to give up sooner. |
| "timeoutMs must be 10–100" | LtvAdx waits at most 100 ms for a bidder. Set a timeout in that range. |
| Seat stuck on "Waiting for LtvAdx approval" | It is reviewed by LtvAdx. If you changed the endpoint, bidding is paused until it is approved. Contact support if it is taking long. |
| Requests stay at zero | Check that the seat is Active and that publishers have ticked RTB Enabled on their channels. Check that the publisher IDs on the seat are right. |
| Bid rate is low | Your bidder is returning no-bid, a 204, an empty bid list or bids in a currency other than USD. Floors and blocked categories also remove bids. |
| "endpointUrl must be an https:// URL with a host" | Use a public https address. |
| "Your seat cannot change DSP connections" | Ask an owner, admin or manager. |
| "Your ad network account is suspended" | Seats can't be changed while the account is suspended. Contact support. |