Phonon | Outbound Multicast API Documentation


Background

The Central Outbound Multicast API allows you to send outbound communications to your customers on single or multiple channels including Calls, SMS and Email.

The API will log a request in one of the workflows created in your admin account. The request will be picked subsequently and executed.

Pre Requisites

  1. IP Whitelisting: IP must be whitelisted in the admin account.

  2. Checksum Check: Two request must have at-least one byte change in it. If two requests are same, you’ll get Checksum Repeated error.

Outbound Create Request API

Use this API to initiate an Outbound Flow request. In your Outbound Multicast Flow, you can configure your flow containing Call, SMS, Email or any combination of the same!

Before sending a request, make sure to whitelist the IP through which you send the API request in the whitelist section.

As of Jan, 2023, Bulk API Request end-point provides a different response. Please go through the notification for the same. It’s currently getting worked upon, and the document will get updated accordingly. Please refer to this notification for further details.

  1. For Bulk Requests - Where you need high through-put or uploading a large data.

    1. API End Point: https://central-api.phonon.io/kairos-apis/outbound/create

    2. Rate Limit: 30k per minute

Note : There is a 256KB limit on the API request body. In case a request is received which has a message body of size greater than 256 KB, the system will not process such a request.

Request Parameters:

URL

https://central-api.phonon.io/kairos-apis/outbound/create

Method

POST

Body

JSON

Headers

Content-Type: application/json

Auth

None

contact-numbers is a mandatory field, and hence, if you’re sending just an E-mail, configure a dummy number as the value.

Payload Schema:

{ "api-version": "1.0", // Fixed "security-id": "<64 character alphanumeric>", "flow-id": "<8 character alphanumeric>", "calls": [ { "client-identifier": "<identifier, callback parameter>", "start-time": "<ISO-8601 Format YYYY-MM-DDTHH:MM:SS+05:30", "contact-numbers": [ "918000XXXXXX", "918100XXXXXX", "<Other Alternate Numbers>" ], "keys": [ { "name": "$flow.key.Name", "value": "Abhinandan" }, { "name": "$flow.key.Language", "value": "English" }, { // Other flow variables } ] }, { // 2nd Call to be place } ] }

 

Sample Payload

{ "api-version": "1.0", "security-id": "a0095e7ac42205cb1388d7ac0d2db4afad1b5b2304907a27a6154bf93253088c", "flow-id": "wruHzoCK", "calls": [ { "client-identifier": "AcmeBankCampaign_001", "start-time": "2021-06-29T09:42:00+05:30", "contact-numbers": [ "916262772728" ], "keys": [ { "name": "$flow.key.LeadID", "value": "130586000000165414" }, { "name": "$flow.key.token", "value": "English" } ] } ] }

 

Request Parameters Explanation:

Parameter

Type

Var Type

Description

Sample Value

Parameter

Type

Var Type

Description

Sample Value

api-version

Mandatory

String

Use 1.0 to use the In production. This is fixed value.

1.0

security-id

Mandatory

String

64 character alphanumeric. Get the security ID from the ‘Edit Flow’ page of any Outbound Flow

a0095e7ac42205cb1388d7ac0d2db4afad1b5b2304907a27a6154bf93253088c

flow-id

Mandatory

String

Decides which Workflow the request needs to be logged. 8 character alphanumeric Flow ID. Get the Flow ID from the ‘Edit Flow’ page of any Outbound Flow

wruHzoCK

calls

Mandatory

Array

Array of call object. Each object will add one request. Maximum 10,000 records in one API call.

[{…},{…}]

calls[0].client-identifier

Mandatory

Any

Callback variable. You’ll get the same value back in response.

Any

calls[0].start-time

Optional

Datetime

ISO-8601 Timestamp. The format is YYYY-MM-DDTHH:MM:SS+05:30. The date cannot be from the past. If the time is of past (and the date is today) the flow will be initiated immediately.

If you omit it, the request will be executed immediately when picked up.

2021-06-29T09:42:00+05:30

calls[0].contact-numbers

Mandatory

Array

Array of comma separated contact number. Must have at least one. Contact number can be string or number.

Mobile numbers of the customer. You can provide alternate numbers of a customer and calls will be initiated to each number until one is connected in one attempt.

Prefer to keep mobile number as E.164 format. If 10 digits are provided, it defaults to India.

+916262772728

916262772728

6262772728

calls[0].keys

Mandatory

Array

Array of Flow Variables. There’s no limit on how many flow variables can be provided.

[]

keys[0].name

Optional

String

Name of flow variable.

"$flow.key.variable"

keys[0].value

Optional

String

Value of the above flow variable.

"Abhinandan"

As text:

  1. api-version: Use 1.0 to use the In production. This is fixed value.

  2. security-id: Get the security ID from the ‘Edit Flow’ page of any Outbound Flow

  3. flow-id: Get the 8 characters' alphanumeric Flow ID from the ‘Edit Flow’ page of any Outbound Flow

  4. calls: Array. Each element in the array represents one request. You can have up to 500 requests in one request.

    1. client-identifier: Callback variable to uniquely represent this request.

    2. start-time: ISO-8601 Timestamp. The format is YYYY-MM-DDTHH:MM:SS+05:30. The date cannot be from the past. If the time is of past (and the date is today) the flow will be initiated immediately.

    3. contact-numbers: Array. Mobile numbers of the customer. You can provide alternate numbers of a customer and calls will be initiated to each number until one is connected in one attempt.

    4. keys: Array of Flow Variables. There’s no limit on how many flow variables can be provided.

      1. "name": "$flow.key.<variable>": Name of flow variable.

      2. "value": "Abhinandan": Value of the above flow variable.

Response:

  1. Successful Response:
    Status Code: 200

    { "api-response-code": 200, "api-response-message": "Success", "request-id": "c46e46f4-dc58-4839-9483-f7dd9aac28a0", "call-details": [ { "client-identifier": "2021-04-28T03:48:07.110Z", "phonon-uuid": "501c78ee-8d06-498e-8952-fce3495f326b" } ] }

a. Request ID: Unique Identifier for the whole request.

b. Phonon UUID: Unique Identifier for each request.

2. Important Error Response:

{ "api-response-code": 500/401/201/202/301, "api-response-message": "Failure/IP Not Whitelisted/Checksum Repeated/Invalid Security ID/Invalid Flow ID", }
  1. IP Not Whitelisted 401: Please whitelist your IP in the Whitelist section.

  2. Checksum Repeated 201: You can trigger the same API payload more than once. Please change at least one parameter. (Date-time, client-identifier, etc.)

  3. Invalid Security ID 202: The security ID is invalid. Please check the endpoint and security ID.

  4. Invalid Flow ID 301: Flow ID is invalid. Please check the endpoint and Flow ID.

  5. Failure 500: Any Failure scenario.

3. All Error Codes:

Status Code

Status Message

Status Codename

Status Code

Status Message

Status Codename

1

400

Invalid Format

INVALID_FORMAT

2

201

Checksum Repeated

CHECKSUM_REPEATED

3

302

Empty Call List

EMPTY_CALL_LIST

4

500

Failure

FAILURE

5

301

Invalid Flow ID

INVALID_FLOW_ID

6

401

IP Not Whitelisted

IP_NOT_WHITELISTED

7

402

Phone Not Whitelisted

PHONE_NOT_WHITELISTED

8

202

Message Accepted

SUCCESS

9

200

Success

SUCCESS

10

203

API Version not Supported

INVALID_API_VERSION

11

204

Invalid SMS Gateway

INVALID_GATEWAY_ID

12

205

Invalid Contact Number

INVALID_CONTACT_NUMBER

13

206

Failure from Gateway

FAILURE_FROM_GATEWAY

14

207

DID Not Mapped

DID_NOT_MAPPED

15

208

No Mask Available

NO_MASK_AVAILABLE

16

209

Partial Success

PARTIAL_SUCCESS

17

210

Invalid Mandatory Parameters

INVALID_MANDATORY_PARAMETERS

18

303

Max Data List Size Exceeded

MAX_DATA_LIST_SIZE_EXCEEDED

19

211

Validity Expired

VALIDITY_EXPIRED

20

212

Insufficient Balance

INSUFFICIENT_BALANCE

21

304

Invalid Flow Version

INVALID_FLOW_VERSION

22

213

No Data Available

NO_DATA_AVAILABLE

 

FAQs:

How to get the status of the request?

You can check the request for the API by:

  1. Using the Pull API - Using Phonon UUID | API Documentation using Phonon UUID or Request ID to pull the status of the request.

  2. Using End Call Webhook Push - which can push various details after every workflow (call / sms / email) execution to an external webhook end point.

  3. Using EOD or On Demand Reports.

  4. Using Summary Dashboards.

 

This document has been developed by Phonon.io for the sole and exclusive use of the customer / prospective customer with whom this document is being shared. Further, this document has been provided by Phonon.io to the recipient in good faith and based on request from the recipient for the same. This document is a confidential document and contains confidential product technology, workflow and commercial details that are for the sole usage of the intended recipients of this document. Recipients are advised not to share this document with any third party that is not the intended recipient of this document and neither to bring this document in full or parts into the public domain. Any unauthorized access may be brought to Phonon.io’s notice immediately. Phonon.io is free to take any legal action it deems necessary against any person or entity that violates this confidentiality agreement. Phonon.io is bound and governed by the rules of the state of Gujarat in India. In case you are not in agreement with the terms set in this clause or are not an intended recipient of this document, please destroy the document and intimate us of the same at info@phonon.io.