Call History
Call history records describe every call that passes through your phone system: its direction, its status, and when it started. Use these endpoints to list and filter calls, then drill into any single call to see its full call flow.
List Call History
Returns the call history for your domain. Add query parameters to filter by date range, direction, and status.
https://admin.zvmstelecom.net/api/v1/domains/{DOMAIN_UUID}/cdrsPath parameters
Your domain's UUID, provided with your API credentials.
Query parameters Beta
Maximum number of results in the response, from 1 to 500. Defaults to 500.
Filter by call direction. Accepted values:
inboundoutboundlocalFilter by call status. Accepted values:
answeredno answercancelledvoicemailmissed callabandonedValues containing spaces must be URL-encoded: use no%20answer and missed%20call.
Start of the date range, as a Unix epoch timestamp in seconds (UTC). Example: 1784617200
End of the date range, as a Unix epoch timestamp in seconds (UTC). Example: 1784703599
Example request
curl -s "https://admin.zvmstelecom.net/api/v1/domains/${DOMAIN_UUID}/cdrs?date_from=1784617200&date_to=1784703599&status=answered&direction=inbound" \ -H "Authorization: Bearer ${TOKEN}" \ -H "Accept: application/json" | python3 -m json.tool
Response
Returns a JSON list of call records. These fields are the ones referenced throughout these docs:
| Field | Description |
|---|---|
xml_cdr_uuid | Unique ID of the call. Use it with Retrieve a Call Flow and Recording URL. |
start_epoch | Time the call started, as a Unix epoch timestamp in seconds. |
direction | Call direction: inbound, outbound, or local. |
status | Call status, for example answered or voicemail. |
Sort order. Records come back in alphabetical order of each call's UUID, not by time. To list calls newest to oldest, sort the results on start_epoch in descending order.
Example: Today's Answered Calls
To get every answered inbound call for one day, combine a date range with the status and direction filters.
https://admin.zvmstelecom.net/api/v1/domains/{DOMAIN_UUID}/cdrs?date_from=1784617200&date_to=1784703599&status=answered&direction=inbound| Parameter | Value | Meaning |
|---|---|---|
date_from | 1784617200 | July 21, 2026, 12:00:00 AM Pacific Time (PDT) |
date_to | 1784703599 | July 21, 2026, 11:59:59 PM Pacific Time (PDT) |
status | answered | Only calls that were answered |
direction | inbound | Only incoming calls |
The response contains every answered inbound call on July 21, 2026, Pacific Time. To check timestamps by hand while testing, use an epoch converter.
Generating a day's epoch range
The date_from and date_to values are in UTC, so a "day" depends on your time zone. This Bash script prints the start and end of today in a given time zone. It needs GNU date (standard on Linux).
TIMEZONE="America/Los_Angeles" TODAY=$(TZ="$TIMEZONE" date +"%Y-%m-%d") START_TIME=$(TZ="$TIMEZONE" date -d "$TODAY 00:00:00" +%s) END_TIME=$(TZ="$TIMEZONE" date -d "$TODAY 23:59:59" +%s) echo "PST date: $TODAY" echo "PST Start time: $START_TIME" echo "PST End time: $END_TIME"
Pass the output straight into a request:
curl -s "https://admin.zvmstelecom.net/api/v1/domains/${DOMAIN_UUID}/cdrs?date_from=${START_TIME}&date_to=${END_TIME}&status=answered&direction=inbound" \ -H "Authorization: Bearer ${TOKEN}" \ -H "Accept: application/json" | python3 -m json.tool
Retrieve a Call Flow
Returns a single call's call flow, tracing where the call went from start to finish. Depending on where the call went, each step includes more specific details than the List Call History response.
https://admin.zvmstelecom.net/api/v1/domains/{DOMAIN_UUID}/cdrs/{XML_CDR_UUID}Path parameters
Your domain's UUID, provided with your API credentials.
The call's ID, taken from the xml_cdr_uuid field of a List Call History result.
Example request
XML_CDR_UUID="YOUR_XML_CDR_UUID" curl -s "https://admin.zvmstelecom.net/api/v1/domains/${DOMAIN_UUID}/cdrs/${XML_CDR_UUID}" \ -H "Authorization: Bearer ${TOKEN}" \ -H "Accept: application/json" | python3 -m json.tool
Every step in a call flow that has a status, such as answered, also appears as its own record in the List Call History response. The call flow shows how those records connect into one call.