CDR API
Real-Time Call Data with the CDR API
Retrieve call records within 1–2 minutes of each call completing and being priced — queried by service number and date range, paginated JSON, ready for dashboards and workflows.
- Records within 1–2 minutes of completion
- Query by service number and date range
- JSON, paginated, Bearer-token authenticated
Real-time data questions
How fast is near-real-time for CDR records?
Records typically appear within 1–2 minutes of a call completing and being priced — fast enough for lead tracking, campaign monitoring, daily reporting and cost management.
Can I be notified while a call is still in progress?
The CDR API provides records after the call completes. For in-progress notification you would need additional infrastructure on your side — but the 1–2 minute delay suits most follow-up and analytics workflows.
How do I avoid processing the same record twice?
Treat the cdr_id as a unique key and process idempotently — safe to reprocess after a restart without duplicating records in your database or CRM.
How should I handle high volumes of new records?
Paginate: responses carry up to 100 records per page with a meta object giving the total, so loop until every page is processed rather than assuming one call returns everything.
Near-real-time call data changes what your phone system can do: leads surface while they are fresh, campaigns are monitored as they run, and costs are watched as they accumulate. The Simple Telecom CDR API makes your call records available within 1–2 minutes of each call completing and being priced — queried by service number and date range, returned as paginated JSON.
How the CDR API delivers near-real-time data
The CDR API endpoint GET /api/cdrs returns records as each call completes and is priced — a process that typically takes 1–2 minutes from the moment the call ends. Each record includes the call's start and end time, duration in seconds, the caller's number (source), the destination, and the cost in AUD. Authentication is via Bearer token, and responses are JSON.
To build a rolling near-real-time feed, query the endpoint on a schedule — every 5–15 minutes depending on your needs. Use start_date and end_date to focus on recent data, and compare cdr_id values against your database of previously processed records to identify new calls.
Integration patterns that work
Lead notifications. Poll the API every few minutes for new records, check each source_number against your CRM, and create a lead or append an activity accordingly — so even callers who left no message generate a follow-up.
Campaign monitoring. Assign a unique 1300 or 1800 number per campaign, query that number's records during the flight, and track call volume and average duration against expectations — adjusting within hours rather than at month end.
Cost monitoring. For toll-free traffic, where your business funds every call, poll costs per service number against daily budgets and alert on unusual patterns — bill-shock protection and anomaly detection (a number suddenly receiving many times its normal volume) fall out of the same polling loop.
Integration best practices
- Process idempotently. Use
cdr_idas the unique key so restarts and retries never duplicate records. - Paginate fully. Responses carry up to 100 records per page with a
metaobject for totals; loop until all pages are processed, and use theorderparameter to sort by start time. - Respect rate limiting. Monitor the
X-RateLimit-Remainingheader and back off as you approach it; stagger query frequency by priority — every 5 minutes for high-priority services, every 15 for lower ones.
The full API documentation — authentication, the Services, CDR and Routing Management areas, and code examples — is on the API page. Questions about a specific integration reach a human via the contact page.
Build on your call data
Put your call data to work
Explore the API documentation or talk to us about your integration.