Apps API Documentation

Basic Authentication

Requests use basic authentication. To create API credentials go to Settings-> Developer Settings-> API Credentials

  • The subdomain is used as the username ({{username}} variable)
  • The token is used as the password ({{password}} variable)

Every installation will have their own subdomain. To find the subdomain, locate the url in your browser, it should look like:

https://customer.rest.of.url.com

Take that subdomain, the most left value, and substitute it into the {{subdomain}} variable. The remainder would be substituted into the {{domain}} variable.

In the above example, {{subdomain}} would be “customer” and {{domain}} would be “rest.of.url.com”

Base URL

The API uses the following base URL for all of its API requests

https://{{subdomain}}.{{domain}}/apps/api/v1

where a mention to “/calls” means https://{{subdomain}}.{{domain}}/apps/api/v1/calls

Rate Limits

The system limits requests to a rate of 1 request per second per customer.

Calls Endpoints 8

A call object is created for every single call that is made into, or out of the system.

  {
    "id": 0,
    "parent_id": 0,
    "lang": "en",
    "call_type": "Voice Scheduled (API)",
    "status": "scheduled",
    "created_at": "2018-06-07T19:49:52.896Z",
    "queued_at": "2018-06-07T19:49:52.896Z",
    "assigned_at": "2018-06-07T19:49:52.896Z",
    "connected_at": "2018-06-07T19:49:52.896Z",
    "ends_at": "2018-06-07T19:49:52.896Z",
    "scheduled_at": "2018-06-07T19:49:52.896Z",
    "wait_duration": 0,
    "call_duration": 0,
    "hold_duration": 0,
    "rating": 0,
    "has_feedback": true,
    "voip_provider": "voip_provider_twilio",
    "out_ticket_id": "string",
    "out_ticket_url": "string",
    "verified": true,
    "recording_url": "string",
    "recording_permission": "not_asked",
    "voicemail_reason": "not_voicemail",
    "deflection": "no_deflection",
    "disconnected_by": "disconnected_by_unknown",
    "fail_details": "string",
    "fail_reason": "nothing",
    "support_number": "string",
    "selected_menu": {
      "id": 0,
      "name": "string",
      "parent_id": 0,
      "position": 0,
      "deleted": true,
      "hidden": "string",
      "menu_type": "ivr_menu",
      "output_msg": "string"
    },
    "menu_path": {
      "items_count": 0,
      "name": "string",
      "materialized_path": "string"
    },
    "agent_info": {
      "id": 0,
      "name": "string",
      "last_name": "string",
      "first_name": "string",
      "agent_number": "string",
      "avatar_url": "string"
    },
    "end_user": {
      "id": 0,
      "identifier": "string",
      "out_contact_id": "string"
    },
    "photos": [
      {
        "id": 0,
        "photo_type": "photo",
        "url": "string"
      }
    ],
    "videos": [
      {
        "id": 0,
        "url": "string"
      }
    ],
    "transfers": [
      {
        "id": 0,
        "status": "transferring",
        "fail_reason": "nothing",
        "created_at": "2018-06-07T19:49:52.896Z",
        "from_menu": {
          "items_count": 0,
          "name": "string",
          "materialized_path": "string"
        },
        "to_menu": {
          "items_count": 0,
          "name": "string",
          "materialized_path": "string"
        },
        "from_agent": {
          "id": 0,
          "name": "string",
          "last_name": "string",
          "first_name": "string",
          "agent_number": "string",
          "avatar_url": "string"
        },
        "to_agent": {
          "id": 0,
          "name": "string",
          "last_name": "string",
          "first_name": "string",
          "agent_number": "string",
          "avatar_url": "string"
        }
      }
    ],
    "participants": [
      {
        "id": 0,
        "type": "end_user",
        "status": "waiting",
        "call_id": 0,
        "user_id": 0,
        "end_user_id": 0,
        "call_duration": 0,
        "hold_duration": 0,
        "connected_at": "2018-06-07T19:49:52.896Z",
        "ended_at": "2018-06-07T19:49:52.896Z",
        "fail_reason": "nothing"
      }
    ]
  }
]

The status field can be in any of the following states

Call StatusDescription
SelectingState that occurs when an end user has called into the contact center, but is still navigating the menu options prior to being placed in a leaf menu.
QueuedState that occurs after the end user has selected a leaf menu node and initiated a call request to be deltcasted or multicasted to an agent.
AssignedState that occurs when an agent is selected to receive the end user call. This occurs when a call is picked up by an agent.
ConnectingState that occurs after an agent is assigned, and a connection is being established between the end user and the agent.
ConnectedState that occurs when the call has established a connection and the agent and end user are both placed into a call.
FinishedState that occurs when a call ends after it has been connected.
FailedState that occurs when a call ends before it was successfully connected. A fail reason will also be provided for additional details.
SwitchingState that occurs when a call fails while trying to connect and the system attempts to connect the call with a different VOIP provider.
RecoveredState that occurs when a failed call is called back. This new call is a child to the original call. Recovered notes that the call back is finished without error.
ScheduledState that occurs when an end user has scheduled a future call via In-Web or In-App.
Action OnlyState that occurs when a call that is handled by our client’s own telephony provider is connected to our iOS or Android SDK.
Action Only FinishedState that occurs when a call that is handled by our client’s own telephony provider is connected to our iOS or Android SDK and finishes
DeflectedState that occurs based on the configuration for overcapacity queues or after hour calls. Deflection options include voicemail, schedule call among others. Deflection will vary based on channel (In-app, IVR, In-web)
VoicemailState that occurs when an end user is deflected to a voicemail option, and opts to leave a voicemail message to listened to later. This state is present when the end user is leaving the voicemail
Voicemail ReceivedState that occurs after an end user has left a voicemail and an agent has not listened to the voicemail
Voicemail ReadState that occurs when an agent has opened the voicemail to listen to.

The call_type field can only be one of the following values

Call TypeDescription
Voice Outbound (API)Call made from Outbound Call API.
Voice Inbound (API)Call made from Incoming Call API.
Voice Scheduled (API)Call made from Scheduled Call API.

The following are the most common API Responses:

Response CodeMeaning
201The API request has been successful and will create a call
202The API request has been successful, but manual intervention is required inside of the widget to complete the action
400invalid call type - ensure call_type is supported
400Agent is not available to take this call
400Missing parameter - check to ensure that the required parameters have been added
404Resource not found - Please check your subdomain
Description

ParameterRequiredData TypeDefinitionPostman Variable
call_typeTRUEStringCall type to create. “Voice Outbound (API)”, “OutboundCall” (deprecated) are available for nowVoice Outbound (API)
menu_idFALSEString / IntegerSelected menu id for outbound call to grab settings from queue instead of global settings
agent_emailTRUEStringEmail address for the agent who will be assigned to the outbound call.{{agent_email}}
ticket_idFALSEStringCRM ticket ID and it will dial to the end user who is tied to the ticket.{{ticket_id}}
end_user_numberFALSEStringEnd user phone number which will be dialing. ticket_id has a higher priority than end_user_number.{{end_user_number}}
outbound_numberFALSEStringWell-formed outbound number which is managed from Settings > Phone Numbers > Phone Number Management. Default outbound number will be used when empty{{outbound_number}}
langFALSEStringLanguage of the call. Uses ISO 639-1 codes. (Default: “en”){{lang}}


Headers
KeyValueDescription
Content-Typeapplication/json
Body
{ "call_type": "Voice Outbound (API)", "menu_id": 11, "agent_email": "agent@somedomain.com", "outbound_number": "+1 760-867-5309", "end_user_number": "123123", "lang": "en" }

Description

ParameterRequiredData TypeDefinitionPostman Variable
call_typeTRUEStringCall type to create. “Voice Outbound (API)”, “OutboundCall” (deprecated) are available for nowVoice Outbound (API)
menu_idFALSEString / IntegerSelected menu id for outbound call to grab settings from queue instead of global settings
agent_emailTRUEStringEmail address for the agent who will be assigned to the outbound call.{{agent_email}}
ticket_idFALSEStringCRM ticket ID and it will dial to the end user who is tied to the ticket.{{ticket_id}}
end_user_numberFALSEStringEnd user phone number which will be dialing. ticket_id has a higher priority than end_user_number.{{end_user_number}}
outbound_numberFALSEStringWell-formed outbound number which is managed from Settings > Phone Numbers > Phone Number Management. Default outbound number will be used when empty{{outbound_number}}
langFALSEStringLanguage of the call. Uses ISO 639-1 codes. (Default: “en”){{lang}}


Headers
KeyValueDescription
Content-Typeapplication/json
Body
{ "call_type": "Voice Outbound (API)", "menu_id": 11, "agent_email": "allen@somedomain.com", "outbound_number": "+1 760-867-5309", "ticket_id": "123123", "lang": "en" }

Description

ParameterRequiredData TypeDefinitionPostman Variable
call_typeTRUEStringCall type to create. Use “Voice Inbound (API)” or “IncomingCall” (deprecated) to create an incoming call.Voice Inbound (API)
menu_idTRUEIntegerThe ID of the menu to attribute the call to. Only IVR and Web menu IDs are accepted.{{menu_id}}
end_user_numberTRUEStringThe end user phone number that will be dialed. If both a ticket_id and end_user_number are passed in, the ticket_id will take precedence.{{end_user_number}}
langFALSEStringLanguage of the call. Uses ISO 639-1 codes. (Default: “en”){{lang}}
ticket_idFALSEStringCRM ticket ID. The end user phone number tied to the ticket will be dialed. If both a ticket_id and end_user_number are passed in, the ticket_id will take precedence.{{ticket_id}}
outbound_numberFALSEStringThe outbound phone number to be used for the call. The default global outbound phone number will be used if input is not passed in or invalid. Outbound numbers are managed from Settings > Queue > EDIT / VIEW > Select a queue > Outbound Phone Numbers.{{outbound_number}}
recording_permissionFALSEStringThe value is only evaluated if the “Call Recording Options” feature is set to “Ask User for Permission to Record”. Configurable at Settings > Queue > EDIT / VIEW > Select a queue > Call Recording Options. If the value is either “recording_permission_not_asked” (default) or “recording_permission_denied”, the call will not be recorded. If the value is “recording_permission_granted”, the call will be recorded.{{recording_permission}}


Headers
KeyValueDescription
Content-Typeapplication/json
Body
{ "call_type": "Voice Inbound (API)", "lang": "en", "menu_id": 9, "ticket_id": "76517", "end_user_number": "+1 859-657-9625", "recording_permission": "recording_permission_granted" }

Description

ParameterRequiredData TypeDefinitionPostman Variable
call_typeTRUEStringCall type to create. Use “Voice Scheduled (API)” or “ScheduledCall” (deprecated) to create an scheduled call.Voice Scheduled (API)
menu_idTRUEIntegerThe ID of the menu to attribute the call to. Only Mobile and Web menu IDs are accepted.{{menu_id}}
call_idFALSEIntegerCall ID of previous call, which will be linked as the parent call of the new created scheduled call. When call ID is being used, menu_id can be optional.{{call_id}}
end_user_numberTRUEStringThe end user phone number that will be dialed. If both a ticket_id and end_user_number are passed in, the ticket_id will take precedence.{{end_user_number}}
langFALSEStringLanguage of the call. Uses ISO 639-1 codes. (Default: “en”){{lang}}
ticket_idFALSEStringCRM ticket ID. The end user phone number tied to the ticket will be dialed. If both a ticket_id and end_user_number are passed in, the ticket_id will take precedence.{{ticket_id}}
scheduled_atTRUEStringScheduled time of the call. Uses ISO 8601 format to a valid future time.{{scheduled_at}}
recording_permissionFALSEStringThe value is only evaluated if the “Call Recording Options” feature is set to “Ask User for Permission to Record”. Configurable at Settings > Queue > EDIT / VIEW > Select a queue > Call Recording Options. If the value is either “recording_permission_not_asked” (default) or “recording_permission_denied”, the call will not be recorded. If the value is “recording_permission_granted”, the call will be recorded.{{recording_permission}}


Headers
KeyValueDescription
Content-Typeapplication/json
Body
{ "call_type": "Voice Scheduled (API)", "lang": "en", "menu_id": 9, "ticket_id": "76517", "end_user_number": "+1 859-657-9625", "scheduled_at": "2019-09-15T00:19:14.421Z", "recording_permission": "recording_permission_granted" }

Description

Used to update the end_user associated with the current active call session. Additionally, it also updates the contact information linked to the CRM ticket. _Identifier is required, while name, email, and phone are optional. Note: If a phone number is already set, providing a phone parameter will not update the phone number.

Headers
KeyValueDescription
Content-Typeapplication/json
URL Variables
KeyValueDescription
call_id
Body
{ "identifier": "string", "name": "string", "email": "string", "phone": "string" }

URL Variables
KeyValueDescription
idinteger

(Required)

Body
{ "verified_customer": "boolean", "bad_actor": "boolean", "repeat_customers": "boolean" }
URL Variables
KeyValueDescription
idinteger

(Required)

Body
{ "verified_customer": "boolean", "bad_actor": "boolean", "repeat_customers": "boolean" }
URL Variables
KeyValueDescription
idinteger

(Required)


SMS 1

Description

ParameterRequiredData TypeDefinitionPostman Variable
chat_typeTRUEStringChat type to create. “Messaging (API)”, “SMS” (deprecated) are available for nowMessaging (API)
end_user_numberTRUEStringNumber the text message is to be sent to{{end_user_number}}
outbound_numberTRUEStringOutbound phone number to be used for sending the SMS message{{outbound_number}}
messageTRUEStringSMS message to be sent to consumer{{message}}
ticket_idFALSEStringCRM ticket ID that will be associated with session{{ticket_id}}


Headers
KeyValueDescription
Content-Typeapplication/json
Body
{ "chat_type": "Messaging (SMS)", "end_user_number": "+1 415-555-0100", "outbound_number": "+1 628-555-0199", "message": "lorem ipsum", "ticket_id": "5006x00000XXxxxXXX" }

Wait Times 2

Description

ParameterRequiredData TypeDefinitionPostman Variable
langTRUEStringLanguage code of the queue. (e.g. ‘en’){{lang}}
menu_idFALSEIntegerResponse will filter all menus in that menu’s subtree, including that menu.{{menu_id}}
menu_typeFALSEStringReturns menus of specific types. Possible values: ivr_menu, mobile_menu, web_menu).{{menu_type}}
channel_typeFALSEStringReturns menus of a specific channel. Possible values: voice_call, chat).{{channel_type}}
wait[from]FALSEIntegerReturns records if they have a wait greater than the value.{{wait[from]}}
wait[to]FALSEIntegerReturns records if they have a wait less than the value.{{wait[to]}}


Headers
KeyValueDescription
Content-Typeapplication/json

Description

ParameterRequiredData TypeDefinitionPostman Variable
langTRUEStringLanguage code of the queue. (e.g. ‘en’){{lang}}
menu_idFALSEIntegerResponse will filter all menus in that menu’s subtree, including that menu.{{menu_id}}
menu_typeFALSEStringReturns menus of specific types. Possible values: ivr_menu, mobile_menu, web_menu).{{menu_type}}
channel_typeFALSEStringReturns menus of a specific channel. Possible values: voice_call, chat).{{channel_type}}
wait[from]FALSEIntegerReturns records if they have a wait greater than the value.{{wait[from]}}
wait[to]FALSEIntegerReturns records if they have a wait less than the value.{{wait[to]}}


Headers
KeyValueDescription
Content-Typeapplication/json
Body
{ "call_id" : "1917", "agent_id" : "1", "lcm_key" : "2922|1|2|39|2|0|1", "dnis" : "8001992999", "org_id" : "tenant1", "contact" : { "first_name" : "Alex", "last_name" : "Phil", "account_no" : "10002-2989", "crm_id" : "220-39307-92", "address" : "", "city" : "", "loan_type" : "", "due_date" : "" }, "pacing_mode" : "Predictive", "call_type" : "OB_Regular" }

Bulk User Management 7

Create/Update a large number of users through the Bulk User Management collection.

Supports JSON files. Sample json data can be obtained through the Template API.

Only api_user authentication is supported. You must enter the api user token in the password variable. Lagacy authentication(using a company secret) is not supported.

When a JSON file is uploaded through the upload API, a job is created and validates the json file scheme.

The JSON file format is shown below and also can be checked through the GET Template API.

Field(s) nameValuesRequiredValidation
emailString(Email)YesMust be a valid email. Must be unique within the file within Email column (no duplicates). so only 1 update per email address per file
new_emailString(Email)NoMust be a valid email. Must be unique within the file within New Email column (no duplicates). so only 1 update per email address per file
agent_numberStringNoA string with no validation
first_nameStringYesNon-empty string
last_nameStringYesNon-empty string
statusActive, Inactive, EmptyNoMust be “Active”, “Inactive”, or empty
locationA string that is a location name, Empty, NullNoMust exactly match one of the existing locations (case-insensitive), or Null, or empty
max_chat_limit1 to X (where X is configured value), EmptyNoMust be 1 to X (inclusively), or empty
max_chat_limit_enabled0, 1, EmptyNoMust be 0, 1 or empty
rolesname: Role name / value: 0, 1, EmptyNoMust be 0, 1 or empty
teamsname: Team name / value: 0, 1, EmptyNoMust be 0, 1 or empty

When the scheme check is successful, the Proceed API can be executed, and user creation/modification work is in progress.

Upload and Proceed are asynchronously performed by the worker, and you can check the status through the Job API with a job_id.

The status field of Job can be in any of the following states.

Job statusDescription
createdA job is created and waiting for validation.
valid_schemeScheme validation is successful and proceed is possible.
invalid_schemeScheme validation failed. Detailed information can be checked through the Scheme error log API.
in_progressPerforming bulk user update/create.
finishedBulk user update/create complete.


Body
KeyValueDescription
file

Body
KeyValueDescription
id{{job_id}}
file

Body
KeyValueDescription
id{{job_id}}



Campaign Endpoints 7

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.

Currently, the campaign endpoints allow users to add, update, and delete contacts of an existing campaign. In future releases, the campaign endpoints will allow users to create, edit and delete campaigns.

[
   {
        "assigned_call_id": 32001,
        "assigned_participant_id": 54321,
        "campaign_id": 240,
        "created_at": "2023-04-01T17:15:38.000Z",
        "id": 16312,
        "name": "string",
        "outbound_number": null,
        "priority": null,
        "status": "Upcoming",
        "unique_id": "string",
        "updated_at": "2023-04-01T17:15:38.000Z"
    },
    {
        "assigned_call_id": 32002,
        "assigned_participant_id": 54330,
        "campaign_id": 240,
        "created_at": "2023-04-01T17:15:38.000Z",
        "id": 16313,
        "name": "string",
        "outbound_number": null,
        "priority": null,
        "status": "Finished",
        "unique_id": "string",
        "updated_at": "2023-04-01T17:25:00.000Z"
    }
]

The status field can be in any of the following states

Campaign Contact StatusDescription
UpcomingContact is next to be dialed.
DialingContact is right now being dialed.
QueuedCall for a given contact is queued.
ConnectedContact is connected with an agent.
FinishedCall has completed.
TransferredCall has been transferred.
Transferred and FinishedCall has been transferred and then completed.
Not Picked UpNo answer from end user or never reached the end user.
Not Reached to ContactCall never reached the contact .
Abandoned by ContactFor preview, end user hangs up before connected to an agent.

For both progessive and predictive, end user hangs up the call within 5 seconds after connecting to the agent.
SkippedContact has been skipped by agent and will be available to be connected to another agent.
Skipped & ClosedOn Preview, agent skips and close a contact. This contact should now be always skipped in this campaign.
Invalid NumberContact with invalid phone number.
Carrier ErrorThis error is driven by carrier.
Abandoned by DialerContact has been abandoned by dialer.
Voicemail Hung UpOn Predictive, the dialer determines the end user is a machine (ie. voicemail).
Dialer General ErrorCall failed due to dialer error.
Redial ScheduledTemporary status. Redial scheduled in the future.
Do Not CallThe number was in Do-Not-Call number list.
Invalid Outbound NumberContact with invalid outbound number.
Blocked Phone NumberContact with invalid/blocked international number.
Body
{ "name": "string", "email": "customer@somedomain.com", "phone_number": "+1 111-111-1111", "outbound_number": "+1 760-867-5309", "external_unique_id": "UID_123456" }
Body
KeyValueDescription
filesome/path/to/multi_contacts.json

Body


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

Agent Status Endpoints 4

Agent Status Endpoint
The Agent Status endpoint allows you to modify the status of agents. It enables changes to and from ‘Available’ to any custom status. Transitions to and from system-defined statuses like ‘In-Call’ will trigger an error. Additionally, this endpoint supports bulk updates, allowing status modifications for entire teams or selected groups of agents simultaneously.
Force Logout Agents Endpoint
The Force Logout Agents endpoint provides the functionality to forcibly log out online agents. Agents engaged in active calls or chats will be logged out automatically upon the completion of their current interactions, whereas idle agents are logged out immediately. This endpoint supports forced logouts of specific agents, entire teams, or agents identified by IP addresses with CIDR notation, a list of IPv4/IPv6 addresses, or IP ranges (see the request examples). For a large number of agents, a background job is created to manage the logout process efficiently.

Headers
KeyValueDescription
Content-Typeapplication/json
Body
{ "status": "Available", "agent_ids": [11, 12], "team_ids": [] }

Headers
KeyValueDescription
Content-Typeapplication/json
Body
{ "agent_ids": [11, 12], "team_ids": [1], "ip_addrs": ["34.211.11.0/24"] }

Headers
KeyValueDescription
Content-Typeapplication/json
Body
{ "agent_ids": [11, 12], "team_ids": [1] }

URL Variables
KeyValueDescription
id

End Users 2

Description

Creates or updates an end user based on a given identifier

Headers
KeyValueDescription
Content-Typeapplication/json
Acceptapplication/json
Body
{ "identifier": "string", "email": "string", "name": "string", "phone": "string" }

Description

Get End User external identifier and internal ID, given one of the fields

Headers
KeyValueDescription
Acceptapplication/json
Query
KeyValueDescription
idinteger

Internal ID for the End User

identifierstring

External identifier for the End User


Chats 18

Headers
KeyValueDescription
Content-Typeapplication/json
Acceptapplication/json
URL Variables
KeyValueDescription
idinteger

(Required)

Body
{ "finished_by_user_id": "integer", "chat": { "deflection_channel": "string", "status": "string", "escalation_id": "integer" } }

Description

If a chat has been dismissed for inactivity, an end user may resume the same chat. Chat status must be “dismissed” or “va_dismissed”

Headers
KeyValueDescription
Acceptapplication/json
URL Variables
KeyValueDescription
idinteger

(Required)


Description

Send a message in a chat.

Headers
KeyValueDescription
Content-Typeapplication/json
URL Variables
KeyValueDescription
idinteger

(Required)

Body
{ "from_user_id": "integer", "message": { "type": "string", "content": "string", "media_id": "string" } }

Description

Escalate a chat from a Virtual Agent to a Human Agent

Headers
KeyValueDescription
Content-Typeapplication/json
Acceptapplication/json
URL Variables
KeyValueDescription
chat_idinteger

(Required) Chat ID to escalate

Body
{ "reason": "string", "force_escalate": "boolean" }

Description

Used only for selecting deflection channel currently.

Headers
KeyValueDescription
Content-Typeapplication/json
Acceptapplication/json
URL Variables
KeyValueDescription
chat_idinteger

(Required)

idinteger

(Required)

Body
{ "deflection_channel": "string" }

Description

Add a photo that has been uploaded to media storage to a chat

Headers
KeyValueDescription
Content-Typeapplication/json
Acceptapplication/json
URL Variables
KeyValueDescription
chat_idinteger

(Required)

Body
{ "photo": [ { "s3_path": "string", "photo_type": "string" }, { "s3_path": "string", "photo_type": "string" } ] }

Description

Retrieves media ID’s and storage url’s for all photos attached to the chat

Headers
KeyValueDescription
Acceptapplication/json
URL Variables
KeyValueDescription
chat_id

Description

Used for fetching a presigned upload URL

Headers
KeyValueDescription
Acceptapplication/json
URL Variables
KeyValueDescription
chat_idinteger

(Required)


Description

Add a video that has been uploaded to media storage to a chat

Headers
KeyValueDescription
Content-Typeapplication/json
URL Variables
KeyValueDescription
chat_idinteger

(Required)

Body
{ "video": { "s3_path": "string" } }

Description

Retrieves media ID’s and storage url’s for all videos attached to the chat

Headers
KeyValueDescription
Acceptapplication/json
URL Variables
KeyValueDescription
chat_id

Description

Used for fetching a presigned upload URL for the company’s configured cloud storage service

Headers
KeyValueDescription
Acceptapplication/json
URL Variables
KeyValueDescription
chat_idinteger

(Required)


Description

Start a new chat

Headers
KeyValueDescription
Content-Typeapplication/json
Acceptapplication/json
Body
{ "chat": { "menu_id": "integer", "end_user_id": "integer", "lang": "string", "email": "string", "context": "object", "transcript": "object" } }

Headers
KeyValueDescription
Acceptapplication/json
URL Variables
KeyValueDescription
idinteger

(Required)


Headers
KeyValueDescription
Acceptapplication/json
URL Variables
KeyValueDescription
idinteger

(Required)


URL Variables
KeyValueDescription
idinteger

(Required)

Body
{ "verified_customer": "boolean", "bad_actor": "boolean", "repeat_customers": "boolean" }
URL Variables
KeyValueDescription
idinteger

(Required)

Body
{ "verified_customer": "boolean", "bad_actor": "boolean", "repeat_customers": "boolean" }
Description

Send custom data in a chat

Headers
KeyValueDescription
Content-Typeapplication/json
URL Variables
KeyValueDescription
id

(Required)

Body
// Use unsecured parameter { "signed": false, "data": { // Start customer_flag fields "reserved_verified_customer": { "label": "LABEL 1", "value": true }, "reserved_bad_actor": { "label": "LABEL 2", "value": false }, "reserved_repeat_customer": { "label": "LABEL 3", "value": true }, // End customer_flag fields "field1": { "label": "LABEL 4", "value": "dummy1" }, "field2": { "label": "LABEL 5", "value": "dummy2" } } } // Use secured parameter // { // "signed": true, // "signed_data": "eyJhbGciOiJIUzI1NiJ9.eyJjdXN0b21fZGF0YSI6eyJyZXNlcnZlZF92ZXJpZmllZF9jdXN0b21lciI6eyJ2YWx1ZSI6ZmFsc2V9LCJyZXNlcnZlZF9iYWRfYWN0b3IiOnsidmFsdWUiOnRydWV9LCJyZXNlcnZlZF9yZXBlYXRfY3VzdG9tZXIiOnsidmFsdWUiOmZhbHNlfSwiZmllbGQxIjp7InZhbHVlIjoiZHVtbXkxMTEifSwiZmllbGQyIjp7InZhbHVlIjoiZHVtbXkyMjIifX0sImV4cCI6MTcyOTY4MzU5MywiaWF0IjoxNzI5Njc5OTkzfQ.BMskgKTM3DbgrMLWjI46ZJ1K73H25JRd16SgHK0A1Ts" // } // ======================= How to create <signed_data> ======================= // payload = { // "custom_data": { // // Start customer_flag fields // "reserved_verified_customer": { // "label": "LABEL 1", // "value": true // }, // "reserved_bad_actor": { // "label": "LABEL 2", // "value": false // }, // "reserved_repeat_customer": { // "label": "LABEL 3", // "value": true // }, // // End customer_flag fields // "field1": { // "label": "LABEL 4", // "value": "dummy1" // }, // "field2": { // "label": "LABEL 5", // "value": "dummy2" // } // }, // "exp": 1734567890, // expiration timestamp // "iat": 1734560000 // issue timestamp // } // signed_data = JWT.encode(payload, 'Company secret', 'HS256') // ======================= End how to create <signed_data> =======================

Description

Used to update the end_user associated with the current active chat session. Additionally, it also updates the contact information linked to the CRM ticket. _Identifier is required, while name, email, and phone are optional. Note: If a phone number is already set, providing a phone parameter will not update the phone number.

Headers
KeyValueDescription
Content-Typeapplication/json
URL Variables
KeyValueDescription
chat_id
Body
{ "identifier": "string", "name": "string", "email": "string", "phone": "string" }

Company Do Not Call List 3

The Company DNC (Do Not Call) list will allow blocking direct, manual, outbound calls as well as outbound and scheduled calls created by the Apps API depending on configuration.

Currently, the Company DNC endpoints allow users to:

  • add multiple phone numbers to the DNC list

  • remove phone numbers from the DNC list

  • check whether a phone number is in the DNC list



Query
KeyValueDescription
phone_number{{$randomPhoneNumber}}

Queue Status Endpoints 1

Queue Status Endpoint: Provides the status of a specific queue, allowing you to check the queue’s status before deflection.

Description

Fetches availability information for a specific queue.

Headers
KeyValueDescription
Content-Typeapplication/json
Acceptapplication/json
Query
KeyValueDescription
menu_id{{menu_id}}

(integer, required) The ID of the menu to fetch availability for.

lang{{lang}}

(string, required) The language code (e.g., ‘en’)

channel_type{{channel_type}}

(string, required) The channel type, either call or chat.


Export - Import Queues Settings 7

The Download queues setting allows you to download a particular version history item by including the version history ID in the endpoint.

The Export queues settings allows you to create a json or zip file containing queue selections, audio files, chat shortcuts and contact lists.

The Retrieve version histories list allows you to retrieve the list of version history items for a specific tenant.

The Retrieve a specific history by ID setting allows you to use the specific ID of a single version history entry by including the version ID in the endpoint.

The Import queues setting allows you to import a json or zip file containing queue selections, audio files, chat shortcuts, and contact lists.

The Create an auto_saved version history setting allows you to generate an autosave of an existing queue in the version history without creating an export.

The Restore version history setting allows you to restore your version to a previous version ID or the last saved version.

Description

The Download queues setting allows you to download a particular version history item by including the version history ID in the endpoint.

Headers
KeyValueDescription
Content-Typeapplication/json

The media type of the resource.

URL Variables
KeyValueDescription
idinteger

(Required) Version history ID

Description

The Export queues settings allows you to create a json or zip file containing queue selections, audio files, chat shortcuts and contact lists.

Headers
KeyValueDescription
Content-Typeapplication/json

The media type of the resource.

Query
KeyValueDescription
export_audio_filesfalse

(Required) Export file containing audio files.

export_attached_filesfalse

(Required) Export file containing attached files.

Description

The Retrieve version histories list allows you to retrieve the list of version history items for a specific tenant.

Headers
KeyValueDescription
Content-Typeapplication/json

The media type of the resource.

Description

The Retrieve a specific history by ID setting allows you to use the specific ID of a single version history entry by including the version ID in the endpoint.

Headers
KeyValueDescription
Content-Typeapplication/json

The media type of the resource.

URL Variables
KeyValueDescription
idinteger

(Required) Version history ID

Description

The Import queues setting allows you to import a json or zip file containing queue selections, audio files, chat shortcuts, and contact lists.

Body
KeyValueDescription
filepath/import.json

(Required) A ZIP or JSON file needs to be imported.

email{{email_address}}

(Required) The email address of the User.

Description

The Create an auto_saved version history setting allows you to generate an autosave of an existing queue in the version history without creating an export.

KeyValueDescription
export_audio_filesfalse(Required) Export file containing audio files.
export_attached_filestrue(Required) Export file containing attached files.


Body
{ "export_audio_files": false, "export_attached_files": true }
Description

The Restore version history setting allows you to restore your version to a previous version ID or the last saved version.

KeyValueDescription
idIDVersion history ID
email{{email_address}}(Required) The email address of the User.
revisione8a11621-50a2-41b0-9152-0a15c3a8391aVersion History Identifier for restoration


Body
{ "id": "integer", "email": "string", "revision": "string" }

Contact Lists 6

The API user is able to:

  • manage Contact lists via API

    • create a Custom Contact List

    • edit a Custom Contact List

    • delete a Custom Contact List

  • manage custom and global Contact List entries

    • add entries

    • edit entries

    • delete entries


URL Variables
KeyValueDescription
idinteger

The ID of updating contact list


URL Variables
KeyValueDescription
idinteger

The ID of deleting contact list


URL Variables
KeyValueDescription
contact_list_idinteger

The ID of selected contact list


URL Variables
KeyValueDescription
contact_list_idinteger

The ID of contact list

idinteger

The ID of updating contact record


URL Variables
KeyValueDescription
contact_list_idinteger

The ID of contact list

idinteger

The ID of deleting contact record


Queue Operation Statuses 1

Query
KeyValueDescription
menu_idInterger

(Required) The ID of the menu to fetch availability for

langstring

(Required) The language code (e.g., “en”)

channel_typestring

(Required) The channel type, either call or chat


Users 1

Users Endpoints provide a means to get user objects. Each user object represents a single user inside of our platform. Please review the model below to see which fields may be considered PII.

Default page size is 100 if no page parameters are sent.

{
      "id": 1,
      "email": "string", //This may be considered PII
      "first_name": "string", //This may be considered PII
      "last_name": "string", //This may be considered PII
      "agent_number": "string",
      "location": "string",
      "max_chat_limit": 5,
      "max_chat_limit_enabled": false,
      "unrestricted_international_calling": true,
      "deactivated_at": "2018-05-30T20:46:31.333Z",
      "ucaas_user_name": "string",
      "ucaas_sip_uri": "string",
      "external_user": false,
      "phone_numbers": ["string"],
      "extension_numbers": [
          0
      ],
      "teams": [
          {
              "name": "string"
          }
      ],
      "roles": [
          {
              "name": "string"
          }
      ]
  }

Response CodeMeaning
200The API request has been successful
400Invalid page size request - check to ensure the max page size is a valid integer less than 1000
400Cannot paginate filtered results - ensure that you are not using a filter and pagination parameters
400Only one filter should be configured at a time
400Ensure you are not filtering more than 1000 values at a time
Description

ParameterRequiredData TypeDefinitionPostman Variable
pageFALSEStringPairs with per to note what page of records. For instance if per is made to be 200 and page is 2, the response would contain record 201-400, as page 1 would contain 1-200.{{page}}
perFALSEStringPairs with page to note how many records would be included in a page of records. For instance if per is made to be 200 and page is 2, the response would contain record 201-400, as page 1 would contain 1-200.{{per}}
id[]FALSEArray[String]Array[Strings]. Id of records to search and return{{id[]}}
agent_number[]FALSEArray[String]Agent numbers as assigned by the admin at the time of creating an agent{{agent_number[]}}
status_id[]FALSEArray[String]Filters by agent status{{status_id[]}}
online[]FALSEBooleanFilter by if agents are online or not{{online[]}}
wrap_up[]FALSEBooleanFilter by if agents are in wrap up status{{wrap_up[]}}
location[]FALSEArray[String]Filters by agent location{{location[]}}
last_login_time[from]FALSETime in UTCcreates a lower bound of the last login time field. All records returned will be after the inputted value.{{last_login_time[from]}}
last_login_time[to]FALSETime in UTCcreates a upper bound of the last login time field. All records returned will be before the inputted value.{{last_login_time[to]}}
status_updated_at[from]FALSETime in UTCcreates a lower bound of the status updated at field. All records returned will be after the inputted value.{{status_updated_at[from]}}
status_updated_at[to]FALSETime in UTCcreates a upper bound of the status updated at field. All records returned will be before the inputted value.{{status_updated_at[to]}}



Calls 1

Description

Send a custom data in a call.

Headers
KeyValueDescription
Content-Typeapplication/json
URL Variables
KeyValueDescription
id

(Required)

Body
// Use unsecured parameter { "signed": false, "data": { // Start customer_flag fields "reserved_verified_customer": { "label": "LABEL 1", "value": true }, "reserved_bad_actor": { "label": "LABEL 2", "value": false }, "reserved_repeat_customer": { "label": "LABEL 3", "value": true }, // End customer_flag fields "field1": { "label": "LABEL 4", "value": "dummy1" }, "field2": { "label": "LABEL 5", "value": "dummy2" } } } // Use secured parameter // { // "signed": true, // "signed_data": "eyJhbGciOiJIUzI1NiJ9.eyJjdXN0b21fZGF0YSI6eyJyZXNlcnZlZF92ZXJpZmllZF9jdXN0b21lciI6eyJ2YWx1ZSI6ZmFsc2V9LCJyZXNlcnZlZF9iYWRfYWN0b3IiOnsidmFsdWUiOnRydWV9LCJyZXNlcnZlZF9yZXBlYXRfY3VzdG9tZXIiOnsidmFsdWUiOmZhbHNlfSwiZmllbGQxIjp7InZhbHVlIjoiZHVtbXkxMTEifSwiZmllbGQyIjp7InZhbHVlIjoiZHVtbXkyMjIifX0sImV4cCI6MTcyOTY4MzU5MywiaWF0IjoxNzI5Njc5OTkzfQ.BMskgKTM3DbgrMLWjI46ZJ1K73H25JRd16SgHK0A1Ts" // } // ======================= How to create <signed_data> ======================= // payload = { // "custom_data": { // // Start customer_flag fields // "reserved_verified_customer": { // "label": "LABEL 1", // "value": true // }, // "reserved_bad_actor": { // "label": "LABEL 2", // "value": false // }, // "reserved_repeat_customer": { // "label": "LABEL 3", // "value": true // }, // // End customer_flag fields // "field1": { // "label": "LABEL 4", // "value": "dummy1" // }, // "field2": { // "label": "LABEL 5", // "value": "dummy2" // } // }, // "exp": 1734567890, // expiration timestamp // "iat": 1734560000 // issue timestamp // } // signed_data = JWT.encode(payload, 'Company secret', 'HS256') // ======================= End how to create <signed_data> =======================

Available Variables 16

KeyValueType
subdomain
username
password
call_type
agent_email
ticket_id
end_user_number
outbound_number
lang
menu_id
wait[from]
wait[to]
channel_type
menu_type
recording_permission
job_id