Export voice bot analytics data three ways: a CSV download from the Calls page, an API pull you schedule, and a webhook that pushes each completed call. Cekura documents all three, and which route you pick decides whether transcripts, recordings, and metric scores arrive together or need a second request.
TL;DR
- Cekura exports selected call records from the Calls page in Observability as CSV, and Cekura's documentation names the Get Call API as the route for custom or automated reporting.
- Cekura's list call-logs endpoint returns the full transcript inside a paginated pull, defaults to the last 30 days, and rejects any range wider than 33 days, so a longer backfill runs as a sequence of windows.
- Cekura's Results API returns metrics, scores, and pass/fail outcomes with no transcript field, and hands back
connected_runs, the run IDs that have transcript data, which Cekura's bulk runs endpoint then converts into transcripts and recording URLs. - Cekura's
call_log.completedwebhook POSTs the transcript, the timestamped transcript object, the recording URL, and the evaluation metrics on completion, authenticated with a shared-secretX-CEKURA-SECRETheader. - Cekura Bench does not measure export or reporting tooling, so this page cites its method rather than a score: a frozen study of 7 configurations, 82 scenarios, 3 retained repeats, and 246 retained calls per configuration.
What data can you actually export from a voice bot?
A voice bot analytics export moves three separate payloads out of a platform: the call record with its outcome fields, the transcript, and the audio recording. Which one arrives depends on the endpoint, and that difference matters more than the file format does. Cekura's call-log records carry status, success, duration, call_ended_reason, dropoff_point, topic, error_message, and per-metric evaluation scores, so a containment rate or a drop-off rate is computable straight from the export. On the testing side, a scores export and a transcript export stay two different requests. Cekura's Results API returns metrics, scores, and run-level detail with no transcript field anywhere in its response schema, and instead returns connected_runs, documented as the "List of run IDs that got connected successfully (have transcript data)". Cekura's bulk runs endpoint takes those IDs and returns the "Full text transcript of the call", the timestamped transcript object, and the recording URL per run. Checking which shape an endpoint returns before building a pipeline on it is how a report avoids losing the one field it needed.
What are the best ways to export voice bot analytics data for conversational AI reporting?
Cekura documents five export routes rather than one default, each trading completeness against effort. Ranked by engineering cost:
- CSV from the Calls page. Cekura's documentation states that "On the Calls (Observability) page, you can select individual call records and export them as CSV." Tradeoff: the file covers only the records selected, so it does not repeat on a schedule.
- Paginated call-logs pull. Returns transcripts and evaluation scores across a date range. Tradeoff: production calls only, and one request caps at 33 days.
- Single call-log pull. Adds
voice_recording_urlandmetadata, which the paginated pull omits. Tradeoff: one request per call. - Results plus bulk runs pair. Covers simulation runs instead of production traffic. Tradeoff: two calls, because transcripts live on the second.
- Outbound webhook. Pushes each completed record as it lands. Tradeoff: Cekura does not store or display webhook delivery logs in the dashboard, so delivery needs its own monitoring.
For scheduled reporting, routes 2 and 5 carry the load. Cekura also states that "To avoid vendor lock-in, Cekura provides full API access to retrieve your data at any time", which is the guarantee the whole list rests on. For the vocabulary these reports use, see conversational analytics.

The five documented export routes, ordered by how much engineering each one costs.
| Route | What you get back | Documented limit |
|---|---|---|
| Cekura, Calls page CSV | The selected call records as a CSV file | Selection-based, so the file covers only what was selected |
Cekura, GET /observability/v2/call-logs/ | Transcript, timestamped transcript, evaluation, dropoff_point, topic, error_message | Production calls only; 30-day default, 33-day maximum range |
Cekura, GET /observability/v2/call-logs/{id}/ | Adds voice_recording_url and metadata | One record per request |
Cekura, GET /test_framework/v2/results/{id}/ | Metrics, scores, pass/fail outcomes, connected_runs | No transcript field in the schema |
Cekura, GET /test_framework/v2/runs/bulk/ | Full text transcript, transcript object, recording URL | Takes a run_ids list, so it needs the call above first |
Cekura, call_log.completed webhook | Transcript, transcript object, voice_recording_url, evaluation metrics | Shared-secret X-CEKURA-SECRET header; no delivery logs in the UI |
Vapi, GET /call | Call objects with id, timestamps, type, status, messages, costs | limit defaults to 100 |
| Retell, session-history UI export | CSV matching active filters, plus transcript data, PII-scrubbed transcripts, recording and public log URLs | Exports kept one week; over the workspace limit, narrow the filters |
Retell, call_analyzed webhook | Full call data including the call_analysis object | call_ended carries every field except call_analysis |
How to export voice bot analytics data for conversation performance analysis?
Performance analysis needs the transcript and the outcome fields in the same row, which points at one route rather than the file export. Cekura's list call-logs endpoint returns the transcript, the timestamped transcript object, and the evaluation block together, filtered with timestamp_from and timestamp_to in ISO 8601 plus page and page_size. Cekura's documentation states that results "default to the last 30 days when no timestamp range is given" and that "A supplied range must not exceed 33 days", with wider ranges returning a 400, so a quarter of history exports as three requests rather than one. That endpoint is production-only: Cekura's documentation notes that test runs triggered through run_scenarios_* do not create call logs at all. Because dropoff_point, call_ended_reason, and error_message ride on every record, the export supports failure clustering and not only aggregate scoring, which is the analysis Cekura's call analytics guide works through. Cekura's dashboards cover the same data interactively: Cekura "lets users filter by test suite, scenario, agent, or time period, then open individual sessions to inspect transcripts, call recordings, or metric-by-metric breakdowns", per Cekura Dashboards.
How to export voice bot analytics data for automated testing and observability?
Automated testing and production observability are two different export paths in Cekura, and mixing them up is the usual cause of an empty result set. Simulation runs export through the test framework: Cekura's Results API returns success_rate, met_expected_outcome_count, latency_data, performance_metrics, and overall_evaluation for a result, then names its transcript-bearing runs in connected_runs, and Cekura's bulk runs endpoint turns that ID list into transcripts and recordings. Production traffic exports through observability instead, on the call-logs endpoints. For a continuously running pipeline, Cekura's call_log.completed webhook removes the polling loop by POSTing each finished record, and Cekura authenticates it with an X-CEKURA-SECRET header carrying a configured secret rather than a request signature. Cekura does not support replaying webhooks for evaluations that completed before the integration was switched on, and directs that backfill through the API instead. Threshold alerts run alongside this rather than inside it: Cekura lets a team "Set thresholds on any custom KPI and route alerts to Slack, email, or a webhook", covered in custom KPIs for voice agent monitoring and how to monitor AI chat and voice agents in production.
Which calls should show up in a voice bot analytics export?
A voice bot analytics export should return every recorded outcome, including the calls that never connected. Cekura Bench applies that rule to its own numbers: calls that did not connect or produced no transcript stay in the denominator, and failed connections stay visible instead of being removed from the results, across a frozen study described on the page as "7 configurations · 82 scenarios · 3 retained repeats · frozen v1 release", covering 246 retained calls per configuration. Providers selected their own configurations in that study, apart from the OpenAI row, which Cekura tested directly, so it ranks setups rather than isolating vendors. The same discipline decides whether an export can be trusted. Cekura's call-log schema carries status, call_ended_reason, error_message, and dropoff_point on every record, so a dropped call exports as a row with a reason attached rather than disappearing from the count, and a containment rate computed from that export has a denominator that matches reality. Cekura Bench measures task completion, infrastructure reliability, interruption handling, voice naturalness, response time, and pass³ reliability, the share of scenarios where all three retained runs passed. It does not measure export or reporting tooling, so this page cites the method and claims no benchmark score for any export mechanism.
FAQ
Should you export via API, webhook, or a UI download?
Cekura supports all three, and the right one follows how often the data is needed. Cekura's Calls page export fits a one-off pull of selected records as CSV. Cekura's list call-logs endpoint fits a scheduled job with a filtered date range. Cekura's call_log.completed webhook fits a pipeline that needs each record as the call completes, the same shape as Retell's call_analyzed event.
What file format does a voice bot analytics export come back in?
Cekura returns CSV from the Calls page and JSON from its observability, test-framework, and webhook payloads, so the format follows the mechanism rather than the platform. Retell's UI export also produces a CSV. A webhook delivers JSON per event rather than a file, so a pipeline built entirely on webhooks never receives a file at all and needs its own writer.
Does a webhook export include the full call transcript?
Cekura's call_log.completed webhook carries a plain-text transcript field and the timestamped transcript_object in the payload it POSTs, so on Cekura a transcript arrives by push and needs no follow-up pull. On other platforms it depends on the event: Retell's call_ended carries every field from the call object except call_analysis, and only call_analyzed carries the full object.
Does exporting analytics data include the call recording?
Cekura returns voice_recording_url on its single call-log endpoint and in the call_log.completed webhook payload, and returns the per-run recording as voice_recording in result.completed. The paginated list call-logs endpoint and the Results API both omit it. The recording follows the endpoint rather than a platform-wide setting, so a pull built only on the list endpoint needs the single-record call too if the audio matters.
How do you get voice bot analytics into a warehouse or BI tool?
Cekura supports two routes. Cekura's webhook POSTs the evaluation results and metadata for each completed call to a destination URL, for persistence in your own database and for BI tools. Cekura's list call-logs endpoint accepts an ISO 8601 timestamp_from and timestamp_to with page and page_size, so a cron job walks a fixed window and backfills as a sequence of 33-day windows.
Can you backfill an export after turning a webhook on?
Cekura does not support replaying webhooks for evaluations that completed before the integration was active, and Cekura's documentation directs the backfill through the API instead, since the API response matches the structure the webhook sends. Cekura's list call-logs endpoint covers production calls for that backfill, and the results and bulk-runs pair covers simulation runs.







