Skip to main content
GET
/
api
/
v1
/
Account
/
{auth_id}
/
cdr
/
search
Search CDRs with filter summary
curl --request GET \
  --url https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr/search \
  --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/search"

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/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
{
  "account_id": "MA_XXXXXXXX",
  "count": 1,
  "data": [
    {
      "account_id": "MA_XXXXXXXX",
      "answer_time": "2026-03-25T10:00:01Z",
      "billsec": 42,
      "bridge_uuid": "55667788-1122-3344-5566-77889900aabb",
      "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": 18000002,
      "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": "55667788-1122-3344-5566-77889900aabb",
      "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": "55667788-1122-3344-5566-77889900aabb"
    }
  ],
  "filters": {
    "call_direction": "outbound",
    "from_number": "+919876543210",
    "hangup_cause": "",
    "to_number": ""
  },
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 1,
    "pages": 1,
    "has_next": false,
    "has_prev": false
  },
  "success": true,
  "summary": {
    "answerRate": 100,
    "answeredCalls": 1,
    "avgCallDuration": "47s",
    "last_call_at": "2026-03-25T10:00:00Z",
    "totalCalls": 1,
    "total_billable_seconds": 42,
    "total_cost": 0.45,
    "total_duration_seconds": 47
  }
}
Search behaves exactly like List CDRs - same filters, same data, pagination, and summary - but the response adds a filters object echoing the active filter values. Use it to power search UIs that need to display the current filter state, or to confirm which filters the server actually applied.

Filters

Identical to the list endpoint: from_number, to_number, start_date + end_date (paired, YYYY-MM-DD), call_direction (inbound/outbound), min_duration (seconds), sip_call_id, bridge_uuid, hangup_cause, hangup_disposition, context, campaign_id, search (free-text), page (default 1), per_page (default 20, max 100). See List CDRs for the full table.

The filters echo

The response includes:
"filters": {
  "call_direction": "outbound",
  "from_number": "+919876543210",
  "hangup_cause": "",
  "to_number": ""
}
FieldNotes
call_directionEchoes the applied direction, or "" if none.
from_numberEchoes the caller filter, or "".
to_numberEchoes the callee filter, or "".
hangup_causePresent in the echo even though it is not a list/search query param - returns "" here.
Unset filters echo back as empty strings (""), not as missing keys or null. The filters object always carries all four keys.

Example

cURL
curl -G "https://api.vobiz.ai/api/v1/Account/{auth_id}/cdr/search" \
  --data-urlencode "call_direction=outbound" \
  --data-urlencode "from_number=919876543210" \
  --data-urlencode "page=1" --data-urlencode "per_page=50" \
  -H "X-Auth-ID: {auth_id}" \
  -H "X-Auth-Token: {auth_token}"
See the CDR overview for the field glossary and Hangup Causes for hangup decoding.

Authorizations

X-Auth-ID
string
header
required

Your Vobiz account Auth ID

X-Auth-Token
string
header
required

Your Vobiz account Auth Token

Path Parameters

auth_id
string
required

Your account Auth ID

Example:

"MA_XXXXXX"

Query Parameters

from_number
string

Filter by the originating phone number (caller).

Example:

"9876543210"

to_number
string

Filter by the destination phone number (callee).

Example:

"1234567890"

start_date
string<date>

Beginning of the search period (YYYY-MM-DD). Required when using end_date.

Example:

"2026-03-01"

end_date
string<date>

End of the search period (YYYY-MM-DD). Required when using start_date.

Example:

"2026-03-17"

call_direction
enum<string>

Filter by direction.

Available options:
inbound,
outbound
min_duration
integer

Minimum call duration in seconds. Excludes calls shorter than this value.

Example:

10

sip_call_id
string

Filter by the SIP Call-ID of the call (matches the cdr's sip_call_id field).

Example:

"dD1qwu5VZ5iK3ed5u3uspjY5RKL"

bridge_uuid
string

Filter by the UUID of the bridged leg (matches the cdr's bridge_uuid field).

Example:

"4b7ae653-f40d-42f1-b582-6b05dfcd0c0a"

hangup_cause
string

Filter by telephony hangup cause, e.g. NORMAL_CLEARING.

Example:

"NORMAL_CLEARING"

hangup_disposition
string

Filter by how the leg was released, e.g. send_refuse.

Example:

"send_refuse"

context
string

Filter by the call context, e.g. sip-trunking.

Example:

"sip-trunking"

campaign_id
string

Filter by the campaign identifier associated with the call.

Free-text search across CDR fields (numbers, IDs, etc.).

page
integer
default:1

Page number for paginated results.

per_page
integer
default:20

Number of records per page. Max: 100.

Required range: x <= 100

Response

200 - application/json

CDR list with active filter summary

account_id
string
required
count
integer
required
data
object[]
required
filters
object
required
pagination
object
required
success
boolean
required
summary
object
required