Understand Zoom Phone call history
On November 30 2025, Zoom Phone will sunset these call log APIs: Get account's call logs and Get call log details.
For more information, see Zoom Phone call log deprecation.
The Get account's call history API replaces the Get account's call logs API. Similar to Get account's call logs, Get account's call history returns a summary of all inbound and outbound calls for phone users in the account.
The Get account's call history API provides an administrator-level API that shows all call history on the account. It is available for account-level OAuth apps with the phone:read:list_call_logs:admin scope.
After using the Get account's call history API to understand the details of a call, you should use the Get call path API. It is an administrator-level API that provides logs about a call path. Get call path is also available for account-level OAuth apps with the phone:read:call_log:admin scope. Both of these APIs provide the details to properly analyze and report your Zoom Phone call data.
In addition to the API updates, the phone.callee_call_history_completed and phone.caller_call_history_completed webhook events are replacing the phone.callee_call_log_completed and phone.caller_call_log_completed events, respectively. Furthermore, the new Get call history detail API has been introduced to complement these webhook events.
To address full call accounting and analytics, we'll discuss Get account's call history, Get call path, new webhook events, and Get call history detail API.
Get an account's call history
Get account's call history returns a JSON array with the top-level data for each call record. For inbound and outbound calls, the top-level data is generally the entire call. However, for inbound calls, the top-level data might show only a small fraction of how the call routes in the Zoom Phone platform.
Many different call flows can occur in the Zoom Phone platform. Here are some of the more common call flows.
| Call flow 1 | Call flow 2 | Call flow 3 |
|---|---|---|
| The user places an outbound call. | The user's direct phone number receives an inbound call. | (a) The auto receptionist receives an inbound call. (b) The caller dials a user's extension. (c) The user answers the call. |
| Call flow 4 | Call flow 5 | Call flow 6 |
|---|---|---|
| (a) The call queue receives an inbound call. (b) The call routes to the user. (c) The user answers the call. | (a) The auto receptionist receives an inbound call. (b) The caller selects from a phone menu. (c) The call routes to a call queue. (d) The call routes to the user. (e) The user answers the call. | (a) The shared line receives an inbound call. (b) The user answers the call. |
The call flows for 3, 4, 5, and 6 route calls through multiple components in Zoom Phone.
To see all of the call details for call workflows such as these or others, you must query the Get call path API for each call. It returns a detailed response with the subsequent components that routed the call.
Get the call path
Get call path queries the Zoom Phone platform for details about a particular call.
The response contains data such as the call queue that routed the call, the users who were offered the call, and the specific user that answered the call.
To query Get call path, you need to provide the callLogId from the response from Get account's call history.
Analyze call logs
Here's an example of how to analyze call logs with Get account's call history and Get call path. Let's say we have a call flow shown below:
- An external caller dials into a phone number assigned to an auto receptionist named
Jane test AR. - The external caller makes a menu selection on the auto receptionist that routes the call to a particular call queue named
Jane Yu test CQ. - The call queue has simultaneous distribution and routes the call to a group that contains two users.
- The call rings to both users simultaneously, but Sara Ball isn't able to answer the call.
- Jane Yu answers the call.
Let's take a look at the APIs that we can use to gather the data associated with the above call flow.
1. Use Get account's call history to find the call.
You can use the GET /phone/call_history endpoint to retrieve Zoom Phone call logs. The response shows call direction, participants, duration, and site details. In the example below, the caller dialed jane test AR, an auto receptionist. Since the call involved an auto receptionist, you can get more details.
Use the call ID to query the Get call path endpoint and view the full call flow.
Example request
GET https://api.zoom.us/v2/phone/call_history
Response
{
"next_page_token": "xVLiFkT6abcLkD2YbaxkZp9hAu7vkXkzGM2",
"page_size": 30,
"total_records": 333,
"from": "2023-12-01",
"to": "2023-12-12",
"call_logs": [
{
"id": "20231212-557b1b9b-cba3-4185-8d8a-d51b2879127c",
"direction": "inbound",
"department": "Product",
"duration": 43,
"call_id": "7311827452278728193",
"connect_type": "external",
"call_type": "general",
"caller_name": "David Smith",
"caller_did_number": "+14085333518",
"callee_ext_id": "xdvzrR8mR02fE5i06Ki9NQ",
"callee_name": "jane test AR",
"callee_did_number": "+13072047607",
"callee_ext_number": "1107985",
"callee_ext_type": "auto_receptionist",
"cost_center": "Support",
"site_id": "gQn2fRO9T4euK8BVeU-adQ",
"site_name": "Main",
"start_time": "2023-12-12T21:44:53Z",
"end_time": "2023-12-12T21:45:35Z",
"call_result": "answered"
}
]
}
From the above response we can see the information about the caller, and that the caller dialed into the jane test AR auto receptionist.
Since we know this is an auto receptionist call, we know there is usually more information than we can see from Get account's call history.
Let's query Get call path for this particular call with id: 20231212-557b1b9b-cba3-4185-8d8a-d51b2879127c to get more information.
2. Query Get call path.
Use the GET /phone/call_history/{call_id} endpoint to retrieve detailed information about a specific call. The response includes the full call path and shows how the call flowed through auto receptionists, call queues, and users. This approach helps you trace every segment of the call.
Use the ID from the above example to query Get call path.
Example request
GET https://api.zoom.us/v2/phone/call_history/20231212-557b1b9b-cba3-4185-8d8a-d51b2879127c
Response
{
"id": "20231212-557b1b9b-cba3-4185-8d8a-d51b2879127c",
"direction": "inbound",
"department": "Product",
"duration": 43,
"call_id": "7311827452278728193",
"connect_type": "external",
"call_type": "general",
"caller_name": "David Smith",
"caller_did_number": "+14085333518",
"callee_ext_id": "xdvzrR8mR02fE5i06Ki9NQ",
"callee_name": "jane test AR",
"callee_did_number": "+13072047607",
"callee_ext_number": "1107985",
"callee_ext_type": "auto_receptionist",
"cost_center": "Support",
"site_id": "gQn2fRO9T4euK8BVeU-adQ",
"site_name": "Main",
"start_time": "2023-12-12T21:44:53Z",
"end_time": "2023-12-12T21:45:35Z",
"call_path": [
{
"id": "20231212-861219ba-9575-4435-9944-6d9ec467a846",
"direction": "inbound",
"department": "Product",
"event": "incoming",
"result": "accepted",
"node": 1,
"segment": 1,
"call_id": "7311827452278728193",
"connect_type": "external",
"call_type": "general",
"caller_name": "David Smith",
"caller_did_number": "+14085333518",
"callee_ext_id": "xdvzrR8mR02fE5i06Ki9NQ",
"callee_name": "jane test AR",
"callee_did_number": "+13072047607",
"callee_ext_number": "1107985",
"callee_ext_type": "auto_receptionist",
"cost_center": "Support",
"site_id": "gQn2fRO9T4euK8BVeU-adQ",
"site_name": "Main",
"start_time": "2023-12-12T21:44:53Z",
"end_time": "2023-12-12T21:45:02Z",
"is_node": 1,
"hold_time": 0,
"wait_time": 0
},
{
"id": "20231212-c6d6b56c-1401-4e06-b847-a9808bebcf63",
"direction": "inbound",
"department": "Product",
"event": "",
"result": "succeeded",
"node": 1,
"segment": 1,
"call_id": "7311827452278728193",
"connect_type": "external",
"call_type": "general",
"caller_name": "David Smith",
"caller_did_number": "+14085333518",
"callee_ext_id": "xdvzrR8mR02fE5i06Ki9NQ",
"callee_name": "jane test AR",
"callee_ext_number": "1107985",
"callee_ext_type": "auto_receptionist",
"cost_center": "Support",
"site_id": "gQn2fRO9T4euK8BVeU-adQ",
"site_name": "Main",
"start_time": "2023-12-12T21:44:53Z",
"answer_time": "2023-12-12T21:44:53Z",
"end_time": "2023-12-12T21:45:02Z",
"operator_ext_number": "1107985",
"operator_ext_id": "xdvzrR8mR02fE5i06Ki9NQ",
"operator_ext_Type": "auto_receptionist",
"operator_name": "jane test AR",
"press_key": "1",
"is_node": 0,
"hold_time": 0,
"wait_time": 0
},
{
"id": "20231212-0910da57-3f30-488d-8a17-c6ea37fb126b",
"direction": "inbound",
"event": "forward",
"result": "answered",
"node": 2,
"segment": 1,
"call_id": "7311827452278728193",
"connect_type": "external",
"call_type": "general",
"caller_name": "David Smith",
"caller_did_number": "+14085333518",
"callee_ext_id": "NPdquedXS2KvlqGiYebeEg",
"callee_name": "Jane Yu test cq",
"callee_ext_number": "1101108",
"callee_ext_type": "call_queue",
"site_id": "gQn2fRO9T4euK8BVeU-adQ",
"site_name": "Main",
"start_time": "2023-12-12T21:45:02Z",
"answer_time": "2023-12-12T21:45:17Z",
"end_time": "2023-12-12T21:45:35Z",
"operator_ext_number": "1107985",
"operator_ext_id": "xdvzrR8mR02fE5i06Ki9NQ",
"operator_ext_Type": "auto_receptionist",
"operator_name": "jane test AR",
"is_node": 1,
"recording_id": "d8d963272aa14eae8040207dc4848fc8",
"recording_type": "automatic",
"hold_time": 0,
"wait_time": 16
},
{
"id": "20231212-d9137f5f-ff7f-4f9e-9139-f3f457ceb00a",
"direction": "inbound",
"department": "engineer",
"event": "ring_to_member",
"result": "no_answer",
"node": 2,
"segment": 1,
"call_id": "7311827452278728193",
"connect_type": "external",
"call_type": "general",
"caller_name": "David Smith",
"caller_did_number": "+14085333518",
"callee_ext_id": "eTQXtZjXRe6KfKlAi5VOcQ",
"callee_name": "Sara Ball",
"callee_email": "sara.ball+go@test.zoom.us",
"callee_ext_number": "1107983",
"callee_ext_type": "user",
"site_id": "gQn2fRO9T4euK8BVeU-adQ",
"site_name": "Main",
"group_id": "og4LSlX1QK-54R9iCYMT1w",
"start_time": "2023-12-12T21:45:05Z",
"end_time": "2023-12-12T21:45:05Z",
"operator_ext_number": "1101108",
"operator_ext_id": "NPdquedXS2KvlqGiYebeEg",
"operator_ext_Type": "call_queue",
"operator_name": "Jane Yu test cq",
"is_node": 0,
"hold_time": 0,
"wait_time": 0
},
{
"id": "20231212-d8d96327-2aa1-4eae-8040-207dc4848fc8",
"direction": "inbound",
"department": "Product",
"event": "ring_to_member",
"result": "answered",
"node": 2,
"segment": 1,
"call_id": "7311827452278728193",
"connect_type": "external",
"call_type": "general",
"caller_name": "David Smith",
"caller_did_number": "+14085333518",
"callee_ext_id": "aAFk54YBT8C-koE610IAPw",
"callee_name": "Jane Yu",
"callee_email": "jane.yu+go@test.zoom.us",
"callee_ext_number": "1107967",
"callee_ext_type": "user",
"site_id": "gQn2fRO9T4euK8BVeU-adQ",
"site_name": "Main",
"group_id": "og4LSlX1QK-54R9iCYMT1w",
"start_time": "2023-12-12T21:45:05Z",
"answer_time": "2023-12-12T21:45:17Z",
"end_time": "2023-12-12T21:45:35Z",
"operator_ext_number": "1101108",
"operator_ext_id": "NPdquedXS2KvlqGiYebeEg",
"operator_ext_Type": "call_queue",
"operator_name": "Jane Yu test cq",
"is_node": 0,
"device_private_ip": "10.0.0.23",
"device_public_ip": "172.7.163.46",
"hold_time": 0,
"wait_time": 13
}
]
}
3. Analyze the results
The caller first entered an auto receptionist based on the response. Then, the end user pressed '1' to route to the call queue named Jane Yu test CQ.
The call is simultaneous because the start_time for Jane Yu and Sara was the same.
For Sara, the event and result are ring to member and no_answer, which indicates she didn't answer the call.
On the other hand, for Jane Yu, the event and result are ring_to_member and answered, which indicates Jane Yu answered the call.
Use webhooks
When listening to these new events, you receive an ID field within the call_logs array of the payload. Use this ID exclusively with the Get call history detail endpoint to retrieve the full details of the call.
Example webhook payload
{
"event": "phone.callee_call_history_completed",
"payload": {
"account_id": "TQTvjT52Tmi_wrhASNNOEmm",
"object": {
"call_logs": [
{
"id": "20250313-2ab944a3-99e1-447b-886e-62b3fa1e4c75",
"call_id": "7018317023722949162",
"group_id": "_sj190JDFasa19321_adA7",
"connect_type": "internal",
"call_type": "general",
"direction": "inbound",
"caller_ext_id": "ATu63--9TjudZetpf4UuQg",
"caller_name": "Caller name",
"caller_email": "test@abc.com"
// ... additional fields ...
}
],
"user_id": "IqoQmDRqS-aIoXqV_FZ88w"
}
},
"event_ts": 1623218132807
}
Get call history detail with webhook payload ID
Use the Get call history detail endpoint to retrieve detailed information about a specific phone call using the call log ID from a Zoom Phone webhook payload. The response includes caller and callee details, device type, connection type, and call direction.
Note: Use this endpoint only with webhook-provided IDs. If you use the same ID with the Get call path endpoint, Zoom returns a 404 error because that endpoint doesn't support webhook ID formats.
Example request
GET https://api.zoom.us/v2/phone/call_history_detail/20250313-2ab944a3-99e1-447b-886e-62b3fa1e4c75
Response
{
"id": "20250313-2ab944a3-99e1-447b-886e-62b3fa1e4c75",
"call_id": "7018317023722949162",
"connect_type": "internal",
"call_type": "general",
"direction": "inbound",
"caller_ext_id": "ATu63--9TjudZetpf4UuQg",
"caller_name": "Caller name",
"caller_email": "test@abc.com",
"caller_did_number": "+12059300920",
"caller_ext_number": "101229",
"caller_ext_type": "user",
"caller_number_type": "external_pstn",
"caller_device_type": "MAC_Client(6.0.2.33403)",
"caller_country_iso_code": "US",
"caller_country_code": "1",
"callee_ext_id": "ATu63--9TjudZetpf4UuQg",
"callee_name": "Callee name",
"callee_did_number": "+12059300920",
"callee_ext_number": "101229",
"callee_email": "test@abc.com"
// ... additional fields ...
}
If you try using the ID from this webhook payload in the Get call path endpoint, you receive an 404 error.
Example request
GET https://api.zoom.us/v2/phone/call_history/20250313-2ab944a3-99e1-447b-886e-62b3fa1e4c75
Response
{
"code": 404,
"message": "Call log information was not found."
}
Keep in mind that IDs from the previous (deprecated) endpoints and webhooks are not compatible with the new Call History APIs and webhooks. If you attempt to use old IDs with the new endpoints, you receive errors.
The deprecated APIs and webhooks are no longer supported after November 30, 2025. Migrate to
phone/call_historyendpoints to avoid or prevent disruption to your apps or systems.