curl --request GET \
--url https://api.telleo.ai/v1/calls/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.telleo.ai/v1/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/calls/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "call_6f1d2c9a8b7e4f3a2d1c0b9a",
"object": "call",
"status": "completed",
"agent_id": "17ea33d2-5b6c-4c1e-9a1f-2d4e6f8a9b0c",
"phone_number": "+919876543210",
"contact": {
"name": "Asha Verma",
"email": "asha@example.com",
"external_id": "lead-8812"
},
"variables": {
"course": "NEET 2027",
"city": "Indore"
},
"metadata": {
"crm_owner": "u_42"
},
"batch_id": null,
"test": false,
"duration_seconds": 142,
"created_at": "2026-10-13T09:30:02Z",
"dialed_at": "2026-10-13T09:30:03Z",
"ended_at": "2026-10-13T09:32:31Z",
"recording_url": "https://media.example-cdn.com/recordings/abc.mp3?X-Amz-Signature=…",
"recording_expires_at": "2026-10-14T09:40:00Z",
"outcome": {
"disposition": "Interested",
"summary": "Asha wants the NEET 2027 weekend batch and asked for the fee structure on WhatsApp.",
"answers": {
"Which course are you interested in?": "NEET 2027",
"Preferred batch timing?": "Weekends"
},
"lead_rating": 8,
"callback_requested": true,
"callback_time_text": "tomorrow after 6 pm",
"follow_up": "CALL",
"follow_up_note": "Send the fee structure; call back tomorrow evening.",
"meeting": {
"requested": true,
"at": "2026-10-14T18:00:00+05:30",
"time_text": "tomorrow after 6 pm",
"type": "call"
},
"transcript": [
{
"speaker": "agent",
"text": "Hi Asha, this is Riya from Shiksha Academy. Is this a good time?"
},
{
"speaker": "contact",
"text": "Yes, tell me."
}
]
}
}Get a call
The call’s current status and, once it has ended, its duration, recording and outcome.
Scope: calls:read.
curl --request GET \
--url https://api.telleo.ai/v1/calls/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.telleo.ai/v1/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/calls/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "call_6f1d2c9a8b7e4f3a2d1c0b9a",
"object": "call",
"status": "completed",
"agent_id": "17ea33d2-5b6c-4c1e-9a1f-2d4e6f8a9b0c",
"phone_number": "+919876543210",
"contact": {
"name": "Asha Verma",
"email": "asha@example.com",
"external_id": "lead-8812"
},
"variables": {
"course": "NEET 2027",
"city": "Indore"
},
"metadata": {
"crm_owner": "u_42"
},
"batch_id": null,
"test": false,
"duration_seconds": 142,
"created_at": "2026-10-13T09:30:02Z",
"dialed_at": "2026-10-13T09:30:03Z",
"ended_at": "2026-10-13T09:32:31Z",
"recording_url": "https://media.example-cdn.com/recordings/abc.mp3?X-Amz-Signature=…",
"recording_expires_at": "2026-10-14T09:40:00Z",
"outcome": {
"disposition": "Interested",
"summary": "Asha wants the NEET 2027 weekend batch and asked for the fee structure on WhatsApp.",
"answers": {
"Which course are you interested in?": "NEET 2027",
"Preferred batch timing?": "Weekends"
},
"lead_rating": 8,
"callback_requested": true,
"callback_time_text": "tomorrow after 6 pm",
"follow_up": "CALL",
"follow_up_note": "Send the fee structure; call back tomorrow evening.",
"meeting": {
"requested": true,
"at": "2026-10-14T18:00:00+05:30",
"time_text": "tomorrow after 6 pm",
"type": "call"
},
"transcript": [
{
"speaker": "agent",
"text": "Hi Asha, this is Riya from Shiksha Academy. Is this a good time?"
},
{
"speaker": "contact",
"text": "Yes, tell me."
}
]
}
}Authorizations
Your AI calling API key (vak_call_…). Authorization: Bearer <key> also works.
Path Parameters
Response
The call.
"call_6f1d2c9a8b7e4f3a2d1c0b9a"
"call"queued, dialing, in_progress, completed, no_answer, busy, failed, canceled, expired Why a call is waiting or did not happen, in plain words. Present only when there is one.
Present while a queued call is held until a later time (outside calling hours, a recall gap, the daily limit).
Show child attributes
Show child attributes
A temporary link to the recording. Fetch the call again for a fresh link after recording_expires_at.
What the AI took from the conversation. null until it has been processed (usually within a minute of the call ending), and for calls that did not connect.
Show child attributes
Show child attributes
Only on POST /calls: true when this is the call created by an earlier request with the same Idempotency-Key.