API documentation
Call Analytics turns raw sales call recordings into a structured, scored intelligence report. Submit a call, we transcribe and analyze it, and you fetch back a machine-readable report you can route into a CRM, a coaching workflow, or an autonomous agent.
Base URL
All API requests go to the versioned base URL on the api. subdomain:
https://api.callanalyticsapi.com/v1
The same endpoints are also served at https://api.callanalyticsapi.com/api/v1
(the canonical path that works on any host). The /v1 form shown throughout these docs
is the clean alias for the api. subdomain.
The three surfaces
60-second quickstart
1. Submit a call. POST a recording URL and a few details. You get back a
call_id and a processing_status_url.
curl -X POST https://api.callanalyticsapi.com/v1/calls \
-H "Authorization: Bearer cc_3a91f8e2_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"external_call_id": "crm-8821",
"rep_name": "Jordan Lee",
"customer_name": "Acme Corp",
"recording_url": "https://example.com/recordings/8821.mp3",
"source_system": "my_app"
}'
# 201 Created
{
"call_id": 4127,
"status": "received",
"processing_status_url": "/api/v1/calls/4127",
"report_url": null
}
2. Poll until the report is ready. Check report_status; once it is
ready, a report_url appears.
curl https://api.callanalyticsapi.com/v1/calls/4127 \
-H "Authorization: Bearer cc_3a91f8e2_your_api_key"
# 200 OK
{
"call_id": 4127,
"external_call_id": "crm-8821",
"customer_name": "Acme Corp",
"processing_status": "complete",
"report_status": "ready",
"overall_score": 78,
"outcome": "follow_up_scheduled",
"created_at": "2026-06-22T15:04:01Z",
"report_url": "/api/v1/calls/4127/report"
}
3. Fetch the report.
curl https://api.callanalyticsapi.com/v1/calls/4127/report \
-H "Authorization: Bearer cc_3a91f8e2_your_api_key"
# 200 OK
{ "call_id": 4127, "report": { "overall_score": 78, "summary": "...", ... } }
Prefer push over poll? Subscribe an endpoint to call.report_completed and we will
POST the report to you when it is ready. See Webhooks.
Mock vs live
Every API key looks like cc_3a91f8e2_… (a cc_ prefix, a short public
id, then a secret shown only once). Whether a submitted call is analyzed by the mock
pipeline (deterministic placeholder reports, no AI credits) or the live OpenAI
pipeline is a server-side setting, not a property of the key — so the request and response shapes are
identical and you can build against the mock pipeline and flip to live with no code changes.