Retrieve detailed call logs, billing data, and per-call telemetry for your account. Vobiz CDRs include caller/callee identifiers, timing, billing, hangup attribution, and quality metrics (MOS, jitter, packet loss). Use them for billing reconciliation, traffic analysis, fraud detection, and compliance reporting.Documentation Index
Fetch the complete documentation index at: https://docs.vobiz.ai/llms.txt
Use this file to discover all available pages before exploring further.
Authentication: All CDR endpoints use API key authentication. Pass
X-Auth-ID and X-Auth-Token in your request headers.Endpoints Overview
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/account/{auth_id}/cdr | List CDRs with filters + pagination + summary |
| GET | /api/v1/account/{auth_id}/cdr/{call_id} | Fetch a single CDR by call ID |
| GET | /api/v1/account/{auth_id}/cdr/search | Same as list, also echoes active filters in filters |
| GET | /api/v1/account/{auth_id}/cdr/recent | Get the most recent CDRs (last 20 by default) |
| GET | /api/v1/account/{auth_id}/cdr/export | Export CDRs as a CSV file |
List CDRs
summary block with aggregate metrics across the filtered set.
Get Single CDR
call_id. Useful when you have a call_id from a webhook callback or previous list response.
cURL
Search CDRs
filters object echoing the active filters applied. Useful when building search UIs that need to display current filter state.
cURL
Recent CDRs
limit to retrieve more. Note: the recent endpoint does not return pagination or summary blocks - just data.
cURL
Export as CSV
-o flag in curl to save directly to a file.
cURL
Query Parameters
Filter Parameters (list, search, export)
| Parameter | Type | Description |
|---|---|---|
from_number | string | Filter by the originating phone number (caller). |
to_number | string | Filter by the destination phone number (callee). |
start_date | string (YYYY-MM-DD) | Beginning of the search period. Required when using end_date. |
end_date | string (YYYY-MM-DD) | End of the search period. Required when using start_date. |
call_direction | string | inbound or outbound. |
min_duration | integer | Minimum call duration in seconds. |
page | integer | Page number for paginated results. Default: 1. (list, search only) |
per_page | integer | Records per page. Default: 20. Max: 100. (list, search only) |
limit | integer | Number of records to return. Default: 20. (recent only) |
Response Structure
A successful list/search request returns:200 OK - Response
Top-level fields
| Field | Type | Description |
|---|---|---|
account_id | string | Echo of the account this CDR set belongs to. |
count | integer | Number of records in data. |
data | array | Array of CDR objects (see below). |
pagination | object | Pagination metadata. Present on list and search; absent on recent. |
summary | object | Aggregate metrics across the filtered set. Present on list and search. |
filters | object | (search only) Echo of the active filter values applied to this request. |
success | boolean | true on a successful response. |
Pagination object
| Field | Type | Description |
|---|---|---|
page | integer | Current page. |
per_page | integer | Records per page. |
total | integer | Total matching records across all pages. |
pages | integer | Total number of pages. |
has_next | boolean | true if a next page exists. |
has_prev | boolean | true if a previous page exists. |
Summary object
| Field | Type | Description |
|---|---|---|
totalCalls | integer | Total calls in the filtered set. |
answeredCalls | integer | Calls that were answered (billsec > 0). |
answerRate | number | Percentage of calls answered. |
avgCallDuration | string | Average duration as a human-readable string (e.g. "28s"). |
total_duration_seconds | integer | Sum of all duration values. |
total_billable_seconds | integer | Sum of all billsec values. |
total_cost | number | Sum of all total_cost values in currency. |
last_call_at | string (ISO 8601) | Timestamp of the most recent call in the set. |
CDR object - every field
| Field | Type | Description |
|---|---|---|
id | integer | Internal numeric identifier for the call. |
uuid | string (UUID) | Globally unique identifier for the call. |
account_id | string | Account that owns this call. |
call_direction | string | inbound or outbound. |
caller_id_name | string | Caller ID display name. |
caller_id_number | string | Originating phone number (E.164 format). |
destination_number | string | Destination phone number or destination identifier. |
duration | integer | Total call duration in seconds (ring + talk). |
billsec | integer | Billable seconds (talk time only). |
ring_time | integer | Time the call rang before answer or hangup, in seconds. |
answer_time | string (ISO 8601) | null | When the call was answered. null if not answered. |
start_time | string (ISO 8601) | When the call was initiated. |
end_time | string (ISO 8601) | When the call ended. |
progress_time | string (ISO 8601) | When the call entered the progress state. |
created_at | string (ISO 8601) | CDR record creation timestamp. |
updated_at | string (ISO 8601) | CDR record last-updated timestamp. |
cost | number | Per-leg cost in currency. |
total_cost | number | Total cost including streaming, in currency. |
streaming_cost | number | Cost of audio streaming for this call (if used). |
currency | string | ISO currency code, e.g. INR. |
hangup_cause | string | High-level hangup reason (e.g. NORMAL_CLEARING). See the full list below. |
hangup_cause_code | integer | Numeric hangup code. |
hangup_cause_name | string | Human-readable hangup name. |
hangup_disposition | string | SIP hangup disposition (e.g. send_bye, recv_bye). |
hangup_source | string | Which party initiated the hangup (Caller, Callee, etc.). |
failure_code | string | null | Failure code if the call did not connect. |
failure_reason | string | null | Human-readable failure reason. |
bridge_uuid | string (UUID) | null | UUID of the call bridge. |
sip_call_id | string | SIP-level Call-ID header value. |
sip_user_agent | string | SIP User-Agent header value of the originating leg. |
codec | string | null | Audio codec negotiated (e.g. PCMU, PCMA, opus). |
mos | number | Mean Opinion Score (call audio quality, 1.0–5.0). |
jitter | number | Jitter in milliseconds. |
packet_loss | number | Packet loss percentage. |
network_addr | string | Network address of the call leg. |
carrier_ip | string | null | Carrier IP address. |
context | string | Internal call context (e.g. voice-api). |
region | string | Vobiz infrastructure region (e.g. ap-south-1). |
origination_region | string | Region the call originated from. |
campaign_id | string | null | Campaign ID if the call is part of a campaign. |
customer_endpoint | string | null | Customer endpoint identifier. |
trunk_id | string | null | SIP trunk ID used for this call. |
terminated_to | string | null | Termination target if forwarded. |
Hangup Causes
The table below describes common SIP/B2BUAhangup_cause values you may encounter in your call logs.
hangup_cause | Description |
|---|---|
NORMAL_CLEARING | One of the parties hung up normally. |
USER_BUSY | The called party is busy (e.g., already on another call or declined). |
NO_ANSWER | The called party did not answer within the timeout period. |
ORIGINATOR_CANCEL | The caller cancelled the call before it was answered. |
CALL_REJECTED | The destination explicitly rejected the call. |
REJECTED | General rejection - the SIP endpoint refused the INVITE. |
INVALID_NUMBER | The dialed number format is invalid. |
UNALLOCATED_NUMBER | The dialed number is valid but not allocated to any subscriber. |
SERVICE_UNAVAILABLE | The destination service is temporarily unavailable (SIP 503). |
SERVER_ERROR | An internal server error occurred during call setup. |
MEDIA_TIMEOUT | No RTP media packets received - likely a firewall or network issue. |
PROTOCOL_ERROR | A SIP protocol violation or malformed message. |
NETWORK_OUT_OF_ORDER | A severe network failure prevented routing. |
DESTINATION_OUT_OF_ORDER | The destination endpoint cannot accept the call. |
NORMAL_TEMPORARY_FAILURE | Generic temporary failure; retrying may succeed. |
SWITCH_CONGESTION | The SIP switch is at capacity. |
UNKNOWN | An error not mapped to a standard cause code. |
Examples
Filter by date range
Outbound calls only, minimum 10 seconds
Last 50 recent calls
Export filtered CDRs to CSV
What to do next
- Call recordings - Access audio recordings for completed calls
- Trunk webhooks - Receive real-time call events instead of polling CDRs
- Error handling - Map
hangup_causeand SIP response codes to specific failure reasons - Audio streaming - Stream live call audio to your server in real time
Diagnose a hangup_cause with an AI agent
Paste a CDR or a hangup_cause code - get a plain-English diagnosis and remediation steps.