CloudTalk Campaigns API

All data you can get about your campaigns.

Operations 4

GET /campaigns/index.json List campaigns #
PUT /campaigns/add.json Add campaign #
POST /campaigns/edit/{id}.json Edit campaign #
DELETE /campaigns/delete/{id}.json Delete campaign #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cloudtalk:cloudtalk-campaigns-api"
All apis
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.

Get an API 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 Specification

cloudtalk-campaigns-api-openapi.yml Raw ↑
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)