{ "error": { "message": "Authentication credentials were not provided.", "type": "authentication_error", "param": null, "code": "auth_required" }}
One read-only endpoint returns a bare list of metric rows for one publisher. With a publisher key that is the key’s own publisher; with an organization key you choose it with publisher_id.Money is US dollars (floats): revenue, ecpm, and cpc (e.g. 5.0 = $5.00); ctr is a fraction (0.01 = 1%). revenue is your net share.How revenue accrues depends on your account’s payment model, configured by Thrad: CPM accounts (the default) earn a share of advertiser spend on viewable (confirmed on-screen) impressions; CPC accounts earn a fixed per-click rate × your revenue share on measured clicks. Clicks are measured on DSP-linked impressions, so CPC revenue is always consistent with the clicks metric shown.
One of two keys. Authorization: Bearer <key> is accepted as an alternative. A missing key returns 401 auth_required; an unknown, expired, or revoked key returns 401 invalid_api_key.
Publisher key (sk_...) — the same key you use to serve ads. It reads only its own publisher. Find it in the dashboard under Publisher → Configuration → Keys.
Organization key (sko_...) — one key for your whole organization that reads any of its publishers; name the one you want with publisher_id. An organization owner or admin creates, rotates, and revokes it under Settings → API key. It is read-only and can’t serve ads. Rotating keeps the old key working for a short grace window (30 minutes by default) so you can switch over; revoking stops it immediately. The full key is shown once, when it is created.
Organization key: required. Without it you get 400 missing_required_parameter. A publisher outside your organization, or one that was deleted, returns 404 not_found.
Publisher key: optional. When sent, it must be the key’s own publisher; any other id returns 404 not_found.
A value that isn’t a UUID returns 400 invalid_value.
How rows are bucketed over time: hourly, daily (default), monthly, or none. With none a single row covers the whole requested range and has no readable_time. Any other value returns invalid_value. Not applicable in breakdown mode (see segments[]).
{"type":"date_range","since":"YYYY-MM-DD","until":"YYYY-MM-DD","timezone":"UTC"} — calendar dates; timezone is an optional IANA name (defaults UTC; unknown → invalid_time_range).
Which metrics to project onto each row: impressions, clicks, revenue, ctr, ecpm, cpc, fill_nominal, fill_real, fill_requests, fill_rate, nominal_fill_rate. Defaults to impressions, clicks, revenue (fill metrics are opt-in — the default response is unchanged). An unknown metric returns unknown_field.
Roll the whole range up by one dimension — country, intent, or device — returning one row per value (ordered by impressions). At most one (too_many_segments); an unrecognized value returns invalid_segment.
A breakdown spans the whole range, so it can’t be combined with an explicit time_granularity (segment_time_conflict). On breakdown rows, clicks, ctr, and cpc are populated for CPC-model accounts (per-dimension revenue rides those clicks) and null for CPM-model accounts (clicks aren’t broken out per dimension there). Fill metrics are always null on breakdown rows.
One or more JSON { "field", "direction" } objects, applied in order. field is a metric; direction is asc or desc. A non-metric field or bad direction returns invalid_value. Row id is always the final deterministic tiebreak.
Cursor for the previous page — pass a prior response’s first_id. Mutually exclusive with after (invalid_cursor if both). An unknown cursor returns invalid_cursor.
Cursor for the next page — pass a prior response’s last_id. Mutually exclusive with before.
The advertiser-only parameters aggregation_level, source, and filters[] are not supported here and return 400 unsupported_parameter — they are never silently ignored.
Human-readable bucket label — 2026-04-02 (daily), 2026-04 (monthly), or 2026-04-02T13 (hourly). Omitted when time_granularity=none and in breakdown mode.
Click count. Present when requested in fields[] (default). On breakdown rows: populated for CPC-model accounts, null for CPM-model accounts (not broken out per dimension there).
Your net revenue in dollars (e.g. 5.0 = $5.00). Present when requested in fields[] (default). CPM accounts: share of advertiser spend on viewable (confirmed on-screen) impressions. CPC accounts: clicks × your per-click rate × revenue share.
Click-through rate as a fraction (clicks ÷ impressions). null when impressions are zero, and on breakdown rows of CPM-model accounts. Present only when requested in fields[].
Effective revenue per thousand impressions in dollars (revenue ÷ impressions × 1000). null when impressions are zero. Present only when requested in fields[].
Revenue per click in dollars (revenue ÷ clicks). null when clicks are zero, and on breakdown rows of CPM-model accounts. Present only when requested in fields[].
All ad impressions delivered to your placement in the bucket, whether or not the render was confirmed. Per-bucket on time-series rows; null on breakdown rows. Present only when requested in fields[].
The confirmed-rendered subset of fill_nominal — impressions your placement actually displayed. null on breakdown rows. Present only when requested in fields[].
Production ad requests received for your placement in the bucket — the denominator of both fill rates. null on breakdown rows. Present only when requested in fields[].
The real fill rate: fill_real ÷ fill_requests as a fraction (0.25 = 25%) — confirmed-rendered impressions over ad requests. null when fill_requests is zero or on breakdown rows. Present only when requested in fields[].
The nominal (served) fill rate: fill_nominal ÷ fill_requests — all delivered impressions over ad requests, before render confirmation. null when fill_requests is zero or on breakdown rows. Present only when requested in fields[].
Errors use the bare OpenAI shape — { "error": { "message", "type", "param", "code" } }. type is one of invalid_request_error, authentication_error, rate_limit_error, or server_error.
Status
Type
Code
When
400
invalid_request_error
invalid_value
A parameter has a bad value (time_granularity, sort, limit, publisher_id, …).
400
invalid_request_error
missing_required_parameter
An organization key was sent without publisher_id.
400
invalid_request_error
invalid_time_range
A time_ranges[] entry is malformed, has end ≤ start, or an unknown timezone.
400
invalid_request_error
range_too_wide
A window exceeds the 366-day maximum.
400
invalid_request_error
hourly_range_too_wide
An hourly window exceeds 25 hours.
400
invalid_request_error
unknown_field
A fields[] value is not a known metric.
400
invalid_request_error
invalid_segment
An unrecognized segments[] value.
400
invalid_request_error
too_many_segments
More than one segments[] value.
400
invalid_request_error
segment_time_conflict
segments[] passed with an explicit time_granularity.
400
invalid_request_error
invalid_cursor
before and after both passed, or an unknown cursor.
400
invalid_request_error
unsupported_parameter
An advertiser-only param (aggregation_level, source, filters) was passed.
401
authentication_error
auth_required
No API key was sent.
401
authentication_error
invalid_api_key
The key is malformed, unknown, expired, or revoked.
404
invalid_request_error
not_found
publisher_id names a publisher this key can’t read: another organization’s, a deleted one, or (with a publisher key) any publisher but its own.
429
rate_limit_error
rate_limit_exceeded
Exceeded the per-key limit of 1000 requests/hour. An organization key has one limit shared across all its publishers.
504
server_error
clickhouse_timeout
The analytics query timed out. Narrow the range or granularity and retry.
{"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":"insights/api-reference","slug":"/insights/api-reference","pageMetadata":{"title":"Insights","api":"GET https://api.thrad.ai/v1/publisher/insights","description":"The publisher insights endpoint — query parameters, the bare list response, and the error catalog.","href":"/insights/api-reference"},"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: \"The publisher insights endpoint — query parameters, the bare list response, and the error catalog.\"\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}=_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);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`One read-only endpoint returns a bare list of metric rows for one publisher. With a publisher key that is the key’s own publisher; with an organization key you choose it with `,_jsx(_components.code,{children:`publisher_id`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Money is `,_jsx(_components.strong,{children:`US dollars`}),` (floats): `,_jsx(_components.code,{children:`revenue`}),`, `,_jsx(_components.code,{children:`ecpm`}),`, and `,_jsx(_components.code,{children:`cpc`}),` (e.g. `,_jsx(_components.code,{children:`5.0`}),` = $5.00); `,_jsx(_components.code,{children:`ctr`}),` is a fraction (`,_jsx(_components.code,{children:`0.01`}),` = 1%). `,_jsx(_components.code,{children:`revenue`}),` is your `,_jsx(_components.strong,{children:`net`}),` share.`]}),`\n`,_jsxs(_components.p,{children:[`How `,_jsx(_components.code,{children:`revenue`}),` accrues depends on your account’s `,_jsx(_components.strong,{children:`payment model`}),`, configured by Thrad: `,_jsx(_components.strong,{children:`CPM`}),` accounts (the default) earn a share of advertiser spend on viewable (confirmed on-screen) impressions; `,_jsx(_components.strong,{children:`CPC`}),` accounts earn a fixed per-click rate × your revenue share on measured clicks. Clicks are measured on DSP-linked impressions, so CPC revenue is always consistent with the `,_jsx(_components.code,{children:`clicks`}),` metric shown.`]}),`\n`,_jsx(Heading,{level:`2`,id:`authorizations`,children:`Authorizations`}),`\n`,_jsxs(ParamField,{header:`thrad-api-key`,type:`string`,required:true,id:`param-thrad-api-key`,children:[_jsxs(_components.p,{children:[`One of two keys. `,_jsx(_components.code,{children:`Authorization: Bearer \u003ckey>`}),` is accepted as an alternative. A missing key returns `,_jsx(_components.code,{children:`401 auth_required`}),`; an unknown, expired, or revoked key returns `,_jsx(_components.code,{children:`401 invalid_api_key`}),`.`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Publisher key`}),` (`,_jsx(_components.code,{children:`sk_...`}),`) — the same key you use to serve ads. It reads only its own publisher. Find it in the dashboard under `,_jsx(_components.strong,{children:`Publisher → Configuration → Keys`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Organization key`}),` (`,_jsx(_components.code,{children:`sko_...`}),`) — one key for your whole organization that reads any of its publishers; name the one you want with `,_jsx(_components.code,{children:`publisher_id`}),`. An organization owner or admin creates, rotates, and revokes it under `,_jsx(_components.strong,{children:`Settings → API key`}),`. It is read-only and `,_jsx(_components.strong,{children:`can’t serve ads`}),`. Rotating keeps the old key working for a short grace window (30 minutes by default) so you can switch over; revoking stops it immediately. The full key is shown once, when it is created.`]}),`\n`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`choosing-a-publisher`,children:`Choosing a publisher`}),`\n`,_jsxs(ParamField,{query:`publisher_id`,type:`string`,id:`param-publisher-id`,children:[_jsxs(_components.p,{children:[`The id of the publisher to read (a UUID — list yours with `,_jsx(_components.a,{href:`/insights/publishers`,children:_jsx(_components.code,{children:`GET /v1/publisher/publishers`})}),`).`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Organization key:`}),` required. Without it you get `,_jsx(_components.code,{children:`400 missing_required_parameter`}),`. A publisher outside your organization, or one that was deleted, returns `,_jsx(_components.code,{children:`404 not_found`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Publisher key:`}),` optional. When sent, it must be the key’s own publisher; any other id returns `,_jsx(_components.code,{children:`404 not_found`}),`.`]}),`\n`]}),_jsxs(_components.p,{children:[`A value that isn’t a UUID returns `,_jsx(_components.code,{children:`400 invalid_value`}),`.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`query-parameters`,children:`Query parameters`}),`\n`,_jsxs(_components.p,{children:[`Repeated parameters use the `,_jsx(_components.code,{children:`name[]`}),` convention (e.g. `,_jsx(_components.code,{children:`fields[]=impressions\u0026fields[]=revenue`}),`).`]}),`\n`,_jsx(ParamField,{query:`time_granularity`,type:`string`,default:`daily`,id:`param-time-granularity`,children:_jsxs(_components.p,{children:[`How rows are bucketed over time: `,_jsx(_components.code,{children:`hourly`}),`, `,_jsx(_components.code,{children:`daily`}),` (default), `,_jsx(_components.code,{children:`monthly`}),`, or `,_jsx(_components.code,{children:`none`}),`. With `,_jsx(_components.code,{children:`none`}),` a single row covers the whole requested range and has no `,_jsx(_components.code,{children:`readable_time`}),`. Any other value returns `,_jsx(_components.code,{children:`invalid_value`}),`. Not applicable in breakdown mode (see `,_jsx(_components.code,{children:`segments[]`}),`).`]})}),`\n`,_jsxs(ParamField,{query:`time_ranges[]`,type:`array`,id:`param-time-ranges`,children:[_jsxs(_components.p,{children:[`One or more JSON window objects; each may span `,_jsx(_components.strong,{children:`at most 366 days`}),` (`,_jsx(_components.code,{children:`range_too_wide`}),`). When omitted, a trailing 30-day window is used.`]}),_jsxs(Expandable,{title:`time_ranges[] object`,children:[_jsx(ParamField,{body:`unix_range`,type:`object`,id:`param-unix-range`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`{\"type\":\"unix_range\",\"start\":\u003cunix>,\"end\":\u003cunix>}`}),` — Unix seconds (UTC).`]})}),_jsx(ParamField,{body:`date_range`,type:`object`,id:`param-date-range`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`{\"type\":\"date_range\",\"since\":\"YYYY-MM-DD\",\"until\":\"YYYY-MM-DD\",\"timezone\":\"UTC\"}`}),` — calendar dates; `,_jsx(_components.code,{children:`timezone`}),` is an optional IANA name (defaults UTC; unknown → `,_jsx(_components.code,{children:`invalid_time_range`}),`).`]})}),_jsx(ParamField,{body:`hour_range`,type:`object`,id:`param-hour-range`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`{\"type\":\"hour_range\",\"since\":\"YYYY-MM-DDTHH\",\"until\":\"YYYY-MM-DDTHH\"}`}),` — hour-precision bounds, pairs with `,_jsx(_components.code,{children:`time_granularity=hourly`}),`.`]})})]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`end`}),` must be after `,_jsx(_components.code,{children:`start`}),` (`,_jsx(_components.code,{children:`invalid_time_range`}),`). With `,_jsx(_components.code,{children:`time_granularity=hourly`}),`, each window must be `,_jsx(_components.strong,{children:`25 hours or less`}),` (`,_jsx(_components.code,{children:`hourly_range_too_wide`}),`).`]})})]}),`\n`,_jsx(ParamField,{query:`fields[]`,type:`array`,id:`param-fields`,children:_jsxs(_components.p,{children:[`Which metrics to project onto each row: `,_jsx(_components.code,{children:`impressions`}),`, `,_jsx(_components.code,{children:`clicks`}),`, `,_jsx(_components.code,{children:`revenue`}),`, `,_jsx(_components.code,{children:`ctr`}),`, `,_jsx(_components.code,{children:`ecpm`}),`, `,_jsx(_components.code,{children:`cpc`}),`, `,_jsx(_components.code,{children:`fill_nominal`}),`, `,_jsx(_components.code,{children:`fill_real`}),`, `,_jsx(_components.code,{children:`fill_requests`}),`, `,_jsx(_components.code,{children:`fill_rate`}),`, `,_jsx(_components.code,{children:`nominal_fill_rate`}),`. Defaults to `,_jsx(_components.code,{children:`impressions`}),`, `,_jsx(_components.code,{children:`clicks`}),`, `,_jsx(_components.code,{children:`revenue`}),` (fill metrics are opt-in — the default response is unchanged). An unknown metric returns `,_jsx(_components.code,{children:`unknown_field`}),`.`]})}),`\n`,_jsxs(ParamField,{query:`segments[]`,type:`array`,id:`param-segments`,children:[_jsxs(_components.p,{children:[`Roll the whole range up by one dimension — `,_jsx(_components.code,{children:`country`}),`, `,_jsx(_components.code,{children:`intent`}),`, or `,_jsx(_components.code,{children:`device`}),` — returning one row per value (ordered by impressions). `,_jsx(_components.strong,{children:`At most one`}),` (`,_jsx(_components.code,{children:`too_many_segments`}),`); an unrecognized value returns `,_jsx(_components.code,{children:`invalid_segment`}),`.`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`A breakdown spans the whole range, so it `,_jsxs(_components.strong,{children:[`can’t be combined with an explicit `,_jsx(_components.code,{children:`time_granularity`})]}),` (`,_jsx(_components.code,{children:`segment_time_conflict`}),`). On breakdown rows, `,_jsx(_components.code,{children:`clicks`}),`, `,_jsx(_components.code,{children:`ctr`}),`, and `,_jsx(_components.code,{children:`cpc`}),` are `,_jsx(_components.strong,{children:`populated for CPC-model accounts`}),` (per-dimension revenue rides those clicks) and `,_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`null`}),` for CPM-model accounts`]}),` (clicks aren’t broken out per dimension there). Fill metrics are always `,_jsx(_components.code,{children:`null`}),` on breakdown rows.`]})})]}),`\n`,_jsx(ParamField,{query:`sort[]`,type:`array`,id:`param-sort`,children:_jsxs(_components.p,{children:[`One or more JSON `,_jsx(_components.code,{children:`{ \"field\", \"direction\" }`}),` objects, applied in order. `,_jsx(_components.code,{children:`field`}),` is a metric; `,_jsx(_components.code,{children:`direction`}),` is `,_jsx(_components.code,{children:`asc`}),` or `,_jsx(_components.code,{children:`desc`}),`. A non-metric field or bad direction returns `,_jsx(_components.code,{children:`invalid_value`}),`. Row `,_jsx(_components.code,{children:`id`}),` is always the final deterministic tiebreak.`]})}),`\n`,_jsx(ParamField,{query:`limit`,type:`integer`,default:`20`,id:`param-limit`,children:_jsxs(_components.p,{children:[`Maximum rows in the page, `,_jsx(_components.code,{children:`1`}),`–`,_jsx(_components.code,{children:`2000`}),` (default `,_jsx(_components.code,{children:`20`}),`). Out of range returns `,_jsx(_components.code,{children:`invalid_value`}),`.`]})}),`\n`,_jsx(ParamField,{query:`before`,type:`string`,id:`param-before`,children:_jsxs(_components.p,{children:[`Cursor for the previous page — pass a prior response’s `,_jsx(_components.code,{children:`first_id`}),`. Mutually exclusive with `,_jsx(_components.code,{children:`after`}),` (`,_jsx(_components.code,{children:`invalid_cursor`}),` if both). An unknown cursor returns `,_jsx(_components.code,{children:`invalid_cursor`}),`.`]})}),`\n`,_jsx(ParamField,{query:`after`,type:`string`,id:`param-after`,children:_jsxs(_components.p,{children:[`Cursor for the next page — pass a prior response’s `,_jsx(_components.code,{children:`last_id`}),`. Mutually exclusive with `,_jsx(_components.code,{children:`before`}),`.`]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The advertiser-only parameters `,_jsx(_components.code,{children:`aggregation_level`}),`, `,_jsx(_components.code,{children:`source`}),`, and `,_jsx(_components.code,{children:`filters[]`}),` are `,_jsx(_components.strong,{children:`not supported`}),` here and return `,_jsx(_components.code,{children:`400 unsupported_parameter`}),` — they are never silently ignored.`]})}),`\n`,`\n`,`\n`,_jsx(Heading,{level:`2`,id:`response`,children:`Response`}),`\n`,_jsxs(_components.p,{children:[`The endpoint returns a bare list object — `,_jsx(_components.strong,{children:`not`}),` the platform `,_jsx(_components.code,{children:`{ success, data, error, meta }`}),` envelope.`]}),`\n`,_jsxs(ResponseField,{name:`object`,type:`string`,id:`param-object`,children:[`Always `,_jsx(_components.code,{children:`\"list\"`}),`.`]}),`\n`,_jsxs(ResponseField,{name:`data`,type:`array`,id:`param-data`,children:[_jsx(_components.p,{children:`The metric rows for this page. Each row is a flat object.`}),_jsxs(Expandable,{title:`row properties`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id`,children:_jsxs(_components.p,{children:[`The row’s opaque id, used as a pagination cursor. Composed as `,_jsx(_components.code,{children:`start=\u003cunix>:end=\u003cunix>`}),`, with `,_jsx(_components.code,{children:`:\u003csegment>=\u003cvalue>`}),` appended in breakdown mode.`]})}),_jsx(ResponseField,{name:`start_time`,type:`integer`,id:`param-start-time`,children:`Bucket start as Unix seconds (UTC).`}),_jsx(ResponseField,{name:`end_time`,type:`integer`,id:`param-end-time`,children:`Bucket end as Unix seconds (UTC), exclusive.`}),_jsx(ResponseField,{name:`readable_time`,type:`string`,id:`param-readable-time`,children:_jsxs(_components.p,{children:[`Human-readable bucket label — `,_jsx(_components.code,{children:`2026-04-02`}),` (daily), `,_jsx(_components.code,{children:`2026-04`}),` (monthly), or `,_jsx(_components.code,{children:`2026-04-02T13`}),` (hourly). `,_jsx(_components.strong,{children:`Omitted`}),` when `,_jsx(_components.code,{children:`time_granularity=none`}),` and in breakdown mode.`]})}),_jsxs(ResponseField,{name:`timezone`,type:`string`,id:`param-timezone`,children:[`Always `,_jsx(_components.code,{children:`\"UTC\"`}),`.`]}),_jsx(ResponseField,{name:`country / intent / device`,type:`string`,id:`param-country-intent-device`,children:_jsxs(_components.p,{children:[`The dimension value for this sub-row. Present only with the matching `,_jsx(_components.code,{children:`segments[]`}),` value.`]})}),_jsxs(ResponseField,{name:`impressions`,type:`integer`,id:`param-impressions`,children:[`Impression count. Present when requested in `,_jsx(_components.code,{children:`fields[]`}),` (default).`]}),_jsx(ResponseField,{name:`clicks`,type:`integer`,id:`param-clicks`,children:_jsxs(_components.p,{children:[`Click count. Present when requested in `,_jsx(_components.code,{children:`fields[]`}),` (default). On breakdown rows: populated for CPC-model accounts, `,_jsx(_components.code,{children:`null`}),` for CPM-model accounts (not broken out per dimension there).`]})}),_jsx(ResponseField,{name:`revenue`,type:`float`,id:`param-revenue`,children:_jsxs(_components.p,{children:[`Your `,_jsx(_components.strong,{children:`net`}),` revenue in `,_jsx(_components.strong,{children:`dollars`}),` (e.g. `,_jsx(_components.code,{children:`5.0`}),` = $5.00). Present when requested in `,_jsx(_components.code,{children:`fields[]`}),` (default). CPM accounts: share of advertiser spend on viewable (confirmed on-screen) impressions. CPC accounts: clicks × your per-click rate × revenue share.`]})}),_jsx(ResponseField,{name:`ctr`,type:`float`,id:`param-ctr`,children:_jsxs(_components.p,{children:[`Click-through rate as a fraction (clicks ÷ impressions). `,_jsx(_components.code,{children:`null`}),` when impressions are zero, and on breakdown rows of CPM-model accounts. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`ecpm`,type:`float`,id:`param-ecpm`,children:_jsxs(_components.p,{children:[`Effective revenue per thousand impressions in `,_jsx(_components.strong,{children:`dollars`}),` (revenue ÷ impressions × 1000). `,_jsx(_components.code,{children:`null`}),` when impressions are zero. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`cpc`,type:`float`,id:`param-cpc`,children:_jsxs(_components.p,{children:[`Revenue per click in `,_jsx(_components.strong,{children:`dollars`}),` (revenue ÷ clicks). `,_jsx(_components.code,{children:`null`}),` when clicks are zero, and on breakdown rows of CPM-model accounts. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`fill_nominal`,type:`integer`,id:`param-fill-nominal`,children:_jsxs(_components.p,{children:[`All ad impressions delivered to your placement in the bucket, whether or not the render was confirmed. Per-bucket on time-series rows; `,_jsx(_components.code,{children:`null`}),` on breakdown rows. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`fill_real`,type:`integer`,id:`param-fill-real`,children:_jsxs(_components.p,{children:[`The confirmed-rendered subset of `,_jsx(_components.code,{children:`fill_nominal`}),` — impressions your placement actually displayed. `,_jsx(_components.code,{children:`null`}),` on breakdown rows. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`fill_requests`,type:`integer`,id:`param-fill-requests`,children:_jsxs(_components.p,{children:[`Production ad requests received for your placement in the bucket — the denominator of both fill rates. `,_jsx(_components.code,{children:`null`}),` on breakdown rows. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`fill_rate`,type:`float`,id:`param-fill-rate`,children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`real`}),` fill rate: `,_jsx(_components.code,{children:`fill_real ÷ fill_requests`}),` as a fraction (`,_jsx(_components.code,{children:`0.25`}),` = 25%) — confirmed-rendered impressions over ad requests. `,_jsx(_components.code,{children:`null`}),` when `,_jsx(_components.code,{children:`fill_requests`}),` is zero or on breakdown rows. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`nominal_fill_rate`,type:`float`,id:`param-nominal-fill-rate`,children:_jsxs(_components.p,{children:[`The nominal (served) fill rate: `,_jsx(_components.code,{children:`fill_nominal ÷ fill_requests`}),` — all delivered impressions over ad requests, before render confirmation. `,_jsx(_components.code,{children:`null`}),` when `,_jsx(_components.code,{children:`fill_requests`}),` is zero or on breakdown rows. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})})]})]}),`\n`,_jsxs(ResponseField,{name:`count`,type:`integer`,id:`param-count`,children:[`Number of rows in `,_jsx(_components.code,{children:`data`}),` on this page.`]}),`\n`,_jsxs(ResponseField,{name:`first_id`,type:`string`,id:`param-first-id`,children:[`Id of the first row — pass as `,_jsx(_components.code,{children:`before`}),` for the previous page. `,_jsx(_components.code,{children:`null`}),` for an empty page.`]}),`\n`,_jsxs(ResponseField,{name:`last_id`,type:`string`,id:`param-last-id`,children:[`Id of the last row — pass as `,_jsx(_components.code,{children:`after`}),` for the next page. `,_jsx(_components.code,{children:`null`}),` for an empty page.`]}),`\n`,_jsxs(ResponseField,{name:`has_more`,type:`boolean`,id:`param-has-more`,children:[_jsx(_components.code,{children:`true`}),` if more rows exist beyond this page.`]}),`\n`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`\n`,_jsxs(_components.p,{children:[`Errors use the bare OpenAI shape — `,_jsx(_components.code,{children:`{ \"error\": { \"message\", \"type\", \"param\", \"code\" } }`}),`. `,_jsx(_components.code,{children:`type`}),` is one of `,_jsx(_components.code,{children:`invalid_request_error`}),`, `,_jsx(_components.code,{children:`authentication_error`}),`, `,_jsx(_components.code,{children:`rate_limit_error`}),`, or `,_jsx(_components.code,{children:`server_error`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`When`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_value`})}),_jsxs(_components.td,{children:[`A parameter has a bad value (`,_jsx(_components.code,{children:`time_granularity`}),`, `,_jsx(_components.code,{children:`sort`}),`, `,_jsx(_components.code,{children:`limit`}),`, `,_jsx(_components.code,{children:`publisher_id`}),`, …).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`missing_required_parameter`})}),_jsxs(_components.td,{children:[`An organization key was sent without `,_jsx(_components.code,{children:`publisher_id`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_time_range`})}),_jsxs(_components.td,{children:[`A `,_jsx(_components.code,{children:`time_ranges[]`}),` entry is malformed, has `,_jsx(_components.code,{children:`end`}),` ≤ `,_jsx(_components.code,{children:`start`}),`, or an unknown timezone.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`range_too_wide`})}),_jsx(_components.td,{children:`A window exceeds the 366-day maximum.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`hourly_range_too_wide`})}),_jsxs(_components.td,{children:[`An `,_jsx(_components.code,{children:`hourly`}),` window exceeds 25 hours.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`unknown_field`})}),_jsxs(_components.td,{children:[`A `,_jsx(_components.code,{children:`fields[]`}),` value is not a known metric.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_segment`})}),_jsxs(_components.td,{children:[`An unrecognized `,_jsx(_components.code,{children:`segments[]`}),` value.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`too_many_segments`})}),_jsxs(_components.td,{children:[`More than one `,_jsx(_components.code,{children:`segments[]`}),` value.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`segment_time_conflict`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`segments[]`}),` passed with an explicit `,_jsx(_components.code,{children:`time_granularity`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_cursor`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`before`}),` and `,_jsx(_components.code,{children:`after`}),` both passed, or an unknown cursor.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`unsupported_parameter`})}),_jsxs(_components.td,{children:[`An advertiser-only param (`,_jsx(_components.code,{children:`aggregation_level`}),`, `,_jsx(_components.code,{children:`source`}),`, `,_jsx(_components.code,{children:`filters`}),`) was passed.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`401`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`authentication_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`auth_required`})}),_jsx(_components.td,{children:`No API key was sent.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`401`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`authentication_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_api_key`})}),_jsx(_components.td,{children:`The key is malformed, unknown, expired, or revoked.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`not_found`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`publisher_id`}),` names a publisher this key can’t read: another organization’s, a deleted one, or (with a publisher key) any publisher but its own.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`429`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`rate_limit_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`rate_limit_exceeded`})}),_jsx(_components.td,{children:`Exceeded the per-key limit of 1000 requests/hour. An organization key has one limit shared across all its publishers.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`504`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`server_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`clickhouse_timeout`})}),_jsx(_components.td,{children:`The analytics query timed out. Narrow the range or granularity and retry.`})]})]})]})]})}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":"Insights","api":"GET https://api.thrad.ai/v1/publisher/insights","description":"The publisher insights endpoint — query parameters, the bare list response, and the error catalog.","href":"/insights/api-reference"}}},"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}=_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);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`One read-only endpoint returns a bare list of metric rows for one publisher. With a publisher key that is the key’s own publisher; with an organization key you choose it with `,_jsx(_components.code,{children:`publisher_id`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Money is `,_jsx(_components.strong,{children:`US dollars`}),` (floats): `,_jsx(_components.code,{children:`revenue`}),`, `,_jsx(_components.code,{children:`ecpm`}),`, and `,_jsx(_components.code,{children:`cpc`}),` (e.g. `,_jsx(_components.code,{children:`5.0`}),` = $5.00); `,_jsx(_components.code,{children:`ctr`}),` is a fraction (`,_jsx(_components.code,{children:`0.01`}),` = 1%). `,_jsx(_components.code,{children:`revenue`}),` is your `,_jsx(_components.strong,{children:`net`}),` share.`]}),`\n`,_jsxs(_components.p,{children:[`How `,_jsx(_components.code,{children:`revenue`}),` accrues depends on your account’s `,_jsx(_components.strong,{children:`payment model`}),`, configured by Thrad: `,_jsx(_components.strong,{children:`CPM`}),` accounts (the default) earn a share of advertiser spend on viewable (confirmed on-screen) impressions; `,_jsx(_components.strong,{children:`CPC`}),` accounts earn a fixed per-click rate × your revenue share on measured clicks. Clicks are measured on DSP-linked impressions, so CPC revenue is always consistent with the `,_jsx(_components.code,{children:`clicks`}),` metric shown.`]}),`\n`,_jsx(Heading,{level:`2`,id:`authorizations`,children:`Authorizations`}),`\n`,_jsxs(ParamField,{header:`thrad-api-key`,type:`string`,required:true,id:`param-thrad-api-key`,children:[_jsxs(_components.p,{children:[`One of two keys. `,_jsx(_components.code,{children:`Authorization: Bearer \u003ckey>`}),` is accepted as an alternative. A missing key returns `,_jsx(_components.code,{children:`401 auth_required`}),`; an unknown, expired, or revoked key returns `,_jsx(_components.code,{children:`401 invalid_api_key`}),`.`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Publisher key`}),` (`,_jsx(_components.code,{children:`sk_...`}),`) — the same key you use to serve ads. It reads only its own publisher. Find it in the dashboard under `,_jsx(_components.strong,{children:`Publisher → Configuration → Keys`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Organization key`}),` (`,_jsx(_components.code,{children:`sko_...`}),`) — one key for your whole organization that reads any of its publishers; name the one you want with `,_jsx(_components.code,{children:`publisher_id`}),`. An organization owner or admin creates, rotates, and revokes it under `,_jsx(_components.strong,{children:`Settings → API key`}),`. It is read-only and `,_jsx(_components.strong,{children:`can’t serve ads`}),`. Rotating keeps the old key working for a short grace window (30 minutes by default) so you can switch over; revoking stops it immediately. The full key is shown once, when it is created.`]}),`\n`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`choosing-a-publisher`,children:`Choosing a publisher`}),`\n`,_jsxs(ParamField,{query:`publisher_id`,type:`string`,id:`param-publisher-id`,children:[_jsxs(_components.p,{children:[`The id of the publisher to read (a UUID — list yours with `,_jsx(_components.a,{href:`/insights/publishers`,children:_jsx(_components.code,{children:`GET /v1/publisher/publishers`})}),`).`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Organization key:`}),` required. Without it you get `,_jsx(_components.code,{children:`400 missing_required_parameter`}),`. A publisher outside your organization, or one that was deleted, returns `,_jsx(_components.code,{children:`404 not_found`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Publisher key:`}),` optional. When sent, it must be the key’s own publisher; any other id returns `,_jsx(_components.code,{children:`404 not_found`}),`.`]}),`\n`]}),_jsxs(_components.p,{children:[`A value that isn’t a UUID returns `,_jsx(_components.code,{children:`400 invalid_value`}),`.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`query-parameters`,children:`Query parameters`}),`\n`,_jsxs(_components.p,{children:[`Repeated parameters use the `,_jsx(_components.code,{children:`name[]`}),` convention (e.g. `,_jsx(_components.code,{children:`fields[]=impressions\u0026fields[]=revenue`}),`).`]}),`\n`,_jsx(ParamField,{query:`time_granularity`,type:`string`,default:`daily`,id:`param-time-granularity`,children:_jsxs(_components.p,{children:[`How rows are bucketed over time: `,_jsx(_components.code,{children:`hourly`}),`, `,_jsx(_components.code,{children:`daily`}),` (default), `,_jsx(_components.code,{children:`monthly`}),`, or `,_jsx(_components.code,{children:`none`}),`. With `,_jsx(_components.code,{children:`none`}),` a single row covers the whole requested range and has no `,_jsx(_components.code,{children:`readable_time`}),`. Any other value returns `,_jsx(_components.code,{children:`invalid_value`}),`. Not applicable in breakdown mode (see `,_jsx(_components.code,{children:`segments[]`}),`).`]})}),`\n`,_jsxs(ParamField,{query:`time_ranges[]`,type:`array`,id:`param-time-ranges`,children:[_jsxs(_components.p,{children:[`One or more JSON window objects; each may span `,_jsx(_components.strong,{children:`at most 366 days`}),` (`,_jsx(_components.code,{children:`range_too_wide`}),`). When omitted, a trailing 30-day window is used.`]}),_jsxs(Expandable,{title:`time_ranges[] object`,children:[_jsx(ParamField,{body:`unix_range`,type:`object`,id:`param-unix-range`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`{\"type\":\"unix_range\",\"start\":\u003cunix>,\"end\":\u003cunix>}`}),` — Unix seconds (UTC).`]})}),_jsx(ParamField,{body:`date_range`,type:`object`,id:`param-date-range`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`{\"type\":\"date_range\",\"since\":\"YYYY-MM-DD\",\"until\":\"YYYY-MM-DD\",\"timezone\":\"UTC\"}`}),` — calendar dates; `,_jsx(_components.code,{children:`timezone`}),` is an optional IANA name (defaults UTC; unknown → `,_jsx(_components.code,{children:`invalid_time_range`}),`).`]})}),_jsx(ParamField,{body:`hour_range`,type:`object`,id:`param-hour-range`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`{\"type\":\"hour_range\",\"since\":\"YYYY-MM-DDTHH\",\"until\":\"YYYY-MM-DDTHH\"}`}),` — hour-precision bounds, pairs with `,_jsx(_components.code,{children:`time_granularity=hourly`}),`.`]})})]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`end`}),` must be after `,_jsx(_components.code,{children:`start`}),` (`,_jsx(_components.code,{children:`invalid_time_range`}),`). With `,_jsx(_components.code,{children:`time_granularity=hourly`}),`, each window must be `,_jsx(_components.strong,{children:`25 hours or less`}),` (`,_jsx(_components.code,{children:`hourly_range_too_wide`}),`).`]})})]}),`\n`,_jsx(ParamField,{query:`fields[]`,type:`array`,id:`param-fields`,children:_jsxs(_components.p,{children:[`Which metrics to project onto each row: `,_jsx(_components.code,{children:`impressions`}),`, `,_jsx(_components.code,{children:`clicks`}),`, `,_jsx(_components.code,{children:`revenue`}),`, `,_jsx(_components.code,{children:`ctr`}),`, `,_jsx(_components.code,{children:`ecpm`}),`, `,_jsx(_components.code,{children:`cpc`}),`, `,_jsx(_components.code,{children:`fill_nominal`}),`, `,_jsx(_components.code,{children:`fill_real`}),`, `,_jsx(_components.code,{children:`fill_requests`}),`, `,_jsx(_components.code,{children:`fill_rate`}),`, `,_jsx(_components.code,{children:`nominal_fill_rate`}),`. Defaults to `,_jsx(_components.code,{children:`impressions`}),`, `,_jsx(_components.code,{children:`clicks`}),`, `,_jsx(_components.code,{children:`revenue`}),` (fill metrics are opt-in — the default response is unchanged). An unknown metric returns `,_jsx(_components.code,{children:`unknown_field`}),`.`]})}),`\n`,_jsxs(ParamField,{query:`segments[]`,type:`array`,id:`param-segments`,children:[_jsxs(_components.p,{children:[`Roll the whole range up by one dimension — `,_jsx(_components.code,{children:`country`}),`, `,_jsx(_components.code,{children:`intent`}),`, or `,_jsx(_components.code,{children:`device`}),` — returning one row per value (ordered by impressions). `,_jsx(_components.strong,{children:`At most one`}),` (`,_jsx(_components.code,{children:`too_many_segments`}),`); an unrecognized value returns `,_jsx(_components.code,{children:`invalid_segment`}),`.`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`A breakdown spans the whole range, so it `,_jsxs(_components.strong,{children:[`can’t be combined with an explicit `,_jsx(_components.code,{children:`time_granularity`})]}),` (`,_jsx(_components.code,{children:`segment_time_conflict`}),`). On breakdown rows, `,_jsx(_components.code,{children:`clicks`}),`, `,_jsx(_components.code,{children:`ctr`}),`, and `,_jsx(_components.code,{children:`cpc`}),` are `,_jsx(_components.strong,{children:`populated for CPC-model accounts`}),` (per-dimension revenue rides those clicks) and `,_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`null`}),` for CPM-model accounts`]}),` (clicks aren’t broken out per dimension there). Fill metrics are always `,_jsx(_components.code,{children:`null`}),` on breakdown rows.`]})})]}),`\n`,_jsx(ParamField,{query:`sort[]`,type:`array`,id:`param-sort`,children:_jsxs(_components.p,{children:[`One or more JSON `,_jsx(_components.code,{children:`{ \"field\", \"direction\" }`}),` objects, applied in order. `,_jsx(_components.code,{children:`field`}),` is a metric; `,_jsx(_components.code,{children:`direction`}),` is `,_jsx(_components.code,{children:`asc`}),` or `,_jsx(_components.code,{children:`desc`}),`. A non-metric field or bad direction returns `,_jsx(_components.code,{children:`invalid_value`}),`. Row `,_jsx(_components.code,{children:`id`}),` is always the final deterministic tiebreak.`]})}),`\n`,_jsx(ParamField,{query:`limit`,type:`integer`,default:`20`,id:`param-limit`,children:_jsxs(_components.p,{children:[`Maximum rows in the page, `,_jsx(_components.code,{children:`1`}),`–`,_jsx(_components.code,{children:`2000`}),` (default `,_jsx(_components.code,{children:`20`}),`). Out of range returns `,_jsx(_components.code,{children:`invalid_value`}),`.`]})}),`\n`,_jsx(ParamField,{query:`before`,type:`string`,id:`param-before`,children:_jsxs(_components.p,{children:[`Cursor for the previous page — pass a prior response’s `,_jsx(_components.code,{children:`first_id`}),`. Mutually exclusive with `,_jsx(_components.code,{children:`after`}),` (`,_jsx(_components.code,{children:`invalid_cursor`}),` if both). An unknown cursor returns `,_jsx(_components.code,{children:`invalid_cursor`}),`.`]})}),`\n`,_jsx(ParamField,{query:`after`,type:`string`,id:`param-after`,children:_jsxs(_components.p,{children:[`Cursor for the next page — pass a prior response’s `,_jsx(_components.code,{children:`last_id`}),`. Mutually exclusive with `,_jsx(_components.code,{children:`before`}),`.`]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The advertiser-only parameters `,_jsx(_components.code,{children:`aggregation_level`}),`, `,_jsx(_components.code,{children:`source`}),`, and `,_jsx(_components.code,{children:`filters[]`}),` are `,_jsx(_components.strong,{children:`not supported`}),` here and return `,_jsx(_components.code,{children:`400 unsupported_parameter`}),` — they are never silently ignored.`]})}),`\n`,_jsxs(RequestExample,{children:[_jsx(CodeBlock,{filename:`cURL — daily revenue`,numberOfLines:`7`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -G`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.thrad.ai/v1/publisher/insights`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"thrad-api-key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$THRAD_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'time_granularity=daily'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=impressions'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=revenue'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=ecpm'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'time_ranges[]={\"type\":\"date_range\",\"since\":\"2026-04-01\",\"until\":\"2026-04-08\"}'`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`cURL — revenue by country`,numberOfLines:`6`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -G`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.thrad.ai/v1/publisher/insights`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"thrad-api-key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$THRAD_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'segments[]=country'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=impressions'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=revenue'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'time_ranges[]={\"type\":\"date_range\",\"since\":\"2026-04-01\",\"until\":\"2026-04-30\"}'`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`cURL — fill rate`,numberOfLines:`8`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -G`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.thrad.ai/v1/publisher/insights`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"thrad-api-key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$THRAD_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'time_granularity=none'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=impressions'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=fill_requests'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=fill_rate'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=nominal_fill_rate'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'time_ranges[]={\"type\":\"date_range\",\"since\":\"2026-04-01\",\"until\":\"2026-04-30\"}'`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`cURL — organization key`,numberOfLines:`6`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -G`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.thrad.ai/v1/publisher/insights`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"thrad-api-key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$THRAD_ORG_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'publisher_id=6f1c2b8e-1d2a-4c3b-9e8f-0a1b2c3d4e5f'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=impressions'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'fields[]=revenue'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data-urlencode`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'time_ranges[]={\"type\":\"date_range\",\"since\":\"2026-04-01\",\"until\":\"2026-04-08\"}'`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`15`,language:`python`,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:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`15`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os, json, requests`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`resp `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` requests.get(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.thrad.ai/v1/publisher/insights\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` headers`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"thrad-api-key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: os.environ[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"THRAD_API_KEY\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]},`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` params`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"time_granularity\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"daily\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"fields[]\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"impressions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"clicks\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"revenue\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ecpm\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"time_ranges[]\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: json.dumps(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"date_range\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"since\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-01\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"until\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-08\"`}),_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`,_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:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` row `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` resp.json()[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(row[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"readable_time\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`], row[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"revenue\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`], row[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ecpm\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`])`})]}),`\n`]})})})]}),`\n`,_jsxs(ResponseExample,{children:[_jsx(CodeBlock,{filename:`200 - Daily rows`,numberOfLines:`19`,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:`19`,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:` \"object\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"list\"`}),_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`,_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:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"start=1775347200:end=1775433600\"`}),_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:` \"start_time\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1775347200`}),_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:` \"end_time\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1775433600`}),_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:` \"readable_time\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-02\"`}),_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:` \"timezone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"UTC\"`}),_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:` \"impressions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1000`}),_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:` \"revenue\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5.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:` \"ecpm\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5.0`})]}),`\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:` \"count\"`}),_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:` \"first_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"start=1775347200:end=1775433600\"`}),_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:` \"last_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"start=1775347200:end=1775433600\"`}),_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:` \"has_more\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`200 - By country (segments[]=country)`,numberOfLines:`20`,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:`20`,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:` \"object\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"list\"`}),_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`,_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:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"start=1775347200:end=1775433600:country=US\"`}),_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:` \"start_time\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1775347200`}),_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:` \"end_time\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1775433600`}),_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:` \"timezone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"UTC\"`}),_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:` \"country\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"US\"`}),_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:` \"impressions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`800`}),_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:` \"revenue\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4.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:` \"clicks\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_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:` \"ctr\"`}),_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(_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:` \"count\"`}),_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:` \"first_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"start=1775347200:end=1775433600:country=US\"`}),_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:` \"last_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"start=1775347200:end=1775433600:country=US\"`}),_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:` \"has_more\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`200 - Fill metrics (fields[]=fill_* / nominal_fill_rate)`,numberOfLines:`19`,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:`19`,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:` \"object\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"list\"`}),_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`,_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:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"start=1775347200:end=1777852800\"`}),_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:` \"start_time\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1775347200`}),_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:` \"end_time\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1777852800`}),_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:` \"timezone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"UTC\"`}),_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:` \"impressions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`108`}),_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:` \"fill_requests\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`404`}),_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:` \"fill_rate\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.25`}),_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:` \"nominal_fill_rate\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.5`})]}),`\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:` \"count\"`}),_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:` \"first_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"start=1775347200:end=1777852800\"`}),_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:` \"last_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"start=1775347200:end=1777852800\"`}),_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:` \"has_more\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`401 - Missing key`,numberOfLines:`8`,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:`8`,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:` \"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:`\"Authentication credentials were not provided.\"`}),_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:`\"authentication_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:` \"param\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_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:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"auth_required\"`})]}),`\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(Heading,{level:`2`,id:`response`,children:`Response`}),`\n`,_jsxs(_components.p,{children:[`The endpoint returns a bare list object — `,_jsx(_components.strong,{children:`not`}),` the platform `,_jsx(_components.code,{children:`{ success, data, error, meta }`}),` envelope.`]}),`\n`,_jsxs(ResponseField,{name:`object`,type:`string`,id:`param-object`,children:[`Always `,_jsx(_components.code,{children:`\"list\"`}),`.`]}),`\n`,_jsxs(ResponseField,{name:`data`,type:`array`,id:`param-data`,children:[_jsx(_components.p,{children:`The metric rows for this page. Each row is a flat object.`}),_jsxs(Expandable,{title:`row properties`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id`,children:_jsxs(_components.p,{children:[`The row’s opaque id, used as a pagination cursor. Composed as `,_jsx(_components.code,{children:`start=\u003cunix>:end=\u003cunix>`}),`, with `,_jsx(_components.code,{children:`:\u003csegment>=\u003cvalue>`}),` appended in breakdown mode.`]})}),_jsx(ResponseField,{name:`start_time`,type:`integer`,id:`param-start-time`,children:`Bucket start as Unix seconds (UTC).`}),_jsx(ResponseField,{name:`end_time`,type:`integer`,id:`param-end-time`,children:`Bucket end as Unix seconds (UTC), exclusive.`}),_jsx(ResponseField,{name:`readable_time`,type:`string`,id:`param-readable-time`,children:_jsxs(_components.p,{children:[`Human-readable bucket label — `,_jsx(_components.code,{children:`2026-04-02`}),` (daily), `,_jsx(_components.code,{children:`2026-04`}),` (monthly), or `,_jsx(_components.code,{children:`2026-04-02T13`}),` (hourly). `,_jsx(_components.strong,{children:`Omitted`}),` when `,_jsx(_components.code,{children:`time_granularity=none`}),` and in breakdown mode.`]})}),_jsxs(ResponseField,{name:`timezone`,type:`string`,id:`param-timezone`,children:[`Always `,_jsx(_components.code,{children:`\"UTC\"`}),`.`]}),_jsx(ResponseField,{name:`country / intent / device`,type:`string`,id:`param-country-intent-device`,children:_jsxs(_components.p,{children:[`The dimension value for this sub-row. Present only with the matching `,_jsx(_components.code,{children:`segments[]`}),` value.`]})}),_jsxs(ResponseField,{name:`impressions`,type:`integer`,id:`param-impressions`,children:[`Impression count. Present when requested in `,_jsx(_components.code,{children:`fields[]`}),` (default).`]}),_jsx(ResponseField,{name:`clicks`,type:`integer`,id:`param-clicks`,children:_jsxs(_components.p,{children:[`Click count. Present when requested in `,_jsx(_components.code,{children:`fields[]`}),` (default). On breakdown rows: populated for CPC-model accounts, `,_jsx(_components.code,{children:`null`}),` for CPM-model accounts (not broken out per dimension there).`]})}),_jsx(ResponseField,{name:`revenue`,type:`float`,id:`param-revenue`,children:_jsxs(_components.p,{children:[`Your `,_jsx(_components.strong,{children:`net`}),` revenue in `,_jsx(_components.strong,{children:`dollars`}),` (e.g. `,_jsx(_components.code,{children:`5.0`}),` = $5.00). Present when requested in `,_jsx(_components.code,{children:`fields[]`}),` (default). CPM accounts: share of advertiser spend on viewable (confirmed on-screen) impressions. CPC accounts: clicks × your per-click rate × revenue share.`]})}),_jsx(ResponseField,{name:`ctr`,type:`float`,id:`param-ctr`,children:_jsxs(_components.p,{children:[`Click-through rate as a fraction (clicks ÷ impressions). `,_jsx(_components.code,{children:`null`}),` when impressions are zero, and on breakdown rows of CPM-model accounts. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`ecpm`,type:`float`,id:`param-ecpm`,children:_jsxs(_components.p,{children:[`Effective revenue per thousand impressions in `,_jsx(_components.strong,{children:`dollars`}),` (revenue ÷ impressions × 1000). `,_jsx(_components.code,{children:`null`}),` when impressions are zero. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`cpc`,type:`float`,id:`param-cpc`,children:_jsxs(_components.p,{children:[`Revenue per click in `,_jsx(_components.strong,{children:`dollars`}),` (revenue ÷ clicks). `,_jsx(_components.code,{children:`null`}),` when clicks are zero, and on breakdown rows of CPM-model accounts. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`fill_nominal`,type:`integer`,id:`param-fill-nominal`,children:_jsxs(_components.p,{children:[`All ad impressions delivered to your placement in the bucket, whether or not the render was confirmed. Per-bucket on time-series rows; `,_jsx(_components.code,{children:`null`}),` on breakdown rows. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`fill_real`,type:`integer`,id:`param-fill-real`,children:_jsxs(_components.p,{children:[`The confirmed-rendered subset of `,_jsx(_components.code,{children:`fill_nominal`}),` — impressions your placement actually displayed. `,_jsx(_components.code,{children:`null`}),` on breakdown rows. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`fill_requests`,type:`integer`,id:`param-fill-requests`,children:_jsxs(_components.p,{children:[`Production ad requests received for your placement in the bucket — the denominator of both fill rates. `,_jsx(_components.code,{children:`null`}),` on breakdown rows. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`fill_rate`,type:`float`,id:`param-fill-rate`,children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`real`}),` fill rate: `,_jsx(_components.code,{children:`fill_real ÷ fill_requests`}),` as a fraction (`,_jsx(_components.code,{children:`0.25`}),` = 25%) — confirmed-rendered impressions over ad requests. `,_jsx(_components.code,{children:`null`}),` when `,_jsx(_components.code,{children:`fill_requests`}),` is zero or on breakdown rows. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})}),_jsx(ResponseField,{name:`nominal_fill_rate`,type:`float`,id:`param-nominal-fill-rate`,children:_jsxs(_components.p,{children:[`The nominal (served) fill rate: `,_jsx(_components.code,{children:`fill_nominal ÷ fill_requests`}),` — all delivered impressions over ad requests, before render confirmation. `,_jsx(_components.code,{children:`null`}),` when `,_jsx(_components.code,{children:`fill_requests`}),` is zero or on breakdown rows. Present only when requested in `,_jsx(_components.code,{children:`fields[]`}),`.`]})})]})]}),`\n`,_jsxs(ResponseField,{name:`count`,type:`integer`,id:`param-count`,children:[`Number of rows in `,_jsx(_components.code,{children:`data`}),` on this page.`]}),`\n`,_jsxs(ResponseField,{name:`first_id`,type:`string`,id:`param-first-id`,children:[`Id of the first row — pass as `,_jsx(_components.code,{children:`before`}),` for the previous page. `,_jsx(_components.code,{children:`null`}),` for an empty page.`]}),`\n`,_jsxs(ResponseField,{name:`last_id`,type:`string`,id:`param-last-id`,children:[`Id of the last row — pass as `,_jsx(_components.code,{children:`after`}),` for the next page. `,_jsx(_components.code,{children:`null`}),` for an empty page.`]}),`\n`,_jsxs(ResponseField,{name:`has_more`,type:`boolean`,id:`param-has-more`,children:[_jsx(_components.code,{children:`true`}),` if more rows exist beyond this page.`]}),`\n`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`\n`,_jsxs(_components.p,{children:[`Errors use the bare OpenAI shape — `,_jsx(_components.code,{children:`{ \"error\": { \"message\", \"type\", \"param\", \"code\" } }`}),`. `,_jsx(_components.code,{children:`type`}),` is one of `,_jsx(_components.code,{children:`invalid_request_error`}),`, `,_jsx(_components.code,{children:`authentication_error`}),`, `,_jsx(_components.code,{children:`rate_limit_error`}),`, or `,_jsx(_components.code,{children:`server_error`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`When`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_value`})}),_jsxs(_components.td,{children:[`A parameter has a bad value (`,_jsx(_components.code,{children:`time_granularity`}),`, `,_jsx(_components.code,{children:`sort`}),`, `,_jsx(_components.code,{children:`limit`}),`, `,_jsx(_components.code,{children:`publisher_id`}),`, …).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`missing_required_parameter`})}),_jsxs(_components.td,{children:[`An organization key was sent without `,_jsx(_components.code,{children:`publisher_id`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_time_range`})}),_jsxs(_components.td,{children:[`A `,_jsx(_components.code,{children:`time_ranges[]`}),` entry is malformed, has `,_jsx(_components.code,{children:`end`}),` ≤ `,_jsx(_components.code,{children:`start`}),`, or an unknown timezone.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`range_too_wide`})}),_jsx(_components.td,{children:`A window exceeds the 366-day maximum.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`hourly_range_too_wide`})}),_jsxs(_components.td,{children:[`An `,_jsx(_components.code,{children:`hourly`}),` window exceeds 25 hours.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`unknown_field`})}),_jsxs(_components.td,{children:[`A `,_jsx(_components.code,{children:`fields[]`}),` value is not a known metric.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_segment`})}),_jsxs(_components.td,{children:[`An unrecognized `,_jsx(_components.code,{children:`segments[]`}),` value.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`too_many_segments`})}),_jsxs(_components.td,{children:[`More than one `,_jsx(_components.code,{children:`segments[]`}),` value.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`segment_time_conflict`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`segments[]`}),` passed with an explicit `,_jsx(_components.code,{children:`time_granularity`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_cursor`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`before`}),` and `,_jsx(_components.code,{children:`after`}),` both passed, or an unknown cursor.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`unsupported_parameter`})}),_jsxs(_components.td,{children:[`An advertiser-only param (`,_jsx(_components.code,{children:`aggregation_level`}),`, `,_jsx(_components.code,{children:`source`}),`, `,_jsx(_components.code,{children:`filters`}),`) was passed.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`401`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`authentication_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`auth_required`})}),_jsx(_components.td,{children:`No API key was sent.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`401`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`authentication_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_api_key`})}),_jsx(_components.td,{children:`The key is malformed, unknown, expired, or revoked.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`not_found`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`publisher_id`}),` names a publisher this key can’t read: another organization’s, a deleted one, or (with a publisher key) any publisher but its own.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`429`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`rate_limit_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`rate_limit_exceeded`})}),_jsx(_components.td,{children:`Exceeded the per-key limit of 1000 requests/hour. An organization key has one limit shared across all its publishers.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`504`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`server_error`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`clickhouse_timeout`})}),_jsx(_components.td,{children:`The analytics query timed out. Narrow the range or granularity and retry.`})]})]})]})]})}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":"Insights","api":"GET https://api.thrad.ai/v1/publisher/insights","description":"The publisher insights endpoint — query parameters, the bare list response, and the error catalog.","href":"/insights/api-reference"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Authorizations","slug":"authorizations","depth":2,"children":[]},{"title":"Choosing a publisher","slug":"choosing-a-publisher","depth":2,"children":[]},{"title":"Query parameters","slug":"query-parameters","depth":2,"children":[]},{"title":"Response","slug":"response","depth":2,"children":[]},{"title":"Errors","slug":"errors","depth":2,"children":[]}],"codeExamples":{"request":{"type":"RequestExample","children":[{"filename":"cURL — daily revenue","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=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"7\">\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#DCDCAA\">curl\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -G\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> https://api.thrad.ai/v1/publisher/insights\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"thrad-api-key: \u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\">$THRAD_API_KEY\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'time_granularity=daily'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=impressions'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=revenue'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=ecpm'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'time_ranges[]={\"type\":\"date_range\",\"since\":\"2026-04-01\",\"until\":\"2026-04-08\"}'\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"cURL — revenue by country","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=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"6\">\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#DCDCAA\">curl\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -G\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> https://api.thrad.ai/v1/publisher/insights\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"thrad-api-key: \u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\">$THRAD_API_KEY\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'segments[]=country'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=impressions'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=revenue'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'time_ranges[]={\"type\":\"date_range\",\"since\":\"2026-04-01\",\"until\":\"2026-04-30\"}'\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"cURL — fill rate","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=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"8\">\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#DCDCAA\">curl\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -G\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> https://api.thrad.ai/v1/publisher/insights\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"thrad-api-key: \u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\">$THRAD_API_KEY\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'time_granularity=none'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=impressions'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=fill_requests'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=fill_rate'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=nominal_fill_rate'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'time_ranges[]={\"type\":\"date_range\",\"since\":\"2026-04-01\",\"until\":\"2026-04-30\"}'\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"cURL — organization key","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=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"6\">\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#DCDCAA\">curl\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -G\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> https://api.thrad.ai/v1/publisher/insights\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"thrad-api-key: \u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\">$THRAD_ORG_KEY\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'publisher_id=6f1c2b8e-1d2a-4c3b-9e8f-0a1b2c3d4e5f'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=impressions'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'fields[]=revenue'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data-urlencode\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'time_ranges[]={\"type\":\"date_range\",\"since\":\"2026-04-01\",\"until\":\"2026-04-08\"}'\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"Python","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=\"python\">\u003ccode language=\"python\" numberOfLines=\"15\">\u003cspan class=\"line\">\u003cspan style=\"color:#CF222E;--shiki-dark:#C586C0\">import\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> os, json, requests\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">resp \u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D4D4D4\">=\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> requests.get(\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"https://api.thrad.ai/v1/publisher/insights\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#9CDCFE\"> headers\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D4D4D4\">=\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"thrad-api-key\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: os.environ[\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"THRAD_API_KEY\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">]},\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#9CDCFE\"> params\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D4D4D4\">=\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"time_granularity\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"daily\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"fields[]\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"impressions\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"clicks\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"revenue\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"ecpm\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"time_ranges[]\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: json.dumps(\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"date_range\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"since\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-04-01\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"until\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-04-08\"\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:#1F2328;--shiki-dark:#D4D4D4\">)\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#CF222E;--shiki-dark:#C586C0\">for\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> row \u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#C586C0\">in\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> resp.json()[\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"data\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">]:\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#DCDCAA\"> print\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">(row[\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"readable_time\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">], row[\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"revenue\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">], row[\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"ecpm\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">])\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]},"response":{"type":"ResponseExample","children":[{"filename":"200 - Daily rows","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=\"19\">\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\"> \"object\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"list\"\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:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\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\">\"start=1775347200:end=1775433600\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"start_time\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1775347200\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"end_time\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1775433600\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"readable_time\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-04-02\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timezone\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"UTC\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"impressions\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1000\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"revenue\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">5.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\"> \"ecpm\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">5.0\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\"> \"count\"\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\"> \"first_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"start=1775347200:end=1775433600\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"last_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"start=1775347200:end=1775433600\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"has_more\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\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 - By country (segments[]=country)","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=\"20\">\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\"> \"object\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"list\"\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:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\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\">\"start=1775347200:end=1775433600:country=US\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"start_time\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1775347200\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"end_time\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1775433600\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timezone\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"UTC\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"country\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"US\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"impressions\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">800\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"revenue\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">4.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\"> \"clicks\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ctr\"\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:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"count\"\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\"> \"first_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"start=1775347200:end=1775433600:country=US\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"last_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"start=1775347200:end=1775433600:country=US\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"has_more\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\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 - Fill metrics (fields[]=fill_* / nominal_fill_rate)","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=\"19\">\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\"> \"object\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"list\"\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:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\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\">\"start=1775347200:end=1777852800\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"start_time\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1775347200\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"end_time\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1777852800\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timezone\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"UTC\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"impressions\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">108\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"fill_requests\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">404\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"fill_rate\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0.25\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"nominal_fill_rate\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0.5\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\"> \"count\"\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\"> \"first_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"start=1775347200:end=1777852800\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"last_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"start=1775347200:end=1777852800\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"has_more\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\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":"401 - Missing key","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=\"8\">\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\"> \"message\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Authentication credentials were not provided.\"\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\">\"authentication_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\"> \"param\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\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:#0A3069;--shiki-dark:#CE9178\">\"auth_required\"\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":"Insights","path":"/v1/publisher/insights","servers":[{"url":"https://api.thrad.ai"}],"method":"get","request":{"security":[{"title":"API Key Auth","parameters":{"header":{"thrad-api-key":{"type":"apiKey"}},"query":{},"cookie":{}}}],"parameters":{"query":{"publisher_id":{"schema":[{"type":"string","description":"The id of the publisher to read (a UUID — list yours with `GET /v1/publisher/publishers` ). Organization key: required. Without it you get `400 missing_required_parameter` . A publisher outside your organization, or one that was deleted, returns `404 not_found` . Publisher key: optional. When sent, it must be the key’s own publisher; any other id returns `404 not_found` . A value that isn’t a UUID returns `400 invalid_value` ."}]},"time_granularity":{"schema":[{"type":"string","description":"How rows are bucketed over time: `hourly` , `daily` (default), `monthly` , or `none` . With `none` a single row covers the whole requested range and has no `readable_time` . Any other value returns `invalid_value` . Not applicable in breakdown mode (see `segments[]` )."}]},"time_ranges[]":{"schema":[{"type":"array","items":[{"type":"object","properties":{"unix_range":[{"type":"object","properties":{},"description":"`{\"type\":\"unix_range\",\"start\":\u003cunix>,\"end\":\u003cunix>}` — Unix seconds (UTC)."}],"date_range":[{"type":"object","properties":{},"description":"`{\"type\":\"date_range\",\"since\":\"YYYY-MM-DD\",\"until\":\"YYYY-MM-DD\",\"timezone\":\"UTC\"}` — calendar dates; `timezone` is an optional IANA name (defaults UTC; unknown → `invalid_time_range` )."}],"hour_range":[{"type":"object","properties":{},"description":"`{\"type\":\"hour_range\",\"since\":\"YYYY-MM-DDTHH\",\"until\":\"YYYY-MM-DDTHH\"}` — hour-precision bounds, pairs with `time_granularity=hourly` ."}]}}],"description":"One or more JSON window objects; each may span at most 366 days ( `range_too_wide` ). When omitted, a trailing 30-day window is used."}]},"fields[]":{"schema":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Which metrics to project onto each row: `impressions` , `clicks` , `revenue` , `ctr` , `ecpm` , `cpc` , `fill_nominal` , `fill_real` , `fill_requests` , `fill_rate` , `nominal_fill_rate` . Defaults to `impressions` , `clicks` , `revenue` (fill metrics are opt-in — the default response is unchanged). An unknown metric returns `unknown_field` ."}]},"segments[]":{"schema":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Roll the whole range up by one dimension — `country` , `intent` , or `device` — returning one row per value (ordered by impressions). At most one ( `too_many_segments` ); an unrecognized value returns `invalid_segment` ."}]},"sort[]":{"schema":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"One or more JSON `{ \"field\", \"direction\" }` objects, applied in order. `field` is a metric; `direction` is `asc` or `desc` . A non-metric field or bad direction returns `invalid_value` . Row `id` is always the final deterministic tiebreak."}]},"limit":{"schema":[{"type":"integer","description":"Maximum rows in the page, `1` – `2000` (default `20` ). Out of range returns `invalid_value` ."}]},"before":{"schema":[{"type":"string","description":"Cursor for the previous page — pass a prior response’s `first_id` . Mutually exclusive with `after` ( `invalid_cursor` if both). An unknown cursor returns `invalid_cursor` ."}]},"after":{"schema":[{"type":"string","description":"Cursor for the next page — pass a prior response’s `last_id` . Mutually exclusive with `before` ."}]}},"header":{"thrad-api-key":{"schema":[{"type":"string","description":"One of two keys. `Authorization: Bearer \u003ckey>` is accepted as an alternative. A missing key returns `401 auth_required` ; an unknown, expired, or revoked key returns `401 invalid_api_key` . Publisher key ( `sk_...` ) — the same key you use to serve ads. It reads only its own publisher. Find it in the dashboard under Publisher → Configuration → Keys . Organization key ( `sko_...` ) — one key for your whole organization that reads any of its publishers; name the one you want with `publisher_id` . An organization owner or admin creates, rotates, and revokes it under Settings → API key . It is read-only and can’t serve ads . Rotating keeps the old key working for a short grace window (30 minutes by default) so you can switch over; revoking stops it immediately. The full key is shown once, when it is created.","required":true}]}},"cookie":{},"path":{}},"body":{}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"object":[{"type":"string","description":"Always `\"list\"` ."}],"data":[{"type":"array","items":[{"type":"object","properties":{"id":[{"type":"string","description":"The row’s opaque id, used as a pagination cursor. Composed as `start=\u003cunix>:end=\u003cunix>` , with `:\u003csegment>=\u003cvalue>` appended in breakdown mode."}],"start_time":[{"type":"integer","description":"Bucket start as Unix seconds (UTC)."}],"end_time":[{"type":"integer","description":"Bucket end as Unix seconds (UTC), exclusive."}],"readable_time":[{"type":"string","description":"Human-readable bucket label — `2026-04-02` (daily), `2026-04` (monthly), or `2026-04-02T13` (hourly). Omitted when `time_granularity=none` and in breakdown mode."}],"timezone":[{"type":"string","description":"Always `\"UTC\"` ."}],"country / intent / device":[{"type":"string","description":"The dimension value for this sub-row. Present only with the matching `segments[]` value."}],"impressions":[{"type":"integer","description":"Impression count. Present when requested in `fields[]` (default)."}],"clicks":[{"type":"integer","description":"Click count. Present when requested in `fields[]` (default). On breakdown rows: populated for CPC-model accounts, `null` for CPM-model accounts (not broken out per dimension there)."}],"revenue":[{"type":"number","description":"Your net revenue in dollars (e.g. `5.0` = $5.00). Present when requested in `fields[]` (default). CPM accounts: share of advertiser spend on viewable (confirmed on-screen) impressions. CPC accounts: clicks × your per-click rate × revenue share."}],"ctr":[{"type":"number","description":"Click-through rate as a fraction (clicks ÷ impressions). `null` when impressions are zero, and on breakdown rows of CPM-model accounts. Present only when requested in `fields[]` ."}],"ecpm":[{"type":"number","description":"Effective revenue per thousand impressions in dollars (revenue ÷ impressions × 1000). `null` when impressions are zero. Present only when requested in `fields[]` ."}],"cpc":[{"type":"number","description":"Revenue per click in dollars (revenue ÷ clicks). `null` when clicks are zero, and on breakdown rows of CPM-model accounts. Present only when requested in `fields[]` ."}],"fill_nominal":[{"type":"integer","description":"All ad impressions delivered to your placement in the bucket, whether or not the render was confirmed. Per-bucket on time-series rows; `null` on breakdown rows. Present only when requested in `fields[]` ."}],"fill_real":[{"type":"integer","description":"The confirmed-rendered subset of `fill_nominal` — impressions your placement actually displayed. `null` on breakdown rows. Present only when requested in `fields[]` ."}],"fill_requests":[{"type":"integer","description":"Production ad requests received for your placement in the bucket — the denominator of both fill rates. `null` on breakdown rows. Present only when requested in `fields[]` ."}],"fill_rate":[{"type":"number","description":"The real fill rate: `fill_real ÷ fill_requests` as a fraction ( `0.25` = 25%) — confirmed-rendered impressions over ad requests. `null` when `fill_requests` is zero or on breakdown rows. Present only when requested in `fields[]` ."}],"nominal_fill_rate":[{"type":"number","description":"The nominal (served) fill rate: `fill_nominal ÷ fill_requests` — all delivered impressions over ad requests, before render confirmation. `null` when `fill_requests` is zero or on breakdown rows. Present only when requested in `fields[]` ."}]}}],"description":"The metric rows for this page. Each row is a flat object."}],"count":[{"type":"integer","description":"Number of rows in `data` on this page."}],"first_id":[{"type":"string","description":"Id of the first row — pass as `before` for the previous page. `null` for an empty page."}],"last_id":[{"type":"string","description":"Id of the last row — pass as `after` for the next page. `null` for an empty page."}],"has_more":[{"type":"boolean","description":"`true` if more rows exist beyond this page."}]}}],"examples":{"example":{"value":{"object":"\u003cstring>","data":[{"id":"\u003cstring>","start_time":123,"end_time":123,"readable_time":"\u003cstring>","timezone":"\u003cstring>","country / intent / device":"\u003cstring>","impressions":123,"clicks":123,"revenue":123,"ctr":123,"ecpm":123,"cpc":123,"fill_nominal":123,"fill_real":123,"fill_requests":123,"fill_rate":123,"nominal_fill_rate":123}],"count":123,"first_id":"\u003cstring>","last_id":"\u003cstring>","has_more":true}}}}}},"deprecated":false}},"jsLinks":[],"subdomain":"thrads-5feffa3d","siteName":"Thrad Docs","title":"Insights - Thrad Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T16:28:01.237Z","originalFileLocation":"insights/api-reference.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=\"The publisher insights endpoint — query parameters, the bare list response, and the error catalog.\">\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=\"Insights - Thrad Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"The publisher insights endpoint — query parameters, the bare list response, and the error catalog.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Thrad Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.thrad.ai/insights/api-reference\">\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=API+Reference\u0026amp;title=Insights\u0026amp;description=The+publisher+insights+endpoint+%E2%80%94+query+parameters%2C+the+bare+list+response%2C+and+the+error+catalog.\u0026amp;theme=3f468421409f48e312fa01a5\u0026amp;signature=249c137b47aefc6f251bf2e6d42295cd0c90287228e40d626a37a09e4a01164a\">\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=\"Insights - Thrad Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The publisher insights endpoint — query parameters, the bare list response, and the error catalog.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://thrads-5feffa3d.mintlify.site/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Insights\u0026amp;description=The+publisher+insights+endpoint+%E2%80%94+query+parameters%2C+the+bare+list+response%2C+and+the+error+catalog.\u0026amp;theme=3f468421409f48e312fa01a5\u0026amp;signature=249c137b47aefc6f251bf2e6d42295cd0c90287228e40d626a37a09e4a01164a\">\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/insights/api-reference\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/insights/api-reference.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/insights/api-reference#webpage\",\"url\":\"https://docs.thrad.ai/insights/api-reference\",\"name\":\"Insights\",\"description\":\"The publisher insights endpoint — query parameters, the bare list response, and the error catalog.\",\"dateModified\":\"2026-10-27T16:28:01.237Z\",\"isPartOf\":{\"@id\":\"https://docs.thrad.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.thrad.ai/insights/api-reference#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.thrad.ai/insights/api-reference#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\":\"Insights\",\"item\":\"https://docs.thrad.ai/insights/api-reference\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.thrad.ai/insights/api-reference#apireference\",\"headline\":\"Insights\",\"name\":\"Insights\",\"description\":\"The publisher insights endpoint — query parameters, the bare list response, and the error catalog.\",\"url\":\"https://docs.thrad.ai/insights/api-reference\",\"mainEntityOfPage\":{\"@id\":\"https://docs.thrad.ai/insights/api-reference#webpage\"},\"dateModified\":\"2026-10-27T16:28:01.237Z\",\"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","description":"Send a user's poll answer and get back the results to show.","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","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":"Insights - 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"]}