OpenRTB 2.6 for AI
PromptBid extends the IAB OpenRTB 2.6 protocol with fields for conversational context, intent classification, and AI-native ad formats. If your systems already speak OpenRTB, integration is minimal.
Overview
OpenRTB (Real-Time Bidding) is the industry standard protocol for programmatic advertising auctions. PromptBid implements OpenRTB 2.6 with additive extensions — standard fields work as expected, and our ext.promptbid namespace carries AI-specific signals.
Sub-100ms Auctions
Full auction cycle — bid request, DSP evaluation, winner selection, creative return — completes in under 100 milliseconds p99.
Privacy by Design
No user IDs, no cookies, no device fingerprints. Targeting is based on conversation context, not user profiles. Differential privacy applied to all signals.
Standard Protocol
Fully compliant with IAB OpenRTB 2.6. Any DSP or bidder that speaks OpenRTB can participate with zero custom integration work.
Second-Price Auction
Winner pays $0.01 above the second-highest bid. Floor prices supported per-impression. Transparent auction mechanics with full bid landscape reporting.
Bid Request Object
The bid request follows the standard OpenRTB 2.6 BidRequest schema. Required fields are the request ID, at least one impression object, and the app object identifying the builder's application.
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Unique request ID generated by the builder's application |
| imp | array | Yes | Array of impression objects (ad placement opportunities) |
| app | object | Yes | Application object — bundle ID, name, category (IAB taxonomy) |
| device | object | No | Device info — user agent, language, connection type. No PII. |
| user | object | No | Anonymized user segment (no IDs). Optional consent signals. |
| ext.promptbid | object | No | AI-specific extensions — context, intent, format preferences |
| tmax | integer | No | Max auction time in ms. Default: 100. Range: 50–500. |
| cur | array | No | Allowed currencies. Default: ["USD"] |
Impression Object
Each impression represents a single ad placement opportunity within a conversation turn.
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Unique impression ID within this request |
| bidfloor | float | No | Minimum CPM bid. Default: 10.0 (platform floor is $10) |
| bidfloorcur | string | No | Floor currency. Default: "USD" |
| ext.promptbid.format | string | No | Preferred ad format: "sponsored-reply", "context-card", "action-prompt" |
| ext.promptbid.placement | string | No | Where in conversation: "after-response", "sidebar", "inline" |
AI Extensions — ext.promptbid
These fields live in the ext.promptbid namespace on the bid request and carry the signals that make PromptBid auctions context-aware. All fields are optional — the more context you provide, the better the ad relevance and CPM.
| Field | Type | Description |
|---|---|---|
| context | string | Summary of the current conversation topic. Used for contextual targeting. Max 500 chars. Differential privacy applied server-side. |
| intent | string | Classified user intent: "research", "comparison", "purchase", "support", "creative", "learning" |
| turn_count | integer | Number of conversation turns so far. Higher counts indicate deeper engagement. |
| keywords | array | Extracted topic keywords for targeting. Max 10 keywords. |
| category | string | IAB content category of the conversation (e.g., "IAB19-6" for AI/ML) |
| sentiment | string | Conversation sentiment: "positive", "neutral", "negative". Ads are suppressed in negative sentiment by default. |
| format | string | Preferred ad format: "sponsored-reply", "context-card", "action-prompt" |
| blocked_cats | array | IAB categories to block from this impression (builder-level ad quality controls) |
Context privacy
The context field is processed through differential privacy before being shared with demand partners. Raw conversation text is never exposed to advertisers. Builders can set a privacy level (low/medium/high) at the app level.
Bid Response Object
Winning bids are returned in a standard OpenRTB 2.6 BidResponse. The creative payload is included inline in the adm field — no additional creative fetch is needed.
| Field | Type | Description |
|---|---|---|
| id | string | Matches the bid request ID |
| seatbid[].bid[].id | string | Unique bid ID for tracking and reporting |
| seatbid[].bid[].impid | string | Matches the impression ID from the request |
| seatbid[].bid[].price | float | Winning CPM price (second-price auction) |
| seatbid[].bid[].adm | string | Creative markup — JSON payload with ad content, CTA, and tracking URLs |
| seatbid[].bid[].adomain | array | Advertiser domains for brand safety filtering |
| seatbid[].bid[].cat | array | IAB content categories of the creative |
| seatbid[].bid[].ext.promptbid.format | string | Actual ad format of the winning creative |
| seatbid[].bid[].ext.promptbid.ttl | integer | Creative TTL in seconds. Render within this window or discard. |
No-bid responses
If no bidder meets the floor price or passes brand safety checks, PromptBid returns HTTP 204 (no content). Your application should handle this gracefully — simply skip the ad placement for that turn.
Ad Formats
PromptBid supports two ad formats designed for conversational AI interfaces. Specify your preferred format in imp.ext.promptbid.format or omit it to let the exchange choose based on the winning bid.
Native
Natural-language ad inserted after the AI response. Highest engagement — users interact with it like a message. Avg CPM: $15–$45.
Sponsored
Compact card alongside the conversation — product recs, links, or promos. Sidebar or inline placement. Avg CPM: $18–$35.
Code Examples
Full bid request and response cycle in JavaScript and cURL.
Bid Request
const response = await fetch(
"https://api.promptbid.ai/api/v1/bid/openrtb",
{
method: "POST",
headers: {
"Authorization": "Bearer pk_live_...",
"Content-Type": "application/json"
},
body: JSON.stringify({
id: "req-abc123",
imp: [{
id: "imp-1",
bidfloor: 10.0,
ext: {
promptbid: {
format: "sponsored-reply",
placement: "after-response"
}
}
}],
app: {
bundle: "com.example.assistant",
name: "TravelBot",
cat: ["IAB20"]
},
ext: {
promptbid: {
context: "user planning a week-long trip to Tokyo",
intent: "purchase",
keywords: ["travel", "tokyo", "hotels"],
turn_count: 4,
sentiment: "positive"
}
}
})
}
);
const bid = await response.json();
// bid.seatbid[0].bid[0].adm contains the creative
curl -X POST https://api.promptbid.ai/api/v1/bid/openrtb \
-H "Authorization: Bearer pk_live_..." \
-H "Content-Type: application/json" \
-d '{
"id": "req-abc123",
"imp": [{
"id": "imp-1",
"bidfloor": 10.0,
"ext": {
"promptbid": {
"format": "sponsored-reply",
"placement": "after-response"
}
}
}],
"app": {
"bundle": "com.example.assistant",
"name": "TravelBot",
"cat": ["IAB20"]
},
"ext": {
"promptbid": {
"context": "user planning a week-long trip to Tokyo",
"intent": "purchase",
"keywords": ["travel", "tokyo", "hotels"],
"turn_count": 4,
"sentiment": "positive"
}
}
}'
Example Response
{
"id": "req-abc123",
"seatbid": [{
"bid": [{
"id": "bid-xyz789",
"impid": "imp-1",
"price": 18.50,
"adomain": ["booking.com"],
"cat": ["IAB20-3"],
"adm": "{\"headline\":\"Park Hyatt Tokyo — 20% off this week\",\"body\":\"Shinjuku location, Michelin dining, panoramic city views.\",\"cta\":\"View Rates\",\"url\":\"https://...\",\"tracking\":{\"imp\":\"https://t.promptbid.ai/...\",\"click\":\"https://t.promptbid.ai/...\"}}",
"ext": {
"promptbid": {
"format": "sponsored-reply",
"ttl": 300
}
}
}]
}],
"cur": "USD"
}
Privacy Model
PromptBid's auction model is built on contextual targeting — no user profiles, no cross-app tracking, no PII in bid streams.
- No user IDs, device IDs, or IP addresses in bid requests
- Conversation context is processed through differential privacy before reaching demand partners
- Builders control context granularity: high (topic-level only), medium (topic + keywords), low (topic + keywords + intent)
- Advertisers target by context category and intent — never by user identity
- All tracking is first-party and aggregate — impression and click counts, no individual-level data
- GDPR, CCPA, and SOC 2 Type II compliant
Compliance & Versioning
PromptBid maintains strict compatibility with the OpenRTB 2.6 specification published by the IAB Tech Lab. All AI-specific extensions are additive and never break standard implementations.
Version support
OpenRTB 2.6 (current) and 2.5 (backward compatible) are fully supported. OpenRTB 3.0 support is planned for Q3 2026.
Prefer a simpler API?
PromptBid also offers a simplified HTTP endpoint that abstracts away OpenRTB complexity while maintaining full feature parity.
View Simple Bid API