The server resolves the user’s location and device from request headers. These are optional but strongly recommended for server-side integrations — sending them skips the server-side IP lookup and reduces latency.
User’s device type: "mobile" or "desktop". Required when X-User-Country is present. This is critical for device-targeted campaigns — without it, targeting will not work correctly.
City name (e.g. "San Francisco"). Optional but recommended for city-level targeting.
If you send X-User-Country without X-User-Device and X-User-Timezone, the request will be rejected with a 400 Bad Request. These three headers must always be sent together.
If none of the above headers are sent, the server falls back to IP-based geolocation using X-Forwarded-For. For direct calls (browser or mobile app → our API), this is handled automatically by the load balancer. If you’re proxying requests through your own backend, you must forward the user’s IP via X-Forwarded-For — otherwise the server sees your server’s IP and geo will be wrong.
If unsure about which headers to send, contact marco@thrads.ai and we’ll help you set it up.
Optional anonymous user identifier (e.g. a UUID like user_a1b2c3d4-...). If supplied, 1–100 characters and not blank. Keep it stable for user-based ad controls. Do not use email, name, or other PII. On web, store in localStorage; on mobile, use the platform’s persistent storage (e.g. UserDefaults on iOS, SharedPreferences on Android).
contextual only Optional conversation identifier. At most 100 characters. An empty chat_id is treated as no chat ID. One unique ID per conversation, not per user. Reset when the user starts a new chat. Without it, matching still works, but stored chat pacing, chat repeat checks, experiment cooldowns, and transcript storage are skipped. User daily campaign limits and click cooldowns still apply when user_id is supplied.
contextual only Conversation history. Required when request_type is "contextual". Each message must have a role ("user" or "assistant") and content. PII (names, emails, addresses, etc.) should be masked or removed before sending.At least one user message is required. A single user message is valid on its own — send it to request an ad mid-turn, while your model is still generating its reply. A conversation containing only assistant messages has no user intent to match against and returns "bid": null.
ISO 8601 (e.g. "2025-11-23T10:00:00Z") or Unix timestamp (e.g. 1700730000). Used for conversation continuity tracking — without timestamps, the server cannot merge partial message histories and conversation analytics will be degraded.
Publisher configuration for pacing, contextual serving, creative constraints, and analytics. All fields are optional — omitted fields fall back to defaults set on your publisher in the platform dashboard.
contextual only Minimum number of requests between consecutive ads. For example, 3 means an ad can appear at most once every 3 requests. null uses your dashboard setting. 0 disables the frequency check.
contextual only How strictly an ad must match the conversation, on a 1–8 scale. Higher values require a stronger match and lower the fill rate; lower values are more permissive and fill more often. null uses your dashboard setting (default 2).
contextual only Allow re-proposing a recently-relevant ad to the same user: if a product was contextually relevant to them in a conversation within the last 7 days, it can be shown again even when the current conversation isn’t relevant to it. Set false to serve only ads relevant to the current conversation. null uses your dashboard setting (default true).
Maximum character length for ad headlines. Minimum value is 30. When set, the system guarantees no headline exceeds this limit — creatives that don’t fit are filtered or replaced.
Experimental, bespoke (piloting with select publishers). When true, only specific card elements (logo, advertiser name, CTA button) should be clickable rather than the whole card. The value you send is echoed back verbatim on the card bid response as restricted_click_area; if your integration doesn’t accommodate it, ignore it. Defaults to false.
Experimental, bespoke (piloting with select publishers). Poll render directive. When true, send the user to the advertiser (cta_url) after they vote; when false, stay inline and show the results bar. The value you send is echoed back verbatim on the poll bid response as redirect_after_vote; if your integration doesn’t accommodate it, ignore it. Defaults to false.
Ad formats the publisher can render. The server picks the best match from this list.
Contextual: any combination of card (default), poll, and carousel — e.g. ["card", "carousel"].
Opener:["card"]. Always declare it explicitly. Do not include poll or carousel on opener requests. (sponsored_prompt is coming soon.)
The legacy spellings sponsored_message and sponsored_poll remain accepted for backward compatibility. Responses currently echo the legacy names in ad_format for the card and poll ("sponsored_message", "sponsored_poll"); carousel returns "carousel".When contextual requests include both sponsored_message and sponsored_poll, Thrad selects the campaign through the normal contextual auction, then uses campaign delivery settings to choose whether the returned creative is a message or poll.
contextual only Current turn number in the conversation. Used for ad offset pacing and analytics. Must be >= 0. Only needed if you’re not calling the endpoint on every user-assistant exchange — if you are, the system derives this from the message count.
IAB standard age range. Accepted values: "0-12", "13-17", "18-24", "25-34", "35-44", "45-54", "55-64", "65+". When the value is "0-12" or "13-17", the request is treated as underage: the auction is skipped and the response is 200 OK with "bid": null. Send this whenever your platform knows the user’s age — it’s the only way to comply with age-gating on Thrad’s side.
IAB TCF v2 consent string generated by your CMP (e.g. OneTrust, Quantcast) when the user interacts with your cookie banner. Required for EU/UK users if you want oRTB DSPs to bid on that traffic — without it, EU-based DSPs will scrub or skip the request. Pass the raw base64-encoded string exactly as produced by your CMP. Non-EU publishers can omit this field.
IAB CCPA US Privacy string (e.g. "1YNN", "1---"). Generated by your CMP for California/US users. Forwarded to oRTB DSPs as regs.us_privacy. Non-US publishers can omit this field.
A 200 OK response with "bid": null is not an error - it means the auction ran successfully but no DSP submitted a winning bid. This is normal behavior.
The ad format returned: "sponsored_message" (card), "sponsored_poll" (poll), or "carousel". Card and poll currently echo their legacy names even when requested as card/poll.
Sponsored message and prompt click tracking URL. Use this for ad clicks — it tracks the click and redirects to the advertiser’s landing page. Poll option clicks use vote_url, not url.
sponsored_message only. Render mode: "text" (compact, logo only) or "image" (full product photo). When missing, treat as "text". See Ad Formats & Rendering for the full creative-field rules per mode.
Product/hero photo URL. Present when placement="image", absent when placement="text". Setting config.image_enabled=false forces text mode, so image_url will never be returned.
sponsored_message (card) only. Experimental, bespoke. Echoes the request config.restricted_click_area. When true, only the CTA (and logo) should route to url; when false (default), the whole card is the click target. Ignore it if your integration doesn’t support restricted click areas.
sponsored_poll only. Optional signed click tracking URL for the advertiser CTA shown after voting. Whether voting redirects to this URL is controlled by redirect_after_vote.
sponsored_poll only. Experimental, bespoke. Echoes the request config.redirect_after_vote. When true, send the user to the advertiser (cta_url) after they vote; when false (default), stay inline and show the results bar. Ignore it if your integration doesn’t support post-vote redirects.
carousel only. The product cards, 3–5 entries, in serving order. Render left-to-right; you may truncate trailing items if space demands, but never reorder. Each item is its own click target via its click_url; the carousel as a whole fires the single top-level view_url once when it renders.
Auction ran successfully (with or without winning bid), or pacing blocked
400 Bad Request
Invalid input
Malformed request body or missing required fields
401 Unauthorized
Authentication failed
Missing or invalid thrad-api-key
403 Forbidden
Origin not allowed
Request from non-whitelisted domain (browser integration only)
429 Too Many Requests
Rate limit exceeded
Publisher exceeded request quota
500 Internal Server Error
Server error
DSP render failed, validation error, or internal exception
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Thrad Docs","colors":{"primary":"#1E1E20","light":"#F7F7F7","dark":"#1E1E20"},"logo":{"light":"https://mintcdn.com/thrads-5feffa3d/DxyVKooiEHOWBPsr/images/Thrad-Logo-Orange.png?fit=max\u0026auto=format\u0026n=DxyVKooiEHOWBPsr\u0026q=85\u0026s=271f3bf20d1b3427a47628ba4c698a12","dark":"https://mintcdn.com/thrads-5feffa3d/DxyVKooiEHOWBPsr/images/Thrad-Logo-Orange.png?fit=max\u0026auto=format\u0026n=DxyVKooiEHOWBPsr\u0026q=85\u0026s=271f3bf20d1b3427a47628ba4c698a12"},"favicon":"https://mintcdn.com/thrads-5feffa3d/Oy6te9OMcdFzEUX1/images/favicon.png?fit=max\u0026auto=format\u0026n=Oy6te9OMcdFzEUX1\u0026q=85\u0026s=6bc1a1db484b55f5818f27ac5946d6f8","api":{"mdx":{"auth":{"method":"key","name":"thrad-api-key"},"server":"https://ssp.thrad.ai"}},"appearance":{"default":"light"},"background":{"color":{"light":"#F2EDE9","dark":"#0A0A0A"}},"fonts":{"heading":{"family":"Lufga","weight":500,"source":"fonts/Lufga-Medium.woff2","format":"woff2"},"body":{"family":"Geist","source":"fonts/Geist-Regular.woff2","format":"woff2"}},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"thrads-5feffa3d","hasAudioNarration":false,"actualSubdomain":"thrads-5feffa3d","customDomains":["docs.thrad.ai"],"gitSource":{"type":"github","owner":"thrads","repo":"thrad-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af35453c7de24114e237278","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Advertisers","count":27},{"language":"default","tag":"API Reference","count":21},{"language":"default","tag":"Publishers","count":21},{"language":"default","tag":"Attribution","count":14},{"language":"default","tag":"DSP","count":9},{"language":"default","tag":"Browser Tag","count":8},{"language":"default","tag":"Guides","count":7},{"language":"default","tag":"v1 (deprecated)","count":7},{"language":"default","tag":"Server-to-server Conversions API","count":5},{"language":"default","tag":"Serving Ads","count":5}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@font-face{font-family:\"Geist\";font-weight:500;font-display:swap;src:url(\"/fonts/Geist-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Geist\";font-weight:600;font-display:swap;src:url(\"/fonts/Geist-SemiBold.woff2\") format(\"woff2\")}#content-area h1,#content-area h2,#content-area h3,#header h1{font-weight:500!important;letter-spacing:-0.01em}:root:not(.dark) :is(#content-area h1,#content-area h2,#content-area h3,#header h1){color:#1E1E20}:root:not(.dark) body{color:#1E1E20}:root:not(.dark) #content-container{background:#F7F7F7}:root:not(.dark) .prose p,:root:not(.dark) .prose li{color:#3A3A3C}:root{--rounded-sm: 0px;--rounded-md: 0px;--rounded-lg: 0px;--rounded-xl: 0px;--rounded-2xl: 0px}button,.card,pre,code,input,[class*=\"rounded\"]{border-radius:0!important}.sidebar-group-header .sidebar-title{font-size:0.7rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase}:root:not(.dark) #content-area .prose a{color:#28427A;text-decoration-color:rgba(40, 66, 122, 0.3)}:root:not(.dark) #sidebar li[data-active=\"true\"]>a{background:#F7F7F7!important;color:#1E1E20!important}:root:not(.dark) #sidebar .method-pill,:root:not(.dark) #sidebar [class*=\"bg-blue-400\"]{background:#DAE3F2!important;color:#28427A!important}:root:not(.dark) #content-area :not(pre)>code{background:#EFEDE9!important;border:1px solid rgba(10, 10, 10, 0.06);padding:1px 4px!important;color:#1E1E20}:root:not(.dark) .tryit-button,:root:not(.dark) [class*=\"bg-[#3064E3]\"]{background:#1E1E20!important;color:#F7F7F7!important}:root:not(.dark) .method-pill,:root:not(.dark) [class*=\"bg-blue-400/20\"]{background:#DAE3F2!important;color:#28427A!important}:root:not(.dark) #topbar-cta-button a,:root:not(.dark) #topbar-cta-button a>span{background:#EC521B!important;color:#fff!important}:root:not(.dark) #page-context-menu{border:1px solid rgba(10, 10, 10, 0.2);border-radius:999px;overflow:hidden;width:max-content!important;min-width:0!important;flex:none!important}#page-context-menu button{background:transparent!important;border:0!important}:root:not(.dark) #page-context-menu button{color:#1E1E20!important}:root:not(.dark) #page-context-menu button+button{border-left:1px solid rgba(10, 10, 10, 0.1)!important}:root:not(.dark) #page-context-menu button:hover{background:rgba(10, 10, 10, 0.04)!important}:root.dark #page-context-menu{border:1px solid rgba(255, 255, 255, 0.2);border-radius:999px;overflow:hidden;width:max-content!important;min-width:0!important;flex:none!important}:root.dark #page-context-menu button+button{border-left:1px solid rgba(255, 255, 255, 0.1)!important}:root.dark #page-context-menu button:hover{background:rgba(255, 255, 255, 0.06)!important}:root:not(.dark) [role=\"menu\"]{background:#fff!important;border:1px solid rgba(10, 10, 10, 0.1)!important;border-radius:4px!important;box-shadow:0 8px 24px rgba(10, 10, 10, 0.08)!important}[role=\"menu\"] [role=\"menuitem\"]>div:first-child{border:0!important}:root:not(.dark) [role=\"menu\"] [role=\"menuitem\"]:hover,:root:not(.dark) [role=\"menu\"] [role=\"menuitem\"][data-highlighted]{background:rgba(10, 10, 10, 0.04)!important}:root:not(.dark) .callout[data-callout-type=\"note\"],:root:not(.dark) .callout[data-callout-type=\"info\"]{--c-bg: #DAE3F2;--c-fg: #28427A}:root:not(.dark) .callout[data-callout-type=\"warning\"]{--c-bg: #F4E0BD;--c-fg: #6B4D14}:root:not(.dark) .callout[data-callout-type=\"tip\"],:root:not(.dark) .callout[data-callout-type=\"check\"]{--c-bg: #D5E5DD;--c-fg: #2D5B3F}:root:not(.dark) .callout[data-callout-type=\"danger\"]{--c-bg: #FCDADA;--c-fg: #8E2421}:root:not(.dark) .callout[data-callout-type]{background:color-mix(in srgb, var(--c-bg) 50%, #F7F7F7)!important;border-color:transparent!important}:root:not(.dark) .callout[data-callout-type] *:not(code){color:var(--c-fg)!important}:root:not(.dark) #content-area .callout :not(pre)>code{background:color-mix(in srgb, var(--c-fg) 8%, transparent)!important;border-color:color-mix(in srgb, var(--c-fg) 15%, transparent);color:var(--c-fg)}:root:not(.dark) div.border-standard:has(>div>.group>.method-pill),:root:not(.dark) div.border-standard:has(.group>.method-pill):not(.group){background:#fff!important;border-color:rgba(10, 10, 10, 0.1)!important}.group.border-standard:has(>.method-pill){border:0!important;background:transparent!important}#sidebar li a{border-radius:4px!important}:root:not(.dark) #sidebar li a{color:rgba(10, 10, 10, 0.65)}:root:not(.dark) #sidebar li:not([data-active=\"true\"])>a:hover{background:rgba(10, 10, 10, 0.04)!important;color:#1E1E20}:root:not(.dark) #sidebar li[data-active=\"true\"]>a svg{color:#EC521B!important;background-color:#EC521B}:root:not(.dark) #sidebar li[data-active=\"true\"] [class*=\"bg-[#3064E3]\"]{background:#DAE3F2!important;color:#28427A!important}#sidebar li a{min-height:38px;align-items:center!important;padding:0 12px!important;column-gap:10px!important;font:500 0.875rem/1.4 Geist, system-ui, sans-serif!important}:root:not(.dark) #sidebar li a{color:rgba(10, 10, 10, 0.65)!important}:root:not(.dark) #sidebar li a svg{width:18px;height:18px;background-color:rgba(10, 10, 10, 0.57)}:root:not(.dark) #sidebar li[data-active=\"true\"]>a{color:#1E1E20!important}#sidebar .sidebar-group-header{padding-left:12px!important}#sidebar li>button{min-height:38px;align-items:center!important;padding:0 12px!important;column-gap:10px!important;border-radius:4px!important;font:500 0.875rem/1.4 Geist, system-ui, sans-serif!important}:root:not(.dark) #sidebar li>button{color:rgba(10, 10, 10, 0.65)!important}:root:not(.dark) #sidebar li>button:hover{background:rgba(10, 10, 10, 0.04)!important;color:#1E1E20!important}.sidebar-group-header .sidebar-title{font:500 0.6875rem/1.4 Geist, system-ui, sans-serif!important;letter-spacing:0.08em;text-transform:uppercase}:root:not(.dark) .sidebar-group-header .sidebar-title{color:rgba(10, 10, 10, 0.57)!important}.sidebar-group-header{min-height:28px;margin-bottom:4px!important}#sidebar-content .sidebar-group~.sidebar-group,#navigation-items>div+div{border-top:1px solid rgb(from currentColor r g b / 0.1);padding-top:16px}:root:not(.dark) [class*=\"group/step-indicator\"]{background:#1E1E20!important;color:#F7F7F7!important}[class*=\"group/step-indicator\"]{border-radius:999px!important}:root:not(.dark) [class*=\"group/step-indicator\"] *{color:#F7F7F7!important}:root:not(.dark) .frame>div[class*=\"bg-grid\"]{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32' fill='none' stroke='rgba(10,10,10,0.06)'%3e%3cpath d='M0 .5H31.5V32'/%3e%3c/svg%3e\")!important}:root.dark .frame>div[class*=\"bg-grid\"]{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32' fill='none' stroke='rgba(255,255,255,0.06)'%3e%3cpath d='M0 .5H31.5V32'/%3e%3c/svg%3e\")!important}.frame>div[class*=\"bg-grid\"]{mask-image:none!important}a[aria-label=\"Navigate to header\"]>div{border-radius:4px!important;background:transparent!important;box-shadow:none!important;--tw-ring-shadow: 0 0 #0000 !important}a[aria-label=\"Navigate to header\"]{margin-left:-2rem!important}a[aria-label=\"Navigate to header\"]>div:hover{background:color-mix(in srgb, currentColor 12%, transparent)!important}div:has(>figure.frame)+div:has(>figure.frame){margin-top:1.5rem}#content-area td code{white-space:nowrap!important;word-break:normal!important;overflow-wrap:normal!important}#navbar a:has(>.nav-logo){display:inline-flex;align-items:center}#navbar a:has(>.nav-logo)::after{content:\"/\";margin-left:12px;font:400 0.875rem/1.4 Geist, system-ui, sans-serif;color:rgba(10, 10, 10, 0.57)}#navbar a:has(>.nav-logo)+div:not(:has(*)){display:none!important}.nav-dropdown-products-selector-trigger{height:40px!important;padding:0 8px!important;column-gap:10px!important;border-radius:4px!important;font:600 0.875rem/1.4 Geist, system-ui, sans-serif!important;color:#1E1E20!important}.nav-dropdown-products-selector-trigger:hover,.nav-dropdown-products-selector-trigger[aria-expanded=\"true\"]{background:rgba(10, 10, 10, 0.04)!important}.nav-dropdown-products-selector-trigger>svg:first-child{display:none}.nav-dropdown-products-selector-trigger>svg:last-child{color:rgba(10, 10, 10, 0.57)!important}.nav-dropdown-products-selector-trigger>span{display:inline-flex;align-items:center;gap:10px;max-width:none!important;overflow:visible!important}.nav-dropdown-products-selector-trigger>span::after{content:\"Docs\";display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:4px;background:rgba(10, 10, 10, 0.04);font:500 0.6875rem/1.4 Geist, system-ui, sans-serif;letter-spacing:0.08em;text-transform:uppercase;color:rgba(10, 10, 10, 0.57)}.dark .nav-dropdown-products-selector-trigger{color:#F7F7F7!important}.dark #navbar a:has(>.nav-logo)::after,.dark .nav-dropdown-products-selector-trigger>span::after{color:rgba(255, 255, 255, 0.5)}#content-side-layout{margin-right:2rem}:root:not(.dark) [class*=\"bg-[#2AB673]\"]:not(.tryit-button),:root:not(.dark) .method-pill[class*=\"bg-green-400/20\"],:root:not(.dark) #sidebar [class*=\"bg-green-400/20\"]{background:#D5E5DD!important;color:#2D5B3F!important}@media (min-width: 1024px) and (max-width: 1279.98px){#content-area{padding-right:2.75rem!important}}@media (min-width: 1024px){#sidebar{width:15rem!important}}#sidebar li li>a,#sidebar li li>button{padding-left:24px!important}#sidebar div:has(>[class*=\"bg-[#FDEAD8]\"]){display:none!important}:root:not(.dark) #sidebar [class*=\"bg-[#F7F7F8]\"]{background:#E8E6E0!important;color:#5C4E2E!important}@media (max-width: 1023.98px){#content-area{padding-left:1.25rem!important;padding-right:1.25rem!important}#content-container{margin-left:-1rem;margin-right:-1rem}#navbar a:has(>.nav-logo)::after{content:none}}#navbar .nav-dropdown-products-selector-trigger{margin-left:-12px}:root:not(.dark) [role=\"dialog\"] [class*=\"bg-background-light\"]{background-color:#F7F7F7!important}"}],"page":{"pagePath":"api/api-reference/bid-request","slug":"/api/api-reference/bid-request","pageMetadata":{"title":"Bid Request (v1)","api":"POST /api/v1/ssp/bid-request","description":"Orchestrates a multi-bidder auction across multiple DSPs and returns the winning ad creative in a single request","deprecated":true,"href":"/api/api-reference/bid-request"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Orchestrates a multi-bidder auction across multiple DSPs and returns the winning ad creative in a single request\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Expandable,Heading,Note,ParamField,ResponseField,Table,Warning}=_components;if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`v1 is deprecated.`}),` New integrations should use `,_jsx(_components.a,{href:`/api/api-reference/bid-request-v2`,children:`v2`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`authorizations`,children:`Authorizations`}),`\n`,_jsx(ParamField,{header:`thrad-api-key`,type:`string`,required:true,id:`param-thrad-api-key`,children:_jsxs(_components.p,{children:[`Your API key for authentication. The key’s environment (`,_jsx(_components.code,{children:`staging`}),` or `,_jsx(_components.code,{children:`production`}),`) determines how ads are served — see `,_jsx(_components.a,{href:`/quickstart#staging-vs-production`,children:`Staging vs. Production`}),`.`]})}),`\n`,_jsx(ParamField,{header:`Content-Type`,type:`string`,required:true,id:`param-content-type`,children:_jsxs(_components.p,{children:[`Must be `,_jsx(_components.code,{children:`application/json`})]})}),`\n`,_jsx(Heading,{level:`2`,id:`end-user-headers`,children:`End-User Headers`}),`\n`,_jsxs(_components.p,{children:[`These headers identify the real end-user behind the request. They are `,_jsx(_components.strong,{children:`required`}),` on every bid request and every view URL ping.`]}),`\n`,_jsx(ParamField,{header:`X-Forwarded-For`,type:`string`,required:true,id:`param-x-forwarded-for`,children:_jsx(_components.p,{children:`The end-user’s original IP address. Must be the real client IP, not your server’s IP.`})}),`\n`,_jsx(ParamField,{header:`User-Agent`,type:`string`,required:true,id:`param-user-agent`,children:_jsx(_components.p,{children:`The end-user’s original device/browser string exactly as received from the client.`})}),`\n`,_jsx(Heading,{level:`2`,id:`geolocation-\u0026-device-headers`,children:`Geolocation \u0026 Device Headers`}),`\n`,_jsxs(_components.p,{children:[`The server resolves the user’s location and device from request headers. These are `,_jsx(_components.strong,{children:`optional`}),` but `,_jsx(_components.strong,{children:`strongly recommended`}),` for server-side integrations — sending them skips the server-side IP lookup and reduces latency.`]}),`\n`,_jsx(ParamField,{header:`X-User-Country`,type:`string`,id:`param-x-user-country`,children:_jsxs(_components.p,{children:[`ISO 3166-1 alpha-2 country code (e.g. `,_jsx(_components.code,{children:`\"US\"`}),`, `,_jsx(_components.code,{children:`\"DE\"`}),`). When present, `,_jsx(_components.code,{children:`X-User-Device`}),` and `,_jsx(_components.code,{children:`X-User-Timezone`}),` are `,_jsx(_components.strong,{children:`required`}),`.`]})}),`\n`,_jsx(ParamField,{header:`X-User-Device`,type:`string`,id:`param-x-user-device`,children:_jsxs(_components.p,{children:[`User’s device type: `,_jsx(_components.code,{children:`\"mobile\"`}),` or `,_jsx(_components.code,{children:`\"desktop\"`}),`. `,_jsx(_components.strong,{children:`Required`}),` when `,_jsx(_components.code,{children:`X-User-Country`}),` is present. This is critical for device-targeted campaigns — without it, targeting will not work correctly.`]})}),`\n`,_jsx(ParamField,{header:`X-User-Timezone`,type:`string`,id:`param-x-user-timezone`,children:_jsxs(_components.p,{children:[`IANA timezone (e.g. `,_jsx(_components.code,{children:`\"America/Los_Angeles\"`}),`). `,_jsx(_components.strong,{children:`Required`}),` when `,_jsx(_components.code,{children:`X-User-Country`}),` is present. Used for time-of-day pacing.`]})}),`\n`,_jsx(ParamField,{header:`X-User-Region`,type:`string`,id:`param-x-user-region`,children:_jsxs(_components.p,{children:[`Region or state (e.g. `,_jsx(_components.code,{children:`\"CA\"`}),`, `,_jsx(_components.code,{children:`\"Bavaria\"`}),`). Optional but recommended for regional targeting.`]})}),`\n`,_jsx(ParamField,{header:`X-User-City`,type:`string`,id:`param-x-user-city`,children:_jsxs(_components.p,{children:[`City name (e.g. `,_jsx(_components.code,{children:`\"San Francisco\"`}),`). Optional but recommended for city-level targeting.`]})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`If you send `,_jsx(_components.code,{children:`X-User-Country`}),` without `,_jsx(_components.code,{children:`X-User-Device`}),` and `,_jsx(_components.code,{children:`X-User-Timezone`}),`, the request will be rejected with a `,_jsx(_components.code,{children:`400 Bad Request`}),`. These three headers must always be sent together.`]})}),`\n`,_jsxs(_components.p,{children:[`If none of the above headers are sent, the server falls back to IP-based geolocation using `,_jsx(_components.code,{children:`X-Forwarded-For`}),`. For `,_jsx(_components.strong,{children:`direct calls`}),` (browser or mobile app → our API), this is handled automatically by the load balancer. If you’re `,_jsx(_components.strong,{children:`proxying requests through your own backend`}),`, you must forward the user’s IP via `,_jsx(_components.code,{children:`X-Forwarded-For`}),` — otherwise the server sees your server’s IP and geo will be wrong.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`If unsure about which headers to send, contact `,_jsx(_components.strong,{children:_jsx(_components.a,{href:`mailto:marco@thrads.ai`,children:`marco@thrads.ai`})}),` and we’ll help you set it up.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`body`,children:`Body`}),`\n`,_jsx(ParamField,{body:`user_id`,type:`string`,id:`param-user-id`,children:_jsxs(_components.p,{children:[`Optional anonymous user identifier (e.g. a UUID like `,_jsx(_components.code,{children:`user_a1b2c3d4-...`}),`). If supplied, 1–100 characters and not blank. Keep it stable for user-based ad controls. Do not use email, name, or other PII. On web, store in localStorage; on mobile, use the platform’s persistent storage (e.g. UserDefaults on iOS, SharedPreferences on Android).`]})}),`\n`,_jsx(ParamField,{body:`chat_id`,type:`string`,id:`param-chat-id`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Optional conversation identifier. At most 100 characters. An empty `,_jsx(_components.code,{children:`chat_id`}),` is treated as no chat ID. One unique ID per conversation, not per user. Reset when the user starts a new chat. Without it, matching still works, but stored chat pacing, chat repeat checks, experiment cooldowns, and transcript storage are skipped. User daily campaign limits and click cooldowns still apply when `,_jsx(_components.code,{children:`user_id`}),` is supplied.`]})}),`\n`,_jsxs(ParamField,{body:`messages`,type:`array`,id:`param-messages`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Conversation history. `,_jsx(_components.strong,{children:`Required`}),` when `,_jsx(_components.code,{children:`request_type`}),` is `,_jsx(_components.code,{children:`\"contextual\"`}),`. Each message must have a `,_jsx(_components.code,{children:`role`}),` (`,_jsx(_components.code,{children:`\"user\"`}),` or `,_jsx(_components.code,{children:`\"assistant\"`}),`) and `,_jsx(_components.code,{children:`content`}),`. PII (names, emails, addresses, etc.) should be masked or removed before sending.`]}),_jsxs(_components.p,{children:[`At least one `,_jsx(_components.code,{children:`user`}),` message is required. A single `,_jsx(_components.code,{children:`user`}),` message is valid on its own — send it to request an ad mid-turn, while your model is still generating its reply. A conversation containing only `,_jsx(_components.code,{children:`assistant`}),` messages has no user intent to match against and returns `,_jsx(_components.code,{children:`\"bid\": null`}),`.`]}),_jsxs(Expandable,{title:`messages properties`,children:[_jsx(ParamField,{body:`role`,type:`string`,required:true,id:`param-role`,children:_jsxs(_components.p,{children:[`Message role. Must be either `,_jsx(_components.code,{children:`\"user\"`}),` or `,_jsx(_components.code,{children:`\"assistant\"`}),`.`]})}),_jsx(ParamField,{body:`content`,type:`string`,required:true,id:`param-content`,children:_jsx(_components.p,{children:`Message text content.`})}),_jsx(ParamField,{body:`timestamp`,type:`string`,required:true,id:`param-timestamp`,children:_jsxs(_components.p,{children:[`ISO 8601 (e.g. `,_jsx(_components.code,{children:`\"2025-11-23T10:00:00Z\"`}),`) or Unix timestamp (e.g. `,_jsx(_components.code,{children:`1700730000`}),`). Used for conversation continuity tracking — without timestamps, the server cannot merge partial message histories and conversation analytics will be degraded.`]})})]})]}),`\n`,_jsxs(ParamField,{body:`config`,type:`object`,id:`param-config`,children:[_jsx(_components.p,{children:`Publisher configuration for pacing, contextual serving, creative constraints, and analytics. All fields are optional — omitted fields fall back to defaults set on your publisher in the platform dashboard.`}),_jsxs(Expandable,{title:`config properties`,children:[_jsx(ParamField,{body:`ad_offset`,type:`integer`,id:`param-ad-offset`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Minimum turns before the first ad in a conversation. `,_jsx(_components.code,{children:`null`}),` uses your dashboard setting. `,_jsx(_components.code,{children:`0`}),` disables the offset check.`]})}),_jsx(ParamField,{body:`max_frequency`,type:`integer`,id:`param-max-frequency`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Minimum number of requests between consecutive ads. For example, `,_jsx(_components.code,{children:`3`}),` means an ad can appear at most once every 3 requests. `,_jsx(_components.code,{children:`null`}),` uses your dashboard setting. `,_jsx(_components.code,{children:`0`}),` disables the frequency check.`]})}),_jsx(ParamField,{body:`contextuality`,type:`integer`,id:`param-contextuality`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` How strictly an ad must match the conversation, on a `,_jsx(_components.code,{children:`1`}),`–`,_jsx(_components.code,{children:`8`}),` scale. Higher values require a stronger match and lower the fill rate; lower values are more permissive and fill more often. `,_jsx(_components.code,{children:`null`}),` uses your dashboard setting (default `,_jsx(_components.code,{children:`2`}),`).`]})}),_jsx(ParamField,{body:`retargeting_enabled`,type:`boolean`,default:`true`,id:`param-retargeting-enabled`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Allow re-proposing a recently-relevant ad to the same user: if a product was contextually relevant to them in a conversation within the last 7 days, it can be shown again even when the current conversation isn’t relevant to it. Set `,_jsx(_components.code,{children:`false`}),` to serve only ads relevant to the current conversation. `,_jsx(_components.code,{children:`null`}),` uses your dashboard setting (default `,_jsx(_components.code,{children:`true`}),`).`]})}),_jsx(ParamField,{body:`max_headline_chars`,type:`integer`,id:`param-max-headline-chars`,children:_jsxs(_components.p,{children:[`Maximum character length for ad headlines. Minimum value is `,_jsx(_components.code,{children:`30`}),`. When set, the system guarantees no headline exceeds this limit — creatives that don’t fit are filtered or replaced.`]})}),_jsx(ParamField,{body:`image_enabled`,type:`boolean`,default:`true`,id:`param-image-enabled`,children:_jsxs(_components.p,{children:[`Whether the publisher can render ad images. When `,_jsx(_components.code,{children:`false`}),`, product images are omitted and the ad is returned with a logo or no image. Defaults to `,_jsx(_components.code,{children:`true`}),`.`]})}),_jsx(ParamField,{body:`restricted_click_area`,type:`boolean`,default:`false`,id:`param-restricted-click-area`,children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Experimental, bespoke`}),` (piloting with select publishers). When `,_jsx(_components.code,{children:`true`}),`, only specific card elements (logo, advertiser name, CTA button) should be clickable rather than the whole card. The value you send is echoed back verbatim on the card bid response as `,_jsx(_components.code,{children:`restricted_click_area`}),`; if your integration doesn’t accommodate it, ignore it. Defaults to `,_jsx(_components.code,{children:`false`}),`.`]})}),_jsx(ParamField,{body:`redirect_after_vote`,type:`boolean`,default:`false`,id:`param-redirect-after-vote`,children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Experimental, bespoke`}),` (piloting with select publishers). Poll render directive. When `,_jsx(_components.code,{children:`true`}),`, send the user to the advertiser (`,_jsx(_components.code,{children:`cta_url`}),`) after they vote; when `,_jsx(_components.code,{children:`false`}),`, stay inline and show the results bar. The value you send is echoed back verbatim on the poll bid response as `,_jsx(_components.code,{children:`redirect_after_vote`}),`; if your integration doesn’t accommodate it, ignore it. Defaults to `,_jsx(_components.code,{children:`false`}),`.`]})}),_jsx(ParamField,{body:`experiment_tag`,type:`string`,id:`param-experiment-tag`,children:_jsxs(_components.p,{children:[`A/B test label for analytics segmentation (max 30 characters). See `,_jsx(_components.a,{href:`#experiments`,children:`Experiments`}),` below.`]})})]})]}),`\n`,_jsxs(ParamField,{body:`request_type`,type:`string`,default:`contextual`,id:`param-request-type`,children:[_jsx(_components.p,{children:`Pipeline selector. Determines which ad pipeline runs and what fields are required.`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"contextual\"`}),` (default) — in-chat ads. Requires context: `,_jsx(_components.code,{children:`messages`}),`, a `,_jsx(_components.code,{children:`summary`}),`, or `,_jsx(_components.code,{children:`keywords`}),`. `,_jsx(_components.code,{children:`chat_id`}),` is optional.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"opener\"`}),` — pre-chat ads (e.g. sponsored prompts, banners). `,_jsx(_components.code,{children:`chat_id`}),` and `,_jsx(_components.code,{children:`messages`}),` are not required. Sponsored polls are not opener inventory.`]}),`\n`]})]}),`\n`,_jsxs(ParamField,{body:`ad_formats`,type:`array`,id:`param-ad-formats`,children:[_jsx(_components.p,{children:`Ad formats the publisher can render. The server picks the best match from this list.`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Contextual:`}),` any combination of `,_jsx(_components.code,{children:`card`}),` (default), `,_jsx(_components.code,{children:`poll`}),`, and `,_jsx(_components.code,{children:`carousel`}),` — e.g. `,_jsx(_components.code,{children:`[\"card\", \"carousel\"]`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Opener:`}),` `,_jsx(_components.code,{children:`[\"card\"]`}),`. Always declare it explicitly. Do not include `,_jsx(_components.code,{children:`poll`}),` or `,_jsx(_components.code,{children:`carousel`}),` on opener requests. (`,_jsx(_components.code,{children:`sponsored_prompt`}),` is coming soon.)`]}),`\n`]}),_jsxs(_components.p,{children:[`The legacy spellings `,_jsx(_components.code,{children:`sponsored_message`}),` and `,_jsx(_components.code,{children:`sponsored_poll`}),` remain accepted for backward compatibility. Responses currently echo the legacy names in `,_jsx(_components.code,{children:`ad_format`}),` for the card and poll (`,_jsx(_components.code,{children:`\"sponsored_message\"`}),`, `,_jsx(_components.code,{children:`\"sponsored_poll\"`}),`); carousel returns `,_jsx(_components.code,{children:`\"carousel\"`}),`.`]}),_jsxs(_components.p,{children:[`When contextual requests include both `,_jsx(_components.code,{children:`sponsored_message`}),` and `,_jsx(_components.code,{children:`sponsored_poll`}),`, Thrad selects the campaign through the normal contextual auction, then uses campaign delivery settings to choose whether the returned creative is a message or poll.`]})]}),`\n`,_jsx(ParamField,{body:`turn_number`,type:`integer`,id:`param-turn-number`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Current turn number in the conversation. Used for ad offset pacing and analytics. Must be >= 0. `,_jsx(_components.strong,{children:`Only needed if you’re not calling the endpoint on every user-assistant exchange`}),` — if you are, the system derives this from the message count.`]})}),`\n`,_jsx(ParamField,{body:`summary`,type:`string`,id:`param-summary`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Publisher-provided conversation summary. Useful when you already have a summary from your chatbot and want to reduce latency.`]})}),`\n`,_jsxs(ParamField,{body:`user_metadata`,type:`object`,id:`param-user-metadata`,children:[_jsx(_components.p,{children:`User metadata for targeting and compliance. All fields are optional. Extra fields are accepted and stored for future use.`}),_jsxs(Expandable,{title:`user_metadata properties`,children:[_jsx(ParamField,{body:`age_range`,type:`string`,id:`param-age-range`,children:_jsxs(_components.p,{children:[`IAB standard age range. Accepted values: `,_jsx(_components.code,{children:`\"0-12\"`}),`, `,_jsx(_components.code,{children:`\"13-17\"`}),`, `,_jsx(_components.code,{children:`\"18-24\"`}),`, `,_jsx(_components.code,{children:`\"25-34\"`}),`, `,_jsx(_components.code,{children:`\"35-44\"`}),`, `,_jsx(_components.code,{children:`\"45-54\"`}),`, `,_jsx(_components.code,{children:`\"55-64\"`}),`, `,_jsx(_components.code,{children:`\"65+\"`}),`. When the value is `,_jsx(_components.code,{children:`\"0-12\"`}),` or `,_jsx(_components.code,{children:`\"13-17\"`}),`, the request is treated as underage: the auction is skipped and the response is `,_jsx(_components.code,{children:`200 OK`}),` with `,_jsx(_components.code,{children:`\"bid\": null`}),`. Send this whenever your platform knows the user’s age — it’s the only way to comply with age-gating on Thrad’s side.`]})}),_jsx(ParamField,{body:`tcf_consent`,type:`string`,id:`param-tcf-consent`,children:_jsx(_components.p,{children:`IAB TCF v2 consent string generated by your CMP (e.g. OneTrust, Quantcast) when the user interacts with your cookie banner. Required for EU/UK users if you want oRTB DSPs to bid on that traffic — without it, EU-based DSPs will scrub or skip the request. Pass the raw base64-encoded string exactly as produced by your CMP. Non-EU publishers can omit this field.`})}),_jsx(ParamField,{body:`us_privacy`,type:`string`,id:`param-us-privacy`,children:_jsxs(_components.p,{children:[`IAB CCPA US Privacy string (e.g. `,_jsx(_components.code,{children:`\"1YNN\"`}),`, `,_jsx(_components.code,{children:`\"1---\"`}),`). Generated by your CMP for California/US users. Forwarded to oRTB DSPs as `,_jsx(_components.code,{children:`regs.us_privacy`}),`. Non-US publishers can omit this field.`]})})]})]}),`\n`,`\n`,`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`A `,_jsx(_components.code,{children:`200 OK`}),` response with `,_jsx(_components.code,{children:`\"bid\": null`}),` is `,_jsx(_components.strong,{children:`not an error`}),` - it means the auction ran successfully but no DSP submitted a winning bid. This is normal behavior.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`response`,children:`Response`}),`\n`,_jsx(ResponseField,{name:`requestId`,type:`string`,id:`param-request-id`,children:_jsx(_components.p,{children:`Unique request identifier used in logs and tracing.`})}),`\n`,_jsx(ResponseField,{name:`timestamp`,type:`string`,id:`param-timestamp-1`,children:_jsx(_components.p,{children:`ISO 8601 timestamp of when the response was generated.`})}),`\n`,_jsx(ResponseField,{name:`totalTime`,type:`float`,id:`param-total-time`,children:_jsx(_components.p,{children:`Total processing time for this request in seconds.`})}),`\n`,_jsx(ResponseField,{name:`status`,type:`string`,id:`param-status`,children:_jsxs(_components.p,{children:[`Response status: `,_jsx(_components.code,{children:`\"success\"`}),` or `,_jsx(_components.code,{children:`\"error\"`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`message`,type:`string`,id:`param-message`,children:_jsx(_components.p,{children:`Human-readable message describing the result.`})}),`\n`,_jsxs(ResponseField,{name:`data`,type:`object`,id:`param-data`,children:[_jsx(_components.p,{children:`Response data payload.`}),_jsx(Expandable,{title:`data properties`,children:_jsxs(ResponseField,{name:`bid`,type:`object|null`,id:`param-bid`,children:[_jsx(_components.p,{children:`Winning bid object (null if no bids). Contains ad creative information when available.`}),_jsxs(Expandable,{title:`bid properties`,children:[_jsx(ResponseField,{name:`price`,type:`float`,id:`param-price`,children:_jsx(_components.p,{children:`Clearing price (CPM) in dollars — what the publisher earns.`})}),_jsx(ResponseField,{name:`ad_format`,type:`string`,id:`param-ad-format`,children:_jsxs(_components.p,{children:[`The ad format returned: `,_jsx(_components.code,{children:`\"sponsored_message\"`}),` (card), `,_jsx(_components.code,{children:`\"sponsored_poll\"`}),` (poll), or `,_jsx(_components.code,{children:`\"carousel\"`}),`. Card and poll currently echo their legacy names even when requested as `,_jsx(_components.code,{children:`card`}),`/`,_jsx(_components.code,{children:`poll`}),`.`]})}),_jsx(ResponseField,{name:`advertiser`,type:`string`,id:`param-advertiser`,children:_jsx(_components.p,{children:`Advertiser brand name. Falls back to the advertiser’s website domain if no brand name is available.`})}),_jsx(ResponseField,{name:`domain`,type:`string`,id:`param-domain`,children:_jsxs(_components.p,{children:[`Advertiser website domain (e.g. `,_jsx(_components.code,{children:`\"nike.com\"`}),`). Always present when a bid is returned.`]})}),_jsx(ResponseField,{name:`dsp`,type:`string`,id:`param-dsp`,children:_jsxs(_components.p,{children:[`Winning DSP identifier (e.g., `,_jsx(_components.code,{children:`\"thrad_dsp\"`}),`).`]})}),_jsx(ResponseField,{name:`bidId`,type:`string`,id:`param-bid-id`,children:_jsx(_components.p,{children:`Bid identifier for tracking and debugging.`})}),_jsx(ResponseField,{name:`headline`,type:`string`,id:`param-headline`,children:_jsxs(_components.p,{children:[`Ad headline text. Respects `,_jsx(_components.code,{children:`config.max_headline_chars`}),` when set.`]})}),_jsx(ResponseField,{name:`description`,type:`string`,id:`param-description`,children:_jsxs(_components.p,{children:[`Ad body text. May be `,_jsx(_components.code,{children:`null`}),` in some cases.`]})}),_jsx(ResponseField,{name:`cta_text`,type:`string`,id:`param-cta-text`,children:_jsx(_components.p,{children:`Call-to-action text, e.g., “Shop Now”, “Learn More”. Defaults to “Learn More” on the publisher side if absent.`})}),_jsx(ResponseField,{name:`url`,type:`string`,id:`param-url`,children:_jsxs(_components.p,{children:[`Sponsored message and prompt click tracking URL. Use this for ad clicks — it tracks the click and redirects to the advertiser’s landing page. Poll option clicks use `,_jsx(_components.code,{children:`vote_url`}),`, not `,_jsx(_components.code,{children:`url`}),`.`]})}),_jsx(ResponseField,{name:`placement`,type:`string`,id:`param-placement`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_message`}),` only. Render mode: `,_jsx(_components.code,{children:`\"text\"`}),` (compact, logo only) or `,_jsx(_components.code,{children:`\"image\"`}),` (full product photo). When missing, treat as `,_jsx(_components.code,{children:`\"text\"`}),`. See `,_jsx(_components.a,{href:`/api/guides/rendering-ads#sponsored-message`,children:`Ad Formats \u0026 Rendering`}),` for the full creative-field rules per mode.`]})}),_jsx(ResponseField,{name:`logo_url`,type:`string`,id:`param-logo-url`,children:_jsxs(_components.p,{children:[`Advertiser brand/logo URL. Required when `,_jsx(_components.code,{children:`placement=\"text\"`}),`. May also be present alongside `,_jsx(_components.code,{children:`image_url`}),` when `,_jsx(_components.code,{children:`placement=\"image\"`}),`.`]})}),_jsx(ResponseField,{name:`image_url`,type:`string`,id:`param-image-url`,children:_jsxs(_components.p,{children:[`Product/hero photo URL. Present when `,_jsx(_components.code,{children:`placement=\"image\"`}),`, absent when `,_jsx(_components.code,{children:`placement=\"text\"`}),`. Setting `,_jsx(_components.code,{children:`config.image_enabled=false`}),` forces text mode, so `,_jsx(_components.code,{children:`image_url`}),` will never be returned.`]})}),_jsx(ResponseField,{name:`restricted_click_area`,type:`boolean`,default:`false`,id:`param-restricted-click-area-1`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_message`}),` (card) only. `,_jsx(_components.strong,{children:`Experimental, bespoke.`}),` Echoes the request `,_jsx(_components.code,{children:`config.restricted_click_area`}),`. When `,_jsx(_components.code,{children:`true`}),`, only the CTA (and logo) should route to `,_jsx(_components.code,{children:`url`}),`; when `,_jsx(_components.code,{children:`false`}),` (default), the whole card is the click target. Ignore it if your integration doesn’t support restricted click areas.`]})}),_jsx(ResponseField,{name:`view_url`,type:`string`,id:`param-view-url`,children:_jsxs(_components.p,{children:[`Optional impression tracking pixel URL. Fire it when the ad becomes visible to the user. See `,_jsx(_components.a,{href:`/api/guides/billing-viewability`,children:`Billing \u0026 Viewability`}),`.`]})}),_jsx(ResponseField,{name:`sponsored_poll_id`,type:`integer`,id:`param-sponsored-poll-id`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Poll identifier.`]})}),_jsx(ResponseField,{name:`question`,type:`string`,id:`param-question`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Poll question text.`]})}),_jsxs(ResponseField,{name:`options`,type:`array`,id:`param-options`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Poll answer options. Render each option as a button or equivalent selectable control.`]}),_jsxs(Expandable,{title:`options properties`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id`,children:_jsx(_components.p,{children:`Option identifier to submit when voting.`})}),_jsx(ResponseField,{name:`text`,type:`string`,id:`param-text`,children:_jsx(_components.p,{children:`Option label to display.`})})]})]}),_jsx(ResponseField,{name:`vote_url`,type:`string`,id:`param-vote-url`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Signed vote URL. Submit the selected option to this URL instead of using normal click tracking. See `,_jsx(_components.a,{href:`/api/api-reference/sponsored-poll-tracking`,children:`Sponsored Poll Tracking`}),`.`]})}),_jsx(ResponseField,{name:`results_url`,type:`string`,id:`param-results-url`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Signed results URL. Fetch this URL to refresh aggregate results without recording a vote. See `,_jsx(_components.a,{href:`/api/api-reference/sponsored-poll-tracking`,children:`Sponsored Poll Tracking`}),`.`]})}),_jsx(ResponseField,{name:`cta_url`,type:`string`,id:`param-cta-url`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Optional signed click tracking URL for the advertiser CTA shown after voting. Whether voting redirects to this URL is controlled by `,_jsx(_components.code,{children:`redirect_after_vote`}),`.`]})}),_jsx(ResponseField,{name:`redirect_after_vote`,type:`boolean`,default:`false`,id:`param-redirect-after-vote-1`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. `,_jsx(_components.strong,{children:`Experimental, bespoke.`}),` Echoes the request `,_jsx(_components.code,{children:`config.redirect_after_vote`}),`. When `,_jsx(_components.code,{children:`true`}),`, send the user to the advertiser (`,_jsx(_components.code,{children:`cta_url`}),`) after they vote; when `,_jsx(_components.code,{children:`false`}),` (default), stay inline and show the results bar. Ignore it if your integration doesn’t support post-vote redirects.`]})}),_jsxs(ResponseField,{name:`results`,type:`object`,id:`param-results`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Optional aggregate results returned with the creative.`]}),_jsxs(Expandable,{title:`results properties`,children:[_jsx(ResponseField,{name:`total_votes`,type:`integer`,id:`param-total-votes`,children:_jsx(_components.p,{children:`Total votes counted for the poll.`})}),_jsx(ResponseField,{name:`options`,type:`array`,id:`param-options-1`,children:_jsxs(_components.p,{children:[`Result rows for each poll option, including `,_jsx(_components.code,{children:`id`}),`, `,_jsx(_components.code,{children:`text`}),`, `,_jsx(_components.code,{children:`votes`}),`, and `,_jsx(_components.code,{children:`percentage`}),`.`]})})]})]}),_jsxs(ResponseField,{name:`items`,type:`array`,id:`param-items`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`carousel`}),` only. The product cards, 3–5 entries, in serving order. Render left-to-right; you may truncate trailing items if space demands, but never reorder. Each item is its own click target via its `,_jsx(_components.code,{children:`click_url`}),`; the carousel as a whole fires the single top-level `,_jsx(_components.code,{children:`view_url`}),` once when it renders.`]}),_jsxs(Expandable,{title:`items properties`,children:[_jsx(ResponseField,{name:`index`,type:`integer`,id:`param-index`,children:_jsx(_components.p,{children:`Stable item position (0-based). Echoed in click analytics.`})}),_jsx(ResponseField,{name:`title`,type:`string`,id:`param-title`,children:_jsx(_components.p,{children:`Product name to display on the card.`})}),_jsx(ResponseField,{name:`image_url`,type:`string`,id:`param-image-url-1`,children:_jsx(_components.p,{children:`Product image URL.`})}),_jsx(ResponseField,{name:`price`,type:`string`,id:`param-price-1`,children:_jsxs(_components.p,{children:[`Optional display price (e.g. `,_jsx(_components.code,{children:`\"119.95\"`}),`). Always paired with `,_jsx(_components.code,{children:`currency`}),`; both absent when the product has no price.`]})}),_jsx(ResponseField,{name:`currency`,type:`string`,id:`param-currency`,children:_jsxs(_components.p,{children:[`ISO-4217 currency code for `,_jsx(_components.code,{children:`price`}),` (e.g. `,_jsx(_components.code,{children:`\"USD\"`}),`).`]})}),_jsx(ResponseField,{name:`click_url`,type:`string`,id:`param-click-url`,children:_jsx(_components.p,{children:`Signed click tracking URL for this card. Navigate the user here on click; it redirects to the product page.`})})]})]})]})]})})]}),`\n`,_jsx(ResponseField,{name:`error`,type:`object|null`,id:`param-error`,children:_jsxs(_components.p,{children:[`Error details when `,_jsx(_components.code,{children:`status = \"error\"`}),` (otherwise `,_jsx(_components.code,{children:`null`}),`).`]})}),`\n`,_jsx(Heading,{level:`2`,id:`status-codes`,children:`Status Codes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status Code`}),_jsx(_components.th,{children:`Meaning`}),_jsx(_components.th,{children:`Scenario`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`200 OK`})}),_jsx(_components.td,{children:`Success`}),_jsx(_components.td,{children:`Auction ran successfully (with or without winning bid), or pacing blocked`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`400 Bad Request`})}),_jsx(_components.td,{children:`Invalid input`}),_jsx(_components.td,{children:`Malformed request body or missing required fields`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`401 Unauthorized`})}),_jsx(_components.td,{children:`Authentication failed`}),_jsxs(_components.td,{children:[`Missing or invalid `,_jsx(_components.code,{children:`thrad-api-key`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`403 Forbidden`})}),_jsx(_components.td,{children:`Origin not allowed`}),_jsx(_components.td,{children:`Request from non-whitelisted domain (browser integration only)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`429 Too Many Requests`})}),_jsx(_components.td,{children:`Rate limit exceeded`}),_jsx(_components.td,{children:`Publisher exceeded request quota`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`500 Internal Server Error`})}),_jsx(_components.td,{children:`Server error`}),_jsx(_components.td,{children:`DSP render failed, validation error, or internal exception`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Bid Request (v1)","api":"POST /api/v1/ssp/bid-request","description":"Orchestrates a multi-bidder auction across multiple DSPs and returns the winning ad creative in a single request","deprecated":true,"href":"/api/api-reference/bid-request"}}},"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,Note,ParamField,RequestExample,ResponseExample,ResponseField,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!RequestExample)_missingMdxReference(`RequestExample`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`v1 is deprecated.`}),` New integrations should use `,_jsx(_components.a,{href:`/api/api-reference/bid-request-v2`,children:`v2`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`authorizations`,children:`Authorizations`}),`\n`,_jsx(ParamField,{header:`thrad-api-key`,type:`string`,required:true,id:`param-thrad-api-key`,children:_jsxs(_components.p,{children:[`Your API key for authentication. The key’s environment (`,_jsx(_components.code,{children:`staging`}),` or `,_jsx(_components.code,{children:`production`}),`) determines how ads are served — see `,_jsx(_components.a,{href:`/quickstart#staging-vs-production`,children:`Staging vs. Production`}),`.`]})}),`\n`,_jsx(ParamField,{header:`Content-Type`,type:`string`,required:true,id:`param-content-type`,children:_jsxs(_components.p,{children:[`Must be `,_jsx(_components.code,{children:`application/json`})]})}),`\n`,_jsx(Heading,{level:`2`,id:`end-user-headers`,children:`End-User Headers`}),`\n`,_jsxs(_components.p,{children:[`These headers identify the real end-user behind the request. They are `,_jsx(_components.strong,{children:`required`}),` on every bid request and every view URL ping.`]}),`\n`,_jsx(ParamField,{header:`X-Forwarded-For`,type:`string`,required:true,id:`param-x-forwarded-for`,children:_jsx(_components.p,{children:`The end-user’s original IP address. Must be the real client IP, not your server’s IP.`})}),`\n`,_jsx(ParamField,{header:`User-Agent`,type:`string`,required:true,id:`param-user-agent`,children:_jsx(_components.p,{children:`The end-user’s original device/browser string exactly as received from the client.`})}),`\n`,_jsx(Heading,{level:`2`,id:`geolocation-\u0026-device-headers`,children:`Geolocation \u0026 Device Headers`}),`\n`,_jsxs(_components.p,{children:[`The server resolves the user’s location and device from request headers. These are `,_jsx(_components.strong,{children:`optional`}),` but `,_jsx(_components.strong,{children:`strongly recommended`}),` for server-side integrations — sending them skips the server-side IP lookup and reduces latency.`]}),`\n`,_jsx(ParamField,{header:`X-User-Country`,type:`string`,id:`param-x-user-country`,children:_jsxs(_components.p,{children:[`ISO 3166-1 alpha-2 country code (e.g. `,_jsx(_components.code,{children:`\"US\"`}),`, `,_jsx(_components.code,{children:`\"DE\"`}),`). When present, `,_jsx(_components.code,{children:`X-User-Device`}),` and `,_jsx(_components.code,{children:`X-User-Timezone`}),` are `,_jsx(_components.strong,{children:`required`}),`.`]})}),`\n`,_jsx(ParamField,{header:`X-User-Device`,type:`string`,id:`param-x-user-device`,children:_jsxs(_components.p,{children:[`User’s device type: `,_jsx(_components.code,{children:`\"mobile\"`}),` or `,_jsx(_components.code,{children:`\"desktop\"`}),`. `,_jsx(_components.strong,{children:`Required`}),` when `,_jsx(_components.code,{children:`X-User-Country`}),` is present. This is critical for device-targeted campaigns — without it, targeting will not work correctly.`]})}),`\n`,_jsx(ParamField,{header:`X-User-Timezone`,type:`string`,id:`param-x-user-timezone`,children:_jsxs(_components.p,{children:[`IANA timezone (e.g. `,_jsx(_components.code,{children:`\"America/Los_Angeles\"`}),`). `,_jsx(_components.strong,{children:`Required`}),` when `,_jsx(_components.code,{children:`X-User-Country`}),` is present. Used for time-of-day pacing.`]})}),`\n`,_jsx(ParamField,{header:`X-User-Region`,type:`string`,id:`param-x-user-region`,children:_jsxs(_components.p,{children:[`Region or state (e.g. `,_jsx(_components.code,{children:`\"CA\"`}),`, `,_jsx(_components.code,{children:`\"Bavaria\"`}),`). Optional but recommended for regional targeting.`]})}),`\n`,_jsx(ParamField,{header:`X-User-City`,type:`string`,id:`param-x-user-city`,children:_jsxs(_components.p,{children:[`City name (e.g. `,_jsx(_components.code,{children:`\"San Francisco\"`}),`). Optional but recommended for city-level targeting.`]})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`If you send `,_jsx(_components.code,{children:`X-User-Country`}),` without `,_jsx(_components.code,{children:`X-User-Device`}),` and `,_jsx(_components.code,{children:`X-User-Timezone`}),`, the request will be rejected with a `,_jsx(_components.code,{children:`400 Bad Request`}),`. These three headers must always be sent together.`]})}),`\n`,_jsxs(_components.p,{children:[`If none of the above headers are sent, the server falls back to IP-based geolocation using `,_jsx(_components.code,{children:`X-Forwarded-For`}),`. For `,_jsx(_components.strong,{children:`direct calls`}),` (browser or mobile app → our API), this is handled automatically by the load balancer. If you’re `,_jsx(_components.strong,{children:`proxying requests through your own backend`}),`, you must forward the user’s IP via `,_jsx(_components.code,{children:`X-Forwarded-For`}),` — otherwise the server sees your server’s IP and geo will be wrong.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`If unsure about which headers to send, contact `,_jsx(_components.strong,{children:_jsx(_components.a,{href:`mailto:marco@thrads.ai`,children:`marco@thrads.ai`})}),` and we’ll help you set it up.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`body`,children:`Body`}),`\n`,_jsx(ParamField,{body:`user_id`,type:`string`,id:`param-user-id`,children:_jsxs(_components.p,{children:[`Optional anonymous user identifier (e.g. a UUID like `,_jsx(_components.code,{children:`user_a1b2c3d4-...`}),`). If supplied, 1–100 characters and not blank. Keep it stable for user-based ad controls. Do not use email, name, or other PII. On web, store in localStorage; on mobile, use the platform’s persistent storage (e.g. UserDefaults on iOS, SharedPreferences on Android).`]})}),`\n`,_jsx(ParamField,{body:`chat_id`,type:`string`,id:`param-chat-id`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Optional conversation identifier. At most 100 characters. An empty `,_jsx(_components.code,{children:`chat_id`}),` is treated as no chat ID. One unique ID per conversation, not per user. Reset when the user starts a new chat. Without it, matching still works, but stored chat pacing, chat repeat checks, experiment cooldowns, and transcript storage are skipped. User daily campaign limits and click cooldowns still apply when `,_jsx(_components.code,{children:`user_id`}),` is supplied.`]})}),`\n`,_jsxs(ParamField,{body:`messages`,type:`array`,id:`param-messages`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Conversation history. `,_jsx(_components.strong,{children:`Required`}),` when `,_jsx(_components.code,{children:`request_type`}),` is `,_jsx(_components.code,{children:`\"contextual\"`}),`. Each message must have a `,_jsx(_components.code,{children:`role`}),` (`,_jsx(_components.code,{children:`\"user\"`}),` or `,_jsx(_components.code,{children:`\"assistant\"`}),`) and `,_jsx(_components.code,{children:`content`}),`. PII (names, emails, addresses, etc.) should be masked or removed before sending.`]}),_jsxs(_components.p,{children:[`At least one `,_jsx(_components.code,{children:`user`}),` message is required. A single `,_jsx(_components.code,{children:`user`}),` message is valid on its own — send it to request an ad mid-turn, while your model is still generating its reply. A conversation containing only `,_jsx(_components.code,{children:`assistant`}),` messages has no user intent to match against and returns `,_jsx(_components.code,{children:`\"bid\": null`}),`.`]}),_jsxs(Expandable,{title:`messages properties`,children:[_jsx(ParamField,{body:`role`,type:`string`,required:true,id:`param-role`,children:_jsxs(_components.p,{children:[`Message role. Must be either `,_jsx(_components.code,{children:`\"user\"`}),` or `,_jsx(_components.code,{children:`\"assistant\"`}),`.`]})}),_jsx(ParamField,{body:`content`,type:`string`,required:true,id:`param-content`,children:_jsx(_components.p,{children:`Message text content.`})}),_jsx(ParamField,{body:`timestamp`,type:`string`,required:true,id:`param-timestamp`,children:_jsxs(_components.p,{children:[`ISO 8601 (e.g. `,_jsx(_components.code,{children:`\"2025-11-23T10:00:00Z\"`}),`) or Unix timestamp (e.g. `,_jsx(_components.code,{children:`1700730000`}),`). Used for conversation continuity tracking — without timestamps, the server cannot merge partial message histories and conversation analytics will be degraded.`]})})]})]}),`\n`,_jsxs(ParamField,{body:`config`,type:`object`,id:`param-config`,children:[_jsx(_components.p,{children:`Publisher configuration for pacing, contextual serving, creative constraints, and analytics. All fields are optional — omitted fields fall back to defaults set on your publisher in the platform dashboard.`}),_jsxs(Expandable,{title:`config properties`,children:[_jsx(ParamField,{body:`ad_offset`,type:`integer`,id:`param-ad-offset`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Minimum turns before the first ad in a conversation. `,_jsx(_components.code,{children:`null`}),` uses your dashboard setting. `,_jsx(_components.code,{children:`0`}),` disables the offset check.`]})}),_jsx(ParamField,{body:`max_frequency`,type:`integer`,id:`param-max-frequency`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Minimum number of requests between consecutive ads. For example, `,_jsx(_components.code,{children:`3`}),` means an ad can appear at most once every 3 requests. `,_jsx(_components.code,{children:`null`}),` uses your dashboard setting. `,_jsx(_components.code,{children:`0`}),` disables the frequency check.`]})}),_jsx(ParamField,{body:`contextuality`,type:`integer`,id:`param-contextuality`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` How strictly an ad must match the conversation, on a `,_jsx(_components.code,{children:`1`}),`–`,_jsx(_components.code,{children:`8`}),` scale. Higher values require a stronger match and lower the fill rate; lower values are more permissive and fill more often. `,_jsx(_components.code,{children:`null`}),` uses your dashboard setting (default `,_jsx(_components.code,{children:`2`}),`).`]})}),_jsx(ParamField,{body:`retargeting_enabled`,type:`boolean`,default:`true`,id:`param-retargeting-enabled`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Allow re-proposing a recently-relevant ad to the same user: if a product was contextually relevant to them in a conversation within the last 7 days, it can be shown again even when the current conversation isn’t relevant to it. Set `,_jsx(_components.code,{children:`false`}),` to serve only ads relevant to the current conversation. `,_jsx(_components.code,{children:`null`}),` uses your dashboard setting (default `,_jsx(_components.code,{children:`true`}),`).`]})}),_jsx(ParamField,{body:`max_headline_chars`,type:`integer`,id:`param-max-headline-chars`,children:_jsxs(_components.p,{children:[`Maximum character length for ad headlines. Minimum value is `,_jsx(_components.code,{children:`30`}),`. When set, the system guarantees no headline exceeds this limit — creatives that don’t fit are filtered or replaced.`]})}),_jsx(ParamField,{body:`image_enabled`,type:`boolean`,default:`true`,id:`param-image-enabled`,children:_jsxs(_components.p,{children:[`Whether the publisher can render ad images. When `,_jsx(_components.code,{children:`false`}),`, product images are omitted and the ad is returned with a logo or no image. Defaults to `,_jsx(_components.code,{children:`true`}),`.`]})}),_jsx(ParamField,{body:`restricted_click_area`,type:`boolean`,default:`false`,id:`param-restricted-click-area`,children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Experimental, bespoke`}),` (piloting with select publishers). When `,_jsx(_components.code,{children:`true`}),`, only specific card elements (logo, advertiser name, CTA button) should be clickable rather than the whole card. The value you send is echoed back verbatim on the card bid response as `,_jsx(_components.code,{children:`restricted_click_area`}),`; if your integration doesn’t accommodate it, ignore it. Defaults to `,_jsx(_components.code,{children:`false`}),`.`]})}),_jsx(ParamField,{body:`redirect_after_vote`,type:`boolean`,default:`false`,id:`param-redirect-after-vote`,children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Experimental, bespoke`}),` (piloting with select publishers). Poll render directive. When `,_jsx(_components.code,{children:`true`}),`, send the user to the advertiser (`,_jsx(_components.code,{children:`cta_url`}),`) after they vote; when `,_jsx(_components.code,{children:`false`}),`, stay inline and show the results bar. The value you send is echoed back verbatim on the poll bid response as `,_jsx(_components.code,{children:`redirect_after_vote`}),`; if your integration doesn’t accommodate it, ignore it. Defaults to `,_jsx(_components.code,{children:`false`}),`.`]})}),_jsx(ParamField,{body:`experiment_tag`,type:`string`,id:`param-experiment-tag`,children:_jsxs(_components.p,{children:[`A/B test label for analytics segmentation (max 30 characters). See `,_jsx(_components.a,{href:`#experiments`,children:`Experiments`}),` below.`]})})]})]}),`\n`,_jsxs(ParamField,{body:`request_type`,type:`string`,default:`contextual`,id:`param-request-type`,children:[_jsx(_components.p,{children:`Pipeline selector. Determines which ad pipeline runs and what fields are required.`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"contextual\"`}),` (default) — in-chat ads. Requires context: `,_jsx(_components.code,{children:`messages`}),`, a `,_jsx(_components.code,{children:`summary`}),`, or `,_jsx(_components.code,{children:`keywords`}),`. `,_jsx(_components.code,{children:`chat_id`}),` is optional.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"opener\"`}),` — pre-chat ads (e.g. sponsored prompts, banners). `,_jsx(_components.code,{children:`chat_id`}),` and `,_jsx(_components.code,{children:`messages`}),` are not required. Sponsored polls are not opener inventory.`]}),`\n`]})]}),`\n`,_jsxs(ParamField,{body:`ad_formats`,type:`array`,id:`param-ad-formats`,children:[_jsx(_components.p,{children:`Ad formats the publisher can render. The server picks the best match from this list.`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Contextual:`}),` any combination of `,_jsx(_components.code,{children:`card`}),` (default), `,_jsx(_components.code,{children:`poll`}),`, and `,_jsx(_components.code,{children:`carousel`}),` — e.g. `,_jsx(_components.code,{children:`[\"card\", \"carousel\"]`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Opener:`}),` `,_jsx(_components.code,{children:`[\"card\"]`}),`. Always declare it explicitly. Do not include `,_jsx(_components.code,{children:`poll`}),` or `,_jsx(_components.code,{children:`carousel`}),` on opener requests. (`,_jsx(_components.code,{children:`sponsored_prompt`}),` is coming soon.)`]}),`\n`]}),_jsxs(_components.p,{children:[`The legacy spellings `,_jsx(_components.code,{children:`sponsored_message`}),` and `,_jsx(_components.code,{children:`sponsored_poll`}),` remain accepted for backward compatibility. Responses currently echo the legacy names in `,_jsx(_components.code,{children:`ad_format`}),` for the card and poll (`,_jsx(_components.code,{children:`\"sponsored_message\"`}),`, `,_jsx(_components.code,{children:`\"sponsored_poll\"`}),`); carousel returns `,_jsx(_components.code,{children:`\"carousel\"`}),`.`]}),_jsxs(_components.p,{children:[`When contextual requests include both `,_jsx(_components.code,{children:`sponsored_message`}),` and `,_jsx(_components.code,{children:`sponsored_poll`}),`, Thrad selects the campaign through the normal contextual auction, then uses campaign delivery settings to choose whether the returned creative is a message or poll.`]})]}),`\n`,_jsx(ParamField,{body:`turn_number`,type:`integer`,id:`param-turn-number`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Current turn number in the conversation. Used for ad offset pacing and analytics. Must be >= 0. `,_jsx(_components.strong,{children:`Only needed if you’re not calling the endpoint on every user-assistant exchange`}),` — if you are, the system derives this from the message count.`]})}),`\n`,_jsx(ParamField,{body:`summary`,type:`string`,id:`param-summary`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`contextual only`}),` Publisher-provided conversation summary. Useful when you already have a summary from your chatbot and want to reduce latency.`]})}),`\n`,_jsxs(ParamField,{body:`user_metadata`,type:`object`,id:`param-user-metadata`,children:[_jsx(_components.p,{children:`User metadata for targeting and compliance. All fields are optional. Extra fields are accepted and stored for future use.`}),_jsxs(Expandable,{title:`user_metadata properties`,children:[_jsx(ParamField,{body:`age_range`,type:`string`,id:`param-age-range`,children:_jsxs(_components.p,{children:[`IAB standard age range. Accepted values: `,_jsx(_components.code,{children:`\"0-12\"`}),`, `,_jsx(_components.code,{children:`\"13-17\"`}),`, `,_jsx(_components.code,{children:`\"18-24\"`}),`, `,_jsx(_components.code,{children:`\"25-34\"`}),`, `,_jsx(_components.code,{children:`\"35-44\"`}),`, `,_jsx(_components.code,{children:`\"45-54\"`}),`, `,_jsx(_components.code,{children:`\"55-64\"`}),`, `,_jsx(_components.code,{children:`\"65+\"`}),`. When the value is `,_jsx(_components.code,{children:`\"0-12\"`}),` or `,_jsx(_components.code,{children:`\"13-17\"`}),`, the request is treated as underage: the auction is skipped and the response is `,_jsx(_components.code,{children:`200 OK`}),` with `,_jsx(_components.code,{children:`\"bid\": null`}),`. Send this whenever your platform knows the user’s age — it’s the only way to comply with age-gating on Thrad’s side.`]})}),_jsx(ParamField,{body:`tcf_consent`,type:`string`,id:`param-tcf-consent`,children:_jsx(_components.p,{children:`IAB TCF v2 consent string generated by your CMP (e.g. OneTrust, Quantcast) when the user interacts with your cookie banner. Required for EU/UK users if you want oRTB DSPs to bid on that traffic — without it, EU-based DSPs will scrub or skip the request. Pass the raw base64-encoded string exactly as produced by your CMP. Non-EU publishers can omit this field.`})}),_jsx(ParamField,{body:`us_privacy`,type:`string`,id:`param-us-privacy`,children:_jsxs(_components.p,{children:[`IAB CCPA US Privacy string (e.g. `,_jsx(_components.code,{children:`\"1YNN\"`}),`, `,_jsx(_components.code,{children:`\"1---\"`}),`). Generated by your CMP for California/US users. Forwarded to oRTB DSPs as `,_jsx(_components.code,{children:`regs.us_privacy`}),`. Non-US publishers can omit this field.`]})})]})]}),`\n`,_jsxs(RequestExample,{children:[_jsx(CodeBlock,{filename:`Contextual (in-chat ad)`,numberOfLines:`30`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`30`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"user_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"chat_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"chat_456\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"messages\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"role\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"content\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Looking for running shoes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-11-23T10:00:00Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"role\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"assistant\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"content\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"What's your budget?\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-11-23T10:00:15Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"summary\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"User is looking for running shoes for marathon training\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"config\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ad_offset\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"max_frequency\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"contextuality\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"retargeting_enabled\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"max_headline_chars\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`60`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"experiment_tag\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"variant_a\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"user_metadata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"age_range\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"25-34\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"turn_number\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ad_formats\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"card\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"poll\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"carousel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Opener (pre-chat ad)`,numberOfLines:`5`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"user_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"request_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"opener\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ad_formats\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"card\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`poll`}),` and `,_jsx(_components.code,{children:`carousel`}),` are contextual-only. Opener requests that include them are invalid and should be changed to an opener-supported format.`]})})]}),`\n`,_jsxs(ResponseExample,{children:[_jsx(CodeBlock,{filename:`200 - Sponsored Message`,numberOfLines:`27`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`27`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requestId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"api_req_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-11-24T21:51:52.240297Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"totalTime\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bid successful\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"bid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ad_format\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sponsored_message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5.50`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"advertiser\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Nike\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"domain\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"nike.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"headline\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Premium Running Shoes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"description\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Perfect for marathon training. Lightweight and comfortable.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"cta_text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Shop Now\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://ssp.thrads.ai/api/v1/tracking/redirect?token=abc123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"placement\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"image\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"logo_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://cdn.example.com/nike-logo.png\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"image_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://cdn.example.com/nike-shoes.jpg\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"restricted_click_area\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"view_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://ssp.thrads.ai/api/v1/tracking/view?token=v1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"dsp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"thrad_dsp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"bidId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"bid_abc123\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`200 - Sponsored Poll`,numberOfLines:`39`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`39`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requestId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"api_req_126\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-11-24T21:51:52.240297Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"totalTime\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.128`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bid successful\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"bid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ad_format\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sponsored_poll\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5.50`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"sponsored_poll_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"advertiser\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Warner Music Group\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"domain\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"warnermusic.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"logo_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://img.logokit.com/warnermusic.com?token=pk_xxx\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"question\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"What kind of playlist are you making?\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"options\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Wedding\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Study\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Workout\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"vote_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://ssp.thrads.ai/api/v1/tracking/sponsored-polls/vote?token=vote123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"results_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://ssp.thrads.ai/api/v1/tracking/sponsored-polls/results?token=results123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"cta_text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Learn more\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"cta_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://ssp.thrads.ai/api/v1/tracking/sponsored-polls/cta?token=cta123\u0026view_url=https%3A%2F%2Fssp.thrads.ai%2Fapi%2Fv1%2Ftracking%2Fview%3Ftoken%3Dv1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"redirect_after_vote\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"results\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"total_votes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"options\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Wedding\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"votes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"percentage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Study\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"votes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"percentage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Workout\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"votes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"percentage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"dsp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"thrad_dsp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"bidId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"bid_poll_abc123\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`200 - Carousel`,numberOfLines:`46`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`46`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requestId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"api_req_129\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-11-24T21:51:52.240297Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"totalTime\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.125`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bid successful\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"bid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ad_format\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"carousel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5.50`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"advertiser\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"De'Longhi\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"domain\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"delonghi.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"logo_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://cdn.example.com/delonghi-logo.png\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"view_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://ssp.thrads.ai/api/v1/tracking/view?token=v1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"items\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"index\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"title\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"De'Longhi ECP3220 Espresso Machine\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"image_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://cdn.example.com/ecp3220.jpg\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"119.95\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"currency\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"USD\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"click_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://ssp.thrads.ai/api/v1/tracking/redirect?token=c0\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"index\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"title\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"De'Longhi Dedica Grinder\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"image_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://cdn.example.com/dedica.jpg\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"89.00\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"currency\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"USD\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"click_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://ssp.thrads.ai/api/v1/tracking/redirect?token=c1\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"index\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"title\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"De'Longhi Milk Frother\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"image_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://cdn.example.com/frother.jpg\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"49.95\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"currency\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"USD\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"click_url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://ssp.thrads.ai/api/v1/tracking/redirect?token=c2\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"dsp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"thrad_dsp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"bidId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"bid_car_abc123\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`200 - No Bid`,numberOfLines:`11`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`11`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requestId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"api_req_124\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-11-24T21:51:52.240297Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"totalTime\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.095`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"No bids\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"bid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`500 - Error`,numberOfLines:`14`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`14`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requestId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"api_req_125\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-11-24T21:51:52.240297Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"totalTime\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.234`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Render failed\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"bid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"HTTPException\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`500`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`A `,_jsx(_components.code,{children:`200 OK`}),` response with `,_jsx(_components.code,{children:`\"bid\": null`}),` is `,_jsx(_components.strong,{children:`not an error`}),` - it means the auction ran successfully but no DSP submitted a winning bid. This is normal behavior.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`response`,children:`Response`}),`\n`,_jsx(ResponseField,{name:`requestId`,type:`string`,id:`param-request-id`,children:_jsx(_components.p,{children:`Unique request identifier used in logs and tracing.`})}),`\n`,_jsx(ResponseField,{name:`timestamp`,type:`string`,id:`param-timestamp-1`,children:_jsx(_components.p,{children:`ISO 8601 timestamp of when the response was generated.`})}),`\n`,_jsx(ResponseField,{name:`totalTime`,type:`float`,id:`param-total-time`,children:_jsx(_components.p,{children:`Total processing time for this request in seconds.`})}),`\n`,_jsx(ResponseField,{name:`status`,type:`string`,id:`param-status`,children:_jsxs(_components.p,{children:[`Response status: `,_jsx(_components.code,{children:`\"success\"`}),` or `,_jsx(_components.code,{children:`\"error\"`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`message`,type:`string`,id:`param-message`,children:_jsx(_components.p,{children:`Human-readable message describing the result.`})}),`\n`,_jsxs(ResponseField,{name:`data`,type:`object`,id:`param-data`,children:[_jsx(_components.p,{children:`Response data payload.`}),_jsx(Expandable,{title:`data properties`,children:_jsxs(ResponseField,{name:`bid`,type:`object|null`,id:`param-bid`,children:[_jsx(_components.p,{children:`Winning bid object (null if no bids). Contains ad creative information when available.`}),_jsxs(Expandable,{title:`bid properties`,children:[_jsx(ResponseField,{name:`price`,type:`float`,id:`param-price`,children:_jsx(_components.p,{children:`Clearing price (CPM) in dollars — what the publisher earns.`})}),_jsx(ResponseField,{name:`ad_format`,type:`string`,id:`param-ad-format`,children:_jsxs(_components.p,{children:[`The ad format returned: `,_jsx(_components.code,{children:`\"sponsored_message\"`}),` (card), `,_jsx(_components.code,{children:`\"sponsored_poll\"`}),` (poll), or `,_jsx(_components.code,{children:`\"carousel\"`}),`. Card and poll currently echo their legacy names even when requested as `,_jsx(_components.code,{children:`card`}),`/`,_jsx(_components.code,{children:`poll`}),`.`]})}),_jsx(ResponseField,{name:`advertiser`,type:`string`,id:`param-advertiser`,children:_jsx(_components.p,{children:`Advertiser brand name. Falls back to the advertiser’s website domain if no brand name is available.`})}),_jsx(ResponseField,{name:`domain`,type:`string`,id:`param-domain`,children:_jsxs(_components.p,{children:[`Advertiser website domain (e.g. `,_jsx(_components.code,{children:`\"nike.com\"`}),`). Always present when a bid is returned.`]})}),_jsx(ResponseField,{name:`dsp`,type:`string`,id:`param-dsp`,children:_jsxs(_components.p,{children:[`Winning DSP identifier (e.g., `,_jsx(_components.code,{children:`\"thrad_dsp\"`}),`).`]})}),_jsx(ResponseField,{name:`bidId`,type:`string`,id:`param-bid-id`,children:_jsx(_components.p,{children:`Bid identifier for tracking and debugging.`})}),_jsx(ResponseField,{name:`headline`,type:`string`,id:`param-headline`,children:_jsxs(_components.p,{children:[`Ad headline text. Respects `,_jsx(_components.code,{children:`config.max_headline_chars`}),` when set.`]})}),_jsx(ResponseField,{name:`description`,type:`string`,id:`param-description`,children:_jsxs(_components.p,{children:[`Ad body text. May be `,_jsx(_components.code,{children:`null`}),` in some cases.`]})}),_jsx(ResponseField,{name:`cta_text`,type:`string`,id:`param-cta-text`,children:_jsx(_components.p,{children:`Call-to-action text, e.g., “Shop Now”, “Learn More”. Defaults to “Learn More” on the publisher side if absent.`})}),_jsx(ResponseField,{name:`url`,type:`string`,id:`param-url`,children:_jsxs(_components.p,{children:[`Sponsored message and prompt click tracking URL. Use this for ad clicks — it tracks the click and redirects to the advertiser’s landing page. Poll option clicks use `,_jsx(_components.code,{children:`vote_url`}),`, not `,_jsx(_components.code,{children:`url`}),`.`]})}),_jsx(ResponseField,{name:`placement`,type:`string`,id:`param-placement`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_message`}),` only. Render mode: `,_jsx(_components.code,{children:`\"text\"`}),` (compact, logo only) or `,_jsx(_components.code,{children:`\"image\"`}),` (full product photo). When missing, treat as `,_jsx(_components.code,{children:`\"text\"`}),`. See `,_jsx(_components.a,{href:`/api/guides/rendering-ads#sponsored-message`,children:`Ad Formats \u0026 Rendering`}),` for the full creative-field rules per mode.`]})}),_jsx(ResponseField,{name:`logo_url`,type:`string`,id:`param-logo-url`,children:_jsxs(_components.p,{children:[`Advertiser brand/logo URL. Required when `,_jsx(_components.code,{children:`placement=\"text\"`}),`. May also be present alongside `,_jsx(_components.code,{children:`image_url`}),` when `,_jsx(_components.code,{children:`placement=\"image\"`}),`.`]})}),_jsx(ResponseField,{name:`image_url`,type:`string`,id:`param-image-url`,children:_jsxs(_components.p,{children:[`Product/hero photo URL. Present when `,_jsx(_components.code,{children:`placement=\"image\"`}),`, absent when `,_jsx(_components.code,{children:`placement=\"text\"`}),`. Setting `,_jsx(_components.code,{children:`config.image_enabled=false`}),` forces text mode, so `,_jsx(_components.code,{children:`image_url`}),` will never be returned.`]})}),_jsx(ResponseField,{name:`restricted_click_area`,type:`boolean`,default:`false`,id:`param-restricted-click-area-1`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_message`}),` (card) only. `,_jsx(_components.strong,{children:`Experimental, bespoke.`}),` Echoes the request `,_jsx(_components.code,{children:`config.restricted_click_area`}),`. When `,_jsx(_components.code,{children:`true`}),`, only the CTA (and logo) should route to `,_jsx(_components.code,{children:`url`}),`; when `,_jsx(_components.code,{children:`false`}),` (default), the whole card is the click target. Ignore it if your integration doesn’t support restricted click areas.`]})}),_jsx(ResponseField,{name:`view_url`,type:`string`,id:`param-view-url`,children:_jsxs(_components.p,{children:[`Optional impression tracking pixel URL. Fire it when the ad becomes visible to the user. See `,_jsx(_components.a,{href:`/api/guides/billing-viewability`,children:`Billing \u0026 Viewability`}),`.`]})}),_jsx(ResponseField,{name:`sponsored_poll_id`,type:`integer`,id:`param-sponsored-poll-id`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Poll identifier.`]})}),_jsx(ResponseField,{name:`question`,type:`string`,id:`param-question`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Poll question text.`]})}),_jsxs(ResponseField,{name:`options`,type:`array`,id:`param-options`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Poll answer options. Render each option as a button or equivalent selectable control.`]}),_jsxs(Expandable,{title:`options properties`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id`,children:_jsx(_components.p,{children:`Option identifier to submit when voting.`})}),_jsx(ResponseField,{name:`text`,type:`string`,id:`param-text`,children:_jsx(_components.p,{children:`Option label to display.`})})]})]}),_jsx(ResponseField,{name:`vote_url`,type:`string`,id:`param-vote-url`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Signed vote URL. Submit the selected option to this URL instead of using normal click tracking. See `,_jsx(_components.a,{href:`/api/api-reference/sponsored-poll-tracking`,children:`Sponsored Poll Tracking`}),`.`]})}),_jsx(ResponseField,{name:`results_url`,type:`string`,id:`param-results-url`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Signed results URL. Fetch this URL to refresh aggregate results without recording a vote. See `,_jsx(_components.a,{href:`/api/api-reference/sponsored-poll-tracking`,children:`Sponsored Poll Tracking`}),`.`]})}),_jsx(ResponseField,{name:`cta_url`,type:`string`,id:`param-cta-url`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Optional signed click tracking URL for the advertiser CTA shown after voting. Whether voting redirects to this URL is controlled by `,_jsx(_components.code,{children:`redirect_after_vote`}),`.`]})}),_jsx(ResponseField,{name:`redirect_after_vote`,type:`boolean`,default:`false`,id:`param-redirect-after-vote-1`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. `,_jsx(_components.strong,{children:`Experimental, bespoke.`}),` Echoes the request `,_jsx(_components.code,{children:`config.redirect_after_vote`}),`. When `,_jsx(_components.code,{children:`true`}),`, send the user to the advertiser (`,_jsx(_components.code,{children:`cta_url`}),`) after they vote; when `,_jsx(_components.code,{children:`false`}),` (default), stay inline and show the results bar. Ignore it if your integration doesn’t support post-vote redirects.`]})}),_jsxs(ResponseField,{name:`results`,type:`object`,id:`param-results`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sponsored_poll`}),` only. Optional aggregate results returned with the creative.`]}),_jsxs(Expandable,{title:`results properties`,children:[_jsx(ResponseField,{name:`total_votes`,type:`integer`,id:`param-total-votes`,children:_jsx(_components.p,{children:`Total votes counted for the poll.`})}),_jsx(ResponseField,{name:`options`,type:`array`,id:`param-options-1`,children:_jsxs(_components.p,{children:[`Result rows for each poll option, including `,_jsx(_components.code,{children:`id`}),`, `,_jsx(_components.code,{children:`text`}),`, `,_jsx(_components.code,{children:`votes`}),`, and `,_jsx(_components.code,{children:`percentage`}),`.`]})})]})]}),_jsxs(ResponseField,{name:`items`,type:`array`,id:`param-items`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`carousel`}),` only. The product cards, 3–5 entries, in serving order. Render left-to-right; you may truncate trailing items if space demands, but never reorder. Each item is its own click target via its `,_jsx(_components.code,{children:`click_url`}),`; the carousel as a whole fires the single top-level `,_jsx(_components.code,{children:`view_url`}),` once when it renders.`]}),_jsxs(Expandable,{title:`items properties`,children:[_jsx(ResponseField,{name:`index`,type:`integer`,id:`param-index`,children:_jsx(_components.p,{children:`Stable item position (0-based). Echoed in click analytics.`})}),_jsx(ResponseField,{name:`title`,type:`string`,id:`param-title`,children:_jsx(_components.p,{children:`Product name to display on the card.`})}),_jsx(ResponseField,{name:`image_url`,type:`string`,id:`param-image-url-1`,children:_jsx(_components.p,{children:`Product image URL.`})}),_jsx(ResponseField,{name:`price`,type:`string`,id:`param-price-1`,children:_jsxs(_components.p,{children:[`Optional display price (e.g. `,_jsx(_components.code,{children:`\"119.95\"`}),`). Always paired with `,_jsx(_components.code,{children:`currency`}),`; both absent when the product has no price.`]})}),_jsx(ResponseField,{name:`currency`,type:`string`,id:`param-currency`,children:_jsxs(_components.p,{children:[`ISO-4217 currency code for `,_jsx(_components.code,{children:`price`}),` (e.g. `,_jsx(_components.code,{children:`\"USD\"`}),`).`]})}),_jsx(ResponseField,{name:`click_url`,type:`string`,id:`param-click-url`,children:_jsx(_components.p,{children:`Signed click tracking URL for this card. Navigate the user here on click; it redirects to the product page.`})})]})]})]})]})})]}),`\n`,_jsx(ResponseField,{name:`error`,type:`object|null`,id:`param-error`,children:_jsxs(_components.p,{children:[`Error details when `,_jsx(_components.code,{children:`status = \"error\"`}),` (otherwise `,_jsx(_components.code,{children:`null`}),`).`]})}),`\n`,_jsx(Heading,{level:`2`,id:`status-codes`,children:`Status Codes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status Code`}),_jsx(_components.th,{children:`Meaning`}),_jsx(_components.th,{children:`Scenario`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`200 OK`})}),_jsx(_components.td,{children:`Success`}),_jsx(_components.td,{children:`Auction ran successfully (with or without winning bid), or pacing blocked`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`400 Bad Request`})}),_jsx(_components.td,{children:`Invalid input`}),_jsx(_components.td,{children:`Malformed request body or missing required fields`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`401 Unauthorized`})}),_jsx(_components.td,{children:`Authentication failed`}),_jsxs(_components.td,{children:[`Missing or invalid `,_jsx(_components.code,{children:`thrad-api-key`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`403 Forbidden`})}),_jsx(_components.td,{children:`Origin not allowed`}),_jsx(_components.td,{children:`Request from non-whitelisted domain (browser integration only)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`429 Too Many Requests`})}),_jsx(_components.td,{children:`Rate limit exceeded`}),_jsx(_components.td,{children:`Publisher exceeded request quota`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`500 Internal Server Error`})}),_jsx(_components.td,{children:`Server error`}),_jsx(_components.td,{children:`DSP render failed, validation error, or internal exception`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Bid Request (v1)","api":"POST /api/v1/ssp/bid-request","description":"Orchestrates a multi-bidder auction across multiple DSPs and returns the winning ad creative in a single request","deprecated":true,"href":"/api/api-reference/bid-request"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Authorizations","slug":"authorizations","depth":2,"children":[]},{"title":"End-User Headers","slug":"end-user-headers","depth":2,"children":[]},{"title":"Geolocation \u0026 Device Headers","slug":"geolocation-\u0026-device-headers","depth":2,"children":[]},{"title":"Body","slug":"body","depth":2,"children":[]},{"title":"Response","slug":"response","depth":2,"children":[]},{"title":"Status Codes","slug":"status-codes","depth":2,"children":[]}],"codeExamples":{"request":{"type":"RequestExample","children":[{"filename":"Contextual (in-chat ad)","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"30\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"user_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"user_123\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"chat_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"chat_456\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"messages\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"role\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"user\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"content\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Looking for running shoes\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timestamp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2025-11-23T10:00:00Z\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"role\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"assistant\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"content\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"What's your budget?\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timestamp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2025-11-23T10:00:15Z\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"summary\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"User is looking for running shoes for marathon training\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"config\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ad_offset\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">3\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"max_frequency\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">5\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"contextuality\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">2\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"retargeting_enabled\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"max_headline_chars\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">60\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"experiment_tag\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"variant_a\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"user_metadata\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"age_range\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"25-34\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"turn_number\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">4\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ad_formats\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"card\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"poll\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"carousel\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"Opener (pre-chat ad)","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"5\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"user_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"user_123\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"request_type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"opener\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ad_formats\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"card\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"","html":"\u003cp>\u003ccode>poll\u003c/code> and \u003ccode>carousel\u003c/code> are contextual-only. Opener requests that include them are invalid and should be changed to an opener-supported format.\u003c/p>"}],"attributes":[]},"response":{"type":"ResponseExample","children":[{"filename":"200 - Sponsored Message","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"27\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"requestId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"api_req_123\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timestamp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2025-11-24T21:51:52.240297Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"totalTime\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0.123\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"success\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"message\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Bid successful\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"data\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"bid\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ad_format\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"sponsored_message\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"price\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">5.50\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"advertiser\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Nike\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"domain\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"nike.com\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"headline\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Premium Running Shoes\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"description\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Perfect for marathon training. Lightweight and comfortable.\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"cta_text\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Shop Now\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://ssp.thrads.ai/api/v1/tracking/redirect?token=abc123\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"placement\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"image\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"logo_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://cdn.example.com/nike-logo.png\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"image_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://cdn.example.com/nike-shoes.jpg\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"restricted_click_area\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"view_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://ssp.thrads.ai/api/v1/tracking/view?token=v1\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"dsp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"thrad_dsp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"bidId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"bid_abc123\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"error\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"200 - Sponsored Poll","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"39\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"requestId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"api_req_126\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timestamp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2025-11-24T21:51:52.240297Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"totalTime\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0.128\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"success\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"message\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Bid successful\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"data\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"bid\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ad_format\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"sponsored_poll\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"price\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">5.50\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"sponsored_poll_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">123\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"advertiser\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Warner Music Group\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"domain\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"warnermusic.com\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"logo_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://img.logokit.com/warnermusic.com?token=pk_xxx\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"question\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"What kind of playlist are you making?\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"options\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"0\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"text\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Wedding\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"1\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"text\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Study\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"text\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Workout\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"vote_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://ssp.thrads.ai/api/v1/tracking/sponsored-polls/vote?token=vote123\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"results_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://ssp.thrads.ai/api/v1/tracking/sponsored-polls/results?token=results123\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"cta_text\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Learn more\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"cta_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://ssp.thrads.ai/api/v1/tracking/sponsored-polls/cta?token=cta123\u0026#x26;view_url=https%3A%2F%2Fssp.thrads.ai%2Fapi%2Fv1%2Ftracking%2Fview%3Ftoken%3Dv1\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"redirect_after_vote\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"results\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"total_votes\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"options\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"0\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"text\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Wedding\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"votes\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"percentage\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"1\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"text\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Study\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"votes\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"percentage\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"text\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Workout\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"votes\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"percentage\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"dsp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"thrad_dsp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"bidId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"bid_poll_abc123\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"error\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"200 - Carousel","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"46\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"requestId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"api_req_129\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timestamp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2025-11-24T21:51:52.240297Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"totalTime\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0.125\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"success\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"message\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Bid successful\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"data\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"bid\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ad_format\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"carousel\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"price\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">5.50\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"advertiser\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"De'Longhi\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"domain\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"delonghi.com\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"logo_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://cdn.example.com/delonghi-logo.png\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"view_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://ssp.thrads.ai/api/v1/tracking/view?token=v1\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"items\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"index\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"title\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"De'Longhi ECP3220 Espresso Machine\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"image_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://cdn.example.com/ecp3220.jpg\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"price\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"119.95\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"currency\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"USD\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"click_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://ssp.thrads.ai/api/v1/tracking/redirect?token=c0\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"index\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"title\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"De'Longhi Dedica Grinder\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"image_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://cdn.example.com/dedica.jpg\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"price\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"89.00\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"currency\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"USD\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"click_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://ssp.thrads.ai/api/v1/tracking/redirect?token=c1\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"index\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">2\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"title\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"De'Longhi Milk Frother\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"image_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://cdn.example.com/frother.jpg\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"price\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"49.95\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"currency\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"USD\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"click_url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://ssp.thrads.ai/api/v1/tracking/redirect?token=c2\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"dsp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"thrad_dsp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"bidId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"bid_car_abc123\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"error\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"200 - No Bid","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"11\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"requestId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"api_req_124\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timestamp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2025-11-24T21:51:52.240297Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"totalTime\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0.095\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"success\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"message\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"No bids\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"data\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"bid\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"error\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"500 - Error","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"14\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"requestId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"api_req_125\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timestamp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2025-11-24T21:51:52.240297Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"totalTime\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0.234\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"error\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"message\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Render failed\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"data\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"bid\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"error\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"HTTPException\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"code\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">500\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}},"endpoint":{"title":"Bid Request (v1)","path":"/api/v1/ssp/bid-request","servers":[{"url":"https://ssp.thrad.ai"}],"method":"post","request":{"security":[{"title":"API Key Auth","parameters":{"header":{"thrad-api-key":{"type":"apiKey"}},"query":{},"cookie":{}}}],"parameters":{"query":{},"header":{"thrad-api-key":{"schema":[{"type":"string","description":"Your API key for authentication. The key’s environment ( `staging` or `production` ) determines how ads are served — see Staging vs. Production .","required":true}]},"Content-Type":{"schema":[{"type":"string","description":"Must be `application/json`","required":true}]},"X-Forwarded-For":{"schema":[{"type":"string","description":"The end-user’s original IP address. Must be the real client IP, not your server’s IP.","required":true}]},"User-Agent":{"schema":[{"type":"string","description":"The end-user’s original device/browser string exactly as received from the client.","required":true}]},"X-User-Country":{"schema":[{"type":"string","description":"ISO 3166-1 alpha-2 country code (e.g. `\"US\"` , `\"DE\"` ). When present, `X-User-Device` and `X-User-Timezone` are required ."}]},"X-User-Device":{"schema":[{"type":"string","description":"User’s device type: `\"mobile\"` or `\"desktop\"` . Required when `X-User-Country` is present. This is critical for device-targeted campaigns — without it, targeting will not work correctly."}]},"X-User-Timezone":{"schema":[{"type":"string","description":"IANA timezone (e.g. `\"America/Los_Angeles\"` ). Required when `X-User-Country` is present. Used for time-of-day pacing."}]},"X-User-Region":{"schema":[{"type":"string","description":"Region or state (e.g. `\"CA\"` , `\"Bavaria\"` ). Optional but recommended for regional targeting."}]},"X-User-City":{"schema":[{"type":"string","description":"City name (e.g. `\"San Francisco\"` ). Optional but recommended for city-level targeting."}]}},"cookie":{},"path":{}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"user_id":[{"type":"string","description":"Optional anonymous user identifier (e.g. a UUID like `user_a1b2c3d4-...` ). If supplied, 1–100 characters and not blank. Keep it stable for user-based ad controls. Do not use email, name, or other PII. On web, store in localStorage; on mobile, use the platform’s persistent storage (e.g. UserDefaults on iOS, SharedPreferences on Android)."}],"chat_id":[{"type":"string","description":"`contextual only` Optional conversation identifier. At most 100 characters. An empty `chat_id` is treated as no chat ID. One unique ID per conversation, not per user. Reset when the user starts a new chat. Without it, matching still works, but stored chat pacing, chat repeat checks, experiment cooldowns, and transcript storage are skipped. User daily campaign limits and click cooldowns still apply when `user_id` is supplied."}],"messages":[{"type":"array","items":[{"type":"object","properties":{"role":[{"type":"string","description":"Message role. Must be either `\"user\"` or `\"assistant\"` .","required":true}],"content":[{"type":"string","description":"Message text content.","required":true}],"timestamp":[{"type":"string","description":"ISO 8601 (e.g. `\"2025-11-23T10:00:00Z\"` ) or Unix timestamp (e.g. `1700730000` ). Used for conversation continuity tracking — without timestamps, the server cannot merge partial message histories and conversation analytics will be degraded.","required":true}]}}],"description":"`contextual only` Conversation history. Required when `request_type` is `\"contextual\"` . Each message must have a `role` ( `\"user\"` or `\"assistant\"` ) and `content` . PII (names, emails, addresses, etc.) should be masked or removed before sending. At least one `user` message is required. A single `user` message is valid on its own — send it to request an ad mid-turn, while your model is still generating its reply. A conversation containing only `assistant` messages has no user intent to match against and returns `\"bid\": null` ."}],"config":[{"type":"object","properties":{"ad_offset":[{"type":"integer","description":"`contextual only` Minimum turns before the first ad in a conversation. `null` uses your dashboard setting. `0` disables the offset check."}],"max_frequency":[{"type":"integer","description":"`contextual only` Minimum number of requests between consecutive ads. For example, `3` means an ad can appear at most once every 3 requests. `null` uses your dashboard setting. `0` disables the frequency check."}],"contextuality":[{"type":"integer","description":"`contextual only` How strictly an ad must match the conversation, on a `1` – `8` scale. Higher values require a stronger match and lower the fill rate; lower values are more permissive and fill more often. `null` uses your dashboard setting (default `2` )."}],"retargeting_enabled":[{"type":"boolean","description":"`contextual only` Allow re-proposing a recently-relevant ad to the same user: if a product was contextually relevant to them in a conversation within the last 7 days, it can be shown again even when the current conversation isn’t relevant to it. Set `false` to serve only ads relevant to the current conversation. `null` uses your dashboard setting (default `true` )."}],"max_headline_chars":[{"type":"integer","description":"Maximum character length for ad headlines. Minimum value is `30` . When set, the system guarantees no headline exceeds this limit — creatives that don’t fit are filtered or replaced."}],"image_enabled":[{"type":"boolean","description":"Whether the publisher can render ad images. When `false` , product images are omitted and the ad is returned with a logo or no image. Defaults to `true` ."}],"restricted_click_area":[{"type":"boolean","description":"Experimental, bespoke (piloting with select publishers). When `true` , only specific card elements (logo, advertiser name, CTA button) should be clickable rather than the whole card. The value you send is echoed back verbatim on the card bid response as `restricted_click_area` ; if your integration doesn’t accommodate it, ignore it. Defaults to `false` ."}],"redirect_after_vote":[{"type":"boolean","description":"Experimental, bespoke (piloting with select publishers). Poll render directive. When `true` , send the user to the advertiser ( `cta_url` ) after they vote; when `false` , stay inline and show the results bar. The value you send is echoed back verbatim on the poll bid response as `redirect_after_vote` ; if your integration doesn’t accommodate it, ignore it. Defaults to `false` ."}],"experiment_tag":[{"type":"string","description":"A/B test label for analytics segmentation (max 30 characters). See Experiments below."}]},"description":"Publisher configuration for pacing, contextual serving, creative constraints, and analytics. All fields are optional — omitted fields fall back to defaults set on your publisher in the platform dashboard."}],"request_type":[{"type":"string","description":"Pipeline selector. Determines which ad pipeline runs and what fields are required. `\"contextual\"` (default) — in-chat ads. Requires context: `messages` , a `summary` , or `keywords` . `chat_id` is optional. `\"opener\"` — pre-chat ads (e.g. sponsored prompts, banners). `chat_id` and `messages` are not required. Sponsored polls are not opener inventory."}],"ad_formats":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Ad formats the publisher can render. The server picks the best match from this list. Contextual: any combination of `card` (default), `poll` , and `carousel` — e.g. `[\"card\", \"carousel\"]` . Opener: `[\"card\"]` . Always declare it explicitly. Do not include `poll` or `carousel` on opener requests. ( `sponsored_prompt` is coming soon.) The legacy spellings `sponsored_message` and `sponsored_poll` remain accepted for backward compatibility. Responses currently echo the legacy names in `ad_format` for the card and poll ( `\"sponsored_message\"` , `\"sponsored_poll\"` ); carousel returns `\"carousel\"` . When contextual requests include both `sponsored_message` and `sponsored_poll` , Thrad selects the campaign through the normal contextual auction, then uses campaign delivery settings to choose whether the returned creative is a message or poll."}],"turn_number":[{"type":"integer","description":"`contextual only` Current turn number in the conversation. Used for ad offset pacing and analytics. Must be >= 0. Only needed if you’re not calling the endpoint on every user-assistant exchange — if you are, the system derives this from the message count."}],"summary":[{"type":"string","description":"`contextual only` Publisher-provided conversation summary. Useful when you already have a summary from your chatbot and want to reduce latency."}],"user_metadata":[{"type":"object","properties":{"age_range":[{"type":"string","description":"IAB standard age range. Accepted values: `\"0-12\"` , `\"13-17\"` , `\"18-24\"` , `\"25-34\"` , `\"35-44\"` , `\"45-54\"` , `\"55-64\"` , `\"65+\"` . When the value is `\"0-12\"` or `\"13-17\"` , the request is treated as underage: the auction is skipped and the response is `200 OK` with `\"bid\": null` . Send this whenever your platform knows the user’s age — it’s the only way to comply with age-gating on Thrad’s side."}],"tcf_consent":[{"type":"string","description":"IAB TCF v2 consent string generated by your CMP (e.g. OneTrust, Quantcast) when the user interacts with your cookie banner. Required for EU/UK users if you want oRTB DSPs to bid on that traffic — without it, EU-based DSPs will scrub or skip the request. Pass the raw base64-encoded string exactly as produced by your CMP. Non-EU publishers can omit this field."}],"us_privacy":[{"type":"string","description":"IAB CCPA US Privacy string (e.g. `\"1YNN\"` , `\"1---\"` ). Generated by your CMP for California/US users. Forwarded to oRTB DSPs as `regs.us_privacy` . Non-US publishers can omit this field."}]},"description":"User metadata for targeting and compliance. All fields are optional. Extra fields are accepted and stored for future use."}]}}],"examples":{"example":{"value":{"user_id":"\u003cstring>","chat_id":"\u003cstring>","messages":[{"role":"\u003cstring>","content":"\u003cstring>","timestamp":"\u003cstring>"}],"config":{"ad_offset":123,"max_frequency":123,"contextuality":123,"retargeting_enabled":true,"max_headline_chars":123,"image_enabled":true,"restricted_click_area":true,"redirect_after_vote":true,"experiment_tag":"\u003cstring>"},"request_type":"\u003cstring>","ad_formats":[{}],"turn_number":123,"summary":"\u003cstring>","user_metadata":{"age_range":"\u003cstring>","tcf_consent":"\u003cstring>","us_privacy":"\u003cstring>"}}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"requestId":[{"type":"string","description":"Unique request identifier used in logs and tracing."}],"timestamp":[{"type":"string","description":"ISO 8601 timestamp of when the response was generated."}],"totalTime":[{"type":"number","description":"Total processing time for this request in seconds."}],"status":[{"type":"string","description":"Response status: `\"success\"` or `\"error\"` ."}],"message":[{"type":"string","description":"Human-readable message describing the result."}],"data":[{"type":"object","properties":{"bid":[{"type":"object","properties":{"price":[{"type":"number","description":"Clearing price (CPM) in dollars — what the publisher earns."}],"ad_format":[{"type":"string","description":"The ad format returned: `\"sponsored_message\"` (card), `\"sponsored_poll\"` (poll), or `\"carousel\"` . Card and poll currently echo their legacy names even when requested as `card` / `poll` ."}],"advertiser":[{"type":"string","description":"Advertiser brand name. Falls back to the advertiser’s website domain if no brand name is available."}],"domain":[{"type":"string","description":"Advertiser website domain (e.g. `\"nike.com\"` ). Always present when a bid is returned."}],"dsp":[{"type":"string","description":"Winning DSP identifier (e.g., `\"thrad_dsp\"` )."}],"bidId":[{"type":"string","description":"Bid identifier for tracking and debugging."}],"headline":[{"type":"string","description":"Ad headline text. Respects `config.max_headline_chars` when set."}],"description":[{"type":"string","description":"Ad body text. May be `null` in some cases."}],"cta_text":[{"type":"string","description":"Call-to-action text, e.g., “Shop Now”, “Learn More”. Defaults to “Learn More” on the publisher side if absent."}],"url":[{"type":"string","description":"Sponsored message and prompt click tracking URL. Use this for ad clicks — it tracks the click and redirects to the advertiser’s landing page. Poll option clicks use `vote_url` , not `url` ."}],"placement":[{"type":"string","description":"`sponsored_message` only. Render mode: `\"text\"` (compact, logo only) or `\"image\"` (full product photo). When missing, treat as `\"text\"` . See Ad Formats \u0026 Rendering for the full creative-field rules per mode."}],"logo_url":[{"type":"string","description":"Advertiser brand/logo URL. Required when `placement=\"text\"` . May also be present alongside `image_url` when `placement=\"image\"` ."}],"image_url":[{"type":"string","description":"Product/hero photo URL. Present when `placement=\"image\"` , absent when `placement=\"text\"` . Setting `config.image_enabled=false` forces text mode, so `image_url` will never be returned."}],"restricted_click_area":[{"type":"boolean","description":"`sponsored_message` (card) only. Experimental, bespoke. Echoes the request `config.restricted_click_area` . When `true` , only the CTA (and logo) should route to `url` ; when `false` (default), the whole card is the click target. Ignore it if your integration doesn’t support restricted click areas."}],"view_url":[{"type":"string","description":"Optional impression tracking pixel URL. Fire it when the ad becomes visible to the user. See Billing \u0026 Viewability ."}],"sponsored_poll_id":[{"type":"integer","description":"`sponsored_poll` only. Poll identifier."}],"question":[{"type":"string","description":"`sponsored_poll` only. Poll question text."}],"options":[{"type":"array","items":[{"type":"object","properties":{"id":[{"type":"string","description":"Option identifier to submit when voting."}],"text":[{"type":"string","description":"Option label to display."}]}}],"description":"`sponsored_poll` only. Poll answer options. Render each option as a button or equivalent selectable control."}],"vote_url":[{"type":"string","description":"`sponsored_poll` only. Signed vote URL. Submit the selected option to this URL instead of using normal click tracking. See Sponsored Poll Tracking ."}],"results_url":[{"type":"string","description":"`sponsored_poll` only. Signed results URL. Fetch this URL to refresh aggregate results without recording a vote. See Sponsored Poll Tracking ."}],"cta_url":[{"type":"string","description":"`sponsored_poll` only. Optional signed click tracking URL for the advertiser CTA shown after voting. Whether voting redirects to this URL is controlled by `redirect_after_vote` ."}],"redirect_after_vote":[{"type":"boolean","description":"`sponsored_poll` only. Experimental, bespoke. Echoes the request `config.redirect_after_vote` . When `true` , send the user to the advertiser ( `cta_url` ) after they vote; when `false` (default), stay inline and show the results bar. Ignore it if your integration doesn’t support post-vote redirects."}],"results":[{"type":"object","properties":{"total_votes":[{"type":"integer","description":"Total votes counted for the poll."}],"options":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Result rows for each poll option, including `id` , `text` , `votes` , and `percentage` ."}]},"description":"`sponsored_poll` only. Optional aggregate results returned with the creative."}],"items":[{"type":"array","items":[{"type":"object","properties":{"index":[{"type":"integer","description":"Stable item position (0-based). Echoed in click analytics."}],"title":[{"type":"string","description":"Product name to display on the card."}],"image_url":[{"type":"string","description":"Product image URL."}],"price":[{"type":"string","description":"Optional display price (e.g. `\"119.95\"` ). Always paired with `currency` ; both absent when the product has no price."}],"currency":[{"type":"string","description":"ISO-4217 currency code for `price` (e.g. `\"USD\"` )."}],"click_url":[{"type":"string","description":"Signed click tracking URL for this card. Navigate the user here on click; it redirects to the product page."}]}}],"description":"`carousel` only. The product cards, 3–5 entries, in serving order. Render left-to-right; you may truncate trailing items if space demands, but never reorder. Each item is its own click target via its `click_url` ; the carousel as a whole fires the single top-level `view_url` once when it renders."}]},"description":"Winning bid object (null if no bids). Contains ad creative information when available."}]},"description":"Response data payload."}],"error":[{"type":"object","properties":{},"description":"Error details when `status = \"error\"` (otherwise `null` )."}]}}],"examples":{"example":{"value":{"requestId":"\u003cstring>","timestamp":"\u003cstring>","totalTime":123,"status":"\u003cstring>","message":"\u003cstring>","data":{"bid":{"price":123,"ad_format":"\u003cstring>","advertiser":"\u003cstring>","domain":"\u003cstring>","dsp":"\u003cstring>","bidId":"\u003cstring>","headline":"\u003cstring>","description":"\u003cstring>","cta_text":"\u003cstring>","url":"\u003cstring>","placement":"\u003cstring>","logo_url":"\u003cstring>","image_url":"\u003cstring>","restricted_click_area":true,"view_url":"\u003cstring>","sponsored_poll_id":123,"question":"\u003cstring>","options":[{"id":"\u003cstring>","text":"\u003cstring>"}],"vote_url":"\u003cstring>","results_url":"\u003cstring>","cta_url":"\u003cstring>","redirect_after_vote":true,"results":{"total_votes":123,"options":[{}]},"items":[{"index":123,"title":"\u003cstring>","image_url":"\u003cstring>","price":"\u003cstring>","currency":"\u003cstring>","click_url":"\u003cstring>"}]}},"error":{}}}}}}},"deprecated":false}},"jsLinks":[],"subdomain":"thrads-5feffa3d","siteName":"Thrad Docs","title":"Bid Request (v1) - Thrad Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-04T20:26:18.316Z","originalFileLocation":"api/api-reference/bid-request.md"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Orchestrates a multi-bidder auction across multiple DSPs and returns the winning ad creative in a single request\">\u003cmeta data-mint-head name=\"application-name\" content=\"Thrad Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/thrads-5feffa3d/bkiWb08aHWdUwdNK/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/thrads-5feffa3d/bkiWb08aHWdUwdNK/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/thrads-5feffa3d/bkiWb08aHWdUwdNK/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/thrads-5feffa3d/bkiWb08aHWdUwdNK/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/thrads-5feffa3d/bkiWb08aHWdUwdNK/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/thrads-5feffa3d/bkiWb08aHWdUwdNK/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/thrads-5feffa3d/bkiWb08aHWdUwdNK/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/thrads-5feffa3d/bkiWb08aHWdUwdNK/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/thrads-5feffa3d/bkiWb08aHWdUwdNK/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Bid Request (v1) - Thrad Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Orchestrates a multi-bidder auction across multiple DSPs and returns the winning ad creative in a single request\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Thrad Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.thrad.ai/api/api-reference/bid-request\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://thrads-5feffa3d.mintlify.site/_mintlify/api/og/v2?division=v1+%28deprecated%29\u0026amp;title=Bid+Request+%28v1%29\u0026amp;description=Orchestrates+a+multi-bidder+auction+across+multiple+DSPs+and+returns+the+winning+ad+creative+in+a+single+request\u0026amp;theme=3f468421409f48e312fa01a5\u0026amp;signature=4112930f55a06d5423a52a6cd8e3c06d866f4038ff648229b0888df5e45861f7\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Bid Request (v1) - Thrad Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Orchestrates a multi-bidder auction across multiple DSPs and returns the winning ad creative in a single request\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://thrads-5feffa3d.mintlify.site/_mintlify/api/og/v2?division=v1+%28deprecated%29\u0026amp;title=Bid+Request+%28v1%29\u0026amp;description=Orchestrates+a+multi-bidder+auction+across+multiple+DSPs+and+returns+the+winning+ad+creative+in+a+single+request\u0026amp;theme=3f468421409f48e312fa01a5\u0026amp;signature=4112930f55a06d5423a52a6cd8e3c06d866f4038ff648229b0888df5e45861f7\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/thrads-5feffa3d/bkiWb08aHWdUwdNK/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Thrad Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1E1E20\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.thrad.ai/api/api-reference/bid-request\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/api-reference/bid-request.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.thrad.ai/#organization\",\"name\":\"Thrad Docs\",\"url\":\"https://docs.thrad.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/thrads-5feffa3d/DxyVKooiEHOWBPsr/images/Thrad-Logo-Orange.png?fit=max\u0026auto=format\u0026n=DxyVKooiEHOWBPsr\u0026q=85\u0026s=271f3bf20d1b3427a47628ba4c698a12\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.thrad.ai#website\",\"name\":\"Thrad Docs\",\"url\":\"https://docs.thrad.ai\",\"publisher\":{\"@id\":\"https://docs.thrad.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.thrad.ai/api/api-reference/bid-request#webpage\",\"url\":\"https://docs.thrad.ai/api/api-reference/bid-request\",\"name\":\"Bid Request (v1)\",\"description\":\"Orchestrates a multi-bidder auction across multiple DSPs and returns the winning ad creative in a single request\",\"dateModified\":\"2026-10-04T20:26:18.316Z\",\"isPartOf\":{\"@id\":\"https://docs.thrad.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.thrad.ai/api/api-reference/bid-request#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.thrad.ai/api/api-reference/bid-request#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.thrad.ai/api/api-reference/bid-request-v2\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bid Request (v1)\",\"item\":\"https://docs.thrad.ai/api/api-reference/bid-request\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.thrad.ai/api/api-reference/bid-request#apireference\",\"headline\":\"Bid Request (v1)\",\"name\":\"Bid Request (v1)\",\"description\":\"Orchestrates a multi-bidder auction across multiple DSPs and returns the winning ad creative in a single request\",\"url\":\"https://docs.thrad.ai/api/api-reference/bid-request\",\"mainEntityOfPage\":{\"@id\":\"https://docs.thrad.ai/api/api-reference/bid-request#webpage\"},\"dateModified\":\"2026-10-04T20:26:18.316Z\",\"publisher\":{\"@id\":\"https://docs.thrad.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.thrad.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Thrad Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Thrad Docs","nav":{"global":null,"products":[{"product":"Publishers","icon":"message-square","description":"Show ads in your AI app","groups":[{"group":"Get Started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Build with AI","pages":[{"title":"Agent Skills","href":"/agent-skills"}]},{"group":"Serving Ads","pages":[{"title":"Ad Formats \u0026 Rendering","href":"/api/guides/rendering-v2"},{"title":"User \u0026 Chat Identification","href":"/api/guides/user-identification-v2"},{"title":"Impression Billing","href":"/api/guides/billing-viewability"},{"title":"Best Practices","href":"/api/guides/best-practices"},{"title":"Go live","href":"/go-live"}]},{"group":"Reporting","pages":[{"title":"Revenue \u0026 Metrics","href":"/insights/overview"}]},{"group":"API Reference","pages":[{"title":"Bid Request (v2)","api":"POST /api/v2/bid-request","href":"/api/api-reference/bid-request-v2"},{"title":"Feedback","api":"POST {actions.feedback_url}","playground":"none","href":"/api/api-reference/feedback-v2"},{"title":"Poll Voting","api":"POST {actions.vote_url}","playground":"none","href":"/api/api-reference/poll-voting"},{"title":"Insights","api":"GET https://api.thrad.ai/v1/publisher/insights","href":"/insights/api-reference"},{"title":"Publishers","api":"GET https://api.thrad.ai/v1/publisher/publishers","description":"List the publishers your API key can read, with the ids to pass as publisher_id.","href":"/insights/publishers"},{"group":"v1 (deprecated)","pages":[{"title":"Bid Request (v1)","api":"POST /api/v1/ssp/bid-request","deprecated":true,"href":"/api/api-reference/bid-request"},{"title":"Feedback (v1)","api":"POST /api/v1/tracking/feedback","description":"Record user feedback (thumbs up / thumbs down) for an ad impression","href":"/api/api-reference/feedback"},{"title":"Poll Tracking (v1)","api":"POST /api/v1/tracking/sponsored-polls/vote","href":"/api/api-reference/sponsored-poll-tracking"},{"title":"Publisher Configuration","deprecated":true,"href":"/api/guides/publisher-config"},{"title":"Ad Formats \u0026 Rendering","deprecated":true,"href":"/api/guides/rendering-ads"},{"title":"Tracking \u0026 Viewability","deprecated":true,"href":"/api/guides/tracking"},{"title":"User \u0026 Chat Identification","deprecated":true,"href":"/api/guides/user-identification"}]}]}]},{"product":"Advertisers","icon":"megaphone","description":"Run campaigns and track conversions","pages":[{"title":"Advertisers","href":"/advertisers/introduction"}]},{"product":"DSP","icon":"gavel","description":"Bid on Thrad inventory","pages":[{"title":"DSP","href":"/dsp/introduction"}]}]},"basePath":"","title":"Bid Request (v1) - Thrad Docs","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js"]}