/v1/human-calls, and need their own scopes: human_calls:read and human_calls:write. A key only has them when it was created with Can ring counsellors (human calls) ticked; your existing AI calling keys cannot ring your staff. AI calls (/v1/calls) are unchanged.
Counsellors
Only people already set up in your account can take human calls: active users with a Counsellor or Admin role. An API key never acts as a person, so it cannot invent one. List them withGET /v1/counsellors:
can_call is false until the counsellor is ready for your calling provider:
- Vacademy Voice and Exotel ring the counsellor’s mobile number, so it must be on their profile, as a full number with the country code.
- Airtel dials from the counsellor’s Airtel extension, mapped under Settings → Calling.
counsellor_id or by counsellor_email (exactly one).
Starting a call
201 with the human call, usually queued or ringing_counsellor. Within a few seconds the counsellor’s phone rings.
Because a human call happens now, every check runs before anything rings, and a call that cannot go out now is refused with a clear code instead of being queued. The checks run in this order, so the first one that fails is the error you get:
The busy and already-being-called checks are made under a lock per counsellor and per number, so two requests a moment apart (a double click) cannot both ring.
Idempotency-Key works exactly as for AI calls: a retry with the same key and body returns the first call (200, idempotent_replay: true) instead of ringing the counsellor again.
Calling hours and contact limits
- Calling hours. Calls go out only inside your account’s calling hours (the calling shifts in your AI calling settings, as for AI calls) and inside the India compliance window, 9 AM to 9 PM in your account’s timezone unless your plan changes it.
- Calls per number per day. The same limit as AI calls (3 in 24 hours unless your settings say otherwise), counting every call to the number, AI and human.
- Gap after a conversation. After a call to a number connects, the next call to it waits at least an hour. A missed call (no answer, busy) does not start this gap, so a counsellor can retry a missed call; it still counts toward the daily limit.
Your CRM lead
If exactly one lead in your Telleo account has this phone number, the call is filed on that lead: it shows on the lead’s timeline, and a disposition that is mapped to a lead stage moves the lead.crm_lead_linked says whether this happened. If no lead, or more than one, has the number, the call is kept as an API contact (like an AI call) and no lead changes.
Status
How quickly the status changes depends on your provider, reported in
status_updates:
A call that never reports an end is marked
failed (No final status was received) after 2 hours (24 hours on Airtel).
The human call object
- Times are ISO-8601 UTC and never in the future.
answered_atis when the contact picked up, when known. recording_urlis a temporary link (valid untilrecording_expires_at, 24 hours); fetch the call again for a fresh one. It isnullwhen your provider or settings do not record.dispositionis what the counsellor (or your system) recorded;nulluntil set.analysisisnot_requestedunless you sentanalyze: true(or your account analyses calls automatically); thenpending,completedorfailedwith areason(not_connected,no_recording,insufficient_credits…). An analysis that hits a temporary error is retried automatically (up to 4 attempts) and stayspendingmeanwhile.costisnullwhile the call runs. See Billing.
GET /v1/human-calls, filtered by counsellor_id, status, phone_number, external_id, created_after and created_before, newest first with cursor pagination. status matches the status each call reports, including calls reported failed because they were never placed or never reported an end.
Dispositions
The outcome of a human call is the disposition the counsellor picks in the dashboard. Your system can set it too:GET /v1/dispositions. changes_lead_status says whether a key moves a linked lead to a new stage.
AI analysis
Sendanalyze: true to have the conversation transcribed and analysed once the recording is in: a summary, the contact’s sentiment, how likely they are to convert, and ratings of the call. You get human_call.analysis_ready when it is done (usually a few minutes after the call). Analysis needs a recording, so it is only possible when your calls are recorded.
Billing
Human calls appear under
human_calls in GET /v1/usage: with source=api the calls placed through the API, with source=all every counsellor call placed on Vacademy Voice, Exotel or Airtel. Recordings of calls made elsewhere and uploaded to Telleo are not counted.