Campaign endpoints

A campaign refers to an outbound auto-dialer feature that sequentially reaches out to a list of contacts, initiates outbound calls, and connects each contact to an available agent. Campaign endpoints provide access to campaign-related data, allowing retrieval of campaign and contact objects.

  • Campaign object represents a single campaign within the platform.

  • Contact object represents an individual campaign contact within a specific campaign.

Campaign endpoints let users to add, update, and delete contacts of an existing campaign. The available endpoints include:

Campaign contact status

The status field can be in any of the following states:

Campaign Contact Status Description
Upcoming Contact is next to be dialed.
Dialing Contact is right now being dialed.
Queued Call for a given contact is queued.
Connected Contact is connected with an agent.
Finished Call has completed.
Transferred Call has been transferred.
Transferred and Finished Call has been transferred and then completed.
Not Picked Up No answer from end user or never reached the end user.
Not Reached to Contact Call never reached the contact.
Abandoned by Contact For preview, end user hangs up before connected to an agent. For both progressive and predictive, end user hangs up the call within 5 seconds after connecting to the agent.
Skipped Contact has been skipped by agent and will be available to be connected to another agent.
Skipped & Closed On Preview, agent skips and close a contact. This contact should now be always skipped in this campaign.
Invalid Number Contact with invalid phone number.
Carrier Error This error is driven by carrier.
Abandoned by Dialer Contact has been abandoned by dialer.
Voicemail Hung Up On Predictive, the dialer determines the end user is a machine (ie. voicemail).
Dialer General Error Call failed due to dialer error.
Redial Scheduled Temporary status. Redial scheduled in the future.
Do Not Call The number was in Do-Not-Call number list.
Invalid Outbound Number Contact with invalid outbound number.
Blocked Phone Number Contact with invalid/blocked international number.

Add a single contact to a campaign

Parameter Required Data Type Definition
campaign_id TRUE Integer The ID of the campaign to add a contact to.

Endpoint:

Method: POST
Type: RAW
URL: https://{subdomain}.​{domain}​/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts

Headers:

Key Value Description
Content-Type application/json

Body:

{
    "name": "string",
    "email": "customer@somedomain.com",
    "phone_number": "+1 111-111-1111",
    "outbound_number": "+1 760-867-5309",
    "external_unique_id": "UID_123456"
}

Example request and responses

The following sections provide example requests to the endpoint.

Add single contact to a campaign

This example demonstrates how to add a contact to a specific campaign ID.

Request

Headers:

Key Value Description
Content-Type application/json

Query:

Key Value Description
campaign_id integer The ID of the campaign to add the contact to

Body:

{
    "name": "string",
    "email": "customer@somedomain.com",
    "phone_number": "+1 111-111-1111",
    "outbound_number": "+1 760-867-5309",
    "external_unique_id": "UID_123456"
}
Response
{
    "valid_contacts": [
        {
            "name": "string",
            "email": "customer@somedomain.com",
            "phone_number": "+1 111-111-1111",
            "outbound_number": "+1 760-867-5309",
            "external_unique_id": "UID_123456"
        }
    ],
    "invalid_contacts": []
}

Status Code: 200

Get contacts for a campaign

Parameter Required Data Type Definition
campaign_id TRUE Integer The ID of the campaign to retrieve the contacts from.

Endpoint:

Method: GET
Type:
URL: https://{subdomain}.​{domain}​/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts

Headers:

Key Value Description
Content-Type application/json

Query:

Key Value Description
campaign_id integer The ID of the campaign to add the contact to

Example request and responses

The following sections provide example requests to the endpoint.

Get contacts for a campaign

The following example demonstrates how to retrieve the contacts for the given campaign ID.

Request

Headers:

Key Value Description
Content-Type application/json

Query:

Key Value Description
campaign_id integer Campaign ID of the campaign to query
Response
[
  {
      "name": "string",
      "email": "customer@somedomain.com",
      "phone_number": "+1 111-111-1111",
      "outbound_number": "+1 760-867-5309",
      "external_unique_id": "UID_123456"
  }
]

Status Code: 200

Import multiple contacts to a campaign

Parameter Required Data Type Definition
file TRUE String json file containing the multiple contacts to add to a campaign.
campaign_id TRUE Integer The ID of the campaign to add the contacts to.

Endpoint:

Method: POST
Type: FORM DATA
URL: https://{​subdomain}​.{​domain}​/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts/import

Headers:

Key Value Description
Content-Type multipart/form-data

Body:

'FORM DATA'

File content:

[
  {
      "name": "string",
      "email": "customer@somedomain.com",
      "phone_number": "+1 111-111-1111",
      "outbound_number": "+1 760-867-5309",
      "external_unique_id": "UID_123456"
  }
]

Example request and responses

The following sections provide example requests to the endpoint.

Import multiple contacts from a file

This example demonstrates the adding of contacts to a campaign based on a file being posted to the endpoint. The file is posted as form data.

Request

Headers:

Key Value Description
Content-Type multipart/form-data

Query:

Key Value Description
campaign_id integer Campaign ID to add the contacts to

File content:

[
  {
      "name": "string",
      "email": "customer@somedomain.com",
      "phone_number": "+1 111-111-1111",
      "outbound_number": "+1 760-867-5309",
      "external_unique_id": "UID_123456"
  }
]
Response

None

Status Code: 202 (Accepted)

Jobs

Parameter Required Data Type Definition
job_id TRUE Integer The job ID that you want to retrieve
campaign_id TRUE Integer The campaign ID that the job ID belongs to.

Endpoint:

Method: GET
Type:
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts/jobs/{job_id}

Headers:

Key Value Description
Content-Type application/json

Example request and responses

The following sections provide example requests to the endpoint.

Successfully completed

The following example demonstrates how to retrieve the job and identify if they have been successfully completed.

Request

Headers:

Key Value Description
Content-Type application/json

Query:

Key Value Description
campaign_id 1 The campaign ID that the job belongs to
job_id 530 The job ID to check the status of
Response
{
    "id": 530,
    "status": "completed",
    "type": "Jobs::Bulk::Campaign::ParentJob"
}

Status Code: 200

Importing still in progress

The following example demonstrates how to retrieve the job and identify if the importation is still ongoing.

Request

Headers:

Key Value Description
Content-Type application/json

Query:

Key Value Description
campaign_id 1 The campaign ID that the job belongs to
job_id 530 The job ID to check the status of
Response
{
    "id": 530,
    "status": "in_progress",
    "type": "Jobs::Bulk::Campaign::ParentJob"
}

Status Code: 200

Failed job

The following example demonstrates how to retrieve the job and identify if the job has failed.

Request

Headers:

Key Value Description
Content-Type application/json

Query:

Key Value Description
campaign_id 1 The campaign ID that the job belongs to
job_id 523 The job ID to check the status of
Response
{
    "error_details": "NativePowerDial::ContactService::DuplicateContactPhoneOnCampaign",
    "error_message": "Internal Error",
    "id": 523,
    "status": "failed",
    "type": "Jobs::Bulk::Campaign::StartImport"
}

Status Code: 200

Update a single contact

Parameter Required Data Type Definition
campaign_id TRUE Integer The campaign ID that the job ID belongs to.

Endpoint:

Method: PATCH
Type: RAW
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contact

Headers:

Key Value Description
Content-Type application/json

Body:

{
    "contact_id": 16312,
    "name": "string",
    "email": "customer@somedomain.com",
    "phone_number": "+1 111-111-1111",
    "external_unique_id": "UID_123456"
}

Example request and responses

The following sections provide example requests to the endpoint.

Update a contact for a campaign

This example demonstrates how to update a contact that is in a specific campaign.

Request

Headers:

Key Value Description
Content-Type application/json

Body:

{
    "contact_id": 7,
    "name": "Bob Smith",
    "email": "customer@somedomain.com",
    "phone_number": "+1 111-111-1111",
    "external_unique_id": "UID_123456"
}
Response
{
    "id": 7,
    "name": "Bob Smith",
    "campaign_id": 6,
    "assigned_call_id": null,
    "assigned_participant_id": null,
    "outbound_number": "+1-(201)-471-6992",
    "priority": null,
    "created_at": "2024-08-05T14:51:49.000Z",
    "updated_at": "2024-08-05T21:01:16.000Z",
    "status": "Upcoming",
    "user_custom_metadata": {
        "NAME (REQUIRED)": "Bob Smith",
        "PHONE (REQUIRED)": "+1 111-111-1111",
        "EMAIL (REQUIRED)": "customer@somedomain.com"
    }
}

Status Code: 200

Remove single contact

Parameter Required Data Type Definition
campaign_id TRUE Integer The campaign ID that the job ID belongs to.

Endpoint:

Method: DELETE
Type: RAW
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contact

Headers:

Key Value Description
Content-Type application/json

Body:

{
    "contact_id": integer,
    "phone_number": "string",
    "external_unique_id": "string"
}

Example request and responses

The following sections provide example requests to the endpoint.

Remove a contact by contact ID

This example demonstrates how to remove a contact from a campaign based on the contact ID of the contact.

Request

Headers:

Key Value Description
Content-Type application/json

Body:

{
    "contact_id": 7,
}

Query:

Key Value Description
campaign_id 1 The campaign ID that the job belongs to
Response
{
    "id": 7,
    "name": "Bob Smith",
    "campaign_id": 6,
    "assigned_call_id": null,
    "assigned_participant_id": null,
    "outbound_number": "+1-(201)-471-6992",
    "priority": null,
    "created_at": "2024-08-05T14:51:49.000Z",
    "updated_at": "2024-08-05T21:01:16.000Z",
    "status": "Upcoming",
    "user_custom_metadata": {
        "NAME (REQUIRED)": "Bob Smith",
        "PHONE (REQUIRED)": "+1 111-111-1111",
        "EMAIL (REQUIRED)": "customer@somedomain.com"
    }
}

Status Code: 200