Viewing Results: Send Records and CDR Push
Comparing and using the three result retrieval channels: console records, the query API, and Webhook push.
There are three ways to retrieve the per-call results of voice calls; combine them as needed.
Prerequisites
- You have placed at least one call task (see Placing Calls)
Comparing the Three Channels
| Channel | Timeliness | Best for |
|---|---|---|
| Console send records | Manual viewing | Manual troubleshooting, daily inspection |
| Query API | Pull on demand | Scheduled reconciliation, storing records for analysis |
| CDR push (Webhook) | Real-time push | Event-driven business workflows |
Recommended combination: receive in real time via Webhook + reconcile with the query API as a fallback.
Console Send Records
View per-call results on the Send Records page of the voice console, with filters for recipient number, call result (success/failure), release code, batch number, country, and time range; the detail view includes call duration and recording playback.
Query API Essentials
- The time window is required (
startDate, formatyyyy-MM-dd HH:mm:ss); only the last 90 days can be queried taskIdis thecallIdreturned by the send API, which pinpoints a single taskcountryCodeis required; filtering by recipient number, batch, and template is supported- Pagination via
page/size(≤100); rate limit 30 QPS (040001when exceeded)
CDR Push Essentials
- When a call reaches its final state, the platform POSTs the event to the configured callback URL (
eventCode=cdr_status_push;eventIdequalscallId) - The receiver must return 2xx; the current version does not automatically retry failed pushes, so keep your service stable
- Handle
eventIdidempotently to avoid duplicate writes - Optional
X-CALLBACK-IDHMAC-SHA256 signature verification is supported; see the protocol and verification examples at CDR Status Webhook
Interpreting Result Fields
| Field | Meaning |
|---|---|
| callState | Call result status (success/failure) |
| callDesc / callDescMsg | Release code and text description (hang-up reason) |
| answerTime | Answer time (empty when not connected) |
| recallCount | Number of redials performed |
| recordUrl | Recording URL (empty when there is no recording) |
| smsSendTime / smsStatus | Hang-up SMS send time and status |
The actual values of the release code (callDesc) are subject to the real response; the same field carries the same semantics across Console records, the query API, and the push.
Reconciliation Advice
- Use
bulkId/callId+mobileas the reconciliation key - Persist Webhook events in real time; daily (or hourly) pull records from the query API by time window and compare, filling in any call records lost from pushes
- Use the gap between
acceptedCount(accepted count) and the final number of call records to spot anomalies
FAQ
Not receiving Webhook pushes?
Check in order: the callback URL is configured on the platform, the receiving service is publicly reachable, responses are 2xx, and the call has reached its final state. To view where the configuration is shown, see Using the Voice Console.
Receiving multiple pushes for the same call?
The current version does not retry failures, but we still recommend handling eventId (= callId) idempotently, to guard against network replays or a retry mechanism introduced in a future version.
The query API returns no records?
Confirm the time window is within 90 days and countryCode matches the call country; for a newly accepted task, wait a moment and query again (there is a delay between dialing out and the record landing in the database).
Related Resources
Last updated on