OpenRTB 2.5 / 2.6 · Supply-to-DSP

SSP Integration Guide

Adspin Technology Solutions Limited · IAB TCF Vendor ID 1308

1. Overview

Adspin operates a demand-side platform (DSP) on an in-house, custom-built ad exchange. This guide describes everything a supply partner needs to integrate inbound bid-request traffic with Adspin over OpenRTB. Field paths and behaviours follow the IAB Tech Lab OpenRTB 2.6 specification.

1.1 What Adspin buys

Adspin is an in-app demand partner. We consume mobile in-app inventory across banner, video (including rewarded), and playable formats. We do not currently buy native, web, or desktop inventory.

1.2 Integration at a glance

ItemValue
Platform typeDSP / bidder on a custom-built exchange
ProtocolOpenRTB 2.5 and 2.6 (x-openrtb-version recommended)
TransportHTTPS POST, JSON (application/json)
Compressiongzip supported on request and response
InventoryMobile in-app only
FormatsBanner, Video, Rewarded, Playable
AuctionFirst Price (at = 1)
SettlementBilling notice (nurl/burl), plaintext ${AUCTION_PRICE}
Max response latency600 ms
IAB TCF Vendor ID1308 (Adspin Technology Solutions Limited)

2. Connection & Transport

Per OpenRTB 2.6 §2.1–2.5, the following transport rules apply. Endpoint URL, QPS limits, and per-region data-centre routing are provided during onboarding and are not published here.

ParameterRequirement
MethodHTTP POST for all bid requests
SchemeHTTPS required (secure = 1 on inbound impressions)
Content-Typeapplication/json
Encodinggzip supported — set Content-Encoding: gzip on the request and Accept-Encoding: gzip to receive a gzipped response
Version headerx-openrtb-version: 2.6 recommended (not required)
Keep-AliveHTTP persistent connections strongly recommended
No-bidHTTP 204, or empty/nbr JSON body per §7.1

3. Protocol & Auction

Field / BehaviourAdspinoRTB ref
OpenRTB version2.5 and 2.6 compatible. We gracefully tolerate unknown 2.x fields.§2.6
Auction type (at)First Price only. We expect at = 1.§3.2.1
Timeout (tmax)We respond within 600 ms. Send a realistic tmax; requests with tmax below our floor may be abandoned.§3.2.1
Currency (cur)USD primary. EUR/GBP accepted where offered.§3.2.1
Impression expiry (imp.exp)Honoured as supplied. We accept cached-impression windows typical of in-app (e.g. banner ~5 min, interstitial ~30 min). Not limited to the 60-min default.§3.2.4 / §7.2
Test (test)test=1 traffic is treated as non-billable.§3.2.1

4. Supported Inventory & Formats

An impression must carry exactly one of the format objects below. Adspin does not support multi-format impressions; where multiple format objects are present on a single imp, Adspin evaluates banner first.

4.1 Banner

Standard imp.banner per §3.2.6. Exact w/h expected. We do not currently require format-array Flex Ad parameters (wmin/hmin/wratio/hratio).

4.2 Video

Standard in-stream/interstitial imp.video per §3.2.7. All VAST versions supported via protocols. Companion ads via companionad accepted.

4.3 Rewarded

Rewarded inventory is recognised through any of the following signals (we read all three for compatibility across SSPs):

  • imp.rwdd = 1 — the standard oRTB 2.6 flag (§3.2.4).
  • imp.video.ext.rewarded = 1, with imp.video.ext.videotype = "rewarded".
  • imp.banner.ext.rewarded = 1, with imp.banner.ext.bannertype = "rewarded".

Note: Adspin does not provide server-to-server (S2S) reward callbacks; reward delivery is handled by the publisher/SDK.

4.4 Playable

Playable ads are supported across all common delivery methods: MRAID script, inline HTML source, and download URL.

4.5 Not supported

Format / FeatureStatus
Native (imp.native)Not supported
Audio (imp.audio)Not supported
Multi-format impressionsNot supported — banner evaluated first
Deeplink / fallback URLs in responseNot supported
Web / desktop (site object)Not supported — in-app only
S2S rewarded callbacksNot supported

5. Identity & Privacy

SpinX, Adspin's DSP division, is a registered IAB TCF vendor (GVL Vendor ID 1308) and consumes the standard privacy and identity signals defined in oRTB 2.6 §2.7, §3.2.3, and §3.2.20.

SignalAdspin handlingField path
IAB TCF Vendor IDGVL Vendor ID 1308 (Adspin Technology Solutions Limited).
GDPR flagRead.regs.gdpr / regs.ext.gdpr
TCF consent (v2.2)Read. We do NOT hard-filter requests that carry gdpr=1 without a consent string; senders remain responsible for legal compliance.user.consent and user.ext.consent
US PrivacyRead.regs.ext.us_privacy
GPPRead where present.regs.gpp / regs.gpp_sid
COPPAHonoured.regs.coppa
Extended IDs (UID2.0, ID5)Consumed. Standard source declarations: uidapi.com (UID2.0), id5-sync.com (ID5).user.ext.eids[].source / .uids[]
GPIDConsumed.imp.ext.gpid
IFA / LMT / DNTConsumed for targeting and compliance.device.ifa / device.lmt / device.dnt
SKAdNetworkAccepted if present; not required.imp.ext.skadn

Under evaluation: AdAttributionKit / AdAuthorizationKit (iOS 17.4+) and ERID for Russian traffic (bid.ext.erid). Contact your Adspin representative for current status before relying on these in an integration.

6. Supply Chain & Quality

SignalAdspin handlingField path
Supply chain (schain)Consumed. Read from source.ext.schain; source.schain also read where duplicated. Version 1.0.§3.2.25
OMID / viewabilityConsumed.source.ext.omidpn / .omidpv
App bundleGoogle Play and Apple App Store only. Amazon and other stores not accepted.app.bundle
Store URLRead for quality / IQG.app.storeurl
BlocklistsHonoured on response (advertiser domains, categories, bundles).bcat / badv / bapp
Tag IDAccepted as supplied; Adspin maps/normalises tagid internally per demand partner.imp.tagid

7. Bidding & Settlement

Adspin returns markup in the bid (bid.adm) or serves on the win notice, per §4.4. Settlement and impression counting follow the billing-notice model (§7.8).

BehaviourAdspin
Auction typeFirst Price (at = 1).
Win / loss noticesWe use a billing notification: nurl OR burl, and always lurl for loss notices.
Impression countingCounted on the billing notification (nurl/burl). In-app only; no adm pixel-based counting and no ADM render dependency.
Price macro${AUCTION_PRICE} accepted in plaintext — encryption not required.
Price verificationWe accept the SSP-reported clearing price as-is for settlement; no strict re-verification of the returned ${AUCTION_PRICE}.
Markup deliverybid.adm or win-notice return (§4.4.1–4.4.2). If both are present, adm takes precedence.

Macros honoured per §4.5 where applicable, including ${AUCTION_ID}, ${AUCTION_IMP_ID}, ${AUCTION_PRICE}, and ${AUCTION_CURRENCY}. Use "AUDIT" as the macro value when rendering for QA.

8. Private Marketplace & Deals

Adspin supports PMP deals via the imp.pmp.deals object (§3.2.11–3.2.12).

BehaviourAdspin
Deal objectpmp.deals[] supported.
Deal ID typeBoth String and Integer accepted for deal.id.
Private auction flagpmp.private_auction read and honoured.
Deal reference on responseReturned via bid.dealid when bidding against a deal.

9. Bid Request Field Reference

Summary of fields Adspin reads on inbound bid requests. Required follows oRTB minimums; Expected means Adspin relies on it for decisioning even though oRTB marks it optional.

ObjectFieldUseNeed
BidRequestidAuction IDRequired
BidRequestatMust be 1 (first price)Expected
BidRequesttmaxTimeout budget vs our 600 msExpected
BidRequestcurUSD/EUR/GBPExpected
ImpidImpression IDRequired
ImpsecureMust be 1Expected
Impbidfloor/bidfloorcurFloor in CPMExpected
ImprwddRewarded flagOptional
ImpexpImpression expiryOptional
Impbanner/videoFormat (one only)Required
ImptagidPlacement (mapped internally)Optional
Imp.extgpidGlobal placement IDOptional
AppbundleGoogle Play / Apple onlyExpected
AppstoreurlQuality / IQGExpected
Deviceifa/lmt/dntIdentity / complianceExpected
Deviceua/make/model/osDevice targetingExpected
DevicegeoLocation targetingExpected
Userext.eidsUID2.0 / ID5Optional
Userconsent/ext.consentTCF v2.2 stringExpected (EU)
Regsgdpr/us_privacy/coppa/gppCompliance flagsExpected
Sourceext.schainSupply chainExpected
Sourceext.omidpn/omidpvViewabilityOptional
Pmpdeals[]PMP dealsOptional

10. Onboarding Checklist

To bring a new supply connection live with Adspin:

  1. 1Exchange contacts and technical points of contact shared on both sides.
  2. 2Endpoint URL, expected QPS, and data-centre/region routing confirmed by Adspin.
  3. 3Sample bid requests (banner + video + rewarded) shared for validation against this spec.
  4. 4Confirm at=1, secure=1, gzip, and app.bundle store coverage (Google Play / Apple).
  5. 5Confirm privacy signal population (regs.gdpr, consent string, us_privacy/gpp).
  6. 6Confirm schain completeness and seller IDs.
  7. 7Agree win/billing notification method (nurl/burl) and loss notice (lurl).
  8. 8Low-QPS test flight, reconcile impression counts and clearing prices.
  9. 9Ramp QPS to target; monitor timeout and discrepancy rates.

Ready to integrate?

Reach out to the Adspin partnerships team to get your endpoint and kick off step one.

Contact us

Appendix A. Glossary

TermMeaning
DSPDemand-side platform — the buyer (Adspin).
SSP / ExchangeSupply-side platform sending bid requests to Adspin.
schainSupply chain object identifying entities in the payment path (§3.2.25).
nurl / burl / lurlWin / billing / loss notice URLs (§4.3.3, §4.4).
GPIDGlobal Placement ID (imp.ext.gpid).
eidsExtended identifiers, e.g. UID2.0, ID5 (user.ext.eids).
TCFIAB Transparency & Consent Framework (GDPR).
rewardedAd that grants the user an in-app reward on completion.

Appendix B. References