curl --request GET \
--url https://voice-api.onclarity.com/v1/projects/{projectId}/calls \
--header 'Authorization: Bearer <token>'import requests
url = "https://voice-api.onclarity.com/v1/projects/{projectId}/calls"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://voice-api.onclarity.com/v1/projects/{projectId}/calls', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"calls": [
{
"id": "1b6453892473a467d07372d45eb05abc",
"project_id": "3c59dc04-8a4b-4f7e-9b1a-6c2a0e5d1f22",
"platform_id": "RM_kQ3vZx7pLm2T",
"platform_name": "livekit",
"conversation_id": "8f14e45f-ceea-467f-a0e6-3f1c2b9d7a10",
"participant_identity": "sip_+966500000000",
"originator": {
"type": "pstn",
"phone_number": "+966500000000"
},
"receiver": {
"type": "pstn",
"phone_number": "+966110000000"
},
"did": "+966110000000",
"remote_number": "+966500000000",
"status": "completed",
"direction": "incoming",
"type": "pstn",
"duration": 184,
"hangup_reason": "caller_hangup",
"hangup_sip_code": null,
"agent_id": "6f4922f4-5568-461a-8f1d-9c3b2a1e7d55",
"warnings": [],
"created_at": "2026-10-20T09:15:00.000Z",
"answered_at": "2026-10-20T09:15:01.000Z",
"ended_at": "2026-10-20T09:18:05.000Z"
}
]
}{
"error": "Invalid or revoked token"
}{
"error": "Live call monitoring access required",
"code": "LIVE_MONITOR_ACCESS_REQUIRED"
}{
"error": "Project not found"
}List calls
Lists the project’s calls (individual telephony, SIP, web or WhatsApp legs), newest first. A conversation can contain several calls; use the conversations endpoints for a per-interaction view, paging and totals. This list is not paginated: pass limit to cap the number of rows.
status=ongoing returns the calls in progress right now (calls stuck as ongoing for more than four hours are left out), and each row then carries a live_monitor block and, for Voice Assist calls, an assist block. A call an AI agent transferred to agents is a Voice Assist call from then on: its row also carries a transfer block, and its agent_id and assist block are its Voice Assist agent’s.
curl --request GET \
--url https://voice-api.onclarity.com/v1/projects/{projectId}/calls \
--header 'Authorization: Bearer <token>'import requests
url = "https://voice-api.onclarity.com/v1/projects/{projectId}/calls"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://voice-api.onclarity.com/v1/projects/{projectId}/calls', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"calls": [
{
"id": "1b6453892473a467d07372d45eb05abc",
"project_id": "3c59dc04-8a4b-4f7e-9b1a-6c2a0e5d1f22",
"platform_id": "RM_kQ3vZx7pLm2T",
"platform_name": "livekit",
"conversation_id": "8f14e45f-ceea-467f-a0e6-3f1c2b9d7a10",
"participant_identity": "sip_+966500000000",
"originator": {
"type": "pstn",
"phone_number": "+966500000000"
},
"receiver": {
"type": "pstn",
"phone_number": "+966110000000"
},
"did": "+966110000000",
"remote_number": "+966500000000",
"status": "completed",
"direction": "incoming",
"type": "pstn",
"duration": 184,
"hangup_reason": "caller_hangup",
"hangup_sip_code": null,
"agent_id": "6f4922f4-5568-461a-8f1d-9c3b2a1e7d55",
"warnings": [],
"created_at": "2026-10-20T09:15:00.000Z",
"answered_at": "2026-10-20T09:15:01.000Z",
"ended_at": "2026-10-20T09:18:05.000Z"
}
]
}{
"error": "Invalid or revoked token"
}{
"error": "Live call monitoring access required",
"code": "LIVE_MONITOR_ACCESS_REQUIRED"
}{
"error": "Project not found"
}Authorizations
Your organization API key (it starts with anek_org_). The same key works on the Voice API and the Support API. See Authentication.