{"info":{"_postman_id":"8e15f4f7-dc59-46e1-bb87-53f86e2045c0","name":"Toku API Docs","description":"<html><head></head><body><p>With just a few lines of code, you can make your first outgoing call using the Voice API. Add more to enable features like number masking and TTS. Choose your programming language to begin.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"37656381","collectionId":"8e15f4f7-dc59-46e1-bb87-53f86e2045c0","publishedId":"2sB2x2HtNS","public":true,"customColor":{"top-bar":"010E39","right-sidebar":"303030","highlight":"FFCC00"},"publishDate":"2025-06-04T18:14:06.000Z"},"item":[{"name":"Agent","item":[{"name":"Update an agent’s status using a secure API call.","id":"803130ec-f662-4daa-9e6b-5baf1111863f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"description":"<p>(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")</p>\n","key":"api-authorization","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"<string>\",\n  \"email\": \"<email>\",\n  \"account\": \"<string>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/agent/change-status","description":"<p>Updates the status of an agent, requiring either the agent’s email or account identifier. Secure authentication is enforced via API key.</p>\n<h2 id=\"change-agent-status-api\">Change Agent Status API</h2>\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>The new status to assign to the agent</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>The agent's email address. Required if <code>account</code> is not provided</td>\n</tr>\n<tr>\n<td>account</td>\n<td>string</td>\n<td>The agent's unique account identifier. Required if <code>email</code> is not provided</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request-body\">Example Request Body</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"available\"\n  \"account\": \"555555555\",\n  \"email\": \"agent@toku.co\"\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>To call this API, an API Bearer authentication is needed. You can get the Bearer token from Generate Access Token API</li>\n<li>Invalid or missing parameters will result in a <strong>400 Bad Request</strong> response.</li>\n<li>The <strong>status</strong> will be determined based on the Toku Agent Status List or the provided mapped status.</li>\n</ul>\n","urlObject":{"path":["v1","agent","change-status"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"541ba137-516e-4f93-9e37-4bf976a2c9e7","name":"Change Status successful","originalRequest":{"method":"POST","header":[{"description":"(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")","key":"api-authorization","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"<string>\",\n  \"email\": \"<email>\",\n  \"account\": \"<string>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/agent/change-status"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"message\": \"<string>\"\n}"},{"id":"144419e4-f558-4290-b0cb-0d71b48eb5b0","name":"Change Status failed","originalRequest":{"method":"POST","header":[{"description":"(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")","key":"api-authorization","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"<string>\",\n  \"email\": \"<email>\",\n  \"account\": \"<string>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/agent/change-status"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"message\": \"<string>\"\n}"}],"_postman_id":"803130ec-f662-4daa-9e6b-5baf1111863f"},{"name":"Create new agent","id":"52695b6c-a8f7-4af8-b39a-9352735977a4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"line_of_business_id\": 11111388,\r\n    \"country_id\": [\r\n        201\r\n    ],\r\n    \"password\": \"\",\r\n    \"confirm_password\": \"\",\r\n    \"name\": \"Eddie\",\r\n    \"role_id\": 5,\r\n    \"email\": \"test@toku.co\",\r\n    \"status\": true,\r\n    \"is_mfa\": true,\r\n    \"agent_skills\": [\r\n        {\r\n            \"skill_code\": \"SSH_CC\",\r\n            \"skill_rating\": 4\r\n        },\r\n        {\r\n            \"skill_code\": \"ITE_CW_OTHER\",\r\n            \"skill_rating\": 2\r\n        },\r\n        {\r\n            \"skill_code\": \"_testing_skill\",\r\n            \"skill_rating\": 4\r\n        }\r\n    ],\r\n    \"teams_assigned\": [\r\n        9\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"//platform/v1/users/agents","description":"<p>Create a new agent</p>\n<h2 id=\"create-a-new-agent-api\">Create a new agent API</h2>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>line_of_business_id</td>\n<td>number</td>\n<td>The line of business user</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Name of the agent</td>\n</tr>\n<tr>\n<td>role_id</td>\n<td>number</td>\n<td>Role of the agent. Agent is currently set to role id 5</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Email of the agent</td>\n</tr>\n<tr>\n<td>status</td>\n<td>boolean</td>\n<td>Whether the agent is active or not, true means the agent is active else false means the user is inactive</td>\n</tr>\n<tr>\n<td>is_mfa</td>\n<td>boolean</td>\n<td>Whether the agent needs to do multi factor authentication or not</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>password</td>\n<td>string</td>\n<td>Password for the agent. If left blank, A password will be autogenerated</td>\n</tr>\n<tr>\n<td>confirm_password</td>\n<td>string</td>\n<td>Confirm password for the password that was entered</td>\n</tr>\n<tr>\n<td>country_id</td>\n<td>array</td>\n<td>The country id that the agent resides in. eg 201 = Singapore</td>\n</tr>\n<tr>\n<td>agent_skills</td>\n<td>object</td>\n<td>Skills code and rating assign to the agent</td>\n</tr>\n<tr>\n<td>teams_assigned</td>\n<td>array</td>\n<td>The team assigned to the agent</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"agent-skills-parameter\">Agent Skills Parameter</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>skill_code</td>\n<td>string</td>\n<td>The code for the skills</td>\n</tr>\n<tr>\n<td>skill_rating</td>\n<td>number</td>\n<td>Skill rating to set for the agent. 1 - 55. The higher the value, the higer the rating</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>username</td>\n<td>string</td>\n<td>Username of the agent</td>\n</tr>\n<tr>\n<td>full_name</td>\n<td>string</td>\n<td>Full name of the agent</td>\n</tr>\n<tr>\n<td>role_id</td>\n<td>string</td>\n<td>Role id of the agent</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>The email of the agent</td>\n</tr>\n<tr>\n<td>active</td>\n<td>string</td>\n<td>Y or N. Y means the agent will be active else N means the agent is inactive</td>\n</tr>\n<tr>\n<td>user_id</td>\n<td>number</td>\n<td>User id of the agent</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"line_of_business_id\": 11111388,\n    \"country_id\": [\n        201\n    ],\n    \"password\": \"\",\n    \"confirm_password\": \"\",\n    \"name\": \"Test Agent\",\n    \"role_id\": 0,\n    \"email\": \"test@toku.co\",\n    \"status\": true,\n    \"is_mfa\": true,\n    \"agent_skills\": [\n        {\n            \"skill_code\": \"SSH_CC\",\n            \"skill_rating\": 4\n        },\n        {\n            \"skill_code\": \"ITE_CW_OTHER\",\n            \"skill_rating\": 2\n        },\n        {\n            \"skill_code\": \"_testing_skill\",\n            \"skill_rating\": 4\n        }\n    ],\n    \"teams_assigned\": [\n        9\n    ]\n}\n\n</code></pre>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"success\": true,\n    \"code\": 201,\n    \"message\": \"Successfully create an agent\",\n    \"data\": {\n        \"user\": \"555100555\",\n        \"full_name\": \"Test Agent\",\n        \"role_id\": 5,\n        \"email\": \"test@toku.co\",\n        \"active\": \"Y\",\n        \"user_id\": 5000\n    }\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>To call this API, a Bearer authentication is needed. Call the auth service with your client id and secret to obtain the access token</p>\n</li>\n<li><p>The content type should be application/json.</p>\n</li>\n</ul>\n","urlObject":{"path":["platform","v1","users","agents"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"6911076d-0c83-489e-a7a0-1d28492d0af4","name":"Successfully created an agent","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"line_of_business_id\": 11111388,\r\n    \"country_id\": [\r\n        201\r\n    ],\r\n    \"password\": \"\",\r\n    \"confirm_password\": \"\",\r\n    \"name\": \"Eddie\",\r\n    \"role_id\": 5,\r\n    \"email\": \"test@toku.co\",\r\n    \"status\": true,\r\n    \"is_mfa\": true,\r\n    \"agent_skills\": [\r\n        {\r\n            \"skill_code\": \"SSH_CC\",\r\n            \"skill_rating\": 4\r\n        },\r\n        {\r\n            \"skill_code\": \"ITE_CW_OTHER\",\r\n            \"skill_rating\": 2\r\n        },\r\n        {\r\n            \"skill_code\": \"_testing_skill\",\r\n            \"skill_rating\": 4\r\n        }\r\n    ],\r\n    \"teams_assigned\": [\r\n        9\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"//platform/v1/users/agents"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"code\": 201,\n    \"message\": \"Successfully create an agent\",\n    \"data\": {\n        \"user\": \"555100555\",\n        \"full_name\": \"Test Agent\",\n        \"role_id\": 5,\n        \"email\": \"test.agent@gmail.co\",\n        \"active\": \"Y\",\n        \"user_id\": 5000\n    }\n}"},{"id":"faeea46b-5189-4d7b-887f-10f0ea6a4f05","name":"Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"line_of_business_id\": 11111388,\r\n    \"country_id\": [\r\n        201\r\n    ],\r\n    \"password\": \"\",\r\n    \"confirm_password\": \"\",\r\n    \"name\": \"Eddie\",\r\n    \"role_id\": 5,\r\n    \"email\": \"test@toku.co\",\r\n    \"status\": true,\r\n    \"is_mfa\": true,\r\n    \"agent_skills\": [\r\n        {\r\n            \"skill_code\": \"SSH_CC\",\r\n            \"skill_rating\": 4\r\n        },\r\n        {\r\n            \"skill_code\": \"ITE_CW_OTHER\",\r\n            \"skill_rating\": 2\r\n        },\r\n        {\r\n            \"skill_code\": \"_testing_skill\",\r\n            \"skill_rating\": 4\r\n        }\r\n    ],\r\n    \"teams_assigned\": [\r\n        9\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"//platform/v1/users/agents"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"Text","header":[{}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""},{"id":"6698524d-c989-4cf4-8827-40afded9453d","name":"Failed to create user","originalRequest":{"method":"POST","header":[{"key":"user-agent","value":"<string>","description":"(Required) "},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"line_of_business_id\": 11111388,\r\n    \"country_id\": [\r\n        201\r\n    ],\r\n    \"password\": \"\",\r\n    \"confirm_password\": \"\",\r\n    \"name\": \"Eddie\",\r\n    \"role_id\": 5,\r\n    \"email\": \"test@toku.co\",\r\n    \"status\": true,\r\n    \"is_mfa\": true,\r\n    \"agent_skills\": [\r\n        {\r\n            \"skill_code\": \"SSH_CC\",\r\n            \"skill_rating\": 4\r\n        },\r\n        {\r\n            \"skill_code\": \"ITE_CW_OTHER\",\r\n            \"skill_rating\": 2\r\n        },\r\n        {\r\n            \"skill_code\": \"_testing_skill\",\r\n            \"skill_rating\": 4\r\n        }\r\n    ],\r\n    \"teams_assigned\": [\r\n        9\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"//platform/v1/users/agents"},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"message\": \"<string>\",\n  \"error\": {}\n}"}],"_postman_id":"52695b6c-a8f7-4af8-b39a-9352735977a4"},{"name":"Get User SIP Provision","id":"70fd30a3-1b50-49fe-954e-4189e8ef7657","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"token":"{{bearerToken}}"},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"//platform/v1/accounts/:username/sip","description":"<h2 id=\"get-user-sip-provision-api\">Get User SIP Provision API</h2>\n<p>Retrieve SIP provisioning configuration for a specific user, including all necessary settings for SIP client configuration and telephony services.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>username</td>\n<td>string</td>\n<td>The username of the user to retrieve SIP provision data for. This parameter is used to identify the specific user and their associated line of business configuration. The username must be a valid, existing user in the system</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Success message indicating the user SIP provision data was retrieved successfully</td>\n</tr>\n<tr>\n<td>data</td>\n<td>object</td>\n<td>The user SIP provision configuration object containing all necessary settings for SIP client setup</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"sip-provision-data-parameters\">SIP Provision Data Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>username</td>\n<td>string</td>\n<td>The username of the user</td>\n</tr>\n<tr>\n<td>sip_password</td>\n<td>string</td>\n<td>SIP authentication password for the user</td>\n</tr>\n<tr>\n<td>wss_link</td>\n<td>string</td>\n<td>WebSocket Secure (WSS) link for SIP over WebSocket connections</td>\n</tr>\n<tr>\n<td>wss_url</td>\n<td>string</td>\n<td>WebSocket Secure (WSS) URL for SIP over WebSocket connections</td>\n</tr>\n<tr>\n<td>is_stun_disabled</td>\n<td>boolean</td>\n<td>Whether STUN (Session Traversal Utilities for NAT) is disabled for this user</td>\n</tr>\n<tr>\n<td>host</td>\n<td>string</td>\n<td>SIP server host address</td>\n</tr>\n<tr>\n<td>transport</td>\n<td>string</td>\n<td>SIP transport protocol (UDP, TCP, TLS, etc.)</td>\n</tr>\n<tr>\n<td>expires</td>\n<td>integer</td>\n<td>SIP registration expiration time in seconds</td>\n</tr>\n<tr>\n<td>proxy</td>\n<td>string</td>\n<td>SIP proxy server address</td>\n</tr>\n<tr>\n<td>outbound_proxy_enabled</td>\n<td>boolean</td>\n<td>Whether outbound proxy is enabled</td>\n</tr>\n<tr>\n<td>outbound_proxy_host</td>\n<td>string</td>\n<td>Outbound proxy server host address</td>\n</tr>\n<tr>\n<td>outbound_proxy_transport</td>\n<td>string</td>\n<td>Outbound proxy transport protocol</td>\n</tr>\n<tr>\n<td>codec_order</td>\n<td>string</td>\n<td>Comma-separated list of preferred audio codecs in order of preference</td>\n</tr>\n<tr>\n<td>codec_order_3g</td>\n<td>string</td>\n<td>Comma-separated list of preferred audio codecs for 3G networks</td>\n</tr>\n<tr>\n<td>stun</td>\n<td>string</td>\n<td>STUN server address for NAT traversal</td>\n</tr>\n<tr>\n<td>stun_username</td>\n<td>string</td>\n<td>Username for STUN server authentication</td>\n</tr>\n<tr>\n<td>stun_password</td>\n<td>string</td>\n<td>Password for STUN server authentication</td>\n</tr>\n<tr>\n<td>nat_traversal</td>\n<td>string</td>\n<td>NAT traversal method (STUN, TURN, ICE, etc.)</td>\n</tr>\n<tr>\n<td>sipis_host</td>\n<td>string</td>\n<td>SIP Information Service host address</td>\n</tr>\n<tr>\n<td>sipis_reg_server</td>\n<td>string</td>\n<td>SIP Information Service registration server address</td>\n</tr>\n<tr>\n<td>sipis_host_prefix_length</td>\n<td>integer</td>\n<td>SIP Information Service host prefix length for network configuration</td>\n</tr>\n<tr>\n<td>keep_alive</td>\n<td>boolean</td>\n<td>Whether SIP keep-alive is enabled</td>\n</tr>\n<tr>\n<td>keep_alive_period</td>\n<td>integer</td>\n<td>Keep-alive period in seconds</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-handling\">Error Handling</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Error Status Code</th>\n<th>Error Message</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>user not found</td>\n</tr>\n<tr>\n<td>422</td>\n<td>line of business user not found</td>\n</tr>\n<tr>\n<td>422</td>\n<td>line of business not found</td>\n</tr>\n<tr>\n<td>422</td>\n<td>invalid line of business Context</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /v1/accounts/john.doe/sip\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Successfully retrieved user SIP provision\",\n  \"data\": {\n    \"username\": \"john.doe\",\n    \"sip_password\": \"sip_secret_password_123\",\n    \"wss_link\": \"wss://sip.tokuvoip.com/ws\",\n    \"wss_url\": \"wss://sip.tokuvoip.com/websocket\",\n    \"is_stun_disabled\": false,\n    \"host\": \"sip.tokuvoip.com\",\n    \"transport\": \"UDP\",\n    \"expires\": 3600,\n    \"proxy\": \"proxy.tokuvoip.com\",\n    \"outbound_proxy_enabled\": true,\n    \"outbound_proxy_host\": \"outbound.proxy.tokuvoip.com\",\n    \"outbound_proxy_transport\": \"TCP\",\n    \"codec_order\": \"G711,G729,G722\",\n    \"codec_order_3g\": \"AMR,G711,G729\",\n    \"stun\": \"stun.tokuvoip.com\",\n    \"stun_username\": \"stun_user_john\",\n    \"stun_password\": \"stun_pass_secure\",\n    \"nat_traversal\": \"STUN\",\n    \"sipis_host\": \"sipis.tokuvoip.com\",\n    \"sipis_reg_server\": \"reg.tokuvoip.com\",\n    \"sipis_host_prefix_length\": 24,\n    \"keep_alive\": true,\n    \"keep_alive_period\": 60\n  }\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>To call this API, a Bearer authentication is needed.</li>\n<li>The requesting user must have appropriate permissions to access the target user's SIP provision data.</li>\n</ul>\n","urlObject":{"path":["platform","v1","accounts",":username","sip"],"host":["/"],"query":[],"variable":[{"id":"95e3e06e-efcf-4e40-bb61-84cf31dc62ca","description":{"content":"<p>(Required) The username of the user to retrieve SIP provision data for</p>\n","type":"text/plain"},"type":"any","value":"john.doe","key":"username"}]}},"response":[{"id":"66edb1ec-a285-4a6e-a6f0-217d25e1284f","name":"User SIP provision data retrieved successfully","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer <token>","description":"Added as a part of security scheme: bearer"}],"url":{"raw":"//v1/accounts/:username/sip","host":["/"],"path":["v1","accounts",":username","sip"],"variable":[{"key":"username"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"Successfully retrieved user SIP provision\",\n  \"data\": {\n    \"username\": \"john.doe\",\n    \"sip_password\": \"sip_secret_password\",\n    \"wss_link\": \"wss://sip.example.com/ws\",\n    \"wss_url\": \"wss://sip.example.com/websocket\",\n    \"is_stun_disabled\": false,\n    \"host\": \"sip.example.com\",\n    \"transport\": \"UDP\",\n    \"expires\": 3600,\n    \"proxy\": \"proxy.example.com\",\n    \"outbound_proxy_enabled\": true,\n    \"outbound_proxy_host\": \"outbound.proxy.example.com\",\n    \"outbound_proxy_transport\": \"TCP\",\n    \"codec_order\": \"G711,G729,G722\",\n    \"codec_order_3g\": \"AMR,G711,G729\",\n    \"stun\": \"stun.example.com\",\n    \"stun_username\": \"stun_user\",\n    \"stun_password\": \"stun_pass\",\n    \"nat_traversal\": \"STUN\",\n    \"sipis_host\": \"sipis.example.com\",\n    \"sipis_reg_server\": \"reg.example.com\",\n    \"sipis_host_prefix_length\": 24,\n    \"keep_alive\": true,\n    \"keep_alive_period\": 60\n  }\n}"},{"id":"e8a00a30-2306-433d-9a67-de28fa1ba697","name":"Bad request - Invalid input","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer <token>","description":"Added as a part of security scheme: bearer"}],"url":{"raw":"//v1/accounts/:username/sip","host":["/"],"path":["v1","accounts",":username","sip"],"variable":[{"key":"username"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"code\": 400,\n  \"message\": \"bad request\",\n  \"errors\": [\n    {\n      \"key\": \"__value_is_required\",\n      \"message\": \"\",\n      \"field\": \"username\",\n      \"details\": \"username is required\"\n    }\n  ]\n}"},{"id":"f01ae3a1-f856-4f60-b3c6-c84f519c6b3a","name":"Validation error - Invalid field values","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer <token>","description":"Added as a part of security scheme: bearer"}],"url":{"raw":"//v1/accounts/:username/sip","host":["/"],"path":["v1","accounts",":username","sip"],"variable":[{"key":"username"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"code\": 422,\n  \"message\": \"user not found\",\n  \"errors\": \"user not found\"\n}"},{"id":"9def6737-2e7a-4fc1-82ea-29799bb2ab74","name":"Internal server error","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer <token>","description":"Added as a part of security scheme: bearer"}],"url":{"raw":"//v1/accounts/:username/sip","host":["/"],"path":["v1","accounts",":username","sip"],"variable":[{"key":"username"}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"code\": 500,\n  \"message\": \"internal server error\"\n}"}],"_postman_id":"70fd30a3-1b50-49fe-954e-4189e8ef7657"}],"id":"de56c0b6-6a77-4d81-85cf-9a4410cc19eb","_postman_id":"de56c0b6-6a77-4d81-85cf-9a4410cc19eb","description":""},{"name":"Get Call Recording","item":[{"name":"Retrieve a recorded call securely.","id":"f60190bb-ad67-4a0e-bfd5-166890648d8c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"<p>(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")</p>\n"},{"key":"Accept","value":"audio/wav"}],"url":"//v1/interactions/play/:recordingId","description":"<p>Fetches an audio recording based on the provided recording ID. API Bearer authentication is required.</p>\n<h2 id=\"get-call-recording-api\">Get Call Recording API</h2>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"path-parameters-required\">Path Parameters (Required)</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>recordingId</td>\n<td>string</td>\n<td>The unique identifier of the recorded call</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<p>GET /v1/interactions/play/0567868501</p>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>To call this API, an API Bearer authentication is needed. You can get the Bearer token from Generate Access Token API</p>\n</li>\n<li><p>The response includes `Content-Type: audio/wave`, allowing direct playback.</p>\n</li>\n<li><p>The `Content-Disposition` header is set to `inline` for in-browser playback.</p>\n</li>\n<li><p>Cross-origin access (`Access-Control-Allow-Origin: *`) is enabled.</p>\n</li>\n<li><p>If the recording ID is invalid or does not exist, Get Call Recording is not exist response is returned.</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","interactions","play",":recordingId"],"host":["/"],"query":[],"variable":[{"description":{"content":"<p>(Required) The ID of the recorded call</p>\n","type":"text/plain"},"type":"any","value":"<string>","key":"recordingId"}]}},"response":[{"id":"a59afbc2-b659-4b15-a44b-bc12e1765178","name":"Successful response - returns audio file","originalRequest":{"method":"GET","header":[{"description":"(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")","key":"api-authorization","value":"<string>"},{"key":"Accept","value":"audio/wav"}],"url":{"raw":"//v1/interactions/play/:recordingId","host":["/"],"path":["v1","interactions","play",":recordingId"],"variable":[{"key":"recordingId"}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"audio/wav"}],"cookie":[],"responseTime":null,"body":"<binary>"},{"id":"0ac164e0-b7ca-4060-ba7a-933857047089","name":"Recording ID does not exist","originalRequest":{"method":"GET","header":[{"description":"(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")","key":"api-authorization","value":"<string>"}],"url":{"raw":"//v1/interactions/play/:recordingId","host":["/"],"path":["v1","interactions","play",":recordingId"],"variable":[{"key":"recordingId"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"f60190bb-ad67-4a0e-bfd5-166890648d8c"}],"id":"4d6c6485-a248-4d5e-88c9-3c20ae31e4c0","_postman_id":"4d6c6485-a248-4d5e-88c9-3c20ae31e4c0","description":""},{"name":"Text To Speech","item":[{"name":"Create natural-sounding AI voices effortlessly using Toku AI's online text-to-speech generator","id":"b23bcba6-a2bd-4394-bf4a-ea944f46a8bd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"description":"<p>(Required) User agent information</p>\n","key":"user-agent","value":"<string>"},{"description":"<p>(Required) </p>\n","key":"line-of-business-id","value":"<number>"},{"description":"<p>(Required) API key for authentication</p>\n","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"called_number\": \"1\",\n  \"reference_id\": \"<string>\",\n  \"commands\": [\n    {\n      \"function\": \"PlayTTS\",\n      \"message\": \"<string>\",\n      \"language\": \"en\",\n      \"voice\": \"f\",\n      \"dtmf\": \"<number>\",\n      \"replay\": \"<number>\",\n      \"no_dtmf_message\": \"<string>\",\n      \"timeout\": \"<number>\"\n    },\n    {\n      \"function\": \"PlayTTS\",\n      \"message\": \"<string>\",\n      \"language\": \"en\",\n      \"voice\": \"f\",\n      \"dtmf\": \"<number>\",\n      \"replay\": \"<number>\",\n      \"no_dtmf_message\": \"<string>\",\n      \"timeout\": \"<number>\"\n    }\n  ],\n  \"caller_id\": \"599\",\n  \"call_event_webhook_url\": \"<string>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/call","description":"<p>Starts a programmable text-to-speech call to the specified number, leveraging API key authentication for secure access.</p>\n<h2 id=\"programmable-tts-api\">Programmable TTS API</h2>\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>called_number</td>\n<td>string</td>\n<td>The phone number to call. Must contain only numeric characters (0-9)</td>\n</tr>\n<tr>\n<td>reference_id</td>\n<td>string</td>\n<td>Unique identifier for tracking the call</td>\n</tr>\n<tr>\n<td>commands</td>\n<td>array</td>\n<td>Array of call commands to be executed</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>caller_id</td>\n<td>string</td>\n<td>The caller ID to be displayed. Must contain only numeric characters (0-9)</td>\n</tr>\n<tr>\n<td>call_event_webhook_url</td>\n<td>string</td>\n<td>URL to receive webhook notifications for call events</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"command-types\">Command Types</h3>\n<h4 id=\"playtts-command\">PlayTTS Command</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>function</td>\n<td>string</td>\n<td>Yes</td>\n<td>Must be set to \"PlayTTS\"</td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Yes</td>\n<td>Text message to be converted and played as speech</td>\n</tr>\n<tr>\n<td>language</td>\n<td>string</td>\n<td>Yes</td>\n<td>Language code for text-to-speech (e.g., \"en\")</td>\n</tr>\n<tr>\n<td>voice</td>\n<td>string</td>\n<td>No</td>\n<td>Voice type to use (e.g., \"f\", \"m\")</td>\n</tr>\n<tr>\n<td>dtmf</td>\n<td>number</td>\n<td>No</td>\n<td>Expected digit input from user (0-9)</td>\n</tr>\n<tr>\n<td>replay</td>\n<td>number</td>\n<td>No</td>\n<td>Number of times to replay the message (minimum: 1)</td>\n</tr>\n<tr>\n<td>no_dtmf_message</td>\n<td>string</td>\n<td>No</td>\n<td>Message to play when no DTMF input is received</td>\n</tr>\n<tr>\n<td>timeout</td>\n<td>number</td>\n<td>No</td>\n<td>Timeout duration in seconds</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request-body\">Example Request Body</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"called_number\": \"1234567890\",\n  \"caller_id\": \"9876543210\",\n  \"reference_id\": \"call_123\",\n  \"call_event_webhook_url\": \"https://api.example.com/webhooks/calls\",\n  \"commands\": [\n    {\n      \"function\": \"PlayTTS\",\n      \"message\": \"Hello, this is a test message.\",\n      \"language\": \"en\",\n      \"voice\": \"f\",\n      \"dtmf\": 5,\n      \"replay\": 2,\n      \"no_dtmf_message\": \"No input received.\",\n      \"timeout\": 10\n    }\n  ]\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>The commands array is executed in sequence</li>\n<li>DTMF input is only valid for single digits (0-9)</li>\n<li>Replay count must be at least 1</li>\n<li>All webhook URLs must be valid and accessible</li>\n</ul>\n","urlObject":{"path":["v1","programmable-call","call"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"1f5fff7f-e721-48b2-a396-4f87decaa341","name":"Call programmed successfully","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"called_number\": \"1\",\n  \"reference_id\": \"<string>\",\n  \"commands\": [\n    {\n      \"function\": \"PlayTTS\",\n      \"message\": \"<string>\",\n      \"language\": \"en\",\n      \"voice\": \"f\",\n      \"dtmf\": \"<number>\",\n      \"replay\": \"<number>\",\n      \"no_dtmf_message\": \"<string>\",\n      \"timeout\": \"<number>\"\n    },\n    {\n      \"function\": \"PlayTTS\",\n      \"message\": \"<string>\",\n      \"language\": \"en\",\n      \"voice\": \"f\",\n      \"dtmf\": \"<number>\",\n      \"replay\": \"<number>\",\n      \"no_dtmf_message\": \"<string>\",\n      \"timeout\": \"<number>\"\n    }\n  ],\n  \"caller_id\": \"599\",\n  \"call_event_webhook_url\": \"<string>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/call"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"<string>\",\n  \"data\": {\n    \"reference_id\": \"<string>\",\n    \"session_id\": \"<string>\"\n  }\n}"},{"id":"1cb3144a-a3c3-4fab-9088-4c7d49b157b3","name":"Failed to program call","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"called_number\": \"1\",\n  \"reference_id\": \"<string>\",\n  \"commands\": [\n    {\n      \"function\": \"PlayTTS\",\n      \"message\": \"<string>\",\n      \"language\": \"en\",\n      \"voice\": \"f\",\n      \"dtmf\": \"<number>\",\n      \"replay\": \"<number>\",\n      \"no_dtmf_message\": \"<string>\",\n      \"timeout\": \"<number>\"\n    },\n    {\n      \"function\": \"PlayTTS\",\n      \"message\": \"<string>\",\n      \"language\": \"en\",\n      \"voice\": \"f\",\n      \"dtmf\": \"<number>\",\n      \"replay\": \"<number>\",\n      \"no_dtmf_message\": \"<string>\",\n      \"timeout\": \"<number>\"\n    }\n  ],\n  \"caller_id\": \"599\",\n  \"call_event_webhook_url\": \"<string>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/call"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"<string>\",\n  \"error\": {}\n}"},{"id":"cc035249-eaad-4a5f-a8e5-62f702fefaa1","name":"Unauthorized - Invalid or missing API key","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"called_number\": \"1\",\n  \"reference_id\": \"<string>\",\n  \"commands\": [\n    {\n      \"function\": \"PlayTTS\",\n      \"message\": \"<string>\",\n      \"language\": \"en\",\n      \"voice\": \"f\",\n      \"dtmf\": \"<number>\",\n      \"replay\": \"<number>\",\n      \"no_dtmf_message\": \"<string>\",\n      \"timeout\": \"<number>\"\n    },\n    {\n      \"function\": \"PlayTTS\",\n      \"message\": \"<string>\",\n      \"language\": \"en\",\n      \"voice\": \"f\",\n      \"dtmf\": \"<number>\",\n      \"replay\": \"<number>\",\n      \"no_dtmf_message\": \"<string>\",\n      \"timeout\": \"<number>\"\n    }\n  ],\n  \"caller_id\": \"599\",\n  \"call_event_webhook_url\": \"<string>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/call"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"b23bcba6-a2bd-4394-bf4a-ea944f46a8bd"}],"id":"b8ab5c6c-0a1e-4850-afd5-79a6ca86c075","_postman_id":"b8ab5c6c-0a1e-4850-afd5-79a6ca86c075","description":""},{"name":"Number Masking","item":[{"name":"Dual-Party Connect API","id":"03367abb-15eb-4f21-b3da-90ebdcb7f3e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"description":"<p>(Required) User agent information</p>\n","key":"user-agent","value":"<string>"},{"description":"<p>(Required) </p>\n","key":"line-of-business-id","value":"<number>"},{"description":"<p>(Required) API key for authentication</p>\n","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"a_party_number\": \"2\",\n  \"b_party_number\": \"303793922\",\n  \"reference_id\": \"<string>\",\n  \"message\": {\n    \"text\": \"<string>\",\n    \"language\": \"en\",\n    \"voice\": \"m\"\n  },\n  \"caller_id\": \"474\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/number-masking","description":"<p>Instantly connect both A and B parties with a single API request while keeping their numbers private.</p>\n<h2 id=\"dual-party-connect-api\">Dual-Party Connect API</h2>\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>a_party_number</td>\n<td>string</td>\n<td>A party phone number to call. Must contain only numeric characters (0-9)</td>\n</tr>\n<tr>\n<td>b_party_number</td>\n<td>string</td>\n<td>B party phone number to call. Must contain only numeric characters (0-9)</td>\n</tr>\n<tr>\n<td>reference_id</td>\n<td>string</td>\n<td>Unique identifier for tracking the call</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>caller_id</td>\n<td>string</td>\n<td>The caller ID to be displayed. Must contain only numeric characters (0-9)</td>\n</tr>\n<tr>\n<td>message</td>\n<td>object</td>\n<td>Text message to be converted to speech after A party picks up the call</td>\n</tr>\n<tr>\n<td>timeout</td>\n<td>number</td>\n<td>Timeout duration in seconds</td>\n</tr>\n<tr>\n<td>call_event_webhook_url</td>\n<td>string</td>\n<td>URL to receive webhook notifications for call events</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"message-object\">Message Object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Yes</td>\n<td>Text message to be converted and played as speech</td>\n</tr>\n<tr>\n<td>voice</td>\n<td>string</td>\n<td>Yes</td>\n<td>Voice type to use (e.g., \"f\", \"m\")</td>\n</tr>\n<tr>\n<td>language</td>\n<td>string</td>\n<td>Yes</td>\n<td>Language code for text-to-speech (e.g., \"en\")</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request-body\">Example Request Body</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"a_party_number\": \"1234567890\",\n  \"b_party_number\": \"1234567892\",\n  \"reference_id\": \"call_123\",\n  \"caller_id\": \"9876543210\",\n  \"message\": {\n    \"text\": \"Please wait while we connect\",\n    \"voice\": \"f\",\n    \"language\": \"en\"\n  },\n  \"timeout\": 60,\n  \"call_event_webhook_url\": \"https://api.example.com/webhooks/calls\",\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>All webhook URLs must be valid and accessible</li>\n</ul>\n","urlObject":{"path":["v1","programmable-call","number-masking"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"799c519a-5fdc-4132-bb27-7517e3f8d71e","name":"Number masking programmed successfully","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"a_party_number\": \"2\",\n  \"b_party_number\": \"303793922\",\n  \"reference_id\": \"<string>\",\n  \"message\": {\n    \"text\": \"<string>\",\n    \"language\": \"en\",\n    \"voice\": \"m\"\n  },\n  \"caller_id\": \"474\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/number-masking"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"<string>\",\n  \"data\": {\n    \"reference_id\": \"<string>\",\n    \"session_id\": \"<string>\"\n  }\n}"},{"id":"0fa4085f-b149-43ab-9f63-103de0a544cf","name":"Unauthorized - Invalid or missing API key","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"a_party_number\": \"2\",\n  \"b_party_number\": \"303793922\",\n  \"reference_id\": \"<string>\",\n  \"message\": {\n    \"text\": \"<string>\",\n    \"language\": \"en\",\n    \"voice\": \"m\"\n  },\n  \"caller_id\": \"474\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/number-masking"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":null},{"id":"24cfe9c3-02a1-4a61-8558-1865b9aaf33f","name":"Failed to program call","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"a_party_number\": \"2\",\n  \"b_party_number\": \"303793922\",\n  \"reference_id\": \"<string>\",\n  \"message\": {\n    \"text\": \"<string>\",\n    \"language\": \"en\",\n    \"voice\": \"m\"\n  },\n  \"caller_id\": \"474\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/number-masking"},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"<string>\",\n  \"error\": {}\n}"}],"_postman_id":"03367abb-15eb-4f21-b3da-90ebdcb7f3e4"},{"name":"Sequential Connect API","id":"ecad07fb-6b20-477b-b800-23fd1d842013","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"description":"<p>(Required) User agent information</p>\n","key":"user-agent","value":"<string>"},{"description":"<p>(Required) </p>\n","key":"line-of-business-id","value":"<number>"},{"description":"<p>(Required) API key for authentication</p>\n","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination_number\": \"0216027205\",\n  \"reference_id\": \"<string>\",\n  \"message\": {\n    \"text\": \"<string>\",\n    \"language\": \"en\",\n    \"voice\": \"m\"\n  },\n  \"caller_id\": \"7425380\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/number-masking/conferences","description":"<p>Call the A party first, then initiate a separate call to the B party and bridge them while keeping their numbers private.</p>\n<h2 id=\"sequential-connect-api\">Sequential Connect API</h2>\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>destination_number</td>\n<td>string</td>\n<td>Destination phone number to call. Must contain only numeric characters (0-9)</td>\n</tr>\n<tr>\n<td>reference_id</td>\n<td>string</td>\n<td>Unique identifier for tracking the call</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>caller_id</td>\n<td>string</td>\n<td>The caller ID to be displayed. Must contain only numeric characters (0-9)</td>\n</tr>\n<tr>\n<td>message</td>\n<td>object</td>\n<td>Text message to be converted to speech after A party picks up the call</td>\n</tr>\n<tr>\n<td>timeout</td>\n<td>number</td>\n<td>Timeout duration in seconds</td>\n</tr>\n<tr>\n<td>call_event_webhook_url</td>\n<td>string</td>\n<td>URL to receive webhook notifications for call events</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"message-object\">Message Object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Yes</td>\n<td>Text message to be converted and played as speech</td>\n</tr>\n<tr>\n<td>voice</td>\n<td>string</td>\n<td>Yes</td>\n<td>Voice type to use (e.g., \"f\", \"m\")</td>\n</tr>\n<tr>\n<td>language</td>\n<td>string</td>\n<td>Yes</td>\n<td>Language code for text-to-speech (e.g., \"en\")</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request-body\">Example Request Body</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"destination_number\": \"1234567890\",\n  \"reference_id\": \"call_123\",\n  \"caller_id\": \"9876543210\",\n  \"message\": {\n    \"text\": \"Please wait while we connect\",\n    \"voice\": \"f\",\n    \"language\": \"en\"\n  },\n  \"timeout\": 60,\n  \"call_event_webhook_url\": \"https://api.example.com/webhooks/calls\",\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>All webhook URLs must be valid and accessible</li>\n</ul>\n","urlObject":{"path":["v1","programmable-call","number-masking","conferences"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"bf302830-5f02-4b0e-9ba3-d6b81954167f","name":"Created a number masking conference room successfully","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination_number\": \"0216027205\",\n  \"reference_id\": \"<string>\",\n  \"message\": {\n    \"text\": \"<string>\",\n    \"language\": \"en\",\n    \"voice\": \"m\"\n  },\n  \"caller_id\": \"7425380\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/number-masking/conferences"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"<string>\",\n  \"data\": {\n    \"reference_id\": \"<string>\",\n    \"session_id\": \"<string>\"\n  }\n}"},{"id":"2a8eed2d-b613-4732-91a4-5fcc5bccd507","name":"Unauthorized - Invalid or missing API key","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination_number\": \"0216027205\",\n  \"reference_id\": \"<string>\",\n  \"message\": {\n    \"text\": \"<string>\",\n    \"language\": \"en\",\n    \"voice\": \"m\"\n  },\n  \"caller_id\": \"7425380\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/number-masking/conferences"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":null},{"id":"b4a73110-93d0-48b3-afb0-11cfe2178180","name":"Failed to program call","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination_number\": \"0216027205\",\n  \"reference_id\": \"<string>\",\n  \"message\": {\n    \"text\": \"<string>\",\n    \"language\": \"en\",\n    \"voice\": \"m\"\n  },\n  \"caller_id\": \"7425380\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/number-masking/conferences"},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"<string>\",\n  \"error\": {}\n}"}],"_postman_id":"ecad07fb-6b20-477b-b800-23fd1d842013"},{"name":"Sequential Connect API - Connect & Bridge B","id":"e0b154b0-5fc6-475b-8318-3aa8e9bcd7ab","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"description":"<p>(Required) User agent information</p>\n","key":"user-agent","value":"<string>"},{"description":"<p>(Required) </p>\n","key":"line-of-business-id","value":"<number>"},{"description":"<p>(Required) API key for authentication</p>\n","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination_number\": \"8\",\n  \"party_role\": \"B\",\n  \"caller_id\": \"9865\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//v1/programmable-call/number-masking/conferences/:sessionID/join","description":"<p>Dial the B party separately and securely bridge the call with A WHILE keeping their number private.</p>\n<p>##Sequential Connect API - Connect &amp; Bridge B API</p>\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>destination_number</td>\n<td>string</td>\n<td>Destination phone number to call. Must contain only numeric characters (0-9)</td>\n</tr>\n<tr>\n<td>party_role</td>\n<td>string</td>\n<td>The party role for the conference room, eg. B, C</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>caller_id</td>\n<td>string</td>\n<td>The caller ID to be displayed. Must contain only numeric characters (0-9)</td>\n</tr>\n<tr>\n<td>timeout</td>\n<td>number</td>\n<td>Timeout duration in seconds</td>\n</tr>\n<tr>\n<td>call_event_webhook_url</td>\n<td>string</td>\n<td>URL to receive webhook notifications for call events</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request-body\">Example Request Body</h3>\n<h4 id=\"connect-to-a-conference-using-the-session-id-returned-by-callback\">Connect to a conference using the session id returned by callback</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">POST /v1/programmable-call/number-masking/conferences/:sessionID/parties\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"destination_number\": \"1234567890\",\n  \"party_role\": \"B\",\n  \"caller_id\": \"9876543210\",\n  \"timeout\": 60,\n  \"call_event_webhook_url\": \"https://api.example.com/webhooks/calls\",\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>All webhook URLs must be valid and accessible</li>\n</ul>\n","urlObject":{"path":["v1","programmable-call","number-masking","conferences",":sessionID","join"],"host":["/"],"query":[],"variable":[{"id":"ab77a4df-de1b-4fef-b137-22f71d4dad71","description":{"content":"<p>(Required) </p>\n","type":"text/plain"},"type":"any","value":"<string>","key":"sessionID"}]}},"response":[{"id":"5e18615e-2d06-4c3a-ac5c-ac585446049c","name":"Connect to a number masking conference successfully","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination_number\": \"8\",\n  \"party_role\": \"B\",\n  \"caller_id\": \"9865\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":{"raw":"//v1/programmable-call/number-masking/conferences/:sessionID/join","host":["/"],"path":["v1","programmable-call","number-masking","conferences",":sessionID","join"],"variable":[{"key":"sessionID"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"<string>\",\n  \"data\": {\n    \"reference_id\": \"<string>\",\n    \"session_id\": \"<string>\"\n  }\n}"},{"id":"5624077f-0bc2-4ffb-a17b-4f8f1bb73d0b","name":"Unauthorized - Invalid or missing API key","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination_number\": \"8\",\n  \"party_role\": \"B\",\n  \"caller_id\": \"9865\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":{"raw":"//v1/programmable-call/number-masking/conferences/:sessionID/join","host":["/"],"path":["v1","programmable-call","number-masking","conferences",":sessionID","join"],"variable":[{"key":"sessionID"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":null},{"id":"2ccf66a3-0f19-41b8-bb4c-91b889437636","name":"Failed to program call","originalRequest":{"method":"POST","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination_number\": \"8\",\n  \"party_role\": \"B\",\n  \"caller_id\": \"9865\",\n  \"call_event_webhook_url\": \"<string>\",\n  \"timeout\": \"<number>\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":{"raw":"//v1/programmable-call/number-masking/conferences/:sessionID/join","host":["/"],"path":["v1","programmable-call","number-masking","conferences",":sessionID","join"],"variable":[{"key":"sessionID"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"<string>\",\n  \"error\": {}\n}"}],"_postman_id":"e0b154b0-5fc6-475b-8318-3aa8e9bcd7ab"}],"id":"a8f13b45-3947-4bc6-b32c-f295b5d5ac0f","_postman_id":"a8f13b45-3947-4bc6-b32c-f295b5d5ac0f","description":""},{"name":"Call Service Webhook Callback","item":[{"name":"Call Service Webhook Handling","id":"c86e7130-9a3f-4224-9125-c119acaa1659","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"//v1/programmable-call/callback","description":"<h2 id=\"call-handle-setup-connect-and-disconnect-parameters\">Call Handle: Setup, Connect, and Disconnect Parameters</h2>\n<p>The following parameters are shared across the Setup, Connect, and Disconnect events.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>result</td>\n<td>0 = Success; &lt;0 = Error Code</td>\n</tr>\n<tr>\n<td>result_desc</td>\n<td>Result description</td>\n</tr>\n<tr>\n<td>service_name</td>\n<td>Service name</td>\n</tr>\n<tr>\n<td>channel</td>\n<td>Channel ID within session</td>\n</tr>\n<tr>\n<td>session_id</td>\n<td>Unique call session ID</td>\n</tr>\n<tr>\n<td>call_status</td>\n<td>Call status value: <br />• SETUP = Calling<br />• CONNECT = Connected<br />• DISCONNECT = Disconnected</td>\n</tr>\n<tr>\n<td>calling_party</td>\n<td>Calling party number</td>\n</tr>\n<tr>\n<td>called_party</td>\n<td>Called party number</td>\n</tr>\n<tr>\n<td>redirecting_number</td>\n<td>Redirecting number</td>\n</tr>\n<tr>\n<td>direction</td>\n<td>0 = Inbound<br />1 = Outbound</td>\n</tr>\n<tr>\n<td>reference_id</td>\n<td>Custom reference ID</td>\n</tr>\n<tr>\n<td>call_setup_time</td>\n<td>Call setup time in YYYY-MM-DD hh:mm:ss format<br />(E.g. 2018-06-22 15:32:08)</td>\n</tr>\n<tr>\n<td>call_alert_time</td>\n<td>Call alert time in YYYY-MM-DD hh:mm:ss format<br />(E.g. 2018-06-22 15:32:08)</td>\n</tr>\n<tr>\n<td>call_connected_time</td>\n<td>Call connected time in YYYY-MM-DD hh:mm:ss format<br />(E.g. 2018-06-22 15:32:08)</td>\n</tr>\n<tr>\n<td>call_disconnected_time</td>\n<td>Call disconnected time in YYYY-MM-DD hh:mm:ss format<br />(E.g. 2018-06-22 15:32:08)</td>\n</tr>\n<tr>\n<td>gmt</td>\n<td>Time zone. For example, 8 for Singapore, 0 for London / GMT</td>\n</tr>\n<tr>\n<td>call_cause</td>\n<td>SIP Status Code defined in RFC 3261 or refer to Call Status Code List</td>\n</tr>\n<tr>\n<td>call_connected</td>\n<td>1 = Call connected<br />0 = Call not connected</td>\n</tr>\n<tr>\n<td>call_duration</td>\n<td>Call duration in seconds</td>\n</tr>\n<tr>\n<td>dtmf</td>\n<td>The last dtmf pressed. Collection of DTMF value, e.g. 0~9, *, #</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"call-handle-handle-callback-event-examples-setup-connect-disconnect\">Call Handle: Handle Callback Event Examples (SETUP, CONNECT, DISCONNECT)</h2>\n<h3 id=\"setup\">Setup</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"result\": 0,\n  \"result_desc\": \"Ok\",\n  \"service_name\": \"PROGRAMMABLE_CALL\",\n  \"channel\": 0,\n  \"session_id\": \"762916d1-079b-4ddd-a32a-3acc60a32f3d\",\n  \"call_status\": \"SETUP\",\n  \"calling_party\": \"1124321332\",\n  \"called_party\": \"1124321334\",\n  \"redirecting_number\": \"\",\n  \"direction\": 1,\n  \"reference_id\": \"3460372373012769\",\n  \"call_setup_time\": \"2025-03-11 13:14:39\",\n  \"call_alert_time\": \"2025-03-11 13:14:39\",\n  \"call_connected_time\": \"\",\n  \"call_disconnected_time\": \"\",\n  \"gmt\": 8,\n  \"call_cause\": \"\",\n  \"call_connected\": 0,\n  \"call_duration\": 0,\n  \"dtmf\": \"\"\n}\n</code></pre>\n<h3 id=\"connect\">CONNECT</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"result\": 0,\n  \"result_desc\": \"Ok\",\n  \"service_name\": \"PROGRAMMABLE_CALL\",\n  \"channel\": 0,\n  \"session_id\": \"7d2ac8a2-46ae-47cf-915d-d1b3e8b2296d\",\n  \"call_status\": \"CONNECT\",\n  \"calling_party\": \"1124321332\",\n  \"called_party\": \"1124321334\",\n  \"redirecting_number\": \"\",\n  \"direction\": 1,\n  \"reference_id\": \"test_10332025\",\n  \"call_setup_time\": \"2025-03-10 08:07:57\",\n  \"call_alert_time\": \"2025-03-10 08:07:57\",\n  \"call_connected_time\": \"2025-03-10 08:08:04\",\n  \"call_disconnected_time\": \"\",\n  \"gmt\": 8,\n  \"call_cause\": \"\",\n  \"call_connected\": 1,\n  \"call_duration\": 0,\n  \"dtmf\": \"\"\n}\n</code></pre>\n<h3 id=\"disconnect\">DISCONNECT</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"result\": 0,\n  \"result_desc\": \"Ok\",\n  \"service_name\": \"PROGRAMMABLE_CALL\",\n  \"channel\": 0,\n  \"session_id\": \"7d2ac8a2-46ae-47cf-915d-d1b3e8b2296d\",\n  \"call_status\": \"DISCONNECT\",\n  \"calling_party\": \"1124321332\",\n  \"called_party\": \"1124321334\",\n  \"redirecting_number\": \"\",\n  \"direction\": 1,\n  \"reference_id\": \"test_10332025\",\n  \"call_setup_time\": \"2025-03-10 08:07:57\",\n  \"call_alert_time\": \"2025-03-10 08:07:57\",\n  \"call_connected_time\": \"2025-03-10 08:08:04\",\n  \"call_disconnected_time\": \"2025-03-10 08:08:51\",\n  \"gmt\": 8,\n  \"call_cause\": \"\",\n  \"call_connected\": 0,\n  \"call_duration\": 47,\n  \"dtmf\": \"9\"\n}\n</code></pre>\n<h3 id=\"failed\">Failed</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"result\": -1,\n  \"result_desc\": \"Failed to make a call -ERR NO_ANSWER\",\n  \"service_name\": \"PROGRAMMABLE_CALL\",\n  \"channel\": 0,\n  \"session_id\": \"300b3742-fc21-44b6-803e-1297e8335434\",\n  \"call_status\": \"FAILED\",\n  \"calling_party\": \"1124321332\",\n  \"called_party\": \"1124321334\",\n  \"redirecting_number\": \"\",\n  \"direction\": 1,\n  \"reference_id\": \"test_10332025\",\n  \"call_setup_time\": \"\",\n  \"call_alert_time\": \"\",\n  \"call_connected_time\": \"\",\n  \"call_disconnected_time\": \"\",\n  \"gmt\": 8,\n  \"call_cause\": \"\",\n  \"call_connected\": 0,\n  \"call_duration\": 0,\n  \"dtmf\": \"\"\n}\n</code></pre>\n","urlObject":{"path":["v1","programmable-call","callback"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"b8193acd-8ce9-4f90-b334-1909755ff3f3","name":"response","originalRequest":{"method":"POST","header":[],"url":"//v1/programmable-call/callback"},"status":"Created","code":201,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"c86e7130-9a3f-4224-9125-c119acaa1659"}],"id":"ff9077b2-e2eb-49f8-b54c-de92adcea547","_postman_id":"ff9077b2-e2eb-49f8-b54c-de92adcea547","description":""},{"name":"Caller ID Service","item":[{"name":"Retrieve all outbound caller ids","id":"619c7bc0-507c-43db-9ba6-0b33533707f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"description":"<p>(Required) User agent information</p>\n","key":"user-agent","value":"<string>"},{"description":"<p>(Required) </p>\n","key":"line-of-business-id","value":"<number>"},{"description":"<p>(Required) API key for authentication</p>\n","key":"x-api-key","value":"<string>"},{"key":"Accept","value":"application/json"}],"url":"//v1/caller-ids/service/outbound","description":"<p>Retrieve all outbound caller ids assigned, leveraging API key authentication for secure access.</p>\n<h2 id=\"retrieve-all-assigned-outbound-caller-ids\">Retrieve all assigned outbound caller ids</h2>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>area_code</td>\n<td>string</td>\n<td>Area code of the caller id. Based on the country code. (eg 65 (Singapore country code))</td>\n</tr>\n<tr>\n<td>search</td>\n<td>string</td>\n<td>Searches for the caller id or description that matches the search keywords</td>\n</tr>\n<tr>\n<td>caller_id</td>\n<td>string</td>\n<td>Caller ID to filter for</td>\n</tr>\n<tr>\n<td>queue_id</td>\n<td>number</td>\n<td>Filter the caller ids by the assigned queue</td>\n</tr>\n<tr>\n<td>page</td>\n<td>number</td>\n<td>Specifies the page number of results to retrieve. Defaults to 1 if not specified.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>number</td>\n<td>Specifies the maximum number of caller IDs to return per page. Defaults to list all caller ids if page and limit are not speicified.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"command-types\">Command Types</h3>\n<h3 id=\"example-query-parameters-body\">Example Query Parameters Body</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /v1/caller-ids/service/outbound?area_code=65&amp;page=1&amp;limit=10\n</code></pre><h3 id=\"notes\">Notes</h3>\n<ul>\n<li>If the page and limit query parameters are not provided, it will list all outbound caller ids</li>\n</ul>\n","urlObject":{"path":["v1","caller-ids","service","outbound"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"5b711031-cc03-43cd-ab3f-99b6499933db","name":"List all outbound caller ids","originalRequest":{"method":"GET","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Accept","value":"application/json"}],"url":"//v1/caller-ids/service/outbound"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"message\": \"<string>\",\n  \"data\": [\n    {\n      \"id\": \"<number>\",\n      \"area_code\": \"<string>\",\n      \"caller_id\": \"<string>\",\n      \"description\": \"<string>\",\n      \"queue_id\": \"<number>\"\n    },\n    {\n      \"id\": \"<number>\",\n      \"area_code\": \"<string>\",\n      \"caller_id\": \"<string>\",\n      \"description\": \"<string>\",\n      \"queue_id\": \"<number>\"\n    }\n  ],\n  \"meta\": {\n    \"pagination\": {\n      \"page_no\": \"<number>\",\n      \"page_length\": \"<number>\",\n      \"last_page\": \"<number>\",\n      \"total\": \"<number>\"\n    }\n  }\n}"},{"id":"9ce1b9e0-8753-4c25-85ce-e1c9c8cee5bc","name":"Unauthorized - Invalid or missing API key","originalRequest":{"method":"GET","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"}],"url":"//v1/caller-ids/service/outbound"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":null},{"id":"1a4bee03-30b2-4255-b15c-3b4adc6e42ab","name":"Caller ID does not exist","originalRequest":{"method":"GET","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Accept","value":"application/json"}],"url":"//v1/caller-ids/service/outbound"},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"status_code\": \"<number>\",\n  \"message\": \"<string>\",\n  \"meta\": {\n    \"statusCode\": \"<number>\",\n    \"timestamp\": \"<dateTime>\",\n    \"path\": \"<string>\"\n  }\n}"}],"_postman_id":"619c7bc0-507c-43db-9ba6-0b33533707f8"},{"name":"Retrieve specific outbound caller id detail","id":"7e7a33dc-e42e-42a0-9d60-ac70d9a71c2f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"description":"<p>(Required) User agent information</p>\n","key":"user-agent","value":"<string>"},{"description":"<p>(Required) </p>\n","key":"line-of-business-id","value":"<number>"},{"description":"<p>(Required) API key for authentication</p>\n","key":"x-api-key","value":"<string>"},{"key":"Accept","value":"application/json"}],"url":"//v1/caller-ids/service/outbound/:id","description":"<p>Retrieve outbound caller ids detail, leveraging API key authentication for secure access.</p>\n<h2 id=\"retrieve-specific-assigned-outbound-caller-ids\">Retrieve specific assigned outbound caller ids</h2>\n<h3 id=\"path-parameter\">Path Parameter</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>ID record for the caller id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"command-types\">Command Types</h3>\n<h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">GET /v1/caller-ids/service/outbound/:id\n</code></pre>\n<h3 id=\"possible-errors\">Possible errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Error</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Caller ID does not exist</td>\n<td>ID for the Caller ID record to be retrieved does not exist</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","caller-ids","service","outbound",":id"],"host":["/"],"query":[],"variable":[{"id":"f0be6e46-6eec-457c-bb2d-6ba1c473b0ff","description":{"content":"<p>(Required) </p>\n","type":"text/plain"},"type":"any","value":"<number>","key":"id"}]}},"response":[{"id":"40d54056-1b08-4399-8b82-cb2c398774d0","name":"Successfully get outbound caller id detail","originalRequest":{"method":"GET","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"//v1/caller-ids/service/outbound/:id","host":["/"],"path":["v1","caller-ids","service","outbound",":id"],"variable":[{"key":"id"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"message\": \"<string>\",\n  \"data\": {\n    \"id\": \"<number>\",\n    \"area_code\": \"<string>\",\n    \"caller_id\": \"<string>\",\n    \"description\": \"<string>\",\n    \"queue_id\": \"<number>\"\n  }\n}"},{"id":"5858b551-766b-46bf-9443-9c0ab9a023bc","name":"Unauthorized - Invalid or missing API key","originalRequest":{"method":"GET","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"}],"url":{"raw":"//v1/caller-ids/service/outbound/:id","host":["/"],"path":["v1","caller-ids","service","outbound",":id"],"variable":[{"key":"id"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":null},{"id":"00b06b76-b7f2-4599-a6f4-c4a66c082195","name":"Caller ID does not exist","originalRequest":{"method":"GET","header":[{"description":"(Required) User agent information","key":"user-agent","value":"<string>"},{"description":"(Required) ","key":"line-of-business-id","value":"<number>"},{"description":"(Required) API key for authentication","key":"x-api-key","value":"<string>"},{"key":"Accept","value":"application/json"}],"url":{"raw":"//v1/caller-ids/service/outbound/:id","host":["/"],"path":["v1","caller-ids","service","outbound",":id"],"variable":[{"key":"id"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"status_code\": \"<number>\",\n  \"message\": \"<string>\",\n  \"meta\": {\n    \"statusCode\": \"<number>\",\n    \"timestamp\": \"<dateTime>\",\n    \"path\": \"<string>\"\n  }\n}"}],"_postman_id":"7e7a33dc-e42e-42a0-9d60-ac70d9a71c2f"}],"id":"0341c2c7-af7b-48b6-a70d-a826d5fd3b66","_postman_id":"0341c2c7-af7b-48b6-a70d-a826d5fd3b66","description":""},{"name":"OTP","item":[{"name":"Request OTP","id":"991d7d9c-f194-4e86-a401-71e7c2424df3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"oauth2","oauth2":{},"isInherited":false},"method":"POST","header":[{"key":"user-agent","value":"<string>","description":"<p>(Required) </p>\n"},{"key":"Content-Type","value":"application/x-www-form-urlencoded"},{"key":"Accept","value":"application/json"}],"body":{"mode":"urlencoded","urlencoded":[]},"url":"//v1/authorization/otp/request","description":"<p>Request for otp code</p>\n<h2 id=\"request-for-an-otp-code-api\">Request for an OTP Code API</h2>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>recipient</td>\n<td>string</td>\n<td>The user who the otp is intended for</td>\n</tr>\n<tr>\n<td>length</td>\n<td>number</td>\n<td>Length of the OTP  <br />Value from 4 to 10.</td>\n</tr>\n<tr>\n<td>expiry</td>\n<td>number</td>\n<td>The duration in seconds the otp code will be valid for. Eg. The otp code will be valid for 60 seconds. After 60 seconds, the otp will expire and become invalid. Minimum value: 30</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>otp_code</td>\n<td>string</td>\n<td>The otp code generated  <br />eg. 123456</td>\n</tr>\n<tr>\n<td>expires_in</td>\n<td>number</td>\n<td>Time in seconds until the otp code expires</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"&lt;boolean&gt;\",\n  \"message\": \"&lt;string&gt;\",\n  \"data\": {\n    \"otp_code\": \"&lt;string&gt;\",\n    \"expires_in\": \"&lt;number&gt;\"\n  }\n}\n\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>To call this API, a Bearer authentication is needed. Call the auth service with your client id and secret to obtain the access token</p>\n</li>\n<li><p>The content type should be application/json.</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","authorization","otp","request"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"8e1e9061-cb09-4148-b694-f8bf4715c94a","name":"Successfully requested otp","originalRequest":{"method":"POST","header":[{"key":"user-agent","value":"<string>","description":"(Required) "},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"recipient\": \"agent2\",\r\n    \"length\": 6,\r\n    \"expiry\": 60\r\n}","options":{"raw":{"language":"json"}}},"url":"//v1/authorization/otp/request"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"message\": \"<string>\",\n  \"data\": {\n    \"otp_code\": \"<string>\",\n    \"expires_in\": \"<number>\"\n  }\n}"},{"id":"4f02a0b6-9379-4e81-b8d6-cb9253b05855","name":"Unauthorized","originalRequest":{"method":"POST","header":[{"key":"user-agent","value":"<string>","description":"(Required) "},{"key":"Content-Type","value":"application/json","type":"text"}],"url":"//v1/authorization/otp/request"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"6c806243-4be0-48eb-ad45-ee487e0aa135","name":"Failed to request otp","originalRequest":{"method":"POST","header":[{"key":"user-agent","value":"<string>","description":"(Required) "},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"recipient\": \"agent2\",\r\n    \"length\": 6,\r\n    \"expiry\": 60\r\n}","options":{"raw":{"language":"json"}}},"url":"//v1/authorization/otp/request"},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"message\": \"<string>\",\n  \"error\": {}\n}"}],"_postman_id":"991d7d9c-f194-4e86-a401-71e7c2424df3"},{"name":"Verify OTP","id":"babbb293-0def-4e07-bb1f-00c5abca83c6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"user-agent","value":"<string>","description":"<p>(Required) </p>\n"},{"key":"api-authorization","value":"<string>","description":"<p>(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")</p>\n"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"otp_code\": \"8233123\",\r\n    \"reciepient\": \"agent1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"//v1/authorization/otp/verify","description":"<p>Verify the otp is valid</p>\n<h2 id=\"validate-access-token-api\">Validate Access Token API</h2>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>recipient</td>\n<td>string</td>\n<td>The reciepient of the otp. Can be a userame or phone number</td>\n</tr>\n<tr>\n<td>otp_code</td>\n<td>string</td>\n<td>The otp code that was sent to the user</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>verified</td>\n<td>boolean</td>\n<td>Verified if its successful.</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">  {\n    \"status\": true,\n    \"message\": \"Successfully verified otp code\",\n    \"data\": {\n        \"verified\": true,\n    }\n  }\n\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>To call this API, a Bearer authentication is needed. Call the auth service with your client id and secret to obtain the access token</p>\n</li>\n<li><p>The content type should be application/json.</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","authorization","otp","verify"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"b54e1b2f-ad34-4141-826c-d99715dc9c19","name":"Successfully verified otp code","originalRequest":{"method":"POST","header":[{"key":"user-agent","value":"<string>","description":"(Required) "},{"key":"api-authorization","value":"<string>","description":"(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")"},{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"otp_code\": \"8233123\",\r\n    \"recipient\": \"agent1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"//v1/authorization/otp/verify"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"message\": \"<string>\",\n  \"data\": {\n    \"verified\": \"<boolean>\"\n  }\n}"},{"id":"d38f5615-1e9c-4241-9c77-7c6e755db621","name":"Unauthorized","originalRequest":{"method":"POST","header":[{"key":"user-agent","value":"<string>","description":"(Required) "},{"key":"api-authorization","value":"<string>","description":"(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"otp_code\": \"8233123\",\r\n    \"recipient\": \"agent1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"//v1/authorization/otp/verify"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"072dcbac-a7ff-4206-9dd4-b35fe7a8b850","name":"Failed to verify otp code - Expired etc","originalRequest":{"method":"POST","header":[{"key":"user-agent","value":"<string>","description":"(Required) "},{"key":"api-authorization","value":"<string>","description":"(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")"},{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"otp_code\": \"8233123\",\r\n    \"recipient\": \"agent1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"//v1/authorization/otp/verify"},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<boolean>\",\n  \"message\": \"<string>\",\n  \"error\": {}\n}"}],"_postman_id":"babbb293-0def-4e07-bb1f-00c5abca83c6"}],"id":"822cb848-0a90-4639-a4da-ac6b4e06865a","_postman_id":"822cb848-0a90-4639-a4da-ac6b4e06865a","description":""},{"name":"Call Rates","item":[{"name":"Get Call Rate","id":"9cfc0921-3397-4a94-82db-9ad521d85840","request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"//data/rate","description":"<h2 id=\"get-call-rate-api\">Get Call Rate API</h2>\n<p>Fetch outbound call rate information for a given caller number, destination number, and account code. Returns either a custom rate (specific to the account code) or a default rate based on the destination number's country code.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>caller_number</td>\n<td>string</td>\n<td>The originating (caller) phone number. Must be a valid phone number format</td>\n</tr>\n<tr>\n<td>destination_number</td>\n<td>string</td>\n<td>The target (receiver) phone number for which to fetch rates. Must be a valid phone number format</td>\n</tr>\n<tr>\n<td>account_code</td>\n<td>string</td>\n<td>The account code used to check for custom rates. Determines pricing tier and access</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>credit</td>\n<td>string</td>\n<td>Credit wallet identifier. Optional and used only for logging purposes in certain use cases</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>country_code</td>\n<td>string</td>\n<td>Extracted from the destination number</td>\n</tr>\n<tr>\n<td>full_number</td>\n<td>string</td>\n<td>Destination number in E.164 format (prefixed with +)</td>\n</tr>\n<tr>\n<td>source</td>\n<td>string</td>\n<td>Price category used (custom, flamingo, or az)</td>\n</tr>\n<tr>\n<td>price_info</td>\n<td>object</td>\n<td>Pricing information object</td>\n</tr>\n<tr>\n<td>price</td>\n<td>number</td>\n<td>Price per minute in the specified currency</td>\n</tr>\n<tr>\n<td>currency</td>\n<td>string</td>\n<td>Currency code for the price</td>\n</tr>\n<tr>\n<td>call_flag</td>\n<td>string</td>\n<td>Whether the call is allowed or blocked</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /rate?caller_number=919876543210&amp;destination_number=6583225129&amp;account_code=500181\n\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"country_code\": \"65\",\n  \"full_number\": \"6582620969\",\n  \"source\": \"custom\",\n  \"price_info\": {\n    \"price\": 0.0113,\n    \"currency\": \"USD\",\n    \"call_flag\": \"Allowed\"\n  }\n}\n\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>To call this API, a Bearer authentication is needed.</p>\n</li>\n<li><p>The system validates and parses input numbers to extract country codes and format them in E.164 format.</p>\n</li>\n<li><p>Pricing is determined by checking custom rates first, then falling back to default rates based on country codes.</p>\n</li>\n</ul>\n","urlObject":{"path":["data","rate"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"2033e5af-4d61-45d5-9bca-c058eef485b3","name":"200 Response","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"//rate","description":"## Get Call Rate API\n\nFetch outbound call rate information for a given caller number, destination number, and account code. Returns either a custom rate (specific to the account code) or a default rate based on the destination number's country code.\n\n### Request Parameters\n\n#### Required Parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| caller_number | string | The originating (caller) phone number. Must be a valid phone number format |\n| destination_number | string | The target (receiver) phone number for which to fetch rates. Must be a valid phone number format |\n| account_code | string | The account code used to check for custom rates. Determines pricing tier and access |\n\n#### Optional Parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| credit | string | Credit wallet identifier. Optional and used only for logging purposes in certain use cases |\n\n### Response Parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| country_code | string | Extracted from the destination number |\n| full_number | string | Destination number in E.164 format (prefixed with +) |\n| source | string | Price category used (custom, flamingo, or az) |\n| price_info | object | Pricing information object |\n| price | number | Price per minute in the specified currency |\n| currency | string | Currency code for the price |\n| call_flag | string | Whether the call is allowed or blocked |\n\n### Example Request\n```\nGET /rate?caller_number=919876543210&destination_number=6583225129&account_code=500181\n```\n\n### Example Response\n```json\n{\n  \"country_code\": \"65\",\n  \"full_number\": \"6582620969\",\n  \"source\": \"custom\",\n  \"price_info\": {\n    \"price\": 0.0113,\n    \"currency\": \"USD\",\n    \"call_flag\": \"Allowed\"\n  }\n}\n```\n\n### Notes\n- To call this API, a Bearer authentication is needed.\n- The system validates and parses input numbers to extract country codes and format them in E.164 format.\n- Pricing is determined by checking custom rates first, then falling back to default rates based on country codes.\n"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"object\",\n  \"required\": [\n    \"country_code\",\n    \"full_number\",\n    \"source\",\n    \"price_info\"\n  ],\n  \"properties\": {\n    \"country_code\": {\n      \"type\": \"string\",\n      \"description\": \"Extracted from the destination number\",\n      \"example\": \"65\"\n    },\n    \"full_number\": {\n      \"type\": \"string\",\n      \"description\": \"Destination number in E.164 format (prefixed with +)\",\n      \"example\": \"6582620969\"\n    },\n    \"source\": {\n      \"type\": \"string\",\n      \"description\": \"Price category used (custom, flamingo, or az)\",\n      \"example\": \"custom\"\n    },\n    \"price_info\": {\n      \"$ref\": \"#/components/schemas/PriceInfoBase\"\n    }\n  }\n}"}],"_postman_id":"9cfc0921-3397-4a94-82db-9ad521d85840"}],"id":"37e48a58-35b7-4622-b2a1-ec78f09beff6","_postman_id":"37e48a58-35b7-4622-b2a1-ec78f09beff6","description":""},{"name":"Reports","item":[{"name":"Get Call Histories","id":"5ad2497a-1d34-4f44-8208-74a86c05896f","request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"//data/callhistories","description":"<h2 id=\"get-call-histories-api\">Get Call Histories API</h2>\n<p>Fetch call records for the authenticated company with comprehensive filtering, pagination, and sorting options. Supports advanced filtering by IVR applications, call status, inbound DID, call duration, and date ranges.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Number of records per page. Must be greater than 0. Controls the amount of data returned per request</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>Starting index for pagination. Must be greater than or equal to 0. Used to navigate through large result sets</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>start_date</td>\n<td>string</td>\n<td>Filter records from this date. Format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS. If not provided, defaults to current month start date</td>\n</tr>\n<tr>\n<td>end_date</td>\n<td>string</td>\n<td>Filter records up to this date. Format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS. If not provided, defaults to current date</td>\n</tr>\n<tr>\n<td>duration_from</td>\n<td>integer</td>\n<td>Minimum call duration in seconds. Used to filter calls by minimum duration</td>\n</tr>\n<tr>\n<td>duration_to</td>\n<td>integer</td>\n<td>Maximum call duration in seconds. Used to filter calls by maximum duration</td>\n</tr>\n<tr>\n<td>has_ivr_app</td>\n<td>string</td>\n<td>IVR apps to include: app_name|app_id,app_name|app_id (comma-separated)</td>\n</tr>\n<tr>\n<td>no_ivr_app</td>\n<td>string</td>\n<td>IVR apps to exclude: app_name|app_id,app_name|app_id (comma-separated)</td>\n</tr>\n<tr>\n<td>call_status</td>\n<td>string</td>\n<td>Call status filter: abandoned|answered (comma-separated)</td>\n</tr>\n<tr>\n<td>incoming_did</td>\n<td>string</td>\n<td>Inbound DID filter</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<p>Returns an array of call record objects, each containing:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>lob_code</td>\n<td>string</td>\n<td>Unique Line of business identifier.</td>\n</tr>\n<tr>\n<td>call_direction</td>\n<td>string</td>\n<td>Direction of the call, either inbound (IN) or outbound (OUT)</td>\n</tr>\n<tr>\n<td>agent_username</td>\n<td>string</td>\n<td>Username of the agent who handled the call</td>\n</tr>\n<tr>\n<td>phone_number</td>\n<td>string</td>\n<td>Phone number involved in the call</td>\n</tr>\n<tr>\n<td>call_start_time</td>\n<td>string</td>\n<td>The moment the call was successfully initiated</td>\n</tr>\n<tr>\n<td>call_end_time</td>\n<td>string</td>\n<td>The moment the call was disconnected or ended</td>\n</tr>\n<tr>\n<td>call_duration</td>\n<td>integer</td>\n<td>Total length of the call from connection to disconnection, measured in seconds</td>\n</tr>\n<tr>\n<td>recording_uuid</td>\n<td>string</td>\n<td>Unique identifier for the call recording</td>\n</tr>\n<tr>\n<td>caller_id</td>\n<td>string</td>\n<td>ID of the caller</td>\n</tr>\n<tr>\n<td>raw_duration</td>\n<td>integer</td>\n<td>Raw duration of the call</td>\n</tr>\n<tr>\n<td>ring_duration</td>\n<td>integer</td>\n<td>Duration of the ring before call was answered</td>\n</tr>\n<tr>\n<td>transaction_uuid</td>\n<td>string</td>\n<td>Unique identifier for the second leg of call. May include alphanumeric and special characters</td>\n</tr>\n<tr>\n<td>recording_id</td>\n<td>string</td>\n<td>Unique identifier for the call recording</td>\n</tr>\n<tr>\n<td>hold_duration</td>\n<td>integer</td>\n<td>Total time the call was placed on hold, measured in seconds.</td>\n</tr>\n<tr>\n<td>wrap_up_duration</td>\n<td>integer</td>\n<td>Time spent by the agent wrapping up after the call, measured in seconds.</td>\n</tr>\n<tr>\n<td>queued_at</td>\n<td>string</td>\n<td>Timestamp when the call entered the queue.</td>\n</tr>\n<tr>\n<td>start_call_at</td>\n<td>string</td>\n<td>Timestamp when the call actually started connecting to the agent after queuing.</td>\n</tr>\n<tr>\n<td>call_uuid</td>\n<td>string</td>\n<td>Unique identifier for the first leg of call. May include alphanumeric and special characters.</td>\n</tr>\n<tr>\n<td>queue_id</td>\n<td>string</td>\n<td>Identifier of the queue the call was routed through.</td>\n</tr>\n<tr>\n<td>queue_name</td>\n<td>string</td>\n<td>Name of the queue the call was routed through.</td>\n</tr>\n<tr>\n<td>originate_recording_id</td>\n<td>string</td>\n<td>Identifier of the original call recording.</td>\n</tr>\n<tr>\n<td>sf_case_id</td>\n<td>string</td>\n<td>Salesforce case ID linked to the call, if applicable.</td>\n</tr>\n<tr>\n<td>created_at</td>\n<td>string</td>\n<td>The moment the call record was created.</td>\n</tr>\n<tr>\n<td>updated_at</td>\n<td>string</td>\n<td>The moment the call record was last updated.</td>\n</tr>\n<tr>\n<td>transfer_origin</td>\n<td>string</td>\n<td>Source from which the call was transferred.</td>\n</tr>\n<tr>\n<td>transfer_origin_id</td>\n<td>string</td>\n<td>Identifier of the transfer origin.</td>\n</tr>\n<tr>\n<td>originate_queue</td>\n<td>string</td>\n<td>Name of the original queue before transfer.</td>\n</tr>\n<tr>\n<td>originate_queue_id</td>\n<td>string</td>\n<td>Identifier of the original queue before transfer.</td>\n</tr>\n<tr>\n<td>ivr_duration</td>\n<td>integer</td>\n<td>IVR duration in seconds. Time from call creation to queue entry or call end</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /callhistories?limit=10&amp;offset=20&amp;duration_from=3&amp;duration_to=8&amp;call_status=answered&amp;has_ivr_app=sales|123\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"lob_code\": \"123\",\n  \"call_direction\": \"IN\",\n  \"agent_username\": \"agent_001\",\n  \"phone_number\": \"**********\",\n  \"call_start_time\": \"2025-04-01T00:06:32.000Z\",\n  \"call_end_time\": \"2025-04-01T00:10:54.000Z\",\n  \"call_duration\": 262,\n  \"recording_uuid\": \"bcb36bd5-db8f-43a8-b69b-61fd88032f74.wav\",\n  \"caller_id\": \"**********\",\n  \"raw_duration\": 300,\n  \"ring_duration\": 15,\n  \"transaction_uuid\": \"abc123-def456\",\n  \"recording_id\": \"rec123\",\n  \"hold_duration\": 30,\n  \"wrap_up_duration\": 45,\n  \"queued_at\": \"2025-04-01T00:06:30.000Z\",\n  \"start_call_at\": \"2025-04-01T00:06:32.000Z\",\n  \"call_uuid\": \"call-uuid-123\",\n  \"queue_id\": \"queue123\",\n  \"queue_name\": \"Support Queue\",\n  \"originate_recording_id\": \"orig-rec123\",\n  \"sf_case_id\": \"case123\",\n  \"created_at\": \"2025-04-01T00:06:32.000Z\",\n  \"updated_at\": \"2025-04-01T00:10:54.000Z\",\n  \"transfer_origin\": \"agent\",\n  \"transfer_origin_id\": \"agent123\",\n  \"originate_queue\": \"Sales Queue\",\n  \"originate_queue_id\": \"sales-queue-123\",\n  \"ivr_duration\": 35\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>To call this API, a Bearer authentication is needed.</li>\n<li>If start_date and end_date are not provided, defaults to current month start and current date respectively.</li>\n<li>If duration_from and duration_to are not provided, defaults to 0 and 999999 seconds respectively.</li>\n<li>Advanced filtering supports IVR application filtering (include/exclude specific applications by name or ID).</li>\n<li>Call status filtering supports abandoned vs answered calls.</li>\n<li>Inbound DID-based filtering available for specific routing analysis.</li>\n<li>Date range filtering supports both YYYY-MM-DD and YYYY-MM-DDTHH:MM:SS formats.</li>\n<li>IVR duration is calculated as time from call creation to queue entry or call end.</li>\n</ul>\n","urlObject":{"path":["data","callhistories"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"f6aa7314-cc40-48b9-a5f8-2b8ec321b1e3","name":"200 Response","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"//callhistories","description":"## Get Call Histories API\n\nFetch call records for the authenticated company with comprehensive filtering, pagination, and sorting options. Supports advanced filtering by IVR applications, call status, inbound DID, call duration, and date ranges.\n\n### Request Parameters\n\n#### Required Parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| limit | integer | Number of records per page. Must be greater than 0. Controls the amount of data returned per request |\n| offset | integer | Starting index for pagination. Must be greater than or equal to 0. Used to navigate through large result sets |\n\n#### Optional Parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| start_date | string | Filter records from this date. Format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS. If not provided, defaults to current month start date |\n| end_date | string | Filter records up to this date. Format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS. If not provided, defaults to current date |\n| duration_from | integer | Minimum call duration in seconds. Used to filter calls by minimum duration |\n| duration_to | integer | Maximum call duration in seconds. Used to filter calls by maximum duration |\n| has_ivr_app | string | IVR apps to include: app_name&#124;app_id,app_name&#124;app_id (comma-separated) |\n| no_ivr_app | string | IVR apps to exclude: app_name&#124;app_id,app_name&#124;app_id (comma-separated) |\n| call_status | string | Call status filter: abandoned&#124;answered (comma-separated) |\n| incoming_did | string | Inbound DID filter |\n\n### Response Parameters\n\nReturns an array of call record objects, each containing:\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| lob_code | string | Unique Line of business identifier. |\n| call_direction | string | Direction of the call, either inbound (IN) or outbound (OUT) |\n| agent_username | string | Username of the agent who handled the call |\n| phone_number | string | Phone number involved in the call |\n| call_start_time | string | The moment the call was successfully initiated |\n| call_end_time | string | The moment the call was disconnected or ended |\n| call_duration | integer | Total length of the call from connection to disconnection, measured in seconds | \n| recording_uuid | string | Unique identifier for the call recording |\n| caller_id | string | ID of the caller |\n| raw_duration | integer | Raw duration of the call |\n| ring_duration | integer | Duration of the ring before call was answered |\n| transaction_uuid | string | Unique identifier for the second leg of call. May include alphanumeric and special characters |\n| recording_id | string | Unique identifier for the call recording |\n| hold_duration | integer | Total time the call was placed on hold, measured in seconds. |\n| wrap_up_duration | integer | Time spent by the agent wrapping up after the call, measured in seconds. |\n| queued_at | string | Timestamp when the call entered the queue. |\n| start_call_at | string | Timestamp when the call actually started connecting to the agent after queuing. |\n| call_uuid | string | Unique identifier for the first leg of call. May include alphanumeric and special characters. |\n| queue_id | string | Identifier of the queue the call was routed through. |\n| queue_name | string | Name of the queue the call was routed through. |\n| originate_recording_id | string | Identifier of the original call recording. |\n| sf_case_id | string | Salesforce case ID linked to the call, if applicable. |\n| created_at | string | The moment the call record was created. |\n| updated_at | string | The moment the call record was last updated.  |\n| transfer_origin | string | Source from which the call was transferred.  |\n| transfer_origin_id | string | Identifier of the transfer origin. |\n| originate_queue | string | Name of the original queue before transfer.  |\n| originate_queue_id | string | Identifier of the original queue before transfer. |\n| ivr_duration | integer | IVR duration in seconds. Time from call creation to queue entry or call end |\n\n### Example Request\n```\nGET /callhistories?limit=10&offset=20&duration_from=3&duration_to=8&call_status=answered&has_ivr_app=sales|123\n```\n\n### Example Response\n```json\n{\n  \"lob_code\": \"123\",\n  \"call_direction\": \"IN\",\n  \"agent_username\": \"agent_001\",\n  \"phone_number\": \"**********\",\n  \"call_start_time\": \"2025-04-01T00:06:32.000Z\",\n  \"call_end_time\": \"2025-04-01T00:10:54.000Z\",\n  \"call_duration\": 262,\n  \"recording_uuid\": \"bcb36bd5-db8f-43a8-b69b-61fd88032f74.wav\",\n  \"caller_id\": \"**********\",\n  \"raw_duration\": 300,\n  \"ring_duration\": 15,\n  \"transaction_uuid\": \"abc123-def456\",\n  \"recording_id\": \"rec123\",\n  \"hold_duration\": 30,\n  \"wrap_up_duration\": 45,\n  \"queued_at\": \"2025-04-01T00:06:30.000Z\",\n  \"start_call_at\": \"2025-04-01T00:06:32.000Z\",\n  \"call_uuid\": \"call-uuid-123\",\n  \"queue_id\": \"queue123\",\n  \"queue_name\": \"Support Queue\",\n  \"originate_recording_id\": \"orig-rec123\",\n  \"sf_case_id\": \"case123\",\n  \"created_at\": \"2025-04-01T00:06:32.000Z\",\n  \"updated_at\": \"2025-04-01T00:10:54.000Z\",\n  \"transfer_origin\": \"agent\",\n  \"transfer_origin_id\": \"agent123\",\n  \"originate_queue\": \"Sales Queue\",\n  \"originate_queue_id\": \"sales-queue-123\",\n  \"ivr_duration\": 35\n}\n```\n\n### Notes\n- To call this API, a Bearer authentication is needed.\n- If start_date and end_date are not provided, defaults to current month start and current date respectively.\n- If duration_from and duration_to are not provided, defaults to 0 and 999999 seconds respectively.\n- Advanced filtering supports IVR application filtering (include/exclude specific applications by name or ID).\n- Call status filtering supports abandoned vs answered calls.\n- Inbound DID-based filtering available for specific routing analysis.\n- Date range filtering supports both YYYY-MM-DD and YYYY-MM-DDTHH:MM:SS formats.\n- IVR duration is calculated as time from call creation to queue entry or call end.\n"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{}"}],"_postman_id":"5ad2497a-1d34-4f44-8208-74a86c05896f"},{"name":"Get Call Metrics","id":"970427c0-4c14-40f3-ad9a-9697e524f246","request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"//data/getcallmetrics/{call_id}","description":"<h2 id=\"get-call-metrics-api\">Get Call Metrics API</h2>\n<p>Retrieve detailed call metrics and quality information for a specific call ID from the VoIP monitoring system.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>call_id</td>\n<td>string</td>\n<td>The unique identifier of the call. Can contain alphanumeric characters with special characters. Used to fetch specific call metrics and quality data</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>call_id</td>\n<td>string</td>\n<td>Unique identifier for the call. May include alphanumeric and special characters.</td>\n</tr>\n<tr>\n<td>response_code</td>\n<td>string</td>\n<td>Numeric code indicating the outcome or cause of the call. Based on SIP Q.850.</td>\n</tr>\n<tr>\n<td>response_text</td>\n<td>string</td>\n<td>Textual description of the call outcome or cause. Based on SIP Q.850.</td>\n</tr>\n<tr>\n<td>release_direction</td>\n<td>string</td>\n<td>Indicates which party initiated the call release.</td>\n</tr>\n<tr>\n<td>mos_f1</td>\n<td>string</td>\n<td>Mean Opinion Score (MOS) for audio quality in the first direction.</td>\n</tr>\n<tr>\n<td>mos_f2</td>\n<td>string</td>\n<td>Mean Opinion Score (MOS) for audio quality in the second direction.</td>\n</tr>\n<tr>\n<td>mos_adaptive</td>\n<td>string</td>\n<td>Adaptive MOS score reflecting dynamic audio quality during the call.</td>\n</tr>\n<tr>\n<td>total_packets</td>\n<td>string</td>\n<td>Total number of audio packets transmitted during the call.</td>\n</tr>\n<tr>\n<td>packet_loss</td>\n<td>string</td>\n<td>Percentage of audio packets lost during transmission.</td>\n</tr>\n<tr>\n<td>packet_loss_rtcp</td>\n<td>string</td>\n<td>RTCP-reported packet loss for the call.</td>\n</tr>\n<tr>\n<td>max_jitter_rtcp</td>\n<td>string</td>\n<td>Maximum RTCP-reported jitter experienced during the call.</td>\n</tr>\n<tr>\n<td>latency</td>\n<td>string</td>\n<td>Overall network latency measured during the call.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /getcallmetrics/1476889142@1.1.1.1\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"call_id\": \"1476889142@49.213.20.11\",\n  \"response_code\": \"200\",\n  \"response_text\": \"200 OK\",\n  \"release_direction\": \"caller\",\n  \"mos_f1\": \"4.5\",\n  \"mos_f2\": \"4.4\",\n  \"mos_adaptive\": \"4.5\",\n  \"total_packets\": \"262\",\n  \"packet_loss\": \"0.0\",\n  \"packet_loss_rtcp\": \"0\",\n  \"max_jitter_rtcp\": \"0\",\n  \"latency\": \"0\"\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>To call this API, a Bearer authentication is needed.</li>\n</ul>\n","urlObject":{"path":["data","getcallmetrics","{call_id}"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"fda41e26-9e0d-40c6-9443-c55a3b35017c","name":"200 Response","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"//getcallmetrics/{call_id}","host":["/"],"path":["getcallmetrics","{call_id}"],"variable":[{"key":"call_id","value":"","description":"The unique identifier of the call"}]},"description":"## Get Call Metrics API\n\nRetrieve detailed call metrics and quality information for a specific call ID from the VoIP monitoring system.\n\n### Request Parameters\n\n#### Required Parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| call_id | string | The unique identifier of the call. Can contain alphanumeric characters with special characters. Used to fetch specific call metrics and quality data |\n\n### Response Parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| call_id | string | \tUnique identifier for the call. May include alphanumeric and special characters. |\n| response_code | string | Numeric code indicating the outcome or cause of the call. Based on SIP Q.850. |\n| response_text | string | Textual description of the call outcome or cause. Based on SIP Q.850.  |\n| release_direction | string | Indicates which party initiated the call release.  |\n| mos_f1 | string | Mean Opinion Score (MOS) for audio quality in the first direction. |\n| mos_f2 | string | Mean Opinion Score (MOS) for audio quality in the second direction. |\n| mos_adaptive | string | Adaptive MOS score reflecting dynamic audio quality during the call. |\n| total_packets | string | Total number of audio packets transmitted during the call. |\n| packet_loss | string | Percentage of audio packets lost during transmission. |\n| packet_loss_rtcp | string | RTCP-reported packet loss for the call. |\n| max_jitter_rtcp | string | Maximum RTCP-reported jitter experienced during the call. |\n| latency | string | Overall network latency measured during the call. |\n\n### Example Request\n```\nGET /getcallmetrics/1476889142@1.1.1.1\n```\n\n### Example Response\n```json\n{\n  \"call_id\": \"1476889142@49.213.20.11\",\n  \"response_code\": \"200\",\n  \"response_text\": \"200 OK\",\n  \"release_direction\": \"caller\",\n  \"mos_f1\": \"4.5\",\n  \"mos_f2\": \"4.4\",\n  \"mos_adaptive\": \"4.5\",\n  \"total_packets\": \"262\",\n  \"packet_loss\": \"0.0\",\n  \"packet_loss_rtcp\": \"0\",\n  \"max_jitter_rtcp\": \"0\",\n  \"latency\": \"0\"\n}\n```\n\n### Notes\n- To call this API, a Bearer authentication is needed.\n"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"object\",\n  \"required\": [\n    \"call_id\",\n    \"response_code\"\n  ],\n  \"properties\": {\n    \"call_id\": {\n      \"type\": \"string\",\n      \"description\": \"The ID of the call. Can contain alphanumeric characters with special characters\",\n      \"example\": \"1476889142@49.213.20.11\"\n    },\n    \"response_code\": {\n      \"type\": \"string\",\n      \"description\": \"The cause code of the call, containing numeric characters\",\n      \"example\": \"200\"\n    },\n    \"response_text\": {\n      \"type\": \"string\",\n      \"description\": \"The response text of the call\",\n      \"example\": \"200 OK\"\n    },\n    \"release_direction\": {\n      \"type\": \"string\",\n      \"description\": \"The release direction of the call, containing characters\",\n      \"example\": \"caller\"\n    },\n    \"mos_f1\": {\n      \"type\": \"string\",\n      \"description\": \"The MOS (Mean Opinion Score) for the number in the first direction\",\n      \"example\": \"4.5\"\n    },\n    \"mos_f2\": {\n      \"type\": \"string\",\n      \"description\": \"The MOS in the second direction\",\n      \"example\": \"4.4\"\n    },\n    \"mos_adaptive\": {\n      \"type\": \"string\",\n      \"description\": \"The adaptive MOS for the call\",\n      \"example\": \"4.5\"\n    },\n    \"total_packets\": {\n      \"type\": \"string\",\n      \"description\": \"The total number of packets sent\",\n      \"example\": \"262\"\n    },\n    \"packet_loss\": {\n      \"type\": \"string\",\n      \"description\": \"The packet loss percentage\",\n      \"example\": \"0.0\"\n    },\n    \"packet_loss_rtcp\": {\n      \"type\": \"string\",\n      \"description\": \"The RTCP packet loss for the number\",\n      \"example\": \"0\"\n    },\n    \"max_jitter_rtcp\": {\n      \"type\": \"string\",\n      \"description\": \"The maximum RTCP jitter for the number\",\n      \"example\": \"0\"\n    },\n    \"latency\": {\n      \"type\": \"string\",\n      \"description\": \"The overall latency of the call\",\n      \"example\": \"0\"\n    }\n  }\n}"}],"_postman_id":"970427c0-4c14-40f3-ad9a-9697e524f246"},{"name":"Get Call List","id":"0b8790c5-bb4d-4ff4-bb7f-d79a3e983377","request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"//data/call-list","description":"<h2 id=\"get-call-list-api\">Get Call List API</h2>\n<p>Retrieve a filtered list of call records with recording information, phone numbers, inbound DIDs, timestamps, and IVR durations. Supports advanced filtering by case types, IVR applications, call status, and date ranges with pagination.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>has_ivr_app</td>\n<td>string</td>\n<td>IVR apps to include: app_name|app_id,app_name|app_id (comma-separated)</td>\n</tr>\n<tr>\n<td>no_ivr_app</td>\n<td>string</td>\n<td>IVR apps to exclude: app_name|app_id,app_name|app_id (comma-separated)</td>\n</tr>\n<tr>\n<td>call_status</td>\n<td>string</td>\n<td>Call status filter: abandoned|answered (comma-separated)</td>\n</tr>\n<tr>\n<td>incoming_did</td>\n<td>string</td>\n<td>Inbound DID filter</td>\n</tr>\n<tr>\n<td>start_date</td>\n<td>string</td>\n<td>Start date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS). Defaults to current day 00:00:00. When using YYYY-MM-DDTHH:MM format, :00 seconds will be automatically appended</td>\n</tr>\n<tr>\n<td>end_date</td>\n<td>string</td>\n<td>End date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS). Defaults to current day 23:59:59. When using YYYY-MM-DDTHH:MM format, :59 seconds will be automatically appended</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Number of records per page (max 1000). Default: 100</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>Offset for pagination (starts from 0). Default: 0</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<p>Returns a paginated response containing call objects with:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>boolean</td>\n<td>Request success status</td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Response message</td>\n</tr>\n<tr>\n<td>data</td>\n<td>array</td>\n<td>Array of call objects</td>\n</tr>\n<tr>\n<td>meta</td>\n<td>object</td>\n<td>Pagination metadata</td>\n</tr>\n</tbody>\n</table>\n</div><p>Each call object contains:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>recording_id</td>\n<td>string</td>\n<td>Unique identifier for the call recordin</td>\n</tr>\n<tr>\n<td>phone_no</td>\n<td>string</td>\n<td>Phone number involved in the call</td>\n</tr>\n<tr>\n<td>inbound_did</td>\n<td>string</td>\n<td>Inbound DID number</td>\n</tr>\n<tr>\n<td>datetime</td>\n<td>string</td>\n<td>Call timestamp</td>\n</tr>\n<tr>\n<td>ivr_duration</td>\n<td>integer</td>\n<td>IVR duration in seconds</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /call-list?limit=10&amp;offset=0&amp;call_status=answered&amp;start_date=2025-08-19T00:00&amp;end_date=2025-08-19T23:59\n</code></pre><h3 id=\"alternative-request-examples\">Alternative Request Examples</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code># Using YYYY-MM-DDTHH:MM format (seconds auto-appended)\nGET /call-list?start_date=2025-08-19T00:00&amp;end_date=2025-08-19T23:59\n\n# Using full YYYY-MM-DDTHH:MM:SS format\nGET /call-list?start_date=2025-08-19T00:00:00&amp;end_date=2025-08-19T23:59:59\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 10 call records\",\n  \"data\": [\n    {\n      \"recording_id\": \"rec_123456\",\n      \"phone_no\": \"+1234567890\",\n      \"inbound_did\": \"+1987654321\",\n      \"datetime\": \"2025-08-19T10:30:45.000Z\",\n      \"ivr_duration\": 30\n    }\n  ],\n  \"meta\": {\n    \"limit\": 10,\n    \"page\": 1,\n    \"total_pages\": 5,\n    \"total_records\": 45\n  }\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>To call this API, a Bearer authentication is needed.</li>\n<li>Company filtering is automatically applied based on the authenticated user's company.</li>\n<li>If dates are not provided, defaults to current day range.</li>\n</ul>\n","urlObject":{"path":["data","call-list"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"c092dd8d-b05f-4d7f-81f8-d94e9c1d906d","name":"200 Response","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"//call-list","description":"## Get Call List API\n\nRetrieve a filtered list of call records with recording information, phone numbers, inbound DIDs, timestamps, and IVR durations. Supports advanced filtering by case types, IVR applications, call status, and date ranges with pagination.\n\n### Request Parameters\n\n#### Optional Parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| has_ivr_app | string | IVR apps to include: app_name&#124;app_id,app_name&#124;app_id (comma-separated) |\n| no_ivr_app | string | IVR apps to exclude: app_name&#124;app_id,app_name&#124;app_id (comma-separated) |\n| call_status | string | Call status filter: abandoned&#124;answered (comma-separated) |\n| incoming_did | string | Inbound DID filter |\n| start_date | string | Start date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS). Defaults to current day 00:00:00. When using YYYY-MM-DDTHH:MM format, :00 seconds will be automatically appended |\n| end_date | string | End date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS). Defaults to current day 23:59:59. When using YYYY-MM-DDTHH:MM format, :59 seconds will be automatically appended |\n| limit | integer | Number of records per page (max 1000). Default: 100 |\n| offset | integer | Offset for pagination (starts from 0). Default: 0 |\n\n### Response Parameters\n\nReturns a paginated response containing call objects with:\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| status | boolean | Request success status |\n| message | string | Response message |\n| data | array | Array of call objects |\n| meta | object | Pagination metadata |\n\nEach call object contains:\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| recording_id | string | Unique identifier for the call recordin |\n| phone_no | string | Phone number involved in the call |\n| inbound_did | string | Inbound DID number |\n| datetime | string | Call timestamp |\n| ivr_duration | integer | IVR duration in seconds |\n\n### Example Request\n```\nGET /call-list?limit=10&offset=0&call_status=answered&start_date=2025-08-19T00:00&end_date=2025-08-19T23:59\n```\n\n### Alternative Request Examples\n```\n# Using YYYY-MM-DDTHH:MM format (seconds auto-appended)\nGET /call-list?start_date=2025-08-19T00:00&end_date=2025-08-19T23:59\n\n# Using full YYYY-MM-DDTHH:MM:SS format\nGET /call-list?start_date=2025-08-19T00:00:00&end_date=2025-08-19T23:59:59\n```\n\n### Example Response\n```json\n{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 10 call records\",\n  \"data\": [\n    {\n      \"recording_id\": \"rec_123456\",\n      \"phone_no\": \"+1234567890\",\n      \"inbound_did\": \"+1987654321\",\n      \"datetime\": \"2025-08-19T10:30:45.000Z\",\n      \"ivr_duration\": 30\n    }\n  ],\n  \"meta\": {\n    \"limit\": 10,\n    \"page\": 1,\n    \"total_pages\": 5,\n    \"total_records\": 45\n  }\n}\n```\n\n### Notes\n- To call this API, a Bearer authentication is needed.\n- Company filtering is automatically applied based on the authenticated user's company.\n- If dates are not provided, defaults to current day range.\n"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"object\",\n  \"required\": [\n    \"status\",\n    \"message\",\n    \"data\",\n    \"meta\"\n  ],\n  \"properties\": {\n    \"status\": {\n      \"type\": \"boolean\",\n      \"description\": \"Request success status\",\n      \"example\": true\n    },\n    \"message\": {\n      \"type\": \"string\",\n      \"description\": \"Response message\",\n      \"example\": \"Successfully retrieved 10 call records\"\n    },\n    \"data\": {\n      \"type\": \"array\",\n      \"description\": \"Array of call objects\",\n      \"items\": {\n        \"$ref\": \"#/components/schemas/CallObjectResponse\"\n      }\n    },\n    \"meta\": {\n      \"$ref\": \"#/components/schemas/PaginationMeta\"\n    }\n  }\n}"}],"_postman_id":"0b8790c5-bb4d-4ff4-bb7f-d79a3e983377"},{"name":"Get After Call Survey (ACS)","id":"01057e08-c7d5-454c-bc2a-7abf5792fc4d","request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"//data/acs","description":"<h2 id=\"get-after-call-survey-acs\">Get After Call Survey (ACS)</h2>\n<p>Fetch After Call Survey data for the authenticated company with comprehensive filtering options. Returns paginated survey records with grouped questions for each survey.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>start_date</td>\n<td>string</td>\n<td>Start date and time in YYYY-MM-DDTHH:MM, YYYY-MM-DD HH:MM, or YYYY-MM-DDTHH:MM:SS format. Defaults to first day of current month. When using YYYY-MM-DDTHH:MM format, :00 seconds will be automatically appended</td>\n</tr>\n<tr>\n<td>end_date</td>\n<td>string</td>\n<td>End date and time in YYYY-MM-DDTHH:MM, YYYY-MM-DD HH:MM, or YYYY-MM-DDTHH:MM:SS format. Defaults to current date. When using YYYY-MM-DDTHH:MM format, :59 seconds will be automatically appended</td>\n</tr>\n<tr>\n<td>agent_username</td>\n<td>string</td>\n<td>Agent username to filter by</td>\n</tr>\n<tr>\n<td>queue_name</td>\n<td>string</td>\n<td>Queue name to filter by</td>\n</tr>\n<tr>\n<td>team_id</td>\n<td>integer</td>\n<td>Team ID to filter by</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Number of items per page (max 1000). Default: 100</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>Offset for pagination (starts from 0). Default: 0</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<p>Returns a paginated response containing ACS data with:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>boolean</td>\n<td>Request success status</td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Response message</td>\n</tr>\n<tr>\n<td>data</td>\n<td>array</td>\n<td>Array of ACS survey objects</td>\n</tr>\n<tr>\n<td>meta</td>\n<td>object</td>\n<td>Pagination metadata</td>\n</tr>\n</tbody>\n</table>\n</div><p>Each ACS survey object contains:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>line_of_business_id</td>\n<td>integer</td>\n<td>Line of business identifier</td>\n</tr>\n<tr>\n<td>recording_id</td>\n<td>string</td>\n<td>Recording identifier</td>\n</tr>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>Survey status</td>\n</tr>\n<tr>\n<td>survey_start_at</td>\n<td>string</td>\n<td>Survey start timestamp</td>\n</tr>\n<tr>\n<td>caller_id</td>\n<td>string</td>\n<td>Caller identification</td>\n</tr>\n<tr>\n<td>phone_number</td>\n<td>string</td>\n<td>Phone number</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Call type</td>\n</tr>\n<tr>\n<td>user</td>\n<td>string</td>\n<td>Username</td>\n</tr>\n<tr>\n<td>start_call_at</td>\n<td>string</td>\n<td>Call start timestamp</td>\n</tr>\n<tr>\n<td>end_call_at</td>\n<td>string</td>\n<td>Call end timestamp</td>\n</tr>\n<tr>\n<td>queue_id</td>\n<td>string</td>\n<td>Queue identifier</td>\n</tr>\n<tr>\n<td>queue_name</td>\n<td>string</td>\n<td>Queue name</td>\n</tr>\n<tr>\n<td>ref_id</td>\n<td>string</td>\n<td>Reference identifier</td>\n</tr>\n<tr>\n<td>agent_email</td>\n<td>string</td>\n<td>Agent email address</td>\n</tr>\n<tr>\n<td>agent_id</td>\n<td>string</td>\n<td>Agent identifier</td>\n</tr>\n<tr>\n<td>agent_name</td>\n<td>string</td>\n<td>Agent name</td>\n</tr>\n<tr>\n<td>questions</td>\n<td>array</td>\n<td>Array of survey questions and answers</td>\n</tr>\n</tbody>\n</table>\n</div><p>Each question object contains:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>option_id</td>\n<td>integer</td>\n<td>Option identifier</td>\n</tr>\n<tr>\n<td>answer</td>\n<td>string</td>\n<td>Survey answer</td>\n</tr>\n<tr>\n<td>question_sequence</td>\n<td>integer</td>\n<td>Question sequence number</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /acs?limit=10&amp;offset=0&amp;agent_username=agent001&amp;start_date=2025-08-01T00:00&amp;end_date=2025-08-19T23:59\n</code></pre><h3 id=\"alternative-request-examples\">Alternative Request Examples</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code># Using YYYY-MM-DDTHH:MM format (seconds auto-appended)\nGET /acs?start_date=2025-08-01T00:00&amp;end_date=2025-08-19T23:59\n\n# Using YYYY-MM-DD HH:MM format (converted to T format)\nGET /acs?start_date=2025-08-01 00:00&amp;end_date=2025-08-19 23:59\n\n# Using full YYYY-MM-DDTHH:MM:SS format\nGET /acs?start_date=2025-08-01T00:00:00&amp;end_date=2025-08-19T23:59:59\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": true,\n  \"message\": \"Retrieved 2 ACS surveys\",\n  \"data\": [\n    {\n      \"line_of_business_id\": 123,\n      \"recording_id\": \"rec_789\",\n      \"status\": \"completed\",\n      \"survey_start_at\": \"2025-08-19T10:35:00.000Z\",\n      \"caller_id\": \"+1234567890\",\n      \"phone_number\": \"+1234567890\",\n      \"type\": \"inbound\",\n      \"user\": \"agent001\",\n      \"start_call_at\": \"2025-08-19T10:30:00.000Z\",\n      \"end_call_at\": \"2025-08-19T10:34:30.000Z\",\n      \"queue_id\": \"queue_456\",\n      \"queue_name\": \"Support\",\n      \"ref_id\": \"ref_123\",\n      \"agent_email\": \"agent001@company.com\",\n      \"agent_id\": \"agent_001\",\n      \"agent_name\": \"John Doe\",\n      \"questions\": [\n        {\n          \"option_id\": 1,\n          \"answer\": \"5\",\n          \"question_sequence\": 1\n        },\n        {\n          \"option_id\": 2,\n          \"answer\": \"Very satisfied\",\n          \"question_sequence\": 2\n        }\n      ]\n    }\n  ],\n  \"meta\": {\n    \"limit\": 10,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 2\n  }\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>To call this API, a Bearer authentication is needed.</li>\n<li>Company filtering is automatically applied based on the authenticated user's company.</li>\n<li>If dates are not provided, defaults to current month range.</li>\n</ul>\n","urlObject":{"path":["data","acs"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"5a1c4224-953c-4e95-8557-2ee13fda9e03","name":"200 Response","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"//acs","description":"## Get After Call Survey (ACS) \n\nFetch After Call Survey data for the authenticated company with comprehensive filtering options. Returns paginated survey records with grouped questions for each survey.\n\n### Request Parameters\n\n#### Optional Parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| start_date | string | Start date and time in YYYY-MM-DDTHH:MM, YYYY-MM-DD HH:MM, or YYYY-MM-DDTHH:MM:SS format. Defaults to first day of current month. When using YYYY-MM-DDTHH:MM format, :00 seconds will be automatically appended |\n| end_date | string | End date and time in YYYY-MM-DDTHH:MM, YYYY-MM-DD HH:MM, or YYYY-MM-DDTHH:MM:SS format. Defaults to current date. When using YYYY-MM-DDTHH:MM format, :59 seconds will be automatically appended |\n| agent_username | string | Agent username to filter by |\n| queue_name | string | Queue name to filter by |\n| team_id | integer | Team ID to filter by |\n| limit | integer | Number of items per page (max 1000). Default: 100 |\n| offset | integer | Offset for pagination (starts from 0). Default: 0 |\n\n### Response Parameters\n\nReturns a paginated response containing ACS data with:\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| status | boolean | Request success status |\n| message | string | Response message |\n| data | array | Array of ACS survey objects |\n| meta | object | Pagination metadata |\n\nEach ACS survey object contains:\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| line_of_business_id | integer | Line of business identifier |\n| recording_id | string | Recording identifier |\n| status | string | Survey status |\n| survey_start_at | string | Survey start timestamp |\n| caller_id | string | Caller identification |\n| phone_number | string | Phone number |\n| type | string | Call type |\n| user | string | Username |\n| start_call_at | string | Call start timestamp |\n| end_call_at | string | Call end timestamp |\n| queue_id | string | Queue identifier |\n| queue_name | string | Queue name |\n| ref_id | string | Reference identifier |\n| agent_email | string | Agent email address |\n| agent_id | string | Agent identifier |\n| agent_name | string | Agent name |\n| questions | array | Array of survey questions and answers |\n\nEach question object contains:\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| option_id | integer | Option identifier |\n| answer | string | Survey answer |\n| question_sequence | integer | Question sequence number |\n\n### Example Request\n```\nGET /acs?limit=10&offset=0&agent_username=agent001&start_date=2025-08-01T00:00&end_date=2025-08-19T23:59\n```\n\n### Alternative Request Examples\n```\n# Using YYYY-MM-DDTHH:MM format (seconds auto-appended)\nGET /acs?start_date=2025-08-01T00:00&end_date=2025-08-19T23:59\n\n# Using YYYY-MM-DD HH:MM format (converted to T format)\nGET /acs?start_date=2025-08-01 00:00&end_date=2025-08-19 23:59\n\n# Using full YYYY-MM-DDTHH:MM:SS format\nGET /acs?start_date=2025-08-01T00:00:00&end_date=2025-08-19T23:59:59\n```\n\n### Example Response\n```json\n{\n  \"status\": true,\n  \"message\": \"Retrieved 2 ACS surveys\",\n  \"data\": [\n    {\n      \"line_of_business_id\": 123,\n      \"recording_id\": \"rec_789\",\n      \"status\": \"completed\",\n      \"survey_start_at\": \"2025-08-19T10:35:00.000Z\",\n      \"caller_id\": \"+1234567890\",\n      \"phone_number\": \"+1234567890\",\n      \"type\": \"inbound\",\n      \"user\": \"agent001\",\n      \"start_call_at\": \"2025-08-19T10:30:00.000Z\",\n      \"end_call_at\": \"2025-08-19T10:34:30.000Z\",\n      \"queue_id\": \"queue_456\",\n      \"queue_name\": \"Support\",\n      \"ref_id\": \"ref_123\",\n      \"agent_email\": \"agent001@company.com\",\n      \"agent_id\": \"agent_001\",\n      \"agent_name\": \"John Doe\",\n      \"questions\": [\n        {\n          \"option_id\": 1,\n          \"answer\": \"5\",\n          \"question_sequence\": 1\n        },\n        {\n          \"option_id\": 2,\n          \"answer\": \"Very satisfied\",\n          \"question_sequence\": 2\n        }\n      ]\n    }\n  ],\n  \"meta\": {\n    \"limit\": 10,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 2\n  }\n}\n```\n\n### Notes\n- To call this API, a Bearer authentication is needed.\n- Company filtering is automatically applied based on the authenticated user's company.\n- If dates are not provided, defaults to current month range.\n"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"object\",\n  \"required\": [\n    \"status\",\n    \"message\",\n    \"data\",\n    \"meta\"\n  ],\n  \"properties\": {\n    \"status\": {\n      \"type\": \"boolean\",\n      \"description\": \"Request success status\",\n      \"example\": true\n    },\n    \"message\": {\n      \"type\": \"string\",\n      \"description\": \"Response message\",\n      \"example\": \"Retrieved 2 ACS surveys\"\n    },\n    \"data\": {\n      \"type\": \"array\",\n      \"description\": \"Array of ACS survey objects\",\n      \"items\": {\n        \"$ref\": \"#/components/schemas/ACSResponse\"\n      }\n    },\n    \"meta\": {\n      \"$ref\": \"#/components/schemas/PaginationMeta\"\n    }\n  }\n}"}],"_postman_id":"01057e08-c7d5-454c-bc2a-7abf5792fc4d"},{"name":"Get Voicemail Report","id":"971798d9-2e7b-4f15-9d01-78e25c4dcde9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"<p>(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")</p>\n"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"url":"//v1/voicemail?start_date=2025-11-01T00:00:00&end_date=2025-11-14T23:59:59&limit=100&offset=0","description":"<h2 id=\"get-voicemail-report-api\">Get Voicemail Report API</h2>\n<p>Fetch voicemail data for the authenticated company with comprehensive filtering options including caller ID, called number/queue, date/time, and voicemail box information.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>start_date</td>\n<td>string</td>\n<td>Start date and time in YYYY-MM-DDTHH:MM, YYYY-MM-DD HH:MM, or YYYY-MM-DDTHH:MM:SS format. Defaults to first day of current month if not provided</td>\n</tr>\n<tr>\n<td>end_date</td>\n<td>string</td>\n<td>End date and time in YYYY-MM-DDTHH:MM, YYYY-MM-DD HH:MM, or YYYY-MM-DDTHH:MM:SS format. Defaults to current date if not provided</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Number of items per page (max 1000). Default: 100</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>Offset for pagination (starts from 0). Default: 0</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<p>Returns a paginated response containing voicemail data with:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>boolean</td>\n<td>Request success status</td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Response message</td>\n</tr>\n<tr>\n<td>data</td>\n<td>array</td>\n<td>Array of voicemail objects</td>\n</tr>\n<tr>\n<td>meta</td>\n<td>object</td>\n<td>Pagination metadata</td>\n</tr>\n</tbody>\n</table>\n</div><p>Each voicemail object contains:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>interaction_id</td>\n<td>string</td>\n<td>Unique identifier for the interaction</td>\n</tr>\n<tr>\n<td>voicemail_id</td>\n<td>string</td>\n<td>Unique identifier for the voicemail</td>\n</tr>\n<tr>\n<td>caller_number</td>\n<td>string</td>\n<td>Phone number of the caller who left the voicemail</td>\n</tr>\n<tr>\n<td>called_number</td>\n<td>string</td>\n<td>Phone number or queue that was called</td>\n</tr>\n<tr>\n<td>inbox_name</td>\n<td>string</td>\n<td>Name of the voicemail inbox/queue</td>\n</tr>\n<tr>\n<td>voicemail_saved_at</td>\n<td>string</td>\n<td>Timestamp when the voicemail was saved (ISO 8601 format)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /voicemail?limit=10&amp;offset=0&amp;start_date=2025-11-01T00:00&amp;end_date=2025-11-14T23:59\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 2 voicemail records\",\n  \"data\": [\n    {\n      \"interaction_id\": \"12345\",\n      \"voicemail_id\": \"vm_001\",\n      \"caller_number\": \"+1234567890\",\n      \"called_number\": \"+0987654321\",\n      \"inbox_name\": \"Sales Queue\",\n      \"voicemail_saved_at\": \"2025-11-14T10:30:00\"\n    },\n    {\n      \"interaction_id\": \"12346\",\n      \"voicemail_id\": \"vm_002\",\n      \"caller_number\": \"+1111111111\",\n      \"called_number\": \"+2222222222\",\n      \"inbox_name\": \"Support Queue\",\n      \"voicemail_saved_at\": \"2025-11-14T11:45:00\"\n    }\n  ],\n  \"meta\": {\n    \"limit\": 10,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 2\n  }\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>To call this API, a Bearer authentication is needed.</li>\n<li>Company filtering is automatically applied based on the authenticated user's company.</li>\n<li>If dates are not provided, defaults to current month range.</li>\n<li>Date format validation is strict - invalid dates will return validation errors.</li>\n</ul>\n","urlObject":{"path":["v1","voicemail"],"host":["/"],"query":[{"description":{"content":"<p>Start date and time in YYYY-MM-DDTHH:MM:SS format</p>\n","type":"text/plain"},"key":"start_date","value":"2025-11-01T00:00:00"},{"description":{"content":"<p>End date and time in YYYY-MM-DDTHH:MM:SS format</p>\n","type":"text/plain"},"key":"end_date","value":"2025-11-14T23:59:59"},{"description":{"content":"<p>Number of items per page (max 1000)</p>\n","type":"text/plain"},"key":"limit","value":"100"},{"description":{"content":"<p>Offset for pagination (starts from 0)</p>\n","type":"text/plain"},"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"edb4354a-b476-431f-8e68-0605fe11a309","name":"200 Response","originalRequest":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"(Required) Bearer authentication token"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"//v1/voicemail?start_date=2025-11-01T00:00:00&end_date=2025-11-14T23:59:59&limit=100&offset=0","host":["/"],"path":["v1","voicemail"],"query":[{"key":"start_date","value":"2025-11-01T00:00:00"},{"key":"end_date","value":"2025-11-14T23:59:59"},{"key":"limit","value":"100"},{"key":"offset","value":"0"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 2 voicemail records\",\n  \"data\": [\n    {\n      \"interaction_id\": \"12345\",\n      \"voicemail_id\": \"vm_001\",\n      \"caller_number\": \"+1234567890\",\n      \"called_number\": \"+0987654321\",\n      \"inbox_name\": \"Sales Queue\",\n      \"voicemail_saved_at\": \"2025-11-14T10:30:00\"\n    },\n    {\n      \"interaction_id\": \"12346\",\n      \"voicemail_id\": \"vm_002\",\n      \"caller_number\": \"+1111111111\",\n      \"called_number\": \"+2222222222\",\n      \"inbox_name\": \"Support Queue\",\n      \"voicemail_saved_at\": \"2025-11-14T11:45:00\"\n    }\n  ],\n  \"meta\": {\n    \"limit\": 10,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 2\n  }\n}"}],"_postman_id":"971798d9-2e7b-4f15-9d01-78e25c4dcde9"},{"name":"Get Preview Dialer Call Data","id":"b0cc29ae-03aa-47f0-a69e-45ea03569c85","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"<p>(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")</p>\n"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"url":"//v1/preview-dialer-calls?start_date=2025-01-01T00:00:00&end_date=2025-01-31T23:59:59&limit=100&offset=0&campaign_name=Sales Campaign&call_status=Successful","description":"<h2 id=\"get-preview-dialer-call-data-api\">Get Preview Dialer Call Data API</h2>\n<p>Retrieve preview dialer call data with comprehensive filtering options including campaign name, call status, detailed status, and date ranges. This endpoint provides call outcome information from preview dialer campaigns with proper status categorization.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Number of records per page (max 1000). Default: 100. Controls the amount of data returned per request</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>Offset for pagination (starts from 0). Default: 0. Used to navigate through large result sets</td>\n</tr>\n<tr>\n<td>start_date</td>\n<td>string</td>\n<td>Start date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS). Filter records from this date. When using YYYY-MM-DDTHH:MM format, :00 seconds will be automatically appended</td>\n</tr>\n<tr>\n<td>end_date</td>\n<td>string</td>\n<td>End date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS). Filter records up to this date. When using YYYY-MM-DDTHH:MM format, :59 seconds will be automatically appended</td>\n</tr>\n<tr>\n<td>campaign_name</td>\n<td>string</td>\n<td>Filter by campaign name. Used to get data for a specific preview dialer campaign</td>\n</tr>\n<tr>\n<td>call_status</td>\n<td>string</td>\n<td>Filter by call status (Successful/Unsuccessful). Used to filter by overall call outcome</td>\n</tr>\n<tr>\n<td>detailed_status</td>\n<td>string</td>\n<td>Filter by detailed status (Successful: Others, Successful: Close, Unsuccessful: Others, Unsuccessful: Skip, Unsuccessful: Invalid)</td>\n</tr>\n<tr>\n<td>interaction_id</td>\n<td>string</td>\n<td>Filter by specific interaction ID. Used to get data for a particular call interaction</td>\n</tr>\n<tr>\n<td>call_uuid</td>\n<td>string</td>\n<td>Filter by specific call UUID. Used to get data for a particular call</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<p>Returns an array of preview dialer call data objects, each containing:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>campaign</td>\n<td>string</td>\n<td>Campaign name from preview dialer</td>\n</tr>\n<tr>\n<td>call_status</td>\n<td>string</td>\n<td>Status Call in preview Dialer (Unsuccessful - Successful)</td>\n</tr>\n<tr>\n<td>detailed_status</td>\n<td>string</td>\n<td>Detailed Status Call in preview Dialer (Successful: Others - Unsuccessful: Others - Unsuccessful: Invalid)</td>\n</tr>\n<tr>\n<td>interaction_id</td>\n<td>string</td>\n<td>Relational Field for Call history API</td>\n</tr>\n<tr>\n<td>call_uuid</td>\n<td>string</td>\n<td>Relational Field for Call history API</td>\n</tr>\n<tr>\n<td>created_at</td>\n<td>string</td>\n<td>Timestamp when the record was created. ISO 8601 format</td>\n</tr>\n<tr>\n<td>updated_at</td>\n<td>string</td>\n<td>Timestamp when the record was last updated. ISO 8601 format</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /preview-dialer-calls?limit=50&amp;offset=0&amp;start_date=2025-01-01T00:00&amp;end_date=2025-01-31T23:59\n</code></pre><h3 id=\"alternative-request-examples\">Alternative Request Examples</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /preview-dialer-calls?campaign_name=Sales%20Campaign\nGET /preview-dialer-calls?call_status=Successful&amp;limit=100\nGET /preview-dialer-calls?detailed_status=Unsuccessful:%20Skip\nGET /preview-dialer-calls?interaction_id=12345\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 2 preview dialer call records\",\n  \"data\": [\n    {\n      \"campaign\": \"Sales Campaign Q1\",\n      \"call_status\": \"Successful\",\n      \"detailed_status\": \"Successful: Close\",\n      \"interaction_id\": \"INT123456\",\n      \"call_uuid\": \"call-uuid-789\",\n      \"created_at\": \"2025-01-15T14:25:30.000Z\",\n      \"updated_at\": \"2025-01-15T14:32:30.000Z\"\n    },\n    {\n      \"campaign\": \"Support Outreach\",\n      \"call_status\": \"Unsuccessful\",\n      \"detailed_status\": \"Unsuccessful: Others\",\n      \"interaction_id\": \"INT789012\",\n      \"call_uuid\": \"call-uuid-456\",\n      \"created_at\": \"2025-01-15T15:10:15.000Z\",\n      \"updated_at\": \"2025-01-15T15:12:45.000Z\"\n    }\n  ],\n  \"meta\": {\n    \"limit\": 100,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 2\n  }\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Returns preview dialer call data for the authenticated company only</li>\n<li>Call status categorizes outcomes as either Successful or Unsuccessful</li>\n<li>Detailed status provides more granular categorization of call outcomes</li>\n<li>All timestamps are returned in UTC format</li>\n<li>If no date range is specified, defaults to current day (00:00:00 to 23:59:59)</li>\n<li>Requires proper company authentication and will only return data for the authenticated company</li>\n<li>Can be used with Call History API through interaction_id and call_uuid fields</li>\n</ul>\n","urlObject":{"path":["v1","preview-dialer-calls"],"host":["/"],"query":[{"description":{"content":"<p>Start date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS)</p>\n","type":"text/plain"},"key":"start_date","value":"2025-01-01T00:00:00"},{"description":{"content":"<p>End date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS)</p>\n","type":"text/plain"},"key":"end_date","value":"2025-01-31T23:59:59"},{"description":{"content":"<p>Number of records per page (max 1000)</p>\n","type":"text/plain"},"key":"limit","value":"100"},{"description":{"content":"<p>Offset for pagination (starts from 0)</p>\n","type":"text/plain"},"key":"offset","value":"0"},{"description":{"content":"<p>Filter by campaign name</p>\n","type":"text/plain"},"key":"campaign_name","value":"Sales Campaign"},{"description":{"content":"<p>Filter by call status (Successful/Unsuccessful)</p>\n","type":"text/plain"},"key":"call_status","value":"Successful"},{"disabled":true,"description":{"content":"<p>Filter by detailed status</p>\n","type":"text/plain"},"key":"detailed_status","value":""},{"disabled":true,"description":{"content":"<p>Filter by specific interaction ID</p>\n","type":"text/plain"},"key":"interaction_id","value":""},{"disabled":true,"description":{"content":"<p>Filter by specific call UUID</p>\n","type":"text/plain"},"key":"call_uuid","value":""}],"variable":[]}},"response":[{"id":"37b90dae-c438-421d-aaf7-92c4d0cab617","name":"200 Response","originalRequest":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"(Required) Bearer authentication token"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"//v1/preview-dialer-calls?start_date=2025-01-01T00:00:00&end_date=2025-01-31T23:59:59&limit=100&offset=0","host":["/"],"path":["v1","preview-dialer-calls"],"query":[{"key":"start_date","value":"2025-01-01T00:00:00"},{"key":"end_date","value":"2025-01-31T23:59:59"},{"key":"limit","value":"100"},{"key":"offset","value":"0"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 2 preview dialer call records\",\n  \"data\": [\n    {\n      \"campaign\": \"Sales Campaign Q1\",\n      \"call_status\": \"Successful\",\n      \"detailed_status\": \"Successful: Close\",\n      \"interaction_id\": \"INT123456\",\n      \"call_uuid\": \"call-uuid-789\",\n      \"created_at\": \"2025-01-15T14:25:30.000Z\",\n      \"updated_at\": \"2025-01-15T14:32:30.000Z\"\n    },\n    {\n      \"campaign\": \"Support Outreach\",\n      \"call_status\": \"Unsuccessful\",\n      \"detailed_status\": \"Unsuccessful: Others\",\n      \"interaction_id\": \"INT789012\",\n      \"call_uuid\": \"call-uuid-456\",\n      \"created_at\": \"2025-01-15T15:10:15.000Z\",\n      \"updated_at\": \"2025-01-15T15:12:45.000Z\"\n    }\n  ],\n  \"meta\": {\n    \"limit\": 100,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 2\n  }\n}"}],"_postman_id":"b0cc29ae-03aa-47f0-a69e-45ea03569c85"},{"name":"Get Call Wrap-up Data","id":"c30ca459-1c0b-40f5-a66b-85dcd0f2053e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"<p>(Required) Bearer authentication token (e.g., \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")</p>\n"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"url":"//v1/wrapups?start_date=2025-01-01T00:00:00&end_date=2025-01-31T23:59:59&limit=100&offset=0","description":"<h2 id=\"get-call-wrap-up-data-api\">Get Call Wrap-up Data API</h2>\n<p>Retrieve wrap-up information for calls including start/end times, call type, category, and notes from the wrap-up process. This endpoint provides detailed wrap-up data from toku_call_histories with filtering and pagination capabilities.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Number of records per page (max 1000). Default: 100. Controls the amount of data returned per request</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>Offset for pagination (starts from 0). Default: 0. Used to navigate through large result sets</td>\n</tr>\n<tr>\n<td>start_date</td>\n<td>string</td>\n<td>Start date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS). Filter records from this date. When using YYYY-MM-DDTHH:MM format, :00 seconds will be automatically appended</td>\n</tr>\n<tr>\n<td>end_date</td>\n<td>string</td>\n<td>End date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS). Filter records up to this date. When using YYYY-MM-DDTHH:MM format, :59 seconds will be automatically appended</td>\n</tr>\n<tr>\n<td>interaction_id</td>\n<td>string</td>\n<td>Filter by specific interaction ID. Used to get wrap-up data for a particular call interaction</td>\n</tr>\n<tr>\n<td>call_uuid</td>\n<td>string</td>\n<td>Filter by specific call UUID. Used to get wrap-up data for a particular call</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<p>Returns an array of wrap-up data objects, each containing:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>wrap_up_start_time</td>\n<td>string</td>\n<td>Timestamp when wrap-up started (call end time). ISO 8601 format</td>\n</tr>\n<tr>\n<td>wrap_up_end_time</td>\n<td>string</td>\n<td>Timestamp when wrap-up ended (calculated from start time + duration). ISO 8601 format</td>\n</tr>\n<tr>\n<td>call_type</td>\n<td>string</td>\n<td>Call type from wrap-up classification</td>\n</tr>\n<tr>\n<td>call_category</td>\n<td>string</td>\n<td>Call category from wrap-up classification</td>\n</tr>\n<tr>\n<td>notes</td>\n<td>string</td>\n<td>Notes entered during wrap-up process</td>\n</tr>\n<tr>\n<td>wrap_up_duration</td>\n<td>integer</td>\n<td>Duration of wrap-up in seconds</td>\n</tr>\n<tr>\n<td>interaction_id</td>\n<td>string</td>\n<td>Relational field for Call history API</td>\n</tr>\n<tr>\n<td>call_uuid</td>\n<td>string</td>\n<td>Relational field for Call history API</td>\n</tr>\n<tr>\n<td>recording_id</td>\n<td>string</td>\n<td>Unique identifier for the call recording</td>\n</tr>\n<tr>\n<td>agent_username</td>\n<td>string</td>\n<td>Username of the agent who handled the call</td>\n</tr>\n<tr>\n<td>agent_name</td>\n<td>string</td>\n<td>Full name of the agent who handled the call</td>\n</tr>\n<tr>\n<td>agent_email</td>\n<td>string</td>\n<td>Email address of the agent who handled the call</td>\n</tr>\n<tr>\n<td>created_at</td>\n<td>string</td>\n<td>Timestamp when the record was created. ISO 8601 format</td>\n</tr>\n<tr>\n<td>updated_at</td>\n<td>string</td>\n<td>Timestamp when the record was last updated. ISO 8601 format</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /wrapups?limit=50&amp;offset=0&amp;start_date=2025-01-01T00:00&amp;end_date=2025-01-31T23:59\n</code></pre><h3 id=\"alternative-request-examples\">Alternative Request Examples</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /wrapups?interaction_id=12345\nGET /wrapups?call_uuid=abc123-def456&amp;limit=10\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 1 wrap-up records\",\n  \"data\": [\n    {\n      \"wrap_up_start_time\": \"2025-01-15T14:30:45.000Z\",\n      \"wrap_up_end_time\": \"2025-01-15T14:32:30.000Z\",\n      \"call_type\": \"Support\",\n      \"call_category\": \"Technical Issue\",\n      \"notes\": \"Customer issue with login resolved by password reset\",\n      \"wrap_up_duration\": 105,\n      \"interaction_id\": \"INT123456\",\n      \"call_uuid\": \"call-uuid-789\",\n      \"recording_id\": \"rec-456789\",\n      \"agent_username\": \"agent001\",\n      \"agent_name\": \"John Doe\",\n      \"agent_email\": \"john.doe@company.com\",\n      \"created_at\": \"2025-01-15T14:25:30.000Z\",\n      \"updated_at\": \"2025-01-15T14:32:30.000Z\"\n    }\n  ],\n  \"meta\": {\n    \"limit\": 100,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 1\n  }\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Returns wrap-up data for calls that have completed the wrap-up process</li>\n<li>All timestamps are returned in UTC format</li>\n<li>The wrap_up_end_time is calculated by adding wrap_up_duration to wrap_up_start_time</li>\n<li>If no date range is specified, defaults to current day (00:00:00 to 23:59:59)</li>\n<li>Requires proper company authentication and will only return data for the authenticated company</li>\n</ul>\n","urlObject":{"path":["v1","wrapups"],"host":["/"],"query":[{"description":{"content":"<p>Start date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS)</p>\n","type":"text/plain"},"key":"start_date","value":"2025-01-01T00:00:00"},{"description":{"content":"<p>End date in UTC (YYYY-MM-DDTHH:MM or YYYY-MM-DDTHH:MM:SS)</p>\n","type":"text/plain"},"key":"end_date","value":"2025-01-31T23:59:59"},{"description":{"content":"<p>Number of records per page (max 1000)</p>\n","type":"text/plain"},"key":"limit","value":"100"},{"description":{"content":"<p>Offset for pagination (starts from 0)</p>\n","type":"text/plain"},"key":"offset","value":"0"},{"disabled":true,"description":{"content":"<p>Filter by specific interaction ID</p>\n","type":"text/plain"},"key":"interaction_id","value":""},{"disabled":true,"description":{"content":"<p>Filter by specific call UUID</p>\n","type":"text/plain"},"key":"call_uuid","value":""}],"variable":[]}},"response":[{"id":"40be09b3-efa0-4ddb-b248-7ae843b89e22","name":"200 Response","originalRequest":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"(Required) Bearer authentication token"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"//v1/wrapups?start_date=2025-01-01T00:00:00&end_date=2025-01-31T23:59:59&limit=100&offset=0","host":["/"],"path":["v1","wrapups"],"query":[{"key":"start_date","value":"2025-01-01T00:00:00"},{"key":"end_date","value":"2025-01-31T23:59:59"},{"key":"limit","value":"100"},{"key":"offset","value":"0"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 1 wrap-up records\",\n  \"data\": [\n    {\n      \"wrap_up_start_time\": \"2025-01-15T14:30:45.000Z\",\n      \"wrap_up_end_time\": \"2025-01-15T14:32:30.000Z\",\n      \"call_type\": \"Support\",\n      \"call_category\": \"Technical Issue\",\n      \"notes\": \"Customer issue with login resolved by password reset\",\n      \"wrap_up_duration\": 105,\n      \"interaction_id\": \"INT123456\",\n      \"call_uuid\": \"call-uuid-789\",\n      \"recording_id\": \"rec-456789\",\n      \"agent_username\": \"agent001\",\n      \"agent_name\": \"John Doe\",\n      \"agent_email\": \"john.doe@company.com\",\n      \"created_at\": \"2025-01-15T14:25:30.000Z\",\n      \"updated_at\": \"2025-01-15T14:32:30.000Z\"\n    }\n  ],\n  \"meta\": {\n    \"limit\": 100,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 1\n  }\n}"}],"_postman_id":"c30ca459-1c0b-40f5-a66b-85dcd0f2053e"},{"name":"Consolidated Call Custom List","id":"adb54f95-3dca-4b6b-93d2-4085803d7802","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"<p>(Required) Bearer authentication token</p>\n"},{"key":"Content-Type","value":"application/json"}],"url":"//consolidated-call-report/custom-list?key=partner_id&key_filter=PARTNER123&start_date=2025-11-01T00:00:00&end_date=2025-11-30T23:59:59&limit=10&offset=0","description":"<h2 id=\"consolidated-call-custom-list-api\">Consolidated Call Custom List API</h2>\n<p>Fetch consolidated call analytics data grouped by a custom caller attribute key, providing aggregated metrics including contact counts, transfer rates, average duration, and satisfaction scores. This API delivers flexible analytics for performance evaluation across any grouping dimension.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>key</td>\n<td>string</td>\n<td>Caller attribute key to group results by (e.g., partner_id, agent_id, queue_id)</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>key_filter</td>\n<td>string</td>\n<td>Filter by specific key value. If not provided, returns data for all key values</td>\n</tr>\n<tr>\n<td>start_date</td>\n<td>string</td>\n<td>Start date and time in YYYY-MM-DDTHH:MM:SS format. If not provided, returns data from all available dates</td>\n</tr>\n<tr>\n<td>end_date</td>\n<td>string</td>\n<td>End date and time in YYYY-MM-DDTHH:MM:SS format. If not provided, returns data up to current date</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Number of items per page (max 1000). Default: 1000</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>Offset for pagination (starts from 0). Default: 0</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<p>Returns a paginated response containing consolidated call analytics with:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>boolean</td>\n<td>Request success status</td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Response message</td>\n</tr>\n<tr>\n<td>data</td>\n<td>array</td>\n<td>Array of consolidated call analytics grouped by the specified key</td>\n</tr>\n<tr>\n<td>meta</td>\n<td>object</td>\n<td>Pagination metadata</td>\n</tr>\n</tbody>\n</table>\n</div><p>Each consolidated record contains:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>key</td>\n<td>string</td>\n<td>The grouping key value (e.g., partner ID, agent ID)</td>\n</tr>\n<tr>\n<td>value</td>\n<td>string</td>\n<td>Display name for the key value</td>\n</tr>\n<tr>\n<td>q_contacts</td>\n<td>integer</td>\n<td>Total number of contacts/calls</td>\n</tr>\n<tr>\n<td>q_transfers</td>\n<td>integer</td>\n<td>Total number of transfers</td>\n</tr>\n<tr>\n<td>prom_transfer</td>\n<td>float</td>\n<td>Transfer rate percentage</td>\n</tr>\n<tr>\n<td>prom_duration</td>\n<td>float</td>\n<td>Average call duration in seconds</td>\n</tr>\n<tr>\n<td>p_psat_reso</td>\n<td>float</td>\n<td>Average post-call satisfaction resolution percentage</td>\n</tr>\n<tr>\n<td>p_resolution</td>\n<td>float</td>\n<td>Resolution rate percentage</td>\n</tr>\n<tr>\n<td>p_kindness</td>\n<td>float</td>\n<td>Kindness rating percentage</td>\n</tr>\n<tr>\n<td>p_rr</td>\n<td>float</td>\n<td>Response rate percentage</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /consolidated-call-report/custom-list?key=partner_id&amp;key_filter=PARTNER123&amp;limit=10&amp;offset=0&amp;start_date=2025-11-01T00:00:00&amp;end_date=2025-11-30T23:59:59\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 1 consolidated call custom list records\",\n  \"data\": [\n    {\n      \"key\": \"PARTNER123\",\n      \"value\": \"Singapore\",\n      \"q_contacts\": 1500,\n      \"q_transfers\": 1200,\n      \"prom_transfer\": 80.0,\n      \"prom_duration\": 185.5,\n      \"p_psat_reso\": 85.2,\n      \"p_resolution\": 92.1,\n      \"p_kindness\": 88.7,\n      \"p_rr\": 95.3\n    }\n  ],\n  \"meta\": {\n    \"limit\": 10,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 1\n  }\n}\n</code></pre>\n<h3 id=\"analytics-explanation\">Analytics Explanation</h3>\n<ul>\n<li><strong>key</strong>: The value of the specified grouping attribute</li>\n<li><strong>value</strong>: Display name or description for the key value</li>\n<li><strong>q_contacts</strong>: Total unique contacts/calls for the group</li>\n<li><strong>q_transfers</strong>: Number of calls that were transferred to agents</li>\n<li><strong>prom_transfer</strong>: Percentage of calls that resulted in transfers</li>\n<li><strong>prom_duration</strong>: Average duration of answered calls in seconds</li>\n<li><strong>p_psat_reso</strong>: Average post-call satisfaction resolution score as percentage</li>\n<li><strong>p_resolution</strong>: Percentage of calls marked as resolved</li>\n<li><strong>p_kindness</strong>: Percentage of calls with positive kindness ratings</li>\n<li><strong>p_rr</strong>: Response rate percentage for after-call surveys</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Bearer authentication is required to access this API.</li>\n<li>Company filtering is automatically applied based on the authenticated user's company.</li>\n<li>Data includes only inbound calls with proper attribute identification and queue involvement.</li>\n<li>Metrics are calculated using advanced SQL aggregations with proper null handling.</li>\n</ul>\n","urlObject":{"path":["consolidated-call-report","custom-list"],"host":["/"],"query":[{"description":{"content":"<p>(Required) Caller attribute key to group results by (e.g., partner_id, agent_id, etc.)</p>\n","type":"text/plain"},"key":"key","value":"partner_id"},{"description":{"content":"<p>Filter by specific key value. If not provided, returns data for all key values</p>\n","type":"text/plain"},"key":"key_filter","value":"PARTNER123"},{"description":{"content":"<p>Start date and time in YYYY-MM-DDTHH:MM:SS format</p>\n","type":"text/plain"},"key":"start_date","value":"2025-11-01T00:00:00"},{"description":{"content":"<p>End date and time in YYYY-MM-DDTHH:MM:SS format</p>\n","type":"text/plain"},"key":"end_date","value":"2025-11-30T23:59:59"},{"description":{"content":"<p>Number of items per page (max 1000)</p>\n","type":"text/plain"},"key":"limit","value":"10"},{"description":{"content":"<p>Offset for pagination (starts from 0)</p>\n","type":"text/plain"},"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"ab3329a0-eec1-42ca-a685-251790d81e6c","name":"200 Response","originalRequest":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"(Required) Bearer authentication token"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"//consolidated-call-report/custom-list?key=partner_id&key_filter=PARTNER123&start_date=2025-11-01T00:00:00&end_date=2025-11-30T23:59:59&limit=10&offset=0","host":["/"],"path":["consolidated-call-report","custom-list"],"query":[{"key":"key","value":"partner_id"},{"key":"key_filter","value":"PARTNER123"},{"key":"start_date","value":"2025-11-01T00:00:00"},{"key":"end_date","value":"2025-11-30T23:59:59"},{"key":"limit","value":"10"},{"key":"offset","value":"0"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 1 consolidated call custom list records\",\n  \"data\": [\n    {\n      \"key\": \"PARTNER123\",\n      \"value\": \"Singapore\",\n      \"q_contacts\": 1500,\n      \"q_transfers\": 1200,\n      \"prom_transfer\": 80.0,\n      \"prom_duration\": 185.5,\n      \"p_psat_reso\": 85.2,\n      \"p_resolution\": 92.1,\n      \"p_kindness\": 88.7,\n      \"p_rr\": 95.3\n    }\n  ],\n  \"meta\": {\n    \"limit\": 10,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 1\n  }\n}"}],"_postman_id":"adb54f95-3dca-4b6b-93d2-4085803d7802"},{"name":"Detailed IVR Custom List","id":"2fbe98ee-7138-43b9-ad51-081e40f6509e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"<p>(Required) Bearer authentication token</p>\n"},{"key":"Content-Type","value":"application/json"}],"url":"//detailed-ivr-report/custom-list?key=partner_id&key_filter=PARTNER123&start_date=2025-11-01T00:00:00&end_date=2025-11-30T23:59:59&limit=10&offset=0","description":"<h2 id=\"detailed-ivr-custom-list-api\">Detailed IVR Custom List API</h2>\n<p>Fetch detailed IVR report analytics data grouped by a custom caller attribute key, providing comprehensive metrics including IVR completion rates, abandon rates, and detailed flow analytics. This API delivers flexible IVR performance analytics across any grouping dimension.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<h4 id=\"required-parameters\">Required Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>key</td>\n<td>string</td>\n<td>Caller attribute key to group results by (e.g., partner_id, agent_id, queue_id)</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"optional-parameters\">Optional Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>key_filter</td>\n<td>string</td>\n<td>Filter by specific key value. If not provided, returns data for all key values</td>\n</tr>\n<tr>\n<td>start_date</td>\n<td>string</td>\n<td>Start date and time in YYYY-MM-DDTHH:MM:SS format. If not provided, returns data from all available dates</td>\n</tr>\n<tr>\n<td>end_date</td>\n<td>string</td>\n<td>End date and time in YYYY-MM-DDTHH:MM:SS format. If not provided, returns data up to current date</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Number of items per page (max 1000). Default: 1000</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>Offset for pagination (starts from 0). Default: 0</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<p>Returns a paginated response containing detailed IVR analytics with:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>boolean</td>\n<td>Request success status</td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Response message</td>\n</tr>\n<tr>\n<td>data</td>\n<td>array</td>\n<td>Array of detailed IVR analytics grouped by the specified key</td>\n</tr>\n<tr>\n<td>meta</td>\n<td>object</td>\n<td>Pagination metadata</td>\n</tr>\n</tbody>\n</table>\n</div><p>Each detailed IVR record contains:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>key</td>\n<td>string</td>\n<td>The grouping key value (e.g., partner ID, agent ID)</td>\n</tr>\n<tr>\n<td>value</td>\n<td>string</td>\n<td>Display name for the key value</td>\n</tr>\n<tr>\n<td>total_calls</td>\n<td>integer</td>\n<td>Total number of calls that entered the IVR</td>\n</tr>\n<tr>\n<td>completed_ivr</td>\n<td>integer</td>\n<td>Number of calls that completed the IVR flow</td>\n</tr>\n<tr>\n<td>abandoned_ivr</td>\n<td>integer</td>\n<td>Number of calls abandoned during IVR</td>\n</tr>\n<tr>\n<td>completion_rate</td>\n<td>float</td>\n<td>IVR completion rate percentage</td>\n</tr>\n<tr>\n<td>abandon_rate</td>\n<td>float</td>\n<td>IVR abandon rate percentage</td>\n</tr>\n<tr>\n<td>avg_ivr_duration</td>\n<td>float</td>\n<td>Average time spent in IVR in seconds</td>\n</tr>\n<tr>\n<td>transferred_to_agent</td>\n<td>integer</td>\n<td>Number of calls transferred to agents after IVR</td>\n</tr>\n<tr>\n<td>self_service_completed</td>\n<td>integer</td>\n<td>Number of calls completed through self-service</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /detailed-ivr-report/custom-list?key=partner_id&amp;key_filter=PARTNER123&amp;limit=10&amp;offset=0&amp;start_date=2025-11-01T00:00:00&amp;end_date=2025-11-30T23:59:59\n</code></pre><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 1 detailed IVR custom list records\",\n  \"data\": [\n    {\n      \"key\": \"PARTNER123\",\n      \"value\": \"Singapore\",\n      \"total_calls\": 2000,\n      \"completed_ivr\": 1800,\n      \"abandoned_ivr\": 200,\n      \"completion_rate\": 90.0,\n      \"abandon_rate\": 10.0,\n      \"avg_ivr_duration\": 45.5,\n      \"transferred_to_agent\": 1200,\n      \"self_service_completed\": 600\n    }\n  ],\n  \"meta\": {\n    \"limit\": 10,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 1\n  }\n}\n</code></pre>\n<h3 id=\"analytics-explanation\">Analytics Explanation</h3>\n<ul>\n<li><strong>key</strong>: The value of the specified grouping attribute</li>\n<li><strong>value</strong>: Display name or description for the key value</li>\n<li><strong>total_calls</strong>: Total number of calls that entered the IVR system</li>\n<li><strong>completed_ivr</strong>: Number of calls that successfully completed the IVR flow</li>\n<li><strong>abandoned_ivr</strong>: Number of calls that were abandoned during IVR navigation</li>\n<li><strong>completion_rate</strong>: Percentage of calls that completed the IVR flow</li>\n<li><strong>abandon_rate</strong>: Percentage of calls abandoned during IVR</li>\n<li><strong>avg_ivr_duration</strong>: Average time spent navigating the IVR system in seconds</li>\n<li><strong>transferred_to_agent</strong>: Number of calls transferred to live agents after IVR</li>\n<li><strong>self_service_completed</strong>: Number of calls resolved through self-service options</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Bearer authentication is required to access this API.</li>\n<li>Company filtering is automatically applied based on the authenticated user's company.</li>\n<li>Data includes all calls that interacted with the IVR system.</li>\n<li>Metrics are calculated using advanced SQL aggregations with proper null handling.</li>\n<li>IVR duration includes time from call entry to IVR exit or transfer.</li>\n</ul>\n","urlObject":{"path":["detailed-ivr-report","custom-list"],"host":["/"],"query":[{"description":{"content":"<p>(Required) Caller attribute key to group results by (e.g., partner_id, agent_id, etc.)</p>\n","type":"text/plain"},"key":"key","value":"partner_id"},{"description":{"content":"<p>Filter by specific key value. If not provided, returns data for all key values</p>\n","type":"text/plain"},"key":"key_filter","value":"PARTNER123"},{"description":{"content":"<p>Start date and time in YYYY-MM-DDTHH:MM:SS format</p>\n","type":"text/plain"},"key":"start_date","value":"2025-11-01T00:00:00"},{"description":{"content":"<p>End date and time in YYYY-MM-DDTHH:MM:SS format</p>\n","type":"text/plain"},"key":"end_date","value":"2025-11-30T23:59:59"},{"description":{"content":"<p>Number of items per page (max 1000)</p>\n","type":"text/plain"},"key":"limit","value":"10"},{"description":{"content":"<p>Offset for pagination (starts from 0)</p>\n","type":"text/plain"},"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"28e21cad-e0b0-49da-a184-8ad4766d7e5c","name":"200 Response","originalRequest":{"method":"GET","header":[{"key":"api-authorization","value":"<string>","description":"(Required) Bearer authentication token"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"//detailed-ivr-report/custom-list?key=partner_id&key_filter=PARTNER123&start_date=2025-11-01T00:00:00&end_date=2025-11-30T23:59:59&limit=10&offset=0","host":["/"],"path":["detailed-ivr-report","custom-list"],"query":[{"key":"key","value":"partner_id"},{"key":"key_filter","value":"PARTNER123"},{"key":"start_date","value":"2025-11-01T00:00:00"},{"key":"end_date","value":"2025-11-30T23:59:59"},{"key":"limit","value":"10"},{"key":"offset","value":"0"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n  \"status\": true,\n  \"message\": \"Successfully retrieved 1 detailed IVR custom list records\",\n  \"data\": [\n    {\n      \"key\": \"PARTNER123\",\n      \"value\": \"Singapore\",\n      \"total_calls\": 2000,\n      \"completed_ivr\": 1800,\n      \"abandoned_ivr\": 200,\n      \"completion_rate\": 90.0,\n      \"abandon_rate\": 10.0,\n      \"avg_ivr_duration\": 45.5,\n      \"transferred_to_agent\": 1200,\n      \"self_service_completed\": 600\n    }\n  ],\n  \"meta\": {\n    \"limit\": 10,\n    \"page\": 1,\n    \"total_pages\": 1,\n    \"total_records\": 1\n  }\n}\n"}],"_postman_id":"2fbe98ee-7138-43b9-ad51-081e40f6509e"}],"id":"b50f75b2-9574-4660-b08c-e06b3efcbb39","_postman_id":"b50f75b2-9574-4660-b08c-e06b3efcbb39","description":""},{"name":"Call Metadata","item":[{"name":"Metadata Ingestion API","id":"49a8f25f-30f7-489f-b62f-d5212374cd6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","description":"<p>Set content type to JSON</p>\n"}],"body":{"mode":"raw","raw":"{\n  \"call_uuid\": \"call_uuid\",\n  \"call_start_time\": \"2024-01-15T09:30:00Z\",\n  \"call_end_time\": \"2024-01-15T09:35:30Z\",\n  \"call_duration\": 120,\n  \"agent_id\": \"agent_001\",\n  \"phone_number\": \"65xxxxx\",\n  \"line_of_business_code\": \"001\",\n  \"type\": \"IN\",\n  \"recording_url\": \"https://recordings.example.com/calls/550e8400-e29b-41d4-a716-446655440000.wav\"\n}"},"url":"//platform/v1/calls/metadata","description":"<h2 id=\"metadata-ingestion-api\">Metadata Ingestion API</h2>\n<p>Ingest call metadata into the Toku platform for comprehensive call tracking, analytics, and reporting capabilities. This API allows external systems to push call metadata in real-time or batch mode.</p>\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<h4 id=\"required-fields\">Required Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>call_uuid</td>\n<td>string</td>\n<td>Unique call identifier. Must be unique across all calls in the system</td>\n</tr>\n<tr>\n<td>call_start_time</td>\n<td>string</td>\n<td>Call start timestamp in ISO 8601 format (UTC) with Z suffix</td>\n</tr>\n<tr>\n<td>call_end_time</td>\n<td>string</td>\n<td>Call end timestamp in ISO 8601 format (UTC) with Z suffix. Must be after call_start_time</td>\n</tr>\n<tr>\n<td>call_duration</td>\n<td>integer</td>\n<td>Total call duration in seconds. Should match the difference between start and end times</td>\n</tr>\n<tr>\n<td>agent_id</td>\n<td>string</td>\n<td>Unique identifier for the agent who handled the call</td>\n</tr>\n<tr>\n<td>phone_number</td>\n<td>string</td>\n<td>Phone number involved in the call. Can be customer number for inbound or destination number for outbound</td>\n</tr>\n<tr>\n<td>line_of_business_code</td>\n<td>string</td>\n<td>Code identifying the line of business or department handling the call</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Call direction. Accepted values: IN (inbound) or OUT (outbound)</td>\n</tr>\n<tr>\n<td>recording_url</td>\n<td>string</td>\n<td>Complete URL to the call recording file. Must be accessible by the Toku platform</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-parameters\">Response Parameters</h3>\n<p>Returns a response object with:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>boolean</td>\n<td>Request success status</td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Response message</td>\n</tr>\n<tr>\n<td>data</td>\n<td>object</td>\n<td>Response data object (empty on success)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request\">Example Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"call_uuid\": \"call_uuid_12345\",\n  \"call_start_time\": \"2024-01-15T09:30:00Z\",\n  \"call_end_time\": \"2024-01-15T09:35:30Z\",\n  \"call_duration\": 330,\n  \"agent_id\": \"agent_001\",\n  \"phone_number\": \"65123456789\",\n  \"line_of_business_code\": \"001\",\n  \"type\": \"IN\",\n  \"recording_url\": \"https://recordings.example.com/calls/550e8400-e29b-41d4-a716-446655440000.wav\"\n}\n\n</code></pre>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": true,\n  \"message\": \"Metadata ingested successfully\",\n  \"data\": {}\n}\n\n</code></pre>\n<h3 id=\"error-response-example\">Error Response Example</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": false,\n  \"message\": \"Validation error: Call UUID already exists\",\n  \"errors\": [\n    {\n      \"field\": \"call_uuid\",\n      \"message\": \"Call UUID already exists\"\n    }\n  ]\n}\n\n</code></pre>\n","urlObject":{"path":["platform","v1","calls","metadata"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"1f712054-0bf0-44da-b9c4-8c48f5ace0ed","name":"Successful Response","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","description":"Set content type to JSON"}],"body":{"mode":"raw","raw":"{\n  \"call_uuid\": \"call_uuid_12345\",\n  \"call_start_time\": \"2025-08-26T10:00:00Z\",\n  \"call_end_time\": \"2025-08-26T10:30:00Z\",\n  \"call_duration\": 1800,\n  \"agent_id\": \"agent001\",\n  \"phone_number\": \"65123456789\",\n  \"line_of_business_code\": \"001\",\n  \"type\": \"IN\",\n  \"recording_url\": \"https://recordings.example.com/calls/call_uuid_12345.wav\"\n}"},"url":"/platform/metadata/ingest","description":"## Metadata Ingestion API\nIngest call metadata into the Toku platform for comprehensive call tracking, analytics, and reporting capabilities. This API allows external systems to push call metadata in real-time or batch mode.\n\n### Required Fields\n- call_uuid (string) – Unique call identifier\n- call_start_time (string) – Call start timestamp in ISO 8601 format (UTC) with Z suffix\n- call_end_time (string) – Call end timestamp in ISO 8601 format (UTC) with Z suffix\n- call_duration (integer) – Call duration in seconds\n- agent_id (string) – Agent identifier\n- phone_number (string) – Phone number involved in the call\n- line_of_business_code (string) – Line of business code\n- type (string) – Call direction (IN for inbound, OUT for outbound)\n- recording_url (string) – URL to the call recording file\n- ingestion_source (string) – Source system identifier for the metadata ingestion\n\n### Notes\n- To call this API, a Bearer authentication is needed.\n- Calls with duplicate call_uuid will be rejected.\n- All timestamps must be in ISO 8601 format with UTC timezone (Z suffix).\n- Recording URL must be accessible by the Toku platform."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n  \"status\": true,\n  \"message\": \"Metadata ingested successfully\",\n  \"data\": {}\n}"}],"_postman_id":"49a8f25f-30f7-489f-b62f-d5212374cd6d"}],"id":"24139149-638a-446b-8b75-b914036a4014","_postman_id":"24139149-638a-446b-8b75-b914036a4014","description":""}],"variable":[{"id":"12bb17e7-76c1-4e89-8fe3-fe3ef9967354","key":"baseUrl","value":"/"}]}