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

FieldTypeNotes
idstringAuction request ID, reused across rounds for the same impression opportunity. Echo it back in bidresponse.id.
atintegerAlways 1 — first-price auction. You pay the CPM you bid.
tmaxintegerYour response deadline in milliseconds, set per endpoint (1400 by default). Late responses are discarded.
testinteger1 on test traffic generated during integration QA. Absent on production traffic.
impobject arrayExactly one impression object. See below.
deviceobjectThe user’s device. See Device and geo.
appobjectThe publisher’s app. See App and publisher.
userobjectAudience data. See User and identity.
regsobjectPrivacy regulations. See Regulations.
sourceobjectInventory source, including the supply chain. See Source and supply chain.
bcatstring arrayBlocked IAB categories from the publisher’s line items, when configured. Bids in these categories are rejected.
badvstring arrayBlocked advertiser domains from the publisher’s line items, when configured. Bids for these domains are rejected.

Imp object

FieldTypeNotes
idstringImpression ID within the request. Echo it back in bid.impid.
tagidstringThe placement identifier from the publisher’s CloudX configuration.
bannerobjectPresent on display opportunities. The creative sizes you can bid with are in w/h or format.
videoobjectPresent on video opportunities, with mimes, minduration, maxduration, and player dimensions. Return VAST in adm.
instlintegerThe 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 signalintegerOpenRTB 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.
bidfloorfloatMinimum CPM for this round of the auction, in USD. Bids below the floor are discarded.
bidfloorcurstringAlways "USD".
displaymanagerstring"cloudx" — the CloudX SDK renders the winning creative.
ext.tidstringPer-impression transaction ID (IAB community extension), when preserved by the configured endpoint adapter.
ext.skadnobjectSKAdNetwork 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.formatstringCloudX 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.settlementstring"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

FieldNotes
app.idThe configured CloudX application ID. Required together with app.bundle on authenticated traffic.
app.bundleThe 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.nameApp name.
app.publisher.idThe 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 versionPath
2.6user.eids
2.5user.ext.eids

See Extended Identifiers for per-source values and processing rules.

Regulations

SignalPaths
GDPR applies2.6: regs.gdpr
2.5: regs.ext.gdpr
COPPA2.6 and 2.5: regs.coppa
When supplied upstream, 1 triggers defensive privacy scrubbing. CloudX mobile SDKs do not set this field. Do not bid under CloudX policy.
TCF EU v2 consent2.6: user.consent
2.5: user.ext.consent
GPP2.6 and 2.5: regs.gpp, regs.gpp_sid
Compatibility copies can also appear under regs.ext.
US Privacy2.6: regs.us_privacy
2.5: regs.ext.us_privacy
DSA2.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 versionPath
2.6source.schain
2.5source.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.