Get voice call details

Open in ChatGPT Open in ChatGPT to ask questions about this page
Open in Claude Open in Claude to ask questions about this page
Copy as MarkdownCopy this page as markdown to use with AI assistants
View as Markdown Open this page as markdown in a new tab

Returns the complete details of a single voice call, including the timeline, the rendered IVR flow (nodes, prompts, keypad edges) and, when applicable, the template used for a specific message id.

Endpoint

Request URL

https://cpaas.zoho.com/v1.1/voice/logs/{message_id} Copied!

Request Parameters

- Request Headers

ApiKeyAuthAPI Key

API key of an agent. Send the header as Authorization: Zoho-enczapikey {apiKey}. The agent and account are derived from the key.

- Path Parameters

message_iduuidMandatory

Unique identifier of the voice call, as returned by the send API (data.message_id) or the logs API.

Sample Request

Curl
Java
Python
Deluge
Copied!
curl --request GET \
  --url https://cpaas.zoho.com/v1.1/voice/logs/7ed0c6c0-b670-11f1-8810-3ed350183096 \
  --header 'Authorization: REPLACE_KEY_VALUE'

Response Parameters

- HTTP code 200

Response Body - application/json
JSON Object

Response containing the details of a single voice call.

Show Sub-Attributes
dataobject

A voice call log entry.

message_iduuid

Unique identifier of the call.

request_idstring

Identifier of the send request.

client_referencestring

Client reference supplied at send time, if any.

template_keyuuid

Key of the voice template used, for template calls.

agent_idstring

Identifier of the voice agent.

fromstring

Caller number, without the country code.

from_country_codestring

Country calling code of the caller number.

tostring

Recipient number, without the country code.

to_country_codestring

Country calling code of the recipient number.

statusstring

Call status.

Allowed Values :
Show Values ▾
INITIATEDCopied!
ANSWEREDCopied!
CALL_REJECTEDCopied!
CALL_UNANSWEREDCopied!
CALL_FAILEDCopied!
PROCESS_FAILEDCopied!
UNKNOWNCopied!
Copied!Copy all as JSON Array
process_statestring

Processing state of the request.

remote_ipstring

IP address the send request was made from.

languagestring

Text-to-speech language of the call.

voice_genderstring

Text-to-speech voice of the call.

is_batch_requestboolean
is_call_recording_availableboolean

Whether a recording of the call is available.

request_timestring

When the send request was received (ISO 8601).

start_timestring

When the call started (ISO 8601).

answered_timestring

When the call was answered (ISO 8601). Present only for answered calls.

end_timestring

When the call ended (ISO 8601).

time_takeninteger

Duration in seconds.

template_namestring

Name of the voice template used, for template calls.

call_timelineJSON Array

Chronological call events. For calls that failed initiation (status PROCESS_FAILED) only request_received is present.

Show Sub-Attributes
timestring
eventstring
flowJSON Object

The IVR flow executed for the call: named nodes with spoken/paused prompts (and optional keypad gather settings), edges that map keypad input to the next node, the start node and the overall duration limit.

Show Sub-Attributes
max_duration_in_secinteger

Maximum call duration in seconds.

start_nodestring

Name of the node the call starts at.

default_languagestring

Default text-to-speech language of the flow.

nodesJSON Object

Flow nodes keyed by node name. Each node has display name, terminal flag, prompts (SPEAK text / PAUSE duration) and optional gather settings (num_digits, timeout, loops) for keypad input.

Show Sub-Attributes
edgesJSON Array

Transitions between nodes: from node, to node and the keypad input (or timeout/*) that triggers the transition.

Show Sub-Attributes
fromstring
tostring
onstring
error_messageJSON Object

Why an accepted message failed asynchronously. Present only on failed messages (voice status PROCESS_FAILED, sms status process_failed).

Show Sub-Attributes
codestring

Failure code (e.g. voice VOI_502, sms SMS_108).

messagestring

Failure message.

error_msgstring

The same failure information serialized as a JSON string.

statusstring

- HTTP code 401

Response Body - application/json
JSON Object

Error response wrapper. The top-level code identifies the error class: TM_3301 bad syntax (400), TM_4001 access denied (401), TM_3601 request denied (403), TM_3501 unprocessable entity (422).

Show Sub-Attributes
errorJSON Object
Show Sub-Attributes
codestring
messagestring
detailsJSON Array
Show Sub-Attributes
object

A single validation or denial detail inside the error envelope.

codestring

Detail-level error code, e.g. VOI_102 (invalid phone number), VOI_104 (caller id required), VOI_105 (template or message content required), VOI_106 (required merge tags missing), MTR_107 (template not found), VOI_207 (from number not associated with the sending agent), SERR_110 (required parameter missing), SERR_157 (invalid API token).

messagestring
targetstring

The field the detail refers to, when applicable (e.g. from, to, merge_info).

target_value

The offending value, or for VOI_106 the comma-separated list of missing merge tag names.

request_idstring

Identifier of the failed request, when available.

- HTTP code 403

Response Body - application/json
JSON Object

Error response wrapper. The top-level code identifies the error class: TM_3301 bad syntax (400), TM_4001 access denied (401), TM_3601 request denied (403), TM_3501 unprocessable entity (422).

Show Sub-Attributes
errorJSON Object
Show Sub-Attributes
codestring
messagestring
detailsJSON Array
Show Sub-Attributes
object

A single validation or denial detail inside the error envelope.

codestring

Detail-level error code, e.g. VOI_102 (invalid phone number), VOI_104 (caller id required), VOI_105 (template or message content required), VOI_106 (required merge tags missing), MTR_107 (template not found), VOI_207 (from number not associated with the sending agent), SERR_110 (required parameter missing), SERR_157 (invalid API token).

messagestring
targetstring

The field the detail refers to, when applicable (e.g. from, to, merge_info).

target_value

The offending value, or for VOI_106 the comma-separated list of missing merge tag names.

request_idstring

Identifier of the failed request, when available.

Sample Response: HTTP 200

Successful template call with IVR flow
Copied!
  {
    "data": {
      "message_id": "7ed0c6c0-b670-11f1-8810-3ed350183096",
      "request_id": "7ed0c6c0-b670-11f1-8810-3ed350183096",
      "client_reference": "order-confirm-1001",
      "template_key": "794dc9c1-b268-11f1-bed6-b6d94062a427",
      "template_name": "Order Confirmation",
      "agent_id": "3cca5d24c08773",
      "from": "4155550142",
      "from_country_code": "+1",
      "to": "9876543210",
      "to_country_code": "+91",
      "status": "INITIATED",
      "process_state": "processed",
      "language": "en",
      "voice_gender": "FEMALE",
      "is_batch_request": false,
      "is_call_recording_available": false,
      "request_time": "2026-09-22T15:59:30+05:30",
      "time_taken": 147,
      "call_timeline": [
        {
          "time": "2026-09-22T15:59:30+05:30",
          "event": "request_received"
        }
      ],
      "flow": {
        "max_duration_in_sec": 120,
        "start_node": "confirm_prompt",
        "default_language": "en",
        "nodes": {
          "confirm_prompt": {
            "name": "Confirm Prompt",
            "terminal": false,
            "gather": {
              "loops": 2,
              "num_digits": 1,
              "timeout": 5
            },
            "prompts": [
              {
                "type": "SPEAK",
                "text": "Hello {{customer_name}}. Press 1 to confirm your order. Press 2 to cancel."
              }
            ]
          },
          "confirm_order": {
            "name": "Confirm Order",
            "terminal": true,
            "prompts": [
              {
                "type": "SPEAK",
                "text": "Your order is confirmed. Goodbye."
              }
            ]
          }
        },
        "edges": [
          {
            "from": "confirm_prompt",
            "to": "confirm_order",
            "on": "1"
          }
        ]
      }
    },
    "status": "success"
  }
                
▼ Show full
Call that failed initiation - flat error_message {code, message}, timeline stops at request_received
Copied!
  {
    "data": {
      "message_id": "9c05e8c0-b1a1-11f1-92cb-2a30dd3b833c",
      "request_id": "9c05e8c0-b1a1-11f1-92cb-2a30dd3b833c",
      "template_key": "794dc9c1-b268-11f1-bed6-b6d94062a427",
      "template_name": "Order Confirmation",
      "agent_id": "3cca5d24c08773",
      "from": "4155550142",
      "from_country_code": "+1",
      "to": "9876543210",
      "to_country_code": "+91",
      "status": "PROCESS_FAILED",
      "process_state": "processed",
      "language": "en",
      "voice_gender": "FEMALE",
      "is_batch_request": false,
      "is_call_recording_available": false,
      "remote_ip": "10.61.232.19",
      "error_message": {
        "code": "VOI_502",
        "message": "Call initiation failed"
      },
      "error_msg": "{\"code\":\"VOI_502\",\"message\":\"Call initiation failed\"}",
      "request_time": "2026-09-22T15:59:30+05:30",
      "time_taken": 790,
      "call_timeline": [
        {
          "time": "2026-09-22T15:59:30+05:30",
          "event": "request_received"
        }
      ]
    },
    "status": "success"
  }
                
▼ Show full

Sample Response: HTTP 401

Copied!
  {
    "error": {
      "code": "TM_4001",
      "details": [
        {
          "code": "SERR_157",
          "message": "Invalid API Token found"
        }
      ],
      "message": "Access Denied"
    }
  }
                
▼ Show full

Sample Response: HTTP 403

Copied!
  {
    "error": {
      "code": "TM_3601",
      "details": [
        {
          "code": "SERR_120",
          "message": "This URL does not exist"
        }
      ],
      "message": "Request Denied"
    }
  }
                
▼ Show full