caller_number, the destination_number, call direction (inbound or outbound), the final disposition (e.g. ANSWERED or NO ANSWER), raw and billable duration in seconds, the computed cost, and precise start and end timestamps. CDRs are associated with a tenant and optionally with the extension that handled the call. All endpoints require an active admin session. The list endpoint supports search across caller_number, destination_number, direction, and disposition, and orders results by started_at descending.
GET /api/cdrs
Returns all CDRs ordered bystarted_at descending, with the tenant and extension relations included.
Query parameters
Optional. Filters CDRs whose
caller_number, destination_number, direction, or disposition contains the given string (case-insensitive).Value is
"CDRs fetched successfully.".Array of CDR objects.
POST /api/cdrs
Creates a new CDR record manually and returns201 Created. This endpoint is typically used to ingest CDRs from an external telephony platform.
ID of the tenant this CDR belongs to. Must reference an existing tenant.
Optional. ID of the extension that handled the call. Must reference an existing extension when provided.
Originating phone number. Maximum 50 characters.
Dialled destination number. Maximum 50 characters.
Call direction, e.g.
inbound or outbound. Maximum 50 characters.Final call result, e.g.
ANSWERED, NO ANSWER, BUSY. Maximum 50 characters.Total call duration in seconds. Minimum value:
0.Billable call duration in seconds. Minimum value:
0.Calculated call cost as a decimal. Minimum value:
0.Call start timestamp. Must be a valid date string parseable by PHP’s
date rules, e.g. "2025-04-22 10:00:00".Optional. Call end timestamp. Must be a valid date string when provided.
Value is
"CDR created successfully.".The newly created CDR record.
GET /api/cdrs/
Fetches a single CDR by its ID. Includes thetenant and extension relations.
Path parameters
The numeric ID of the CDR to retrieve.
Value is
"CDR loaded successfully.".The CDR record with
tenant and extension included.PUT /api/cdrs/
Replaces all fields on an existing CDR.PATCH /api/cdrs/{cdr} is also accepted and uses the same handler.
Path parameters
The numeric ID of the CDR to update.
Must reference an existing tenant.
Optional. Must reference an existing extension when provided.
Maximum 50 characters.
Maximum 50 characters.
Maximum 50 characters.
Maximum 50 characters.
Minimum value:
0.Minimum value:
0.Minimum value:
0.Valid date string.
Optional. Valid date string.
Value is
"CDR updated successfully.".The updated CDR record.
DELETE /api/cdrs/
Permanently deletes the specified CDR record. Path parametersThe numeric ID of the CDR to delete.
Value is
"CDR deleted successfully.".