curl --request GET \
--url https://api.telleo.ai/v1/human-calls/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.telleo.ai/v1/human-calls/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.telleo.ai/v1/human-calls/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "hcall_7d2e9b1c4a6f8e0d3b5c7a9e",
"object": "human_call",
"status": "completed",
"counsellor": {
"id": "5f0c2b7e-8a1d-4c3e-9b6f-1a2b3c4d5e6f",
"name": "Priya Sharma",
"email": "[email protected]"
},
"phone_number": "+919876543210",
"contact": {
"name": "Asha Verma",
"email": null,
"external_id": "lead-8812"
},
"crm_lead_linked": true,
"metadata": {
"crm_owner": "u_42"
},
"analyze": true,
"status_updates": "realtime",
"created_at": "2026-10-17T05:30:02Z",
"dialed_at": "2026-10-17T05:30:03Z",
"answered_at": "2026-10-17T05:30:21Z",
"ended_at": "2026-10-17T05:36:40Z",
"duration_seconds": 379,
"recording_url": "https://media.example-cdn.com/recordings/abc.mp3?X-Amz-Signature=…",
"recording_expires_at": "2026-10-18T05:40:00Z",
"disposition": {
"key": "INTERESTED",
"label": "Interested",
"notes": "Demo on Friday",
"set_at": "2026-10-17T05:37:10Z",
"set_by": "counsellor"
},
"analysis": {
"status": "completed",
"summary": "Asha wants the NEET 2027 weekend batch; demo booked for Friday.",
"short_update": "Interested, demo Friday",
"call_type": "sales",
"inferred_goal": "Book a demo class",
"outcome": "interested",
"sentiment": "positive",
"conversion_likelihood": "high",
"counsellor_rating": 8,
"outcome_rating": 7.5,
"language": "hi",
"credits": 0.95,
"completed_at": "2026-10-17T05:39:02Z"
},
"cost": {
"credits": 6.5,
"billed": true
}
}Get a human call
The call’s status and, once it has ended, its times, recording, disposition, analysis and cost.
Scope: human_calls:read.
curl --request GET \
--url https://api.telleo.ai/v1/human-calls/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.telleo.ai/v1/human-calls/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.telleo.ai/v1/human-calls/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "hcall_7d2e9b1c4a6f8e0d3b5c7a9e",
"object": "human_call",
"status": "completed",
"counsellor": {
"id": "5f0c2b7e-8a1d-4c3e-9b6f-1a2b3c4d5e6f",
"name": "Priya Sharma",
"email": "[email protected]"
},
"phone_number": "+919876543210",
"contact": {
"name": "Asha Verma",
"email": null,
"external_id": "lead-8812"
},
"crm_lead_linked": true,
"metadata": {
"crm_owner": "u_42"
},
"analyze": true,
"status_updates": "realtime",
"created_at": "2026-10-17T05:30:02Z",
"dialed_at": "2026-10-17T05:30:03Z",
"answered_at": "2026-10-17T05:30:21Z",
"ended_at": "2026-10-17T05:36:40Z",
"duration_seconds": 379,
"recording_url": "https://media.example-cdn.com/recordings/abc.mp3?X-Amz-Signature=…",
"recording_expires_at": "2026-10-18T05:40:00Z",
"disposition": {
"key": "INTERESTED",
"label": "Interested",
"notes": "Demo on Friday",
"set_at": "2026-10-17T05:37:10Z",
"set_by": "counsellor"
},
"analysis": {
"status": "completed",
"summary": "Asha wants the NEET 2027 weekend batch; demo booked for Friday.",
"short_update": "Interested, demo Friday",
"call_type": "sales",
"inferred_goal": "Book a demo class",
"outcome": "interested",
"sentiment": "positive",
"conversion_likelihood": "high",
"counsellor_rating": 8,
"outcome_rating": 7.5,
"language": "hi",
"credits": 0.95,
"completed_at": "2026-10-17T05:39:02Z"
},
"cost": {
"credits": 6.5,
"billed": true
}
}Authorizations
Your AI calling API key (vak_call_…). Authorization: Bearer <key> also works.
Path Parameters
Response
The human call.
"hcall_7d2e9b1c4a6f8e0d3b5c7a9e"
"human_call"queued, ringing_counsellor, connecting, in_progress, completed, no_answer, busy, failed, canceled Why a call failed, in plain words. Present only when there is one.
Only on no_answer / busy: which phone did not pick up, when the provider says so.
counsellor, contact, null Show child attributes
Show child attributes
Show child attributes
Show child attributes
The call was filed on the one lead in your account with this number (it shows on the lead's timeline).
How live status is on your provider: Vacademy Voice realtime, Exotel final_only, Airtel delayed (after its call record is imported).
realtime, final_only, delayed When the contact picked up, when known.
A temporary link to the recording (24 hours). Fetch the call again for a fresh link.
The outcome recorded by the counsellor or by you. null until set.
Show child attributes
Show child attributes
AI analysis of the conversation. Fields beyond status are present once it is completed.
Show child attributes
Show child attributes
null while the call runs. Only Vacademy Voice talk time is charged to your credits; Exotel and Airtel bill you directly.
Show child attributes
Show child attributes
Only on POST /human-calls: true when this is the call created by an earlier request with the same Idempotency-Key.