Skip to main content

Integration

Thrad SSP supports OpenRTB 2.6 with Native 1.2. Expose one HTTPS bid endpoint. The SSP calls it with a standard BidRequest on every auction. Respond with a BidResponse — or 204 for no-bid. Win/loss/billing outcomes are communicated via nurl, lurl, and burl you supply in the response. Authentication is Bearer token. Full request/response specs in the Bid API reference.

End-to-end flow

  • nurl fires on win, after the winning creative is committed for render. Does not confirm impression.
  • burl fires on impression confirmation. Use this for spend recognition.
  • lurl fires on loss with reason code. Does not block winner path. Fires for both cross-DSP losers and in-response losers — see Multi-bid responses below.

First-Price Auction

The SSP runs a first-price auction across all DSP responses:
  • Highest bid wins
  • Winner pays their own bid amount (first-price)
  • Bids below the floor price are rejected
  • In case of a tie (multiple DSPs bid the same amount), the winner is picked randomly

Multi-bid responses

You may return multiple seatbid entries and multiple bid[] per seatbid in a single BidResponse — useful when your DSP fronts several buyers or evaluates several creatives per opportunity. The SSP handles multi-bid responses in two stages:
  1. In-response pick. Across every bid in your response, the SSP selects the highest-priced bid as your DSP’s representative for the cross-DSP auction. Ties are broken by first-encountered (stable). Bids with bid.cur set to anything other than "USD" or with no price are dropped before this step.
  2. Cross-DSP auction. All representatives — one per DSP — are entered into a first-price auction. Highest price wins.

Loss notifications across both stages

Every bid that does not become the final auction winner receives an lurl GET (when set on the bid) with reason code 102 (“lost to higher bid”):
Loser typeWhen it happenslurl fired?
Cross-DSP loserYour representative bid lost to another DSP’s representativeYes, reason 102
In-response loserA non-winning bid in your own response — you sent multiple bids; only the highest-priced became your representativeYes, reason 102 — fires for every in-response losing bid that has lurl set, regardless of whether your representative won the cross-DSP auction
This means even when your DSP wins the overall auction, the other bids you submitted in the same response still get a loss notice — they lost inside your own seatbid pick. This lets pacing/learning systems treat every submitted bid uniformly. Today only 102 is fired. Other rejection paths — below-floor (100), invalid bid response (3), invalid adm (7) — currently drop the bid silently without notifying your endpoint. Wiring those rejections to fire lurl with the appropriate reason code is on the v2 roadmap. Your endpoint should be ready to receive any spec-defined code, but in practice you’ll see only 102 until v2 ships. See the Bid API reference for the full code table.

Buyer seat (seatbid[].seat)

If your DSP fronts multiple buyers (agencies, advertisers, trading desks), populate seatbid[].seat with the buyer id. The winning bid’s seat is recorded in Thrad analytics and surfaced per impression — useful for slicing revenue and quality metrics by buyer rather than only by DSP. If you have no seat concept, omit it or send empty.

Pricing & Commission

Bid Rounding

Bids should be specified with 2 decimal places (e.g., 7.50, 12.34). If you submit a bid with more than 2 decimals, the SSP will automatically round it using ROUND_HALF_UP — the standard “round half away from zero” rule:
  • 7.1257.13
  • 7.1357.14
  • 7.1457.15
Bid values below the 2nd decimal that are not exactly .5 round normally (7.1247.12, 7.1267.13).

SSP Commission

Commission Rate: 10% of your bid
  • The SSP takes a 10% commission directly from your bid
  • Your actual payout is bid amount × 0.90
  • Commission is deducted before payment reaches the advertiser
  • The floor price check is on the gross bid (before commission)
Example:
  • You bid: $10.00 CPM
  • SSP commission (10%): $1.00
  • Net to advertiser: $9.00 CPM

Timeouts

Your endpoint must respond within strict time limits:
EndpointTimeoutRecommended Target
Bid2 seconds< 1s

Payment and Billing

At the end of each calendar month, Thrad will send you an invoice for the amount due based on your winning bids.

How It Works

  1. Monthly Calculation: We calculate your total winning bid amount for the calendar month
  2. Commission Deduction: The 10% SSP commission is deducted from your gross bids
  3. Invoice: You receive an invoice with the net amount due to the publisher
  4. Payment: Payment terms will be agreed upon during integration setup
Example:
  • Total winning bids for the month: $10,000
  • SSP commission (10%): -$1,000
  • Net amount due to publisher: $9,000
The invoice will include detailed reporting of all winning auctions, impressions, and any applicable adjustments.