List CDRs
Retrieve paginated Vobiz call detail records with filters for date range, number, direction, and duration - the primary endpoint for call analytics and billing review.
curl --request GET \
--url https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>'import requests
url = "https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr"
headers = {
"X-Auth-ID": "<api-key>",
"X-Auth-Token": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Auth-ID': '<api-key>', 'X-Auth-Token': '<api-key>'}
};
fetch('https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"account_id": "MA_XXXXXXXX",
"count": 2,
"data": [
{
"account_id": "MA_XXXXXXXX",
"answer_time": "2026-03-25T10:00:01Z",
"billsec": 42,
"bridge_uuid": "aabbccdd-1234-5678-90ab-cdef12345678",
"call_direction": "outbound",
"caller_id_name": "John Doe",
"caller_id_number": "+919876543210",
"campaign_id": null,
"carrier_ip": "10.0.0.1",
"codec": "PCMU",
"context": "voice-api",
"cost": 0.45,
"created_at": "2026-03-25T10:00:42Z",
"currency": "INR",
"customer_endpoint": null,
"destination_number": "+918012345678",
"duration": 47,
"end_time": "2026-03-25T10:00:42Z",
"failure_code": null,
"failure_reason": null,
"hangup_cause": "NORMAL_CLEARING",
"hangup_cause_code": 4000,
"hangup_cause_name": "Normal Hangup",
"hangup_disposition": "send_bye",
"hangup_source": "Caller",
"id": 18000000,
"jitter": 0.2,
"mos": 4.5,
"network_addr": "10.0.0.1",
"origination_region": "mumbai",
"packet_loss": 0.1,
"progress_time": "2026-03-25T10:00:00Z",
"region": "ap-south-1",
"ring_time": 5,
"sip_call_id": "11223344-5566-7788-99aa-bbccddeeff00",
"sip_user_agent": "Vobiz",
"start_time": "2026-03-25T10:00:00Z",
"streaming_cost": 0,
"terminated_to": null,
"total_cost": 0.45,
"trunk_id": null,
"updated_at": "2026-03-25T10:00:42Z",
"uuid": "aabbccdd-1234-5678-90ab-cdef12345678"
},
{
"account_id": "MA_XXXXXXXX",
"answer_time": null,
"billsec": 0,
"bridge_uuid": null,
"call_direction": "inbound",
"caller_id_name": "",
"caller_id_number": "+919876543210",
"campaign_id": null,
"carrier_ip": null,
"codec": "PCMU",
"context": "voice-api",
"cost": 0,
"created_at": "2026-03-25T09:30:12Z",
"currency": "INR",
"customer_endpoint": null,
"destination_number": "+918012345678",
"duration": 12,
"end_time": "2026-03-25T09:30:12Z",
"failure_code": "16",
"failure_reason": "NO_ANSWER",
"hangup_cause": "NO_ANSWER",
"hangup_cause_code": 4100,
"hangup_cause_name": "No Answer",
"hangup_disposition": "send_cancel",
"hangup_source": "Callee",
"id": 18000001,
"jitter": 0,
"mos": 0,
"network_addr": "10.0.0.1",
"origination_region": "mumbai",
"packet_loss": 0,
"progress_time": "2026-03-25T09:30:00Z",
"region": "ap-south-1",
"ring_time": 12,
"sip_call_id": "99887766-5544-3322-1100-aabbccddeeff",
"sip_user_agent": "Vobiz",
"start_time": "2026-03-25T09:30:00Z",
"streaming_cost": 0,
"terminated_to": null,
"total_cost": 0,
"trunk_id": null,
"updated_at": "2026-03-25T09:30:12Z",
"uuid": "11223344-5566-7788-99aa-bbccddeeff00"
}
],
"pagination": {
"page": 1,
"per_page": 20,
"total": 4500,
"pages": 225,
"has_next": true,
"has_prev": false
},
"success": true,
"summary": {
"answerRate": 48.2,
"answeredCalls": 2171,
"avgCallDuration": "28s",
"last_call_at": "2026-03-25T10:00:00Z",
"totalCalls": 4500,
"total_billable_seconds": 61211,
"total_cost": 1564.51,
"total_duration_seconds": 118234
}
}pagination block for paging and a summary block of aggregate metrics across the filtered set. A CDR is written only after a call completes, so very recent calls may take a few seconds to appear.
Filters
All filters are optional and combine with AND. Apply them as query-string parameters.| Parameter | Type | Default | Notes |
|---|---|---|---|
from_number | string | - | Originating (caller) number. Substring or full E.164, e.g. 9876543210. |
to_number | string | - | Destination (callee) number. Substring or full E.164. |
start_date | string YYYY-MM-DD | - | Beginning of the period. Required together with end_date. |
end_date | string YYYY-MM-DD | - | End of the period. Required together with start_date. |
call_direction | enum | - | inbound or outbound only. |
min_duration | integer | - | Seconds. Excludes calls shorter than this value. |
sip_call_id | string | - | The SIP Call-ID of the call, e.g. dD1qwu5VZ5iK3ed5u3uspjY5RKL. Matches the sip_call_id field on the CDR. |
bridge_uuid | string | - | UUID of the bridged leg, e.g. 4b7ae653-f40d-42f1-b582-6b05dfcd0c0a. Matches the bridge_uuid field on the CDR. |
hangup_cause | string | - | Telephony hangup cause, e.g. NORMAL_CLEARING. See Hangup Causes. |
hangup_disposition | string | - | How the leg was released, e.g. send_refuse. |
context | string | - | Call context, e.g. sip-trunking. |
campaign_id | string | - | Campaign identifier associated with the call. |
search | string | - | Free-text search across CDR fields (numbers, IDs, etc.). |
page | integer | 1 | Page number. |
per_page | integer | 20 | Records per page. Max 100. |
from_number / to_number filters map to the caller_id_number / destination_number fields on the returned CDR object - filter on the former, read the latter. The other filters (sip_call_id, bridge_uuid, hangup_cause, hangup_disposition, context, campaign_id) match the same-named CDR fields directly.Pagination
Thepagination object is { page, per_page, total, pages, has_next, has_prev } - not current_page / total_records. total is the count across all pages and pages = ceil(total / per_page). Loop while has_next is true, incrementing page.
Reading the summary
summary is computed over the filtered set, not your whole account:
totalCalls,answeredCalls,answerRate(percent)avgCallDurationis a string like"28s"- parse it, don’t do arithmetic on it. For numeric work usetotal_duration_secondsandtotal_billable_seconds.total_costis in the accountcurrency;last_call_atis ISO 8601.
Edge cases
- No matches: a valid request that matches nothing returns
200withdata: [],count: 0, and a zeroedsummary- not a404. - Quality metrics on unanswered calls:
mos,jitter, andpacket_lossare often0(ornull) for calls that never carried media. Treatmos: 0as “no media”, not “worst quality”. - Unanswered calls have
answer_time: nullandbillsec: 0. - Casing:
Accountis capitalized andcdris lowercase in the path.
Example
curl -G "https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr" \
--data-urlencode "start_date=2026-03-01" \
--data-urlencode "end_date=2026-03-17" \
--data-urlencode "call_direction=outbound" \
--data-urlencode "min_duration=10" \
--data-urlencode "page=1" --data-urlencode "per_page=50" \
-H "X-Auth-ID: {auth_id}" \
-H "X-Auth-Token: {auth_token}"
# Find the CDR(s) for a specific bridged leg or SIP Call-ID
curl -sS "https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr?bridge_uuid=4b7ae653-f40d-42f1-b582-6b05dfcd0c0a" \
-H "X-Auth-ID: {auth_id}" \
-H "X-Auth-Token: {auth_token}"
curl -sS "https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr?sip_call_id=dD1qwu5VZ5iK3ed5u3uspjY5RKL" \
-H "X-Auth-ID: {auth_id}" \
-H "X-Auth-Token: {auth_token}"
hangup_cause / hangup_cause_code.Authorizations
Your Vobiz account Auth ID
Your Vobiz account Auth Token
Path Parameters
Your account Auth ID
"MA_XXXXXX"
Query Parameters
Filter by the originating phone number (caller).
"9876543210"
Filter by the destination phone number (callee).
"1234567890"
Beginning of the search period (YYYY-MM-DD). Required when using end_date.
"2026-03-01"
End of the search period (YYYY-MM-DD). Required when using start_date.
"2026-03-17"
Filter by direction.
inbound, outbound Minimum call duration in seconds. Excludes calls shorter than this value.
10
Filter by the SIP Call-ID of the call (matches the cdr's sip_call_id field).
"dD1qwu5VZ5iK3ed5u3uspjY5RKL"
Filter by the UUID of the bridged leg (matches the cdr's bridge_uuid field).
"4b7ae653-f40d-42f1-b582-6b05dfcd0c0a"
Filter by telephony hangup cause, e.g. NORMAL_CLEARING.
"NORMAL_CLEARING"
Filter by how the leg was released, e.g. send_refuse.
"send_refuse"
Filter by the call context, e.g. sip-trunking.
"sip-trunking"
Filter by the campaign identifier associated with the call.
Free-text search across CDR fields (numbers, IDs, etc.).
Page number for paginated results.
Number of records per page. Max: 100.
x <= 100Was this page helpful?
curl --request GET \
--url https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>'import requests
url = "https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr"
headers = {
"X-Auth-ID": "<api-key>",
"X-Auth-Token": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Auth-ID': '<api-key>', 'X-Auth-Token': '<api-key>'}
};
fetch('https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"account_id": "MA_XXXXXXXX",
"count": 2,
"data": [
{
"account_id": "MA_XXXXXXXX",
"answer_time": "2026-03-25T10:00:01Z",
"billsec": 42,
"bridge_uuid": "aabbccdd-1234-5678-90ab-cdef12345678",
"call_direction": "outbound",
"caller_id_name": "John Doe",
"caller_id_number": "+919876543210",
"campaign_id": null,
"carrier_ip": "10.0.0.1",
"codec": "PCMU",
"context": "voice-api",
"cost": 0.45,
"created_at": "2026-03-25T10:00:42Z",
"currency": "INR",
"customer_endpoint": null,
"destination_number": "+918012345678",
"duration": 47,
"end_time": "2026-03-25T10:00:42Z",
"failure_code": null,
"failure_reason": null,
"hangup_cause": "NORMAL_CLEARING",
"hangup_cause_code": 4000,
"hangup_cause_name": "Normal Hangup",
"hangup_disposition": "send_bye",
"hangup_source": "Caller",
"id": 18000000,
"jitter": 0.2,
"mos": 4.5,
"network_addr": "10.0.0.1",
"origination_region": "mumbai",
"packet_loss": 0.1,
"progress_time": "2026-03-25T10:00:00Z",
"region": "ap-south-1",
"ring_time": 5,
"sip_call_id": "11223344-5566-7788-99aa-bbccddeeff00",
"sip_user_agent": "Vobiz",
"start_time": "2026-03-25T10:00:00Z",
"streaming_cost": 0,
"terminated_to": null,
"total_cost": 0.45,
"trunk_id": null,
"updated_at": "2026-03-25T10:00:42Z",
"uuid": "aabbccdd-1234-5678-90ab-cdef12345678"
},
{
"account_id": "MA_XXXXXXXX",
"answer_time": null,
"billsec": 0,
"bridge_uuid": null,
"call_direction": "inbound",
"caller_id_name": "",
"caller_id_number": "+919876543210",
"campaign_id": null,
"carrier_ip": null,
"codec": "PCMU",
"context": "voice-api",
"cost": 0,
"created_at": "2026-03-25T09:30:12Z",
"currency": "INR",
"customer_endpoint": null,
"destination_number": "+918012345678",
"duration": 12,
"end_time": "2026-03-25T09:30:12Z",
"failure_code": "16",
"failure_reason": "NO_ANSWER",
"hangup_cause": "NO_ANSWER",
"hangup_cause_code": 4100,
"hangup_cause_name": "No Answer",
"hangup_disposition": "send_cancel",
"hangup_source": "Callee",
"id": 18000001,
"jitter": 0,
"mos": 0,
"network_addr": "10.0.0.1",
"origination_region": "mumbai",
"packet_loss": 0,
"progress_time": "2026-03-25T09:30:00Z",
"region": "ap-south-1",
"ring_time": 12,
"sip_call_id": "99887766-5544-3322-1100-aabbccddeeff",
"sip_user_agent": "Vobiz",
"start_time": "2026-03-25T09:30:00Z",
"streaming_cost": 0,
"terminated_to": null,
"total_cost": 0,
"trunk_id": null,
"updated_at": "2026-03-25T09:30:12Z",
"uuid": "11223344-5566-7788-99aa-bbccddeeff00"
}
],
"pagination": {
"page": 1,
"per_page": 20,
"total": 4500,
"pages": 225,
"has_next": true,
"has_prev": false
},
"success": true,
"summary": {
"answerRate": 48.2,
"answeredCalls": 2171,
"avgCallDuration": "28s",
"last_call_at": "2026-03-25T10:00:00Z",
"totalCalls": 4500,
"total_billable_seconds": 61211,
"total_cost": 1564.51,
"total_duration_seconds": 118234
}
}