Mon-Fri 10am - 6pm
Click to Call Status
Base URL for your account: https://cpaas.studio
GET
POST
/api/voice/v1/click2call/status
Look up one Click to Call by uid, event_id, or reference. Requires a key scoped to voice.click2call or all.
Parameters
| Param | Type | Required | Notes |
|---|---|---|---|
uid |
string | one of uid/event_id/reference | The uid from the send response. |
event_id |
string | one of uid/event_id/reference | The event_id from the send response. |
reference |
string | one of uid/event_id/reference | Your own label — resolves to the most recent match. |
Request example
curl "https://cpaas.studio/api/voice/v1/click2call/status?uid=CC7Q2M4X8A1B" \
-H "X-API-KEY: cpk_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
<?php
$query = http_build_query(['uid' => 'CC7Q2M4X8A1B']);
$ch = curl_init("https://cpaas.studio/api/voice/v1/click2call/status?{$query}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-KEY: cpk_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Success response (data)
{
"uid": "CC7Q2M4X8A1B",
"event_id": "c2c-AB12CD34EF",
"reference": "lead-4471",
"status": "answered",
"disposition": "ANSWERED",
"agent_number": "9526071065",
"customer_number": "9812345678",
"ring_time": 20,
"duration_seconds": 52,
"billsec": 47,
"billing_status": "billed",
"billable_units": 2,
"recording_available": true,
"submitted_at": "2026-09-11T10:20:30+00:00",
"answered_at": "2026-09-11T10:20:41+00:00",
"completed_at": "2026-09-11T10:21:33+00:00",
"created_at": "2026-09-11T10:20:30+00:00"
}
Errors
| Code | Status | When |
|---|---|---|
C2C_NOT_FOUND |
404 | uid/event_id/reference doesn't match any Click to Call on your account. |
REQ_VALIDATION_FAILED |
422 | None of uid, event_id, reference were supplied. |
Notes
- status becomes answered / no_answer / busy / failed once the operator CDR lands; billing_status becomes billed / unlimited / not_billable. A call refused for concurrency is status rejected, billing_status not_applicable.
- A billed row also carries billable_units — the pulses charged against your plan's quota (1 on a per-call plan).
- The recording, when recording_available is true, is downloadable from the panel — the API does not stream it.
Need more context? See Getting started for authentication, the response envelope, and the full error-code reference.