Bid Requests
The OpenRTB bid request fields CloudX sends to demand partner endpoints, object by object.
CloudX may send your endpoint an OpenRTB bid request in each eligible auction round that executes, over HTTPS POST with a JSON body. This page describes the fields that matter for your integration. Fields not listed here follow the IAB OpenRTB 2.5 or 2.6 specification, matching the version configured for your endpoint.
Top-level object
| Field | Type | Notes |
|---|---|---|
id | string | Auction request ID, reused across rounds for the same impression opportunity. Echo it back in bidresponse.id. |
at | integer | Always 1 — first-price auction. You pay the CPM you bid. |
tmax | integer | Your response deadline in milliseconds, set per endpoint (1400 by default). Late responses are discarded. |
test | integer | 1 on test traffic generated during integration QA. Absent on production traffic. |
imp | object array | Exactly one impression object. See below. |
device | object | The user’s device. See Device and geo. |
app | object | The publisher’s app. See App and publisher. |
user | object | Audience data. See User and identity. |
regs | object | Privacy regulations. See Regulations. |
source | object | Inventory source, including the supply chain. See Source and supply chain. |
bcat | string array | Blocked IAB categories from the publisher’s line items, when configured. Bids in these categories are rejected. |
badv | string array | Blocked advertiser domains from the publisher’s line items, when configured. Bids for these domains are rejected. |
Imp object
| Field | Type | Notes |
|---|---|---|
id | string | Impression ID within the request. Echo it back in bid.impid. |
tagid | string | The placement identifier from the publisher’s CloudX configuration. |
banner | object | Present on display opportunities. The creative sizes you can bid with are in w/h or format. |
video | object | Present on video opportunities, with mimes, minduration, maxduration, and player dimensions. Return VAST in adm. |
instl | integer | The canonical CloudX shape uses 1 for interstitial, App Open, and rewarded inventory. Endpoint adapters can override it for a bidder-specific contract; confirm the final sample. |
| Rewarded signal | integer | OpenRTB 2.6 uses imp.rwdd: 1. For 2.5, endpoint adapters can send imp.ext.prebid.is_rewarded_inventory: 1 or restore imp.rwdd: 1; confirm the shape in onboarding samples. |
bidfloor | float | Minimum CPM for this round of the auction, in USD. Bids below the floor are discarded. |
bidfloorcur | string | Always "USD". |
displaymanager | string | "cloudx" — the CloudX SDK renders the winning creative. |
ext.tid | string | Per-impression transaction ID (IAB community extension), when preserved by the configured endpoint adapter. |
ext.skadn | object | SKAdNetwork capabilities of the source app, per the IAB SKAdNetwork extension. Delivery on eligible iOS inventory depends on the configured endpoint adapter; confirm it during onboarding. See SKAdNetwork. |
ext.cloudx.format | string | CloudX placement format. When present, "app_open" marks App Open inventory. CloudX does not stamp it for other formats, but a missing value is still unknown because stamping is fail-open. See App Open Signal. |
ext.cloudx.settlement | string | "cloudx" when CloudX settles payment with you for this impression. Absent otherwise. |
The presence of ext.tid and ext.skadn can vary by endpoint. Verify them in sample requests instead of assuming every endpoint receives them.
Device and geo
device can carry the standard OpenRTB fields ua, ip, ifa, os, osv, make, model, devicetype, connectiontype, carrier, language, lmt, and dnt, plus a geo object with country, region, city, and zip.
Before sending the request, CloudX can remove advertising and user identifiers, anonymize IP addresses, and reduce geo precision when privacy policy requires it. A field can also be absent because the device or publisher did not supply it.
When the device sets Global Privacy Control, CloudX forwards it as a Sec-GPC: 1 HTTP header.
Privacy signal and redaction guide
Read the version-specific paths, CloudX redaction behavior, and buyer responsibilities.
App and publisher
| Field | Notes |
|---|---|
app.id | The configured CloudX application ID. Required together with app.bundle on authenticated traffic. |
app.bundle | The app’s platform bundle identifier (for example, com.example.game). Required on authenticated traffic; CloudX rejects the request when it is missing or does not match the app’s configuration. |
app.name | App name. |
app.publisher.id | The publisher’s CloudX account ID. Publishers use this value in their app-ads.txt entries. |
User and identity
When the publisher passes extended identifiers, CloudX forwards them as OpenRTB eids — UID2, EUID, LiveRamp, ID5, and Intent IQ are supported. Read them at the path that matches your endpoint version:
| OpenRTB version | Path |
|---|---|
| 2.6 | user.eids |
| 2.5 | user.ext.eids |
See Extended Identifiers for per-source values and processing rules.
Regulations
| Signal | Paths |
|---|---|
| GDPR applies | 2.6: regs.gdpr2.5: regs.ext.gdpr |
| COPPA | 2.6 and 2.5: regs.coppaWhen supplied upstream, 1 triggers defensive privacy scrubbing. CloudX mobile SDKs do not set this field. Do not bid under CloudX policy. |
| TCF EU v2 consent | 2.6: user.consent2.5: user.ext.consent |
| GPP | 2.6 and 2.5: regs.gpp, regs.gpp_sidCompatibility copies can also appear under regs.ext. |
| US Privacy | 2.6: regs.us_privacy2.5: regs.ext.us_privacy |
| DSA | 2.6 and 2.5: regs.ext.dsa |
CloudX policies prohibit child-directed inventory. Do not treat regs.coppa as permission to bid or its absence as proof that traffic is not child-directed; see Privacy for OpenRTB Buyers.
Source and supply chain
CloudX-settled requests (see imp.ext.cloudx.settlement) carry the IAB Supply Chain object naming CloudX and the publisher. Its location depends on your endpoint version:
| OpenRTB version | Path |
|---|---|
| 2.6 | source.schain |
| 2.5 | source.ext.schain |
Use Supply Transparency to match app.publisher.id with schain, sellers.json, and app-ads.txt.
Example request
A fullscreen iOS video opportunity on an OpenRTB 2.5 endpoint configured to receive the SKAdNetwork extension:
Video protocol IDs are platform-specific: current Android requests use [2, 3, 4, 5, 6, 7], while iOS requests use [2, 3, 5, 6, 7, 8]. Android protocol 4 is the OpenRTB signal for VAST 1.0 Wrapper, but it remains only as a legacy wire artifact; CloudX’s Android renderer cannot render VAST 1.0 wrappers. Return VAST 2.0 or newer markup for Android. The request MIME list is broader than Android’s CloudX renderer support; use video/mp4 for portable CloudX-rendered VAST and negotiate other MIME types during onboarding.
{
"id": "7f3d9a1c2e4b48f0a6d5c8b2e1f40937",
"at": 1,
"tmax": 1400,
"imp": [
{
"id": "1",
"tagid": "home-interstitial",
"instl": 1,
"bidfloor": 4.5,
"bidfloorcur": "USD",
"displaymanager": "cloudx",
"video": {
"w": 1080,
"h": 1920,
"mimes": ["video/mp4", "video/3gpp", "video/3gpp2", "video/x-m4v", "video/quicktime"],
"minduration": 5,
"maxduration": 30,
"protocols": [2, 3, 5, 6, 7, 8],
"api": [3, 5, 6, 7],
"linearity": 1
},
"ext": {
"tid": "9e1c04d2-8f3a-4b7c-a2d5-6e8f0a1b3c4d",
"skadn": {
"version": "4.0",
"sourceapp": "123456789",
"skadnetids": ["abc123def4.skadnetwork"]
}
}
}
],
"app": {
"id": "app_01HF8ZK2M3",
"bundle": "com.example.game",
"name": "Example Game",
"publisher": { "id": "pub_01HF8ZK2M3" }
},
"device": {
"ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) ...",
"ip": "203.0.113.24",
"ifa": "9D2E4F1A-6B3C-4A5D-8E7F-1A2B3C4D5E6F",
"os": "iOS",
"osv": "17.5",
"make": "Apple",
"model": "iPhone16,2",
"devicetype": 1,
"connectiontype": 2,
"lmt": 0,
"geo": { "country": "USA", "region": "CA", "city": "San Francisco" }
},
"regs": {
"ext": { "gdpr": 0, "us_privacy": "1---" }
},
"source": {
"ext": {
"schain": {
"complete": 1,
"ver": "1.0",
"nodes": [
{ "asi": "cloudx.io", "sid": "pub_01HF8ZK2M3", "rid": "7f3d9a1c2e4b48f0a6d5c8b2e1f40937", "hp": 1 }
]
}
}
}
}Next: Bid Responses
What to return: required fields, creative markup rules, and win/loss notifications.