{
"statusCode": 429,
"message": "Too Many Requests",
"error": "Too Many Requests",
"correlationId": "YevPQs"
}
{
"statusCode": 500,
"message": "Internal Server Error",
"error": "Internal Server Error",
"correlationId": "YevPQs"
}
Dialer
Get a campaign's statistics
Returns the campaign’s aggregated performance on one of two bases, told apart by range in the response:
All-time (no dateFrom/dateTo): lifetime counters served from a projection refreshed in the background — updated_at tells you how fresh they are, and range is null. call_durations is included only when includeDurations=true (it is the one read whose cost grows with the campaign).
Ranged (dateFrom and dateTo both set): counters aggregated at request time over the half-open window [dateFrom, dateTo). range echoes the resolved window, updated_at is null, and durations are always included (includeDurations is ignored).
Both bounds are RFC 3339 date-times. The service also reads the ISO 8601 date-only form YYYY-MM-DD, which lies outside that shape and is therefore only reachable from a client that does not validate against this schema: a date-only dateTo names a calendar day and is served inclusive of it — the exclusive end moves to the following UTC midnight, so equal date-only bounds are a valid one-day window. There is no limit on the window’s length; the only bound is the 13-month event retention horizon on dateFrom. Supplying only one bound, an empty window, or a dateFrom past the horizon is a 422.
The membership-state blocks (contact_states*, pending_by_category, open_assignments) always describe the campaign’s current state — a window does not narrow them. Unknown query parameters are rejected with 400 rather than ignored. A campaign that has never been dialed returns zeroed counters, not 404.
{
"statusCode": 429,
"message": "Too Many Requests",
"error": "Too Many Requests",
"correlationId": "YevPQs"
}
{
"statusCode": 500,
"message": "Internal Server Error",
"error": "Internal Server Error",
"correlationId": "YevPQs"
}
The Dialer is a newly released product surface: depending on your account’s rollout stage, campaigns managed through this API may not yet be visible in your CloudTalk Dashboard.
HTTP Basic Authentication. Use your API Access Key ID as the username and your API Access Key Secret as the password. Generate keys in the CloudTalk Dashboard under Account -> Settings -> API Keys (https://dashboard.cloudtalk.io/menu/account/settings/API-keys).
Inclusive lower bound of the statistics window, as an RFC 3339 date-time. Requires dateTo. Must not be older than the 13-month event retention horizon.
Exclusive upper bound of the statistics window, as an RFC 3339 date-time. Requires dateFrom. A date-only value — which the date-time format does not admit, so only a client that does not validate against this schema sends one — is served inclusive of that day.
Set to true to include the call_durations block on an all-time read. Ignored on a ranged read, which always carries durations. Only the literal strings true and false are accepted — anything else is a 400.
Response
The campaign's statistics.
Aggregated campaign performance. range tells the basis apart: null means all-time (cumulative over the campaign's lifetime, updated_at set), non-null means the counters cover exactly that window (updated_at null). The membership-state blocks always describe the campaign's current state regardless of any window.
Per-state count of contacts already attempted at least once — a breakout of contact_states, not a filter. Subtract it from contact_states for the never-attempted counts.
Breakout of contact_states.pending by waterfall category — the four sum exactly to the pending total. Includes non-dialable pending contacts, so it is not an available-to-dial count.
open_assignments split by the held contact's current state. pending is the slice to subtract from a waiting reading (contact_states_dialable.pending), scheduled the slice to subtract from a scheduled reading — a held contact keeps its state while an agent works it. A breakout of open_assignments, not a filter. Always a current-state count, never narrowed by the window.
Waterfall-category slices of the PENDING held contacts only — which categories the contacts agents currently hold were taken from. Scoped like pending_by_category; sums to assigned_by_state.pending. Always a current-state count, never narrowed by the window.
Distinct contacts that answered. Never null; an all-time read counts contacts whose first answer is on record, a ranged read counts distinct answered contacts inside the window.
Duration aggregate over the calls the basis covers; all values are whole seconds. Null means the block is not on the response — an all-time read without includeDurations=true, or a failed-open duration lookup. An all-zero block is a real answer: the window's calls simply carry no recorded duration yet (calls can trail the dialed count — duration records lag the dial). Zero and null must be treated as different states.
Freshness of the all-time projection (ISO 8601, UTC). Null on every ranged response, and null on an all-time response whose projection has not materialized yet.
The resolved statistics window — the field that tells you which basis the counters are on: null on an all-time response, set on a ranged one. to is exclusive; a date-only dateTo is echoed here already advanced to the following UTC midnight, so the echo may not equal the request literally.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"CloudTalk Help Center","description":"CloudTalk developer documentation — REST API reference and integration guides.","colors":{"primary":"#0527FF","light":"#8495FF","dark":"#0420D5"},"logo":{"light":"https://mintcdn.com/cloudtalk/M_FX1uE099dO0_78/logo/light.svg?fit=max\u0026auto=format\u0026n=M_FX1uE099dO0_78\u0026q=85\u0026s=9efde0e0ef215d0b41a2f8f92056e144","dark":"https://mintcdn.com/cloudtalk/M_FX1uE099dO0_78/logo/dark.svg?fit=max\u0026auto=format\u0026n=M_FX1uE099dO0_78\u0026q=85\u0026s=4f13ec15ddcb5aaaac1005fe27b20494"},"favicon":"https://mintcdn.com/cloudtalk/M_FX1uE099dO0_78/favicon.svg?fit=max\u0026auto=format\u0026n=M_FX1uE099dO0_78\u0026q=85\u0026s=b8634fcc454e4f7d772d4c384046ec0b","api":{"examples":{"prefill":true,"autogenerate":true}},"background":{"color":{"light":"#F9FAFB","dark":"#1A1B1E"}},"navbar":{"links":[{"href":"https://support.cloudtalk.io/","label":"Support"}],"primary":{"type":"button","label":"Log in","href":"https://dashboard.cloudtalk.io/"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/cloudtalk.io","youtube":"https://www.youtube.com/channel/UCIVoouQBQ9u6ahSJJ7f5orQ","facebook":"https://www.facebook.com/CloudTalkCallCenter","instagram":"https://www.instagram.com/cloudtalk_io"},"links":[{"header":"Product","items":[{"label":"Pricing","href":"https://www.cloudtalk.io/pricing"},{"label":"AI Voice Agents","href":"https://www.cloudtalk.io/ai-voice-agents"},{"label":"AI Sales Dialer","href":"https://www.cloudtalk.io/dialer"},{"label":"AI Receptionist","href":"https://www.cloudtalk.io/ai-receptionist"},{"label":"Inbound Call Center","href":"https://www.cloudtalk.io/inbound-support-center"},{"label":"Outbound Call Center","href":"https://www.cloudtalk.io/outbound-sales"}]},{"header":"Support","items":[{"label":"Help Center","href":"https://help.cloudtalk.io/en"},{"label":"Status Page","href":"https://status.cloudtalk.io/"},{"label":"Contact Us","href":"https://www.cloudtalk.io/contact"},{"label":"Request a Free Trial","href":"https://www.cloudtalk.io/signup"}]},{"header":"Company","items":[{"label":"Our Story","href":"https://www.cloudtalk.io/our-story"},{"label":"Careers","href":"https://www.cloudtalk.io/careers"},{"label":"Security","href":"https://www.cloudtalk.io/security"},{"label":"Trust Center","href":"https://trust.cloudtalk.io/"},{"label":"Brand Assets","href":"https://www.cloudtalk.io/brand-assets"}]},{"header":"Legal","items":[{"label":"Terms \u0026 Conditions","href":"https://www.cloudtalk.io/terms-and-conditions"},{"label":"Privacy Notice","href":"https://www.cloudtalk.io/privacy-notice"}]}]},"fonts":{"family":"Public Sans"},"styling":{"codeblocks":"system","latex":true},"integrations":{"ga4":{"measurementId":"G-FMQKD83J1Q"}},"contextual":{"options":["copy","view","mcp","cursor","vscode","chatgpt","claude","perplexity"],"display":"header"},"markdown":{"schema":false},"navigation":{"languages":[{"language":"en","href":"en"},{"language":"de","href":"de"},{"language":"es","href":"es"},{"language":"fr","href":"fr"},{"language":"nl","href":"nl"},{"language":"pt","href":"pt"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cloudtalk","hasAudioNarration":false,"actualSubdomain":"cloudtalk","customDomains":["help.cloudtalk.io"],"gitSource":{"type":"github","owner":"cloudtalk-io","repo":"developer-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aeb67560e1827ae617b1005","collectionId":"97050dd4-b4c7-48f4-b2a3-48a1760141c8","liveDeploymentHistoryId":"6aeb67560e1827ae617b1005","schemaVersion":"v3"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aeb67560e1827ae617b1005","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"en","tag":"Help Center","count":450},{"language":"de","tag":"Hilfecenter","count":449},{"language":"es","tag":"Centro de ayuda","count":449},{"language":"fr","tag":"Centre d'aide","count":449},{"language":"nl","tag":"Helpcentrum","count":449},{"language":"pt","tag":"Centro de ajuda","count":449},{"language":"en","tag":"API","count":116},{"language":"en","tag":"API Reference","count":108},{"language":"en","tag":"Integrations","count":97},{"language":"de","tag":"Integrationen","count":97},{"language":"es","tag":"Integraciones","count":97},{"language":"fr","tag":"Intégrations","count":97},{"language":"nl","tag":"Integraties","count":97},{"language":"pt","tag":"Integrações","count":97},{"language":"en","tag":"Dashboard","count":89},{"language":"de","tag":"Dashboard","count":89},{"language":"es","tag":"Dashboard","count":89},{"language":"fr","tag":"Dashboard","count":89},{"language":"nl","tag":"Dashboard","count":89},{"language":"pt","tag":"Dashboard","count":89},{"language":"en","tag":"Numbers \u0026 porting","count":66},{"language":"de","tag":"Nummern \u0026 Portierung","count":66},{"language":"es","tag":"Números y portabilidad","count":66},{"language":"fr","tag":"Numéros et portabilité","count":66},{"language":"nl","tag":"Nummers \u0026 portering","count":66},{"language":"pt","tag":"Números e portabilidade","count":66},{"language":"en","tag":"CRM","count":51},{"language":"de","tag":"CRM","count":51},{"language":"es","tag":"CRM","count":51},{"language":"fr","tag":"CRM","count":51},{"language":"nl","tag":"CRM","count":51},{"language":"pt","tag":"CRM","count":51},{"language":"en","tag":"AI","count":43},{"language":"de","tag":"KI","count":42},{"language":"es","tag":"IA","count":42},{"language":"fr","tag":"IA","count":42},{"language":"nl","tag":"AI","count":42},{"language":"pt","tag":"IA","count":42},{"language":"en","tag":"Porting by country","count":40},{"language":"de","tag":"Portierung nach Land","count":40},{"language":"es","tag":"Portabilidad por país","count":40},{"language":"fr","tag":"Portabilité par pays","count":40},{"language":"nl","tag":"Portering per land","count":40},{"language":"pt","tag":"Portabilidade por país","count":40},{"language":"en","tag":"CloudTalk Phone \u0026 Go","count":38},{"language":"de","tag":"CloudTalk Phone \u0026 Go","count":38},{"language":"es","tag":"CloudTalk Phone y Go","count":38},{"language":"fr","tag":"CloudTalk Phone et Go","count":38},{"language":"nl","tag":"CloudTalk Phone \u0026 Go","count":38},{"language":"pt","tag":"CloudTalk Phone e Go","count":38},{"language":"de","tag":"Erste Schritte","count":33},{"language":"es","tag":"Primeros pasos","count":33},{"language":"fr","tag":"Premiers pas","count":33},{"language":"nl","tag":"Aan de slag","count":33},{"language":"pt","tag":"Primeiros passos","count":33},{"language":"de","tag":"Abrechnung \u0026 Abonnement","count":29},{"language":"es","tag":"Facturación y suscripción","count":29},{"language":"fr","tag":"Facturation et abonnement","count":29},{"language":"nl","tag":"Facturering \u0026 abonnement","count":29},{"language":"pt","tag":"Faturação e subscrição","count":29}],"searchSettings":{"maxResults":8,"showContentSnippets":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","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":"vite-origin","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"html:not(.dark) #navbar>div:first-child{background:#f5f5f5}#navbar img.nav-logo{height:1.3125rem}#navbar a[href^=\"https://dashboard.cloudtalk.io\"],#navbar a[href^=\"https://dashboard.cloudtalk.io\"] *{color:#ffffff!important}#navbar a[href^=\"https://dashboard.cloudtalk.io\"]{background:#0420d5;height:2.25rem;padding:0 0.875rem;border-radius:0.625rem;font-weight:600}#navbar a[href^=\"https://dashboard.cloudtalk.io\"]:hover{background:#031aaa;color:#ffffff!important}.dark #navbar a[href^=\"https://dashboard.cloudtalk.io\"]{background:#0527ff}.dark #navbar a[href^=\"https://dashboard.cloudtalk.io\"]:hover{background:#304cff}#navbar a[href^=\"https://support.cloudtalk.io\"]{background:transparent;color:#181d27!important;box-shadow:inset 0 0 0 1px #d5d7da;height:2.25rem;padding:0 0.875rem;border-radius:0.625rem;font-weight:600}#navbar a[href^=\"https://support.cloudtalk.io\"]:hover{background:#e9eaeb;color:#181d27!important}.dark #navbar a[href^=\"https://support.cloudtalk.io\"]{background:transparent;color:#ececed!important;box-shadow:inset 0 0 0 1px #373a41}.dark #navbar a[href^=\"https://support.cloudtalk.io\"]:hover{background:#2b303b;color:#ececed!important}html:not(.dark) #assistant-entry{background:#ffffff}#navbar nav[aria-label=\"Main\"]>ul>li:not(:last-child){margin-inline-end:0.75rem}#sidebar-content>div.border-t{display:none}nav#sidebar-content{border-right:0}@media (min-width: 1024px){main#content-container{padding-left:3rem!important}}#sidebar-content>button{display:none}"}],"page":{"pagePath":"api-reference/dialer/get-a-campaigns-statistics","slug":"/api-reference/dialer/get-a-campaigns-statistics","pageMetadata":{"title":"Get a campaign's statistics","description":"Returns the campaign's aggregated performance on one of two bases, told apart by `range` in the response:\n\n- **All-time** (no `dateFrom`/`dateTo`): lifetime counters served from a projection refreshed in the background — `updated_at` tells you how fresh they are, and `range` is null. `call_durations` is included only when `includeDurations=true` (it is the one read whose cost grows with the campaign).\n- **Ranged** (`dateFrom` and `dateTo` both set): counters aggregated at request time over the half-open window `[dateFrom, dateTo)`. `range` echoes the resolved window, `updated_at` is null, and durations are always included (`includeDurations` is ignored).\n\nBoth bounds are RFC 3339 date-times. The service also reads the ISO 8601 date-only form `YYYY-MM-DD`, which lies outside that shape and is therefore only reachable from a client that does not validate against this schema: a date-only `dateTo` names a calendar day and is served inclusive of it — the exclusive end moves to the following UTC midnight, so equal date-only bounds are a valid one-day window. There is no limit on the window's length; the only bound is the 13-month event retention horizon on `dateFrom`. Supplying only one bound, an empty window, or a `dateFrom` past the horizon is a 422.\n\nThe membership-state blocks (`contact_states*`, `pending_by_category`, `open_assignments`) always describe the campaign's current state — a window does not narrow them. Unknown query parameters are rejected with 400 rather than ignored. A campaign that has never been dialed returns zeroed counters, not 404.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/campaigns/{campaignId}/statistics","href":"/api-reference/dialer/get-a-campaigns-statistics","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Returns the campaign’s aggregated performance on one of two bases, told apart by \", _jsx(_components.code, {\n children: \"range\"\n }), \" in the response:\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"All-time\"\n }), \" (no \", _jsx(_components.code, {\n children: \"dateFrom\"\n }), \"/\", _jsx(_components.code, {\n children: \"dateTo\"\n }), \"): lifetime counters served from a projection refreshed in the background — \", _jsx(_components.code, {\n children: \"updated_at\"\n }), \" tells you how fresh they are, and \", _jsx(_components.code, {\n children: \"range\"\n }), \" is null. \", _jsx(_components.code, {\n children: \"call_durations\"\n }), \" is included only when \", _jsx(_components.code, {\n children: \"includeDurations=true\"\n }), \" (it is the one read whose cost grows with the campaign).\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Ranged\"\n }), \" (\", _jsx(_components.code, {\n children: \"dateFrom\"\n }), \" and \", _jsx(_components.code, {\n children: \"dateTo\"\n }), \" both set): counters aggregated at request time over the half-open window \", _jsx(_components.code, {\n children: \"[dateFrom, dateTo)\"\n }), \". \", _jsx(_components.code, {\n children: \"range\"\n }), \" echoes the resolved window, \", _jsx(_components.code, {\n children: \"updated_at\"\n }), \" is null, and durations are always included (\", _jsx(_components.code, {\n children: \"includeDurations\"\n }), \" is ignored).\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Both bounds are RFC 3339 date-times. The service also reads the ISO 8601 date-only form \", _jsx(_components.code, {\n children: \"YYYY-MM-DD\"\n }), \", which lies outside that shape and is therefore only reachable from a client that does not validate against this schema: a date-only \", _jsx(_components.code, {\n children: \"dateTo\"\n }), \" names a calendar day and is served inclusive of it — the exclusive end moves to the following UTC midnight, so equal date-only bounds are a valid one-day window. There is no limit on the window’s length; the only bound is the 13-month event retention horizon on \", _jsx(_components.code, {\n children: \"dateFrom\"\n }), \". Supplying only one bound, an empty window, or a \", _jsx(_components.code, {\n children: \"dateFrom\"\n }), \" past the horizon is a 422.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The membership-state blocks (\", _jsx(_components.code, {\n children: \"contact_states*\"\n }), \", \", _jsx(_components.code, {\n children: \"pending_by_category\"\n }), \", \", _jsx(_components.code, {\n children: \"open_assignments\"\n }), \") always describe the campaign’s current state — a window does not narrow them. Unknown query parameters are rejected with 400 rather than ignored. A campaign that has never been dialed returns zeroed counters, not 404.\"]\n })]\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{jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const{Warning}={..._provideComponents(),...props.components};if(!Warning)_missingMdxReference(`Warning`,true);return _jsx(Warning,{children:`The Dialer is a newly released product surface: depending on your account’s rollout stage, campaigns managed through this API may not yet be visible in your CloudTalk Dashboard.`})}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":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Get a campaign's statistics","description":"Returns the campaign's aggregated performance on one of two bases, told apart by `range` in the response:\n\n- **All-time** (no `dateFrom`/`dateTo`): lifetime counters served from a projection refreshed in the background — `updated_at` tells you how fresh they are, and `range` is null. `call_durations` is included only when `includeDurations=true` (it is the one read whose cost grows with the campaign).\n- **Ranged** (`dateFrom` and `dateTo` both set): counters aggregated at request time over the half-open window `[dateFrom, dateTo)`. `range` echoes the resolved window, `updated_at` is null, and durations are always included (`includeDurations` is ignored).\n\nBoth bounds are RFC 3339 date-times. The service also reads the ISO 8601 date-only form `YYYY-MM-DD`, which lies outside that shape and is therefore only reachable from a client that does not validate against this schema: a date-only `dateTo` names a calendar day and is served inclusive of it — the exclusive end moves to the following UTC midnight, so equal date-only bounds are a valid one-day window. There is no limit on the window's length; the only bound is the 13-month event retention horizon on `dateFrom`. Supplying only one bound, an empty window, or a `dateFrom` past the horizon is a 422.\n\nThe membership-state blocks (`contact_states*`, `pending_by_category`, `open_assignments`) always describe the campaign's current state — a window does not narrow them. Unknown query parameters are rejected with 400 rather than ignored. A campaign that has never been dialed returns zeroed counters, not 404.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/campaigns/{campaignId}/statistics","href":"/api-reference/dialer/get-a-campaigns-statistics","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/cloudtalk/3405988015c78c5c/theme-toggle.js"],"openApiReferenceData":{"operation":{"servers":["6cd38fff-c4c3-43dc-a759-b0eb9c301e04"],"tags":["Dialer"],"summary":"Get a campaign's statistics","description":"Returns the campaign's aggregated performance on one of two bases, told apart by `range` in the response:\n\n- **All-time** (no `dateFrom`/`dateTo`): lifetime counters served from a projection refreshed in the background — `updated_at` tells you how fresh they are, and `range` is null. `call_durations` is included only when `includeDurations=true` (it is the one read whose cost grows with the campaign).\n- **Ranged** (`dateFrom` and `dateTo` both set): counters aggregated at request time over the half-open window `[dateFrom, dateTo)`. `range` echoes the resolved window, `updated_at` is null, and durations are always included (`includeDurations` is ignored).\n\nBoth bounds are RFC 3339 date-times. The service also reads the ISO 8601 date-only form `YYYY-MM-DD`, which lies outside that shape and is therefore only reachable from a client that does not validate against this schema: a date-only `dateTo` names a calendar day and is served inclusive of it — the exclusive end moves to the following UTC midnight, so equal date-only bounds are a valid one-day window. There is no limit on the window's length; the only bound is the 13-month event retention horizon on `dateFrom`. Supplying only one bound, an empty window, or a `dateFrom` past the horizon is a 422.\n\nThe membership-state blocks (`contact_states*`, `pending_by_category`, `open_assignments`) always describe the campaign's current state — a window does not narrow them. Unknown query parameters are rejected with 400 rather than ignored. A campaign that has never been dialed returns zeroed counters, not 404.","operationId":"publicGetCampaignStatistics","x-mint":{"content":"\u003cWarning>The Dialer is a newly released product surface: depending on your account's rollout stage, campaigns managed through this API may not yet be visible in your CloudTalk Dashboard.\u003c/Warning>"},"parameters":["e34c9aa1-52d6-4deb-bebe-2e94cb54ef9b","e59ee321-6765-4c07-b825-ea329892bade","df3fffff-b852-47e1-8938-e21c1ad45493","4c98c0d6-6a7d-4cda-9247-b24510338952"],"responses":{"200":"2307e94f-fb7b-4b0f-bd79-0d5b9c1dd3f2","400":"203df15d-0731-41da-9124-6fca1bccc10b","401":"3f81de11-8216-4e4c-b195-22c62cf2ba03","404":"b8400c22-9403-4f40-b9be-c3da285d33c8","422":"6eefdd9f-18fe-4927-bb87-8cb9ee47b623","429":"0feb2876-ae04-4215-b2e4-16fd671af66e","500":"834ab22d-de33-42f6-bb71-1ded4b557a29"},"method":"get","type":"path","security":["6d96e362-8e79-44bd-a2f9-bb735965af53"],"path":"/dialer/campaigns/{campaignId}/statistics","baseUrlOptions":["https://api.cloudtalk.io/v1"],"title":"Get a campaign's statistics","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[]},"dependencies":{"parameters":{"e34c9aa1-52d6-4deb-bebe-2e94cb54ef9b":{"name":"campaignId","in":"path","required":true,"description":"Dialer campaign ID.","schema":{"type":"string","pattern":"^[1-9][0-9]*$","isRequired":true,"description":"Dialer campaign ID.","uniqueKey":"","typeLabel":"string"}},"e59ee321-6765-4c07-b825-ea329892bade":{"name":"dateFrom","in":"query","required":false,"description":"Inclusive lower bound of the statistics window, as an RFC 3339 date-time. Requires `dateTo`. Must not be older than the 13-month event retention horizon.","schema":{"type":"string","format":"date-time","isRequired":false,"description":"Inclusive lower bound of the statistics window, as an RFC 3339 date-time. Requires `dateTo`. Must not be older than the 13-month event retention horizon.","uniqueKey":"","typeLabel":"string\u003cdate-time>"},"example":"2026-07-01T00:00:00.000Z"},"df3fffff-b852-47e1-8938-e21c1ad45493":{"name":"dateTo","in":"query","required":false,"description":"Exclusive upper bound of the statistics window, as an RFC 3339 date-time. Requires `dateFrom`. A date-only value — which the `date-time` format does not admit, so only a client that does not validate against this schema sends one — is served inclusive of that day.","schema":{"type":"string","format":"date-time","isRequired":false,"description":"Exclusive upper bound of the statistics window, as an RFC 3339 date-time. Requires `dateFrom`. A date-only value — which the `date-time` format does not admit, so only a client that does not validate against this schema sends one — is served inclusive of that day.","uniqueKey":"","typeLabel":"string\u003cdate-time>"},"example":"2026-08-01T00:00:00.000Z"},"4c98c0d6-6a7d-4cda-9247-b24510338952":{"name":"includeDurations","in":"query","required":false,"description":"Set to `true` to include the `call_durations` block on an all-time read. Ignored on a ranged read, which always carries durations. Only the literal strings `true` and `false` are accepted — anything else is a 400.","schema":{"type":"boolean","default":false,"isRequired":false,"description":"Set to `true` to include the `call_durations` block on an all-time read. Ignored on a ranged read, which always carries durations. Only the literal strings `true` and `false` are accepted — anything else is a 400.","uniqueKey":"","typeLabel":"boolean"}}},"responses":{"2307e94f-fb7b-4b0f-bd79-0d5b9c1dd3f2":{"description":"The campaign's statistics.","content":{"application/json":{"schema":{"type":"object","description":"Aggregated campaign performance. `range` tells the basis apart: null means all-time (cumulative over the campaign's lifetime, `updated_at` set), non-null means the counters cover exactly that window (`updated_at` null). The membership-state blocks always describe the campaign's current state regardless of any window.","properties":{"campaign_id":{"type":"string","description":"Campaign ID the statistics belong to.","example":"42","uniqueKey":"campaign_id","typeLabel":"string"},"contact_states":{"type":"object","description":"Contact counts per campaign-membership state.","properties":{"pending":{"type":"integer","description":"Not yet attempted or awaiting a retry.","example":120,"uniqueKey":"contact_states.pending","typeLabel":"integer"},"scheduled":{"type":"integer","description":"Has a scheduled callback.","example":4,"uniqueKey":"contact_states.scheduled","typeLabel":"integer"},"completed":{"type":"integer","description":"Reached a final disposition.","example":38,"uniqueKey":"contact_states.completed","typeLabel":"integer"},"dnc":{"type":"integer","description":"Marked do-not-call.","example":2,"uniqueKey":"contact_states.dnc","typeLabel":"integer"},"exhausted":{"type":"integer","description":"Ran out of retry attempts.","example":1,"uniqueKey":"contact_states.exhausted","typeLabel":"integer"},"excluded":{"type":"integer","description":"Excluded from the campaign by configuration.","example":0,"uniqueKey":"contact_states.excluded","typeLabel":"integer"}},"uniqueKey":"contact_states","typeLabel":"object"},"contact_states_dialable":{"type":"object","description":"Per-state count of contacts that have at least one phone number — a breakout of `contact_states`, not a filter.","properties":{"pending":{"type":"integer","description":"Not yet attempted or awaiting a retry.","example":120,"uniqueKey":"contact_states_dialable.pending","typeLabel":"integer"},"scheduled":{"type":"integer","description":"Has a scheduled callback.","example":4,"uniqueKey":"contact_states_dialable.scheduled","typeLabel":"integer"},"completed":{"type":"integer","description":"Reached a final disposition.","example":38,"uniqueKey":"contact_states_dialable.completed","typeLabel":"integer"},"dnc":{"type":"integer","description":"Marked do-not-call.","example":2,"uniqueKey":"contact_states_dialable.dnc","typeLabel":"integer"},"exhausted":{"type":"integer","description":"Ran out of retry attempts.","example":1,"uniqueKey":"contact_states_dialable.exhausted","typeLabel":"integer"},"excluded":{"type":"integer","description":"Excluded from the campaign by configuration.","example":0,"uniqueKey":"contact_states_dialable.excluded","typeLabel":"integer"}},"uniqueKey":"contact_states_dialable","typeLabel":"object"},"contact_states_repeated":{"type":"object","description":"Per-state count of contacts already attempted at least once — a breakout of `contact_states`, not a filter. Subtract it from `contact_states` for the never-attempted counts.","properties":{"pending":{"type":"integer","description":"Not yet attempted or awaiting a retry.","example":120,"uniqueKey":"contact_states_repeated.pending","typeLabel":"integer"},"scheduled":{"type":"integer","description":"Has a scheduled callback.","example":4,"uniqueKey":"contact_states_repeated.scheduled","typeLabel":"integer"},"completed":{"type":"integer","description":"Reached a final disposition.","example":38,"uniqueKey":"contact_states_repeated.completed","typeLabel":"integer"},"dnc":{"type":"integer","description":"Marked do-not-call.","example":2,"uniqueKey":"contact_states_repeated.dnc","typeLabel":"integer"},"exhausted":{"type":"integer","description":"Ran out of retry attempts.","example":1,"uniqueKey":"contact_states_repeated.exhausted","typeLabel":"integer"},"excluded":{"type":"integer","description":"Excluded from the campaign by configuration.","example":0,"uniqueKey":"contact_states_repeated.excluded","typeLabel":"integer"}},"uniqueKey":"contact_states_repeated","typeLabel":"object"},"pending_by_category":{"type":"object","description":"Breakout of `contact_states.pending` by waterfall category — the four sum exactly to the pending total. Includes non-dialable pending contacts, so it is not an available-to-dial count.","properties":{"favorite":{"type":"integer","description":"Pending contacts marked favorite.","example":6,"uniqueKey":"pending_by_category.favorite","typeLabel":"integer"},"rescheduled":{"type":"integer","description":"Pending contacts whose last outcome rescheduled them.","example":12,"uniqueKey":"pending_by_category.rescheduled","typeLabel":"integer"},"retry":{"type":"integer","description":"Pending contacts waiting on an automatic retry.","example":22,"uniqueKey":"pending_by_category.retry","typeLabel":"integer"},"fresh":{"type":"integer","description":"Pending contacts never attempted.","example":80,"uniqueKey":"pending_by_category.fresh","typeLabel":"integer"}},"uniqueKey":"pending_by_category","typeLabel":"object"},"total_contacts_at_range_end":{"type":"integer","description":"Contacts that were members of the campaign at the window's end (on an all-time read: the full current membership).","example":165,"uniqueKey":"total_contacts_at_range_end","typeLabel":"integer"},"open_assignments":{"type":"integer","description":"Contacts currently held by agents. Always a current-state count, never narrowed by the window.","example":3,"uniqueKey":"open_assignments","typeLabel":"integer"},"assigned_by_state":{"type":"object","description":"open_assignments split by the held contact's current state. pending is the slice to subtract from a waiting reading (contact_states_dialable.pending), scheduled the slice to subtract from a scheduled reading — a held contact keeps its state while an agent works it. A breakout of open_assignments, not a filter. Always a current-state count, never narrowed by the window.","properties":{"pending":{"type":"integer","example":2,"uniqueKey":"assigned_by_state.pending","typeLabel":"integer"},"scheduled":{"type":"integer","example":1,"uniqueKey":"assigned_by_state.scheduled","typeLabel":"integer"}},"uniqueKey":"assigned_by_state","typeLabel":"object"},"assigned_pending_by_category":{"type":"object","description":"Waterfall-category slices of the PENDING held contacts only — which categories the contacts agents currently hold were taken from. Scoped like pending_by_category; sums to assigned_by_state.pending. Always a current-state count, never narrowed by the window.","properties":{"favorite":{"type":"integer","description":"Pending contacts marked favorite.","example":6,"uniqueKey":"assigned_pending_by_category.favorite","typeLabel":"integer"},"rescheduled":{"type":"integer","description":"Pending contacts whose last outcome rescheduled them.","example":12,"uniqueKey":"assigned_pending_by_category.rescheduled","typeLabel":"integer"},"retry":{"type":"integer","description":"Pending contacts waiting on an automatic retry.","example":22,"uniqueKey":"assigned_pending_by_category.retry","typeLabel":"integer"},"fresh":{"type":"integer","description":"Pending contacts never attempted.","example":80,"uniqueKey":"assigned_pending_by_category.fresh","typeLabel":"integer"}},"uniqueKey":"assigned_pending_by_category","typeLabel":"object"},"total_dialed":{"type":"integer","description":"Calls placed.","example":240,"uniqueKey":"total_dialed","typeLabel":"integer"},"total_answered":{"type":"integer","description":"Calls answered.","example":150,"uniqueKey":"total_answered","typeLabel":"integer"},"answer_rate":{"type":"number","description":"`total_answered` / `total_dialed`, in the range 0–1.","example":0.625,"uniqueKey":"answer_rate","typeLabel":"number"},"num_rescheduled":{"type":"integer","description":"Calls dispositioned as rescheduled.","example":12,"uniqueKey":"num_rescheduled","typeLabel":"integer"},"num_dropped":{"type":"integer","description":"Calls dropped before an agent could take them.","example":3,"uniqueKey":"num_dropped","typeLabel":"integer"},"num_dispositioned":{"type":"integer","description":"Calls that received a disposition.","example":96,"uniqueKey":"num_dispositioned","typeLabel":"integer"},"num_conversions":{"type":"integer","description":"Calls dispositioned with a positive outcome.","example":30,"uniqueKey":"num_conversions","typeLabel":"integer"},"conversion_rate":{"type":"number","description":"`num_conversions` / `num_dispositioned`, in the range 0–1.","example":0.3125,"uniqueKey":"conversion_rate","typeLabel":"number"},"num_reached_human":{"type":"integer","description":"Attempts that reached a human.","example":130,"uniqueKey":"num_reached_human","typeLabel":"integer"},"num_reached_voicemail":{"type":"integer","description":"Attempts that reached a voicemail.","example":15,"uniqueKey":"num_reached_voicemail","typeLabel":"integer"},"num_reached_other_machine":{"type":"integer","description":"Attempts that reached another machine (IVR, queue, tone).","example":5,"uniqueKey":"num_reached_other_machine","typeLabel":"integer"},"attempt_no_split":{"type":"object","description":"Attempts split by whether they were the contact's first attempt or a repeat.","properties":{"first_attempt":{"type":"integer","description":"Attempts that were a contact's first.","example":152,"uniqueKey":"attempt_no_split.first_attempt","typeLabel":"integer"},"repeat_attempt":{"type":"integer","description":"Attempts that were a repeat for the contact.","example":88,"uniqueKey":"attempt_no_split.repeat_attempt","typeLabel":"integer"}},"uniqueKey":"attempt_no_split","typeLabel":"object"},"distinct_called_contacts":{"oneOf":[{"type":"integer","description":"Distinct contacts dialed inside the window. Ranged-only — null on every all-time response.","example":null,"uniqueKey":"distinct_called_contacts.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Distinct contacts dialed inside the window. Ranged-only — null on every all-time response.","example":null,"uniqueKey":"distinct_called_contacts.oneOf.1","typeLabel":"null"}],"uniqueKey":"distinct_called_contacts","typeLabel":"integer | null"},"distinct_answered_contacts":{"type":"integer","description":"Distinct contacts that answered. Never null; an all-time read counts contacts whose first answer is on record, a ranged read counts distinct answered contacts inside the window.","example":112,"uniqueKey":"distinct_answered_contacts","typeLabel":"integer"},"call_durations":{"oneOf":[{"type":"object","description":"Duration aggregate over the calls the basis covers; all values are whole seconds. Null means the block is not on the response — an all-time read without `includeDurations=true`, or a failed-open duration lookup. An all-zero block is a real answer: the window's calls simply carry no recorded duration yet (`calls` can trail the dialed count — duration records lag the dial). Zero and null must be treated as different states.","properties":{"calls":{"type":"integer","description":"Calls with a duration record.","example":238,"uniqueKey":"call_durations.oneOf.0.calls","typeLabel":"integer"},"answered_calls":{"type":"integer","description":"Of those, calls with talk time — the denominator of `avg_talk_seconds`.","example":150,"uniqueKey":"call_durations.oneOf.0.answered_calls","typeLabel":"integer"},"talk_seconds":{"type":"integer","description":"Total talk time.","example":21540,"uniqueKey":"call_durations.oneOf.0.talk_seconds","typeLabel":"integer"},"total_seconds":{"type":"integer","description":"Total leg time — talk plus ring.","example":26310,"uniqueKey":"call_durations.oneOf.0.total_seconds","typeLabel":"integer"},"ring_seconds":{"type":"integer","description":"`total_seconds - talk_seconds`, floored at 0.","example":4770,"uniqueKey":"call_durations.oneOf.0.ring_seconds","typeLabel":"integer"},"avg_talk_seconds":{"type":"integer","description":"Mean talk time over answered calls; 0 when none answered.","example":144,"uniqueKey":"call_durations.oneOf.0.avg_talk_seconds","typeLabel":"integer"},"avg_ring_seconds":{"type":"integer","description":"Mean ring time over all matched calls.","example":20,"uniqueKey":"call_durations.oneOf.0.avg_ring_seconds","typeLabel":"integer"},"max_talk_seconds":{"type":"integer","description":"Longest single conversation.","example":1260,"uniqueKey":"call_durations.oneOf.0.max_talk_seconds","typeLabel":"integer"}},"uniqueKey":"call_durations.oneOf.0","typeLabel":"object"},{"type":"null","description":"Duration aggregate over the calls the basis covers; all values are whole seconds. Null means the block is not on the response — an all-time read without `includeDurations=true`, or a failed-open duration lookup. An all-zero block is a real answer: the window's calls simply carry no recorded duration yet (`calls` can trail the dialed count — duration records lag the dial). Zero and null must be treated as different states.","properties":{"calls":{"type":"integer","description":"Calls with a duration record.","example":238},"answered_calls":{"type":"integer","description":"Of those, calls with talk time — the denominator of `avg_talk_seconds`.","example":150},"talk_seconds":{"type":"integer","description":"Total talk time.","example":21540},"total_seconds":{"type":"integer","description":"Total leg time — talk plus ring.","example":26310},"ring_seconds":{"type":"integer","description":"`total_seconds - talk_seconds`, floored at 0.","example":4770},"avg_talk_seconds":{"type":"integer","description":"Mean talk time over answered calls; 0 when none answered.","example":144},"avg_ring_seconds":{"type":"integer","description":"Mean ring time over all matched calls.","example":20},"max_talk_seconds":{"type":"integer","description":"Longest single conversation.","example":1260}},"uniqueKey":"call_durations.oneOf.1","typeLabel":"null"}],"uniqueKey":"call_durations","typeLabel":"object | null"},"disposition_breakdown":{"type":"array","description":"Per-tag disposition counts.","items":{"type":"object","description":"How often one disposition tag was recorded. Labels are null when the tag cannot be resolved.","properties":{"tag_id":{"type":"string","description":"Call-tag ID.","example":"100","uniqueKey":"disposition_breakdown.items.[INDEX].tag_id","typeLabel":"string"},"count":{"type":"integer","description":"Times this disposition was recorded.","example":17,"uniqueKey":"disposition_breakdown.items.[INDEX].count","typeLabel":"integer"},"name":{"oneOf":[{"type":"string","description":"Tag display name; null when unresolvable.","example":"Interested","uniqueKey":"disposition_breakdown.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Tag display name; null when unresolvable.","example":"Interested","uniqueKey":"disposition_breakdown.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"disposition_breakdown.items.[INDEX].name","typeLabel":"string | null"},"color":{"oneOf":[{"type":"string","description":"Tag display colour; null when unresolvable.","example":"#00AA55","uniqueKey":"disposition_breakdown.items.[INDEX].color.oneOf.0","typeLabel":"string"},{"type":"null","description":"Tag display colour; null when unresolvable.","example":"#00AA55","uniqueKey":"disposition_breakdown.items.[INDEX].color.oneOf.1","typeLabel":"null"}],"uniqueKey":"disposition_breakdown.items.[INDEX].color","typeLabel":"string | null"},"outcome":{"oneOf":[{"type":"string","description":"Tag outcome classification; null when unresolvable.","example":"successful_positive","uniqueKey":"disposition_breakdown.items.[INDEX].outcome.oneOf.0","typeLabel":"string"},{"type":"null","description":"Tag outcome classification; null when unresolvable.","example":"successful_positive","uniqueKey":"disposition_breakdown.items.[INDEX].outcome.oneOf.1","typeLabel":"null"}],"uniqueKey":"disposition_breakdown.items.[INDEX].outcome","typeLabel":"string | null"}},"uniqueKey":"disposition_breakdown.items.[INDEX]","typeLabel":"object"},"uniqueKey":"disposition_breakdown","typeLabel":"object[]"},"updated_at":{"oneOf":[{"type":"string","description":"Freshness of the all-time projection (ISO 8601, UTC). Null on every ranged response, and null on an all-time response whose projection has not materialized yet.","format":"date-time","example":"2026-08-04T11:40:00.000Z","uniqueKey":"updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Freshness of the all-time projection (ISO 8601, UTC). Null on every ranged response, and null on an all-time response whose projection has not materialized yet.","format":"date-time","example":"2026-08-04T11:40:00.000Z","uniqueKey":"updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time> | null"},"range":{"oneOf":[{"type":"object","description":"The resolved statistics window — the field that tells you which basis the counters are on: null on an all-time response, set on a ranged one. `to` is exclusive; a date-only `dateTo` is echoed here already advanced to the following UTC midnight, so the echo may not equal the request literally.","properties":{"from":{"type":"string","description":"Inclusive lower bound (ISO 8601, UTC).","format":"date-time","example":"2026-07-01T00:00:00.000Z","uniqueKey":"range.oneOf.0.from","typeLabel":"string\u003cdate-time>"},"to":{"type":"string","description":"Exclusive upper bound (ISO 8601, UTC).","format":"date-time","example":"2026-08-01T00:00:00.000Z","uniqueKey":"range.oneOf.0.to","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"range.oneOf.0","typeLabel":"object"},{"type":"null","description":"The resolved statistics window — the field that tells you which basis the counters are on: null on an all-time response, set on a ranged one. `to` is exclusive; a date-only `dateTo` is echoed here already advanced to the following UTC midnight, so the echo may not equal the request literally.","properties":{"from":{"type":"string","description":"Inclusive lower bound (ISO 8601, UTC).","format":"date-time","example":"2026-07-01T00:00:00.000Z"},"to":{"type":"string","description":"Exclusive upper bound (ISO 8601, UTC).","format":"date-time","example":"2026-08-01T00:00:00.000Z"}},"uniqueKey":"range.oneOf.1","typeLabel":"null"}],"uniqueKey":"range","typeLabel":"object | null"}},"uniqueKey":"","typeLabel":"object"},"example":{"campaign_id":"42","contact_states":{"pending":120,"scheduled":4,"completed":38,"dnc":2,"exhausted":1,"excluded":0},"contact_states_dialable":{"pending":118,"scheduled":4,"completed":38,"dnc":2,"exhausted":1,"excluded":0},"contact_states_repeated":{"pending":31,"scheduled":4,"completed":38,"dnc":2,"exhausted":1,"excluded":0},"pending_by_category":{"favorite":6,"rescheduled":12,"retry":22,"fresh":80},"total_contacts_at_range_end":165,"open_assignments":3,"assigned_by_state":{"pending":2,"scheduled":1},"assigned_pending_by_category":{"favorite":0,"rescheduled":0,"retry":1,"fresh":1},"total_dialed":240,"total_answered":150,"answer_rate":0.625,"num_rescheduled":12,"num_dropped":3,"num_dispositioned":96,"num_conversions":30,"conversion_rate":0.3125,"num_reached_human":130,"num_reached_voicemail":15,"num_reached_other_machine":5,"attempt_no_split":{"first_attempt":152,"repeat_attempt":88},"distinct_called_contacts":null,"distinct_answered_contacts":112,"call_durations":{"calls":238,"answered_calls":150,"talk_seconds":21540,"total_seconds":26310,"ring_seconds":4770,"avg_talk_seconds":144,"avg_ring_seconds":20,"max_talk_seconds":1260},"disposition_breakdown":[{"tag_id":"100","count":17,"name":"Interested","color":"#00AA55","outcome":"successful_positive"},{"tag_id":"101","count":9,"name":"Call back later","color":"#FFAA00","outcome":"rescheduled"}],"updated_at":"2026-08-04T11:40:00.000Z","range":null},"examples":{"Example":{"title":"Example","value":{"campaign_id":"42","contact_states":{"pending":120,"scheduled":4,"completed":38,"dnc":2,"exhausted":1,"excluded":0},"contact_states_dialable":{"pending":118,"scheduled":4,"completed":38,"dnc":2,"exhausted":1,"excluded":0},"contact_states_repeated":{"pending":31,"scheduled":4,"completed":38,"dnc":2,"exhausted":1,"excluded":0},"pending_by_category":{"favorite":6,"rescheduled":12,"retry":22,"fresh":80},"total_contacts_at_range_end":165,"open_assignments":3,"assigned_by_state":{"pending":2,"scheduled":1},"assigned_pending_by_category":{"favorite":0,"rescheduled":0,"retry":1,"fresh":1},"total_dialed":240,"total_answered":150,"answer_rate":0.625,"num_rescheduled":12,"num_dropped":3,"num_dispositioned":96,"num_conversions":30,"conversion_rate":0.3125,"num_reached_human":130,"num_reached_voicemail":15,"num_reached_other_machine":5,"attempt_no_split":{"first_attempt":152,"repeat_attempt":88},"distinct_called_contacts":null,"distinct_answered_contacts":112,"call_durations":{"calls":238,"answered_calls":150,"talk_seconds":21540,"total_seconds":26310,"ring_seconds":4770,"avg_talk_seconds":144,"avg_ring_seconds":20,"max_talk_seconds":1260},"disposition_breakdown":[{"tag_id":"100","count":17,"name":"Interested","color":"#00AA55","outcome":"successful_positive"},{"tag_id":"101","count":9,"name":"Call back later","color":"#FFAA00","outcome":"rescheduled"}],"updated_at":"2026-08-04T11:40:00.000Z","range":null}}},"exampleType":"examples"}},"exampleType":"examples"},"203df15d-0731-41da-9124-6fca1bccc10b":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","description":"Error envelope returned by every Dialer API endpoint. Note it differs from the legacy API's error format.","properties":{"statusCode":{"type":"integer","description":"HTTP status code","isRequired":true,"uniqueKey":"statusCode","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"HTTP error name","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"correlationId":{"type":"string","description":"Request correlation ID — include it when contacting support","example":"YevPQs","isRequired":true,"uniqueKey":"correlationId","typeLabel":"string"},"subErrors":{"type":"array","items":{"type":"string","uniqueKey":"subErrors.items.[INDEX]","typeLabel":"string"},"description":"Field-level validation messages, present on validation failures","example":["incorrect email"],"uniqueKey":"subErrors","typeLabel":"string[]"}},"required":["statusCode","message","error","correlationId"],"uniqueKey":"","typeLabel":"object"},"example":{"statusCode":400,"message":"Validation error","error":"Bad Request","correlationId":"YevPQs","subErrors":["incorrect email"]},"examples":{"Example":{"title":"Example","value":{"statusCode":400,"message":"Validation error","error":"Bad Request","correlationId":"YevPQs","subErrors":["incorrect email"]}}},"exampleType":"examples"}},"exampleType":"examples"},"3f81de11-8216-4e4c-b195-22c62cf2ba03":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","description":"Error envelope returned by the authentication layer in front of the `api.cloudtalk.io/v1` surface. It differs from the per-service error shapes used for other statuses.","properties":{"code":{"type":"string","description":"Error code","example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Error message","example":"You are not authorized to access this resource.","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["code","message"],"uniqueKey":"","typeLabel":"object"},"example":{"code":"UNAUTHORIZED","message":"You are not authorized to access this resource."},"examples":{"Example":{"title":"Example","value":{"code":"UNAUTHORIZED","message":"You are not authorized to access this resource."}}},"exampleType":"examples"}},"exampleType":"examples"},"b8400c22-9403-4f40-b9be-c3da285d33c8":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","description":"Error envelope returned by every Dialer API endpoint. Note it differs from the legacy API's error format.","properties":{"statusCode":{"type":"integer","description":"HTTP status code","isRequired":true,"uniqueKey":"statusCode","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"HTTP error name","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"correlationId":{"type":"string","description":"Request correlation ID — include it when contacting support","example":"YevPQs","isRequired":true,"uniqueKey":"correlationId","typeLabel":"string"},"subErrors":{"type":"array","items":{"type":"string","uniqueKey":"subErrors.items.[INDEX]","typeLabel":"string"},"description":"Field-level validation messages, present on validation failures","example":["incorrect email"],"uniqueKey":"subErrors","typeLabel":"string[]"}},"required":["statusCode","message","error","correlationId"],"uniqueKey":"","typeLabel":"object"},"example":{"statusCode":404,"message":"Not Found","error":"Not Found","correlationId":"YevPQs"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"message":"Not Found","error":"Not Found","correlationId":"YevPQs"}}},"exampleType":"examples"}},"exampleType":"examples"},"6eefdd9f-18fe-4927-bb87-8cb9ee47b623":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"type":"object","description":"Error envelope returned by every Dialer API endpoint. Note it differs from the legacy API's error format.","properties":{"statusCode":{"type":"integer","description":"HTTP status code","isRequired":true,"uniqueKey":"statusCode","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"HTTP error name","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"correlationId":{"type":"string","description":"Request correlation ID — include it when contacting support","example":"YevPQs","isRequired":true,"uniqueKey":"correlationId","typeLabel":"string"},"subErrors":{"type":"array","items":{"type":"string","uniqueKey":"subErrors.items.[INDEX]","typeLabel":"string"},"description":"Field-level validation messages, present on validation failures","example":["incorrect email"],"uniqueKey":"subErrors","typeLabel":"string[]"}},"required":["statusCode","message","error","correlationId"],"uniqueKey":"","typeLabel":"object"},"example":{"statusCode":422,"message":"Unprocessable Entity","error":"Unprocessable Entity","correlationId":"YevPQs"},"examples":{"Example":{"title":"Example","value":{"statusCode":422,"message":"Unprocessable Entity","error":"Unprocessable Entity","correlationId":"YevPQs"}}},"exampleType":"examples"}},"exampleType":"examples"},"0feb2876-ae04-4215-b2e4-16fd671af66e":{"description":"Too many requests","headers":{"X-CloudTalkAPI-Limit":{"description":"Maximum number of API requests allowed in the current time window.","schema":{"type":"integer"}},"X-CloudTalkAPI-Remaining":{"description":"Number of API requests left in the current window.","schema":{"type":"integer"}},"X-CloudTalkAPI-ResetTime":{"description":"Time when the rate-limit window resets, as a Unix timestamp.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","description":"Error envelope returned by every Dialer API endpoint. Note it differs from the legacy API's error format.","properties":{"statusCode":{"type":"integer","description":"HTTP status code","isRequired":true,"uniqueKey":"statusCode","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"HTTP error name","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"correlationId":{"type":"string","description":"Request correlation ID — include it when contacting support","example":"YevPQs","isRequired":true,"uniqueKey":"correlationId","typeLabel":"string"},"subErrors":{"type":"array","items":{"type":"string","uniqueKey":"subErrors.items.[INDEX]","typeLabel":"string"},"description":"Field-level validation messages, present on validation failures","example":["incorrect email"],"uniqueKey":"subErrors","typeLabel":"string[]"}},"required":["statusCode","message","error","correlationId"],"uniqueKey":"","typeLabel":"object"},"example":{"statusCode":429,"message":"Too Many Requests","error":"Too Many Requests","correlationId":"YevPQs"},"examples":{"Example":{"title":"Example","value":{"statusCode":429,"message":"Too Many Requests","error":"Too Many Requests","correlationId":"YevPQs"}}},"exampleType":"examples"}},"exampleType":"examples"},"834ab22d-de33-42f6-bb71-1ded4b557a29":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","description":"Error envelope returned by every Dialer API endpoint. Note it differs from the legacy API's error format.","properties":{"statusCode":{"type":"integer","description":"HTTP status code","isRequired":true,"uniqueKey":"statusCode","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"HTTP error name","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"correlationId":{"type":"string","description":"Request correlation ID — include it when contacting support","example":"YevPQs","isRequired":true,"uniqueKey":"correlationId","typeLabel":"string"},"subErrors":{"type":"array","items":{"type":"string","uniqueKey":"subErrors.items.[INDEX]","typeLabel":"string"},"description":"Field-level validation messages, present on validation failures","example":["incorrect email"],"uniqueKey":"subErrors","typeLabel":"string[]"}},"required":["statusCode","message","error","correlationId"],"uniqueKey":"","typeLabel":"object"},"example":{"statusCode":500,"message":"Internal Server Error","error":"Internal Server Error","correlationId":"YevPQs"},"examples":{"Example":{"title":"Example","value":{"statusCode":500,"message":"Internal Server Error","error":"Internal Server Error","correlationId":"YevPQs"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"6d96e362-8e79-44bd-a2f9-bb735965af53":{"basicAuth":{"type":"http","scheme":"basic","description":"HTTP Basic Authentication. Use your API Access Key ID as the username and your API Access Key Secret as the password. Generate keys in the CloudTalk Dashboard under Account -> Settings -> API Keys (https://dashboard.cloudtalk.io/menu/account/settings/API-keys).","scopes":[],"schemeName":"basicAuth"}}},"servers":{"6cd38fff-c4c3-43dc-a759-b0eb9c301e04":{"url":"https://api.cloudtalk.io/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"basic","description":"HTTP Basic Authentication. Use your API Access Key ID as the username and your API Access Key Secret as the password. Generate keys in the CloudTalk Dashboard under Account -> Settings -> API Keys (https://dashboard.cloudtalk.io/menu/account/settings/API-keys).","scopes":[],"schemeName":"basicAuth"},"schema":{"title":"Basic Auth","type":"object","description":"HTTP Basic Authentication. Use your API Access Key ID as the username and your API Access Key Secret as the password. Generate keys in the CloudTalk Dashboard under Account -> Settings -> API Keys (https://dashboard.cloudtalk.io/menu/account/settings/API-keys).","isRequired":true,"properties":{"username":{"type":"string","uniqueKey":"username","isRequired":true,"typeLabel":"string","deprecated":false},"password":{"type":"string","uniqueKey":"password","isRequired":true,"typeLabel":"string","deprecated":false}},"additionalProperties":false,"deprecated":false},"schemeName":"basicAuth","name":"Authorization"}],"title":"basicAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"cloudtalk","siteName":"CloudTalk Help Center","title":"Get a campaign's statistics - CloudTalk Help Center","relatedPagesConfig":{"enabled":true,"limit":3,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/dialer/get-a-campaigns-statistics","matchLevel":0},"de":{"href":"/de","matchLevel":4},"es":{"href":"/es","matchLevel":4},"fr":{"href":"/fr","matchLevel":4},"nl":{"href":"/nl","matchLevel":4},"pt":{"href":"/pt","matchLevel":4}}},"lastModified":"2026-11-04T13:03:46.194Z","originalFileLocation":"api-reference/dialer/get-a-campaigns-statistics.mdx","locale":"en"},"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=\"system\"}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=\"Returns the campaign\u0026#x27;s aggregated performance on one of two bases, told apart by range in the response: - All-time (no dateFrom/dateTo): lifetime counters served from a projection refreshed in the background — updated_at tells you how fresh they are, and range is null. call_durations is included only when includeDurations=true (it is the one read whose cost grows with the campaign). - Ranged (dateFrom and dateTo both set): counters aggregated at request time over the half-open window [dateFrom, dateTo). range echoes the resolved window, updated_at is null, and durations are always included (includeDurations is ignored). Both bounds are RFC 3339 date-times. The service also reads the ISO 8601 date-only form YYYY-MM-DD, which lies outside that shape and is therefore only reachable from a client that does not validate against this schema: a date-only dateTo names a calendar day and is served inclusive of it — the exclusive end moves to the following UTC midnight, so equal date-only bounds are a valid one-day window. There is no limit on the window\u0026#x27;s length; the only bound is the 13-month event retention horizon on dateFrom. Supplying only one bound, an empty window, or a dateFrom past the horizon is a 422. The membership-state blocks (contact_states*, pending_by_category, open_assignments) always describe the campaign\u0026#x27;s current state — a window does not narrow them. Unknown query parameters are rejected with 400 rather than ignored. A campaign that has never been dialed returns zeroed counters, not 404.\">\u003cmeta data-mint-head name=\"application-name\" content=\"CloudTalk Help Center\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudtalk/VvADT62SW6ZfhiGL/_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/cloudtalk/VvADT62SW6ZfhiGL/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudtalk/VvADT62SW6ZfhiGL/_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/cloudtalk/VvADT62SW6ZfhiGL/_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/cloudtalk/VvADT62SW6ZfhiGL/_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/cloudtalk/VvADT62SW6ZfhiGL/_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/cloudtalk/VvADT62SW6ZfhiGL/_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/cloudtalk/VvADT62SW6ZfhiGL/_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/cloudtalk/VvADT62SW6ZfhiGL/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get a campaign\u0026#x27;s statistics - CloudTalk Help Center\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns the campaign\u0026#x27;s aggregated performance on one of two bases, told apart by range in the response: - All-time (no dateFrom/dateTo): lifetime counters served from a projection refreshed in the background — updated_at tells you how fresh they are, and range is null. call_durations is included only when includeDurations=true (it is the one read whose cost grows with the campaign). - Ranged (dateFrom and dateTo both set): counters aggregated at request time over the half-open window [dateFrom, dateTo). range echoes the resolved window, updated_at is null, and durations are always included (includeDurations is ignored). Both bounds are RFC 3339 date-times. The service also reads the ISO 8601 date-only form YYYY-MM-DD, which lies outside that shape and is therefore only reachable from a client that does not validate against this schema: a date-only dateTo names a calendar day and is served inclusive of it — the exclusive end moves to the following UTC midnight, so equal date-only bounds are a valid one-day window. There is no limit on the window\u0026#x27;s length; the only bound is the 13-month event retention horizon on dateFrom. Supplying only one bound, an empty window, or a dateFrom past the horizon is a 422. The membership-state blocks (contact_states*, pending_by_category, open_assignments) always describe the campaign\u0026#x27;s current state — a window does not narrow them. Unknown query parameters are rejected with 400 rather than ignored. A campaign that has never been dialed returns zeroed counters, not 404.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CloudTalk Help Center\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://help.cloudtalk.io/api-reference/dialer/get-a-campaigns-statistics\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cloudtalk.mintlify.app/_mintlify/api/og/v2?division=Dialer\u0026amp;title=Get+a+campaign%27s+statistics\u0026amp;description=Returns+the+campaign%27s+aggregated+performance+on+one+of+two+bases%2C+told+apart+by+%60range%60+in+the+response%3A%0A%0A-+**All-time**+%28no+%60dateFrom%60%2F%60dateTo%60%29%3A+lifetime+cou\u0026amp;theme=1e2a8314c967ca8053f46579\u0026amp;signature=e78b202467478c64b4051346915e8565c000e3a686508231dbc3665ffaf70ad0\">\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=\"Get a campaign\u0026#x27;s statistics - CloudTalk Help Center\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns the campaign\u0026#x27;s aggregated performance on one of two bases, told apart by range in the response: - All-time (no dateFrom/dateTo): lifetime counters served from a projection refreshed in the background — updated_at tells you how fresh they are, and range is null. call_durations is included only when includeDurations=true (it is the one read whose cost grows with the campaign). - Ranged (dateFrom and dateTo both set): counters aggregated at request time over the half-open window [dateFrom, dateTo). range echoes the resolved window, updated_at is null, and durations are always included (includeDurations is ignored). Both bounds are RFC 3339 date-times. The service also reads the ISO 8601 date-only form YYYY-MM-DD, which lies outside that shape and is therefore only reachable from a client that does not validate against this schema: a date-only dateTo names a calendar day and is served inclusive of it — the exclusive end moves to the following UTC midnight, so equal date-only bounds are a valid one-day window. There is no limit on the window\u0026#x27;s length; the only bound is the 13-month event retention horizon on dateFrom. Supplying only one bound, an empty window, or a dateFrom past the horizon is a 422. The membership-state blocks (contact_states*, pending_by_category, open_assignments) always describe the campaign\u0026#x27;s current state — a window does not narrow them. Unknown query parameters are rejected with 400 rather than ignored. A campaign that has never been dialed returns zeroed counters, not 404.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cloudtalk.mintlify.app/_mintlify/api/og/v2?division=Dialer\u0026amp;title=Get+a+campaign%27s+statistics\u0026amp;description=Returns+the+campaign%27s+aggregated+performance+on+one+of+two+bases%2C+told+apart+by+%60range%60+in+the+response%3A%0A%0A-+**All-time**+%28no+%60dateFrom%60%2F%60dateTo%60%29%3A+lifetime+cou\u0026amp;theme=1e2a8314c967ca8053f46579\u0026amp;signature=e78b202467478c64b4051346915e8565c000e3a686508231dbc3665ffaf70ad0\">\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/cloudtalk/VvADT62SW6ZfhiGL/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CloudTalk Help Center\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0527FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://help.cloudtalk.io/api-reference/dialer/get-a-campaigns-statistics\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/dialer/get-a-campaigns-statistics.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://help.cloudtalk.io/#organization\",\"name\":\"CloudTalk Help Center\",\"url\":\"https://help.cloudtalk.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cloudtalk/M_FX1uE099dO0_78/logo/light.svg?fit=max\u0026auto=format\u0026n=M_FX1uE099dO0_78\u0026q=85\u0026s=9efde0e0ef215d0b41a2f8f92056e144\"}},{\"@type\":\"WebSite\",\"@id\":\"https://help.cloudtalk.io#website\",\"name\":\"CloudTalk Help Center\",\"url\":\"https://help.cloudtalk.io\",\"publisher\":{\"@id\":\"https://help.cloudtalk.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://help.cloudtalk.io/api-reference/dialer/get-a-campaigns-statistics#webpage\",\"url\":\"https://help.cloudtalk.io/api-reference/dialer/get-a-campaigns-statistics\",\"name\":\"Get a campaign's statistics\",\"description\":\"Returns the campaign's aggregated performance on one of two bases, told apart by range in the response: - All-time (no dateFrom/dateTo): lifetime counters served from a projection refreshed in the background — updated_at tells you how fresh they are, and range is null. call_durations is included only when includeDurations=true (it is the one read whose cost grows with the campaign). - Ranged (dateFrom and dateTo both set): counters aggregated at request time over the half-open window [dateFrom, dateTo). range echoes the resolved window, updated_at is null, and durations are always included (includeDurations is ignored). Both bounds are RFC 3339 date-times. The service also reads the ISO 8601 date-only form YYYY-MM-DD, which lies outside that shape and is therefore only reachable from a client that does not validate against this schema: a date-only dateTo names a calendar day and is served inclusive of it — the exclusive end moves to the following UTC midnight, so equal date-only bounds are a valid one-day window. There is no limit on the window's length; the only bound is the 13-month event retention horizon on dateFrom. Supplying only one bound, an empty window, or a dateFrom past the horizon is a 422. The membership-state blocks (contact_states*, pending_by_category, open_assignments) always describe the campaign's current state — a window does not narrow them. Unknown query parameters are rejected with 400 rather than ignored. A campaign that has never been dialed returns zeroed counters, not 404.\",\"dateModified\":\"2026-11-04T13:03:46.194Z\",\"isPartOf\":{\"@id\":\"https://help.cloudtalk.io#website\"},\"breadcrumb\":{\"@id\":\"https://help.cloudtalk.io/api-reference/dialer/get-a-campaigns-statistics#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://help.cloudtalk.io/api-reference/dialer/get-a-campaigns-statistics#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://help.cloudtalk.io/api-reference/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dialer\",\"item\":\"https://help.cloudtalk.io/api-reference/dialer/list-dialer-campaigns\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get a campaign's statistics\",\"item\":\"https://help.cloudtalk.io/api-reference/dialer/get-a-campaigns-statistics\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://help.cloudtalk.io/api-reference/dialer/get-a-campaigns-statistics#apireference\",\"headline\":\"Get a campaign's statistics\",\"name\":\"Get a campaign's statistics\",\"description\":\"Returns the campaign's aggregated performance on one of two bases, told apart by range in the response: - All-time (no dateFrom/dateTo): lifetime counters served from a projection refreshed in the background — updated_at tells you how fresh they are, and range is null. call_durations is included only when includeDurations=true (it is the one read whose cost grows with the campaign). - Ranged (dateFrom and dateTo both set): counters aggregated at request time over the half-open window [dateFrom, dateTo). range echoes the resolved window, updated_at is null, and durations are always included (includeDurations is ignored). Both bounds are RFC 3339 date-times. The service also reads the ISO 8601 date-only form YYYY-MM-DD, which lies outside that shape and is therefore only reachable from a client that does not validate against this schema: a date-only dateTo names a calendar day and is served inclusive of it — the exclusive end moves to the following UTC midnight, so equal date-only bounds are a valid one-day window. There is no limit on the window's length; the only bound is the 13-month event retention horizon on dateFrom. Supplying only one bound, an empty window, or a dateFrom past the horizon is a 422. The membership-state blocks (contact_states*, pending_by_category, open_assignments) always describe the campaign's current state — a window does not narrow them. Unknown query parameters are rejected with 400 rather than ignored. A campaign that has never been dialed returns zeroed counters, not 404.\",\"url\":\"https://help.cloudtalk.io/api-reference/dialer/get-a-campaigns-statistics\",\"mainEntityOfPage\":{\"@id\":\"https://help.cloudtalk.io/api-reference/dialer/get-a-campaigns-statistics#webpage\"},\"dateModified\":\"2026-11-04T13:03:46.194Z\",\"publisher\":{\"@id\":\"https://help.cloudtalk.io/#organization\"},\"isPartOf\":{\"@id\":\"https://help.cloudtalk.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CloudTalk Help Center\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"CloudTalk Help Center","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Help Center","pages":[{"title":"Help Center","href":"/en"}]},{"tab":"API","groups":[{"group":"Getting Started","pages":[{"title":"CloudTalk Developer Documentation","sidebarTitle":"Home","href":"/developers"},{"title":"CloudTalk REST API: Call Center Automation Platform","sidebarTitle":"Introduction","href":"/guides/introduction"},{"title":"How to Authenticate Requests to the CloudTalk REST API","sidebarTitle":"Authentication","href":"/guides/authentication"},{"title":"Quickstart: Make Your First CloudTalk REST API Call","sidebarTitle":"Quickstart","href":"/guides/quickstart"}]},{"group":"API Concepts","pages":[{"title":"CloudTalk API Response Envelope Formats and Schema","sidebarTitle":"Response Envelopes","href":"/guides/response-envelopes"},{"title":"How to Paginate CloudTalk API Collection Responses","sidebarTitle":"Pagination","href":"/guides/pagination"},{"title":"CloudTalk API Rate Limits, Headers, and Throttling","sidebarTitle":"Rate Limiting","href":"/guides/rate-limiting"},{"title":"CloudTalk API HTTP Error Codes: Causes and Resolutions","sidebarTitle":"Error Codes","href":"/guides/error-codes"}]},{"group":"API Reference","pages":[{"title":"CloudTalk REST API v1.7 — Complete Developer Reference","sidebarTitle":"Overview","href":"/api-reference/overview"},{"group":"CueCard","pages":[{"title":"Create CueCard","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /cuecards","href":"/api-reference/cuecard/create-cuecard"}]},{"group":"Agents","pages":[{"title":"List agents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /agents/index.json","href":"/api-reference/agents/list-agents"},{"title":"Add an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /agents/add.json","href":"/api-reference/agents/add-an-agent"},{"title":"Edit an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /agents/edit/{agentId}.json","href":"/api-reference/agents/edit-an-agent"},{"title":"Delete an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /agents/delete/{agentId}.json","href":"/api-reference/agents/delete-an-agent"}]},{"group":"Groups","pages":[{"title":"List groups","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /groups/index.json","href":"/api-reference/groups/list-groups"},{"title":"Add agent to group","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /groups/add.json","href":"/api-reference/groups/add-agent-to-group"},{"title":"Remove agent from group","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /groups/delete/{agent_id}.json","href":"/api-reference/groups/remove-agent-from-group"}]},{"group":"Bulks","pages":[{"title":"Contact actions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /bulk/contacts.json","href":"/api-reference/bulks/contact-actions"}]},{"group":"Campaigns","pages":[{"title":"List campaigns","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /campaigns/index.json","href":"/api-reference/campaigns/list-campaigns"},{"title":"Add campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /campaigns/add.json","href":"/api-reference/campaigns/add-campaign"},{"title":"Edit campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /campaigns/edit/{id}.json","href":"/api-reference/campaigns/edit-campaign"},{"title":"Delete campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /campaigns/delete/{id}.json","href":"/api-reference/campaigns/delete-campaign"}]},{"group":"Contacts","pages":[{"title":"List contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /contacts/index.json","href":"/api-reference/contacts/list-contacts"},{"title":"Add contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /contacts/add.json","href":"/api-reference/contacts/add-contact"},{"title":"Edit contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /contacts/edit/{contactId}.json","href":"/api-reference/contacts/edit-contact"},{"title":"Delete contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /contacts/delete/{contactId}.json","href":"/api-reference/contacts/delete-contact"},{"title":"Inspect a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /contacts/show/{contactId}.json","href":"/api-reference/contacts/inspect-a-contact"},{"title":"Attributes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /contacts/attributes.json","href":"/api-reference/contacts/attributes"},{"title":"Assign contact tags","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /contacts/addTags/{contactId}.json","href":"/api-reference/contacts/assign-contact-tags"},{"title":"Unassign contact tags","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /contacts/removeTags/{contactId}.json","href":"/api-reference/contacts/unassign-contact-tags"},{"title":"List notes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /notes/index.json","href":"/api-reference/contacts/list-notes"},{"title":"Add note","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /notes/add/{contactId}.json","href":"/api-reference/contacts/add-note"},{"title":"Edit note","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /notes/edit/{noteId}.json","href":"/api-reference/contacts/edit-note"},{"title":"Delete note","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /notes/delete/{noteId}.json","href":"/api-reference/contacts/delete-note"},{"title":"List activities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /activity/index.json","href":"/api-reference/contacts/list-activities"},{"title":"Add activity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /activity/add/{contactId}.json","href":"/api-reference/contacts/add-activity"},{"title":"Edit activity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /activity/edit/{activityId}.json","href":"/api-reference/contacts/edit-activity"},{"title":"Delete activity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /activity/delete/{activityId}.json","href":"/api-reference/contacts/delete-activity"}]},{"group":"Numbers","pages":[{"title":"List numbers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /numbers/index.json","href":"/api-reference/numbers/list-numbers"},{"title":"Edit a number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /numbers/edit/{id}.json","href":"/api-reference/numbers/edit-a-number"},{"title":"Unregister a number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /numbers/clear/{id}.json","href":"/api-reference/numbers/unregister-a-number"}]},{"group":"Utilities","pages":[{"title":"List countries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /countries/index.json","href":"/api-reference/utilities/list-countries"},{"title":"List blacklist","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /blacklist/index.json","href":"/api-reference/utilities/list-blacklist"},{"title":"Add number to blacklist","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /blacklist/add.json","href":"/api-reference/utilities/add-number-to-blacklist"},{"title":"Edit number on blacklist","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /blacklist/edit/{id}.json","href":"/api-reference/utilities/edit-number-on-blacklist"},{"title":"Delete number from blacklist","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /blacklist/delete/{id}.json","href":"/api-reference/utilities/delete-number-from-blacklist"}]},{"group":"Sms","pages":[{"title":"Send sms","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /sms/send.json","href":"/api-reference/sms/send-sms"}]},{"group":"Calls","pages":[{"title":"Call history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /calls/index.json","href":"/api-reference/calls/call-history"},{"title":"Get call details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /calls/{callId}","href":"/api-reference/calls/get-call-details"},{"title":"Recording media","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /calls/recording/{callId}.json","href":"/api-reference/calls/recording-media"},{"title":"Delete call recording","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /recordings/delete/{callId}.json","href":"/api-reference/calls/delete-call-recording"},{"title":"Make a call","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /calls/create.json","href":"/api-reference/calls/make-a-call"},{"title":"Group statistics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /statistics/realtime/groups.json","href":"/api-reference/calls/group-statistics"}]},{"group":"Contact tags","pages":[{"title":"List contact tags","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /tags/index.json","href":"/api-reference/contact-tags/list-contact-tags"},{"title":"Add a contact tag","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /tags/add.json","href":"/api-reference/contact-tags/add-a-contact-tag"},{"title":"Edit a contact tag","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tags/edit/{id}.json","href":"/api-reference/contact-tags/edit-a-contact-tag"},{"title":"Delete a contact tag","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /tags/delete/{id}.json","href":"/api-reference/contact-tags/delete-a-contact-tag"}]},{"group":"Conversation Intelligence","pages":[{"title":"Summary","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /ai/calls/{callId}/summary","href":"/api-reference/conversation-intelligence/summary"},{"title":"Overall sentiment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /ai/calls/{callId}/overall-sentiment","href":"/api-reference/conversation-intelligence/overall-sentiment"},{"title":"Talk-listen ratio","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /ai/calls/{callId}/talk-listen-ratio","href":"/api-reference/conversation-intelligence/talk-listen-ratio"},{"title":"Topics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /ai/calls/{callId}/topics","href":"/api-reference/conversation-intelligence/topics"},{"title":"Transcription","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /ai/calls/{callId}/transcription","href":"/api-reference/conversation-intelligence/transcription"},{"title":"Smart notes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /ai/calls/{callId}/smart-notes","href":"/api-reference/conversation-intelligence/smart-notes"},{"title":"Call details link","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /ai/calls/{callId}/details-link","href":"/api-reference/conversation-intelligence/call-details-link"}]},{"group":"VoiceAgent","pages":[{"title":"Initiate VoiceAgent call","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /voice-agent/calls","href":"/api-reference/voiceagent/initiate-voiceagent-call"},{"title":"Stop outbound VoiceAgent calls","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /voice-agent/outbound/kill","href":"/api-reference/voiceagent/stop-outbound-voiceagent-calls"},{"title":"List voice agents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /voice-agents","href":"/api-reference/voiceagent/list-voice-agents"},{"title":"Create a voice agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /voice-agents","href":"/api-reference/voiceagent/create-a-voice-agent"},{"title":"Get a voice agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /voice-agents/{voiceAgentId}","href":"/api-reference/voiceagent/get-a-voice-agent"},{"title":"Replace a voice agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /voice-agents/{voiceAgentId}","href":"/api-reference/voiceagent/replace-a-voice-agent"},{"title":"Delete a voice agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /voice-agents/{voiceAgentId}","href":"/api-reference/voiceagent/delete-a-voice-agent"},{"title":"Attach a knowledge base to a voice agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /voice-agents/{voiceAgentId}/knowledge-bases/{knowledgeBaseId}","href":"/api-reference/voiceagent/attach-a-knowledge-base-to-a-voice-agent"},{"title":"Detach a knowledge base from a voice agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /voice-agents/{voiceAgentId}/knowledge-bases/{knowledgeBaseId}","href":"/api-reference/voiceagent/detach-a-knowledge-base-from-a-voice-agent"},{"title":"List knowledge bases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /knowledge-bases","href":"/api-reference/voiceagent/list-knowledge-bases"},{"title":"Create a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases","href":"/api-reference/voiceagent/create-a-knowledge-base"},{"title":"Upload a knowledge base file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /knowledge-bases/files","href":"/api-reference/voiceagent/upload-a-knowledge-base-file"},{"title":"Delete a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /knowledge-bases/{knowledgeBaseId}","href":"/api-reference/voiceagent/delete-a-knowledge-base"}]},{"group":"Dialer","pages":[{"title":"List dialer campaigns","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/campaigns","href":"/api-reference/dialer/list-dialer-campaigns"},{"title":"Create a dialer campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /dialer/campaigns","href":"/api-reference/dialer/create-a-dialer-campaign"},{"title":"Get a dialer campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/campaigns/{campaignId}","href":"/api-reference/dialer/get-a-dialer-campaign"},{"title":"Delete a dialer campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /dialer/campaigns/{campaignId}","href":"/api-reference/dialer/delete-a-dialer-campaign"},{"title":"Update a dialer campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /dialer/campaigns/{campaignId}","href":"/api-reference/dialer/update-a-dialer-campaign"},{"title":"Get a campaign's associations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/campaigns/{campaignId}/associations","href":"/api-reference/dialer/get-a-campaigns-associations"},{"title":"Replace a campaign's associations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /dialer/campaigns/{campaignId}/associations","href":"/api-reference/dialer/replace-a-campaigns-associations"},{"title":"Get a campaign's disposition buttons","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/campaigns/{campaignId}/disposition-buttons","href":"/api-reference/dialer/get-a-campaigns-disposition-buttons"},{"title":"Replace a campaign's disposition buttons","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /dialer/campaigns/{campaignId}/disposition-buttons","href":"/api-reference/dialer/replace-a-campaigns-disposition-buttons"},{"title":"List disposition tags","description":"Lists the call tags the company can wire onto a campaign's disposition buttons. Use the returned `id` as `tag_id` when replacing a campaign's buttons. The catalogue is returned whole, so `meta.nextCursor` is always null.\n\nArchived dispositions are not listed, because they can no longer be used on a call. Tags are created and edited in the CloudTalk dashboard, not through this API.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/disposition-tags","href":"/api-reference/dialer/list-disposition-tags"},{"title":"Get a campaign's statistics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/campaigns/{campaignId}/statistics","href":"/api-reference/dialer/get-a-campaigns-statistics"},{"title":"List a campaign's contacts","description":"Returns the campaign's members ordered by dialing eligibility (`next_eligible_at`, then id), cursor-paginated. `meta.total` counts the filtered set, so it moves with `queueTag` and `search`.\n\n`queue_tag` on each row is a derived queue position, not the raw membership state: an open agent hold reads `assigned`, a scheduled callback reads `scheduled`, terminal states read as themselves, and a pending contact reads its waterfall category (`fresh`, `retry`, `rescheduled`, `favorite`).\n\nThere is no contacts write route on this API — campaign membership is tag-defined, so contacts are added by tagging them in Contacts.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/campaigns/{campaignId}/contacts","href":"/api-reference/dialer/list-a-campaigns-contacts"},{"title":"Peek at the next contacts to be dialed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/campaigns/{campaignId}/contacts/next","href":"/api-reference/dialer/peek-at-the-next-contacts-to-be-dialed"},{"title":"Get one campaign contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/campaigns/{campaignId}/contacts/{campaignContactId}","href":"/api-reference/dialer/get-one-campaign-contact"},{"title":"Request a campaign data export","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /dialer/campaigns/{campaignId}/exports","href":"/api-reference/dialer/request-a-campaign-data-export"},{"title":"Get an export job's status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/exports/{jobId}","href":"/api-reference/dialer/get-an-export-jobs-status"},{"title":"Get a download link for a completed export","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/exports/{jobId}/download","href":"/api-reference/dialer/get-a-download-link-for-a-completed-export"},{"title":"List call scripts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/scripts","href":"/api-reference/dialer/list-call-scripts"},{"title":"Create a call script","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /dialer/scripts","href":"/api-reference/dialer/create-a-call-script"},{"title":"Get a call script","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/scripts/{scriptId}","href":"/api-reference/dialer/get-a-call-script"},{"title":"Archive a call script","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /dialer/scripts/{scriptId}","href":"/api-reference/dialer/archive-a-call-script"},{"title":"Update a call script","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /dialer/scripts/{scriptId}","href":"/api-reference/dialer/update-a-call-script"},{"title":"List surveys","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/surveys","href":"/api-reference/dialer/list-surveys"},{"title":"Create a survey","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /dialer/surveys","href":"/api-reference/dialer/create-a-survey"},{"title":"Get a survey","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /dialer/surveys/{surveyId}","href":"/api-reference/dialer/get-a-survey"},{"title":"Rename or archive a survey","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /dialer/surveys/{surveyId}","href":"/api-reference/dialer/rename-or-archive-a-survey"},{"title":"Replace a survey's questions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /dialer/surveys/{surveyId}/questions","href":"/api-reference/dialer/replace-a-surveys-questions"}]},{"group":"Webhooks","pages":[{"title":"List webhook event types","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /webhooks/event-types","href":"/api-reference/webhooks/list-webhook-event-types"},{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /webhooks/endpoints","href":"/api-reference/webhooks/list-webhook-endpoints"},{"title":"Create a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /webhooks/endpoints","href":"/api-reference/webhooks/create-a-webhook-endpoint"},{"title":"Get a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /webhooks/endpoints/{endpointId}","href":"/api-reference/webhooks/get-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /webhooks/endpoints/{endpointId}","href":"/api-reference/webhooks/delete-a-webhook-endpoint"},{"title":"Update a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /webhooks/endpoints/{endpointId}","href":"/api-reference/webhooks/update-a-webhook-endpoint"},{"title":"Get the signing secret","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /webhooks/endpoints/{endpointId}/secret","href":"/api-reference/webhooks/get-the-signing-secret"},{"title":"Rotate the signing secret","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /webhooks/endpoints/{endpointId}/secret/rotate","href":"/api-reference/webhooks/rotate-the-signing-secret"},{"title":"Send a test event","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /webhooks/endpoints/{endpointId}/test","href":"/api-reference/webhooks/send-a-test-event"},{"title":"List deliveries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /webhooks/endpoints/{endpointId}/deliveries","href":"/api-reference/webhooks/list-deliveries"},{"title":"Get a delivery","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /webhooks/endpoints/{endpointId}/deliveries/{deliveryId}","href":"/api-reference/webhooks/get-a-delivery"},{"title":"Retry a delivery","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /webhooks/endpoints/{endpointId}/deliveries/{deliveryId}/retry","href":"/api-reference/webhooks/retry-a-delivery"}]}]}]},{"tab":"Webhooks","pages":[{"title":"Webhooks","href":"/guides/webhooks/overview"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/guides/mcp/overview"}]},{"tab":"What's new","pages":[{"title":"What's new","href":"/changelog"}]}]},{"language":"de","pages":[{"title":"de","href":"/de"}]},{"language":"es","pages":[{"title":"es","href":"/es"}]},{"language":"fr","pages":[{"title":"fr","href":"/fr"}]},{"language":"nl","pages":[{"title":"nl","href":"/nl"}]},{"language":"pt","pages":[{"title":"pt","href":"/pt"}]}]},"basePath":"","title":"Get a campaign's statistics - CloudTalk Help Center","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}