CloudTalk Campaigns API
All data you can get about your campaigns.
All data you can get about your campaigns.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cloudtalk:cloudtalk-campaigns-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: CloudTalk Campaigns API
description: '# Introduction
Welcome to CloudTalk API reference! Many of these businesses use the CloudTalk API to automate and enhance their customer support with CloudTalk Support. With CloudTalk we are re-building telco industry from the ground and taking it to the next level with first-class customer support system. Please find below the full documenation to CloudTalk. # API Overview
The API is organized around the following resources:
API Area | Description
----------------|-------------
Calls | Browse your call history, download recordings and access all your calls data. Contacts | Create and update Contacts. Use filters to get lists of Contacts, or access their profiles individually. Numbers | Automate Numbers modifications. List all your numbers. Agents | Create or update your Agents, access their settings. Conversation Intelligence | Get Conversation Intelligence data about your calls. VoiceAgent | Initiate VoiceAgent calls
JSON is returned in all responses. XML is not supported. The API also uses common approaches for the following:
Function | Description
----------------|-------------
Data | API data is JSON encoded with UTF-8. API JSON is either a single object or a list of objects. Errors | 4xx and 5xx responses returning JSON with error codes
Rate Limiting | Controls how many requests can be made in a time window
HTTP | Methods are used in accordance with HTTP (GET POST and DELETE are the primary methods used) and resources are identified using URIs. All API requests are sent over HTTPS. ## Authentication
This is an HTTPS-only API. Authentication is based on API Access Key ID and Access Key Secret. The API Access Key ID and Access Key Secret is passed via HTTP Basic Authentication. Basic Auth credentials are used to determine on which project should this request be executed on. List of all Basic Auth credentials for the project can be found by Administrators in the CloudTalk Dashboard under Account → Settings → API Keys (https://dashboard.cloudtalk.io/menu/account/settings/API-keys). To try the API via curl on the command-line, the general form used would be:
```
curl -u ACCESS_KEY_ID:ACCESS_KEY_SECRET API_URL
```
For instance, you would execute:
```
curl -u ABCDEFGHIJTESTKEY1:X05Dg4c331c3h61An https://my.cloudtalk.io/api/calls/index.json
```
## Usage
The API may rate limit submission of requests for your application. Such limits are managed as an allowed number of operations per time window, where an operation might be read or an update. In that case a **''429 Too Many Requests''** response code will be returned along with the following headers -
Header name | Description
----------------|-------------
X-CloudTalkAPI-Limit | Maximum number of API requests allowed in the current time window. X-CloudTalkAPI-Remaining | Number of API requests left in the current window. X-CloudTalkAPI-ResetTime | Time when rate limit window will be reset as a Unix timestamp. Note that the default rate limit is **60 operations per minute per company**. If you need to make more requests, please contact our support with detailed explanation of your use case. ## Response Envelopes
**Note:** Conversation Intelligence doesn''t follow envelopes. The API returns one of three envelopes depending upon the request issued:
1. Single Item Envelope
2. Collections Envelope
3. Error Envelope
### Single Item Envelope
All dates/times are returned in ISO8601 format and in UTC timezone. ```
Status: 200 OK
{
"responseData": {
"id": 123,
... "created": "2018-01-10 12:34:56"
}
}
```
### Collections Envelope
All dates/times are returned in ISO8601 format and in UTC timezone. ```
Status: 200 OK
{
"responseData": {
"itemsCount": 65,
"pageCount": 3,
"pageNumber": 1,
"limit": 30,
"data": [
{
"id": 123,
... "created": "2018-01-10 12:34:56"
},
{
"id": 456,
... "created": "2017-10-19 09:21:29"
},
...'
contact:
name: CloudTalk API Support
url: https://www.cloudtalk.io/contact
version: '1.7'
x-logo:
url: https://my.cloudtalk.io/img/logo-cloudtalk-color.png
servers:
- url: https://my.cloudtalk.io/api
security:
- basicAuth: []
tags:
- name: Campaigns
description: All data you can get about your campaigns.
paths:
/campaigns/index.json:
get:
tags:
- Campaigns
summary: List campaigns
description: 'Returns the account''s campaigns. Pass `id` to fetch a single campaign, or page through them with `limit` and `page`.
These are the campaigns of the original CloudTalk dialer. The newer sales dialer is a separate surface with its own host, authentication and response shape — see the Dialer endpoints.'
parameters:
- name: id
in: query
description: Filter by campaign ID
schema:
type: integer
- name: limit
in: query
description: Max. number of items in response data.
schema:
maximum: 1000
minimum: 1
type: integer
- name: page
in: query
description: Number of page to return.
schema:
minimum: 1
type: integer
responses:
'200':
description: Contacts data
content:
application/json:
schema:
type: object
properties:
responseData:
type: object
properties:
itemsCount:
type: integer
description: number of resources in the response
format: int64
pageCount:
type: integer
description: number of pages found
format: int64
pageNumber:
type: integer
description: current page in the response
format: int64
limit:
type: integer
description: number of objects sent per page
format: int64
data:
type: array
items:
type: object
properties:
Campaign:
$ref: '#/components/schemas/CampaignList'
Button:
$ref: '#/components/schemas/Button'
Tag:
$ref: '#/components/schemas/Tag'
Group:
$ref: '#/components/schemas/Group'
Agent:
$ref: '#/components/schemas/PdAgent'
required:
- responseData
example:
responseData:
itemsCount: 3
pageCount: 1
pageNumber: 1
limit: 3
data:
- Campaign:
id: '63'
name: Test Dialer
status: inactive
has_schedule_date: false
answer_wait_time: '45'
after_call_dialing_auto: false
after_call_time: '5'
is_recording: false
is_predictive: false
attempts: '1'
attempts_interval: '18'
Button:
- id: '252'
title: Sale
type: successful_positive
color: '#2980b9'
description: Sold
ContactsTag:
- id: '133'
name: dialer
Group:
- id: '568'
internal_name: Agents
Agent:
- id: '1075'
fullname: Jane Doe
operationId: getCampaignsIndexJson
x-operation-id-source: derived
/campaigns/add.json:
put:
tags:
- Campaigns
summary: Add campaign
description: 'Creates a campaign. `name` and the `Button` array are required; everything else is optional and configures scheduling (`has_schedule_date`, `schedule_start_date`, `schedule_start_time`), dialing behaviour (`answer_wait_time`, `after_call_dialing_auto`, `after_call_time`, `attempts`, `attempts_interval`), predictive mode (`is_predictive`, `calls_percentage`), call recording, and which contacts, agents and groups the campaign covers. Returns `201`.
Note the core API creates with `PUT`, not `POST`.'
requestBody:
content:
application/json:
schema:
required:
- Button
- name
type: object
properties:
name:
type: string
description: Campaign name
status:
type: string
description: Campaign status (active/inactive)
has_schedule_date:
type: boolean
description: Is campaign scheduled?
schedule_start_date:
type: string
description: Campaign start date
format: date
schedule_start_time:
type: string
description: Campaign start time
format: time
answer_wait_time:
type: integer
description: Maximum number of seconds we will wait for the call to be answered.
after_call_dialing_auto:
type: boolean
description: Automatically dial next contact after a call ends true/false
after_call_time:
type: integer
description: After call time (in seconds)
is_recording:
type: boolean
description: Calls recording true/false
call_number_id:
type: integer
description: Outbound caller id
call_script_id:
type: integer
description: Call script ID
survey_id:
type: integer
description: Survey ID
is_predictive:
type: integer
description: Is predictive dialer campaign 0/1
calls_percentage:
type: integer
description: Agents utilization
attempts:
type: integer
description: Attempts per contact
attempts_interval:
type: integer
description: Hours between attempts
Button:
type: array
items:
type: object
properties:
title:
type: string
description: Button title
type:
type: string
enum:
- successful_positive
- successful_negative
- rescheduled
- unsuccessful_call_again
- unsuccessful_do_not_call
description: Button type
color:
type: string
description: Button color (hex code)
description:
type: string
description: Button description
ContactsTag:
type: array
items:
type: object
properties:
id:
type: integer
description: Tag ID
Agent:
type: array
items:
type: object
properties:
id:
type: integer
description: Agent ID
Group:
type: array
items:
type: object
properties:
id:
type: integer
description: Group ID
required: true
responses:
'201':
description: No error
content:
application/json:
schema:
type: object
properties:
responseData:
type: object
properties:
status:
type: integer
description: Status code
data:
type: object
properties:
id:
type: integer
description: Campaign ID
required:
- responseData
example:
responseData:
status: 201
data:
id: '12345'
'406':
description: Invalid input
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInvalidData'
example:
responseData:
status: 406
message: Invalid input data.
data:
name:
- Please supply a valid campaign name.
'500':
description: Something went wrong
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorData'
example:
responseData:
status: 500
message: Something went wrong.
x-codegen-request-body-name: body
operationId: putCampaignsAddJson
x-operation-id-source: derived
/campaigns/edit/{id}.json:
post:
tags:
- Campaigns
summary: Edit campaign
description: Edit a campaign
parameters:
- name: id
in: path
description: Campaign ID to edit
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
required:
- Button
- name
type: object
properties:
name:
type: string
description: Campaign name
status:
type: string
description: Campaign status (active/inactive)
has_schedule_date:
type: boolean
description: Is campaign scheduled?
schedule_start_date:
type: string
description: Campaign start date
format: date
schedule_start_time:
type: string
description: Campaign start time
format: time
answer_wait_time:
type: integer
description: Maximum number of seconds we will wait for the call to be answered.
after_call_dialing_auto:
type: boolean
description: Automatically dial next contact after a call ends true/false
after_call_time:
type: integer
description: After call time (in seconds)
is_recording:
type: boolean
description: Calls recording true/false
call_number_id:
type: integer
description: Outbound caller id
call_script_id:
type: integer
description: Call script ID
survey_id:
type: integer
description: Survey ID
is_predictive:
type: integer
description: Is predictive dialer campaign 0/1
calls_percentage:
type: integer
description: Agents utilization
attempts:
type: integer
description: Attempts per contact
attempts_interval:
type: integer
description: Hours between attempts
Button:
type: array
items:
type: object
properties:
id:
type: integer
description: Button id
title:
type: string
description: Button title
type:
type: string
enum:
- successful_positive
- successful_negative
- rescheduled
- unsuccessful_call_again
- unsuccessful_do_not_call
description: Button type
color:
type: string
description: Button color (hex code)
description:
type: string
description: Button description
ContactsTag:
type: array
items:
type: object
properties:
id:
type: integer
description: Tag ID
Agent:
type: array
items:
type: object
properties:
id:
type: integer
description: Agent ID
Group:
type: array
items:
type: object
properties:
id:
type: integer
description: Group ID
required: true
responses:
'200':
description: No error
content:
application/json:
schema:
type: object
properties:
responseData:
type: object
properties:
status:
type: integer
description: Status code
required:
- responseData
example:
responseData:
status: 200
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorData'
example:
responseData:
status: 404
message: Not found.
'406':
description: Invalid input
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInvalidData'
example:
responseData:
status: 406
message: Invalid input data.
data:
name:
- Please supply a valid campaign name.
'500':
description: Something went wrong
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorData'
example:
responseData:
status: 500
message: Something went wrong.
x-codegen-request-body-name: body
operationId: postCampaignsEdit{id}Json
x-operation-id-source: derived
/campaigns/delete/{id}.json:
delete:
tags:
- Campaigns
summary: Delete campaign
description: Deletes the campaign identified by `id`. Returns `404` if no campaign has that ID.
parameters:
- name: id
in: path
description: Campaign ID to delete
required: true
schema:
type: integer
responses:
'200':
description: No error
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessGeneralData'
example:
responseData:
status: 200
'404':
description: Campaign not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorData'
example:
responseData:
status: 404
message: Not found.
'500':
description: Something went wrong
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorData'
example:
responseData:
status: 500
message: Something went wrong.
operationId: deleteCampaignsDelete{id}Json
x-operation-id-source: derived
components:
schemas:
SuccessGeneralData:
type: object
description: Success envelope returned by the core API on `my.cloudtalk.io/api`. The payload is always wrapped in `responseData`.
properties:
responseData:
type: object
properties:
status:
type: integer
description: Status code
required:
- responseData
Tag:
type: object
properties:
id:
type: integer
description: Tag ID
name:
type: string
description: Tag name
description: Campaign tag
CampaignList:
type: object
properties:
id:
type: integer
description: Campaign ID
name:
type: string
description: Campaign name
status:
type: string
description: Campaign status (active/inactive)
has_schedule_date:
type: boolean
description: Is campaign scheduled?
schedule_start_date:
type: string
description: Campaign start date
format: date
schedule_start_time:
type: string
description: Campaign start time
format: time
answer_wait_time:
type: integer
description: Maximum number of seconds we will wait for the call to be answered.
after_call_dialing_auto:
type: boolean
description: Automatically dial next contact after a call ends true/false
after_call_time:
type: integer
description: After call time (in seconds)
is_recording:
type: boolean
description: Calls recording true/false
call_number_id:
type: integer
description: Outbound caller id
call_script_id:
type: integer
description: Call script ID
survey_id:
type: integer
description: Survey ID
is_predictive:
type: integer
description: Is predictive dialer campaign 0/1
calls_percentage:
type: integer
description: Agents utilization
attempts:
type: integer
description: Attempts per contact
attempts_interval:
type: integer
description: Hours between attempts
description: Campaign data
Group:
type: object
properties:
id:
type: integer
description: Group ID
internal_name:
type: string
description: Group name
description: Campaign group
ErrorInvalidData:
type: object
description: Validation-error envelope returned by the core API on `my.cloudtalk.io/api`. The payload is always wrapped in `responseData`.
properties:
responseData:
type: object
properties:
status:
type: integer
description: HTTP status code
message:
type: string
description: The error message
data:
type: object
properties: {}
description: Field-level detail explaining the error
required:
- status
- message
required:
- responseData
Button:
type: object
properties:
id:
type: integer
description: Button ID
title:
type: string
description: Button title
type:
type: string
enum:
- successful_positive
- successful_negative
- rescheduled
- unsuccessful_call_again
- unsuccessful_do_not_call
description: Button type
color:
type: string
description: Button color (hex code)
description:
type: string
description: Button description
description: Campaign button
PdAgent:
type: object
properties:
id:
type: integer
description: Agent ID
fullname:
type: string
description: Agent name
description: Campaign agent
ErrorData:
type: object
description: Error envelope returned by the core API on `my.cloudtalk.io/api`. The payload is always wrapped in `responseData`.
properties:
responseData:
type: object
properties:
status:
type: integer
description: HTTP status code
message:
type: string
description: The error message
required:
- status
- message
required:
- responseData
securitySchemes:
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).
x-provenance:
method: harvested
publisher: CloudTalk
source: https://help.cloudtalk.io/api-reference/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)