Skip to main content

Call Details (Beta)

Retrieve enhanced call detail records with richer metadata including leg-level information, recording details, DTMF digits, and flow information.

Endpoint​

GET /v3/accounts/<account_sid>/calls/<call_sid>

Regional URLs​

RegionURL
Singaporehttps://<api_key>:<api_token>@ccm-api.exotel.com/v3/accounts/<account_sid>/calls/<call_sid>
Mumbaihttps://<api_key>:<api_token>@ccm-api.in.exotel.com/v3/accounts/<account_sid>/calls/<call_sid>

Path Parameters​

ParameterTypeDescription
account_sidStringYour Exotel account SID
call_sidStringUnique call identifier (from Make Call API response)

Code Examples​

curl -X GET \
'https://<api_key>:<api_token>@ccm-api.exotel.com/v3/accounts/<account_sid>/calls/<call_sid>' \
-H 'Content-Type: application/json'

Response — Active Call​

{
"request_id": "62bd4015e8c04ecea3a5fbd7272f95ae",
"method": "GET",
"http_code": 200,
"response": {
"code": 200,
"status": "success",
"call_details": {
"sid": "cabfb1dfa8c5e1c7f2c458423b7716b3",
"direction": "outbound",
"virtual_number": "+911414941199",
"state": "active",
"status": null,
"created_time": "2022-11-03 22:54:40+05:30",
"updated_time": "2022-11-03 22:54:58+05:30",
"start_time": "2022-11-03 22:54:57+05:30",
"end_time": "1970-01-01 05:30:00+05:30"
}
}
}

Response — Completed Call​

{
"request_id": "9107ba6bdfc5493e806b7ea82706f2e0",
"method": "GET",
"http_code": 200,
"response": {
"code": 200,
"status": "success",
"call_details": {
"sid": "cabfb1dfa8c5e1c7f2c458423b7716b3",
"direction": "outbound",
"virtual_number": "+911414941199",
"state": "terminal",
"status": "completed",
"legs": "/v3/accounts/<account_sid>/calls/cabfb1dfa8c5e1c7f2c458423b7716b3/legs",
"created_time": "2022-11-03 22:54:40+05:30",
"updated_time": "2022-11-03 22:56:04+05:30",
"start_time": "2022-11-03 22:54:57+05:30",
"end_time": "2022-11-03 22:56:04+05:30",
"total_duration": 84,
"total_talk_time": 59,
"custom_field": null,
"app_id": null,
"app_name": null,
"digits": null,
"recordings": [
{
"url": "https://s3-ap-south-1.amazonaws.com/exotel-mum1-recordings/Exotel/cabfb1dfa8c5e1c7f2c458423b7716b3.mp3"
}
]
}
}
}

Response Fields​

FieldTypeDescription
request_idStringUnique request identifier for debugging
methodStringHTTP method used (GET)
http_codeIntegerHTTP status code
response.codeIntegerResponse code
response.statusStringsuccess or failure
response.call_details.sidStringUnique call identifier
response.call_details.directionStringinbound, outbound-dial, or outbound-api
response.call_details.virtual_numberStringExoPhone/virtual number used
response.call_details.stateStringactive or terminal
response.call_details.statusStringCall status (see below)
response.call_details.legsStringURL to fetch leg-level details
response.call_details.created_timeDateTimeRequest initiation time (YYYY-MM-DD HH:mm:ss+hh:mm)
response.call_details.updated_timeDateTimeLast status update time
response.call_details.start_timeDateTimeCall start time
response.call_details.end_timeDateTimeCall completion time
response.call_details.total_durationIntegerTotal duration in seconds
response.call_details.total_talk_timeIntegerConversation duration in seconds
response.call_details.custom_fieldStringCustom data passed during the call request
response.call_details.app_idStringFlow ID used (null if no flow)
response.call_details.app_nameStringFlow name used (null if no flow)
response.call_details.digitsStringDTMF digits pressed (hyphen-separated, null if none)
response.call_details.recordingsArrayArray of recording objects with url field

Call States & Statuses​

States​

StateDescription
activeCall is ongoing or post-call processing pending
terminalCall completed and all data processed

Statuses​

StatusDescription
completedCall connected and ended normally
from_leg_unansweredFrom-leg (agent) did not answer
to_leg_unansweredTo-leg (customer) did not answer
from_leg_cancelledFrom-leg canceled the call
to_leg_no_dialCould not dial the to-leg
from_leg_no_dialCould not dial the from-leg

HTTP Status Codes​

CodeDescription
200Success
400Bad Request — Invalid parameters
401Unauthorized — Invalid credentials
404Not Found — Call SID doesn't exist
429Rate Limited — Too many requests
500Server Error
note
  • When the call is in active state, fields like total_duration, total_talk_time, recordings, and status may be null or incomplete.
  • The total_talk_time accumulates across multiple leg transfers.
  • Recording URLs are temporary pre-signed URLs.

Try It​