Skip to main content
POST
Start a human call

Authorizations

X-API-Key
string
header
required

Your AI calling API key (vak_call_…). Authorization: Bearer <key> also works.

Headers

Idempotency-Key
string

Any unique string per click, e.g. lead-8812-call-1. A retry with the same key and body returns the first call instead of ringing the counsellor again; a different body is refused (409). Honoured for 24 hours.

Maximum string length: 255

Body

application/json
phone_number
string
required

The contact to connect, E.164. Formatting is ignored as for AI calls.

Example:

"+919876543210"

counsellor_id
string

The counsellor to ring, from GET /counsellors. Send this or counsellor_email, not both.

counsellor_email
string<email>

The counsellor's email in your account (case-insensitive).

contact
object
metadata
object

Anything you want back on the call and its webhooks (at most 8 KB as JSON).

analyze
boolean
default:false

Transcribe and analyse the call once its recording is in (0.15 credits per recorded minute). You get human_call.analysis_ready.

Response

Replay: a call with this Idempotency-Key already exists and is returned unchanged (idempotent_replay: true).

id
string
Example:

"hcall_7d2e9b1c4a6f8e0d3b5c7a9e"

object
string
Allowed value: "human_call"
status
enum<string>
Available options:
queued,
ringing_counsellor,
connecting,
in_progress,
completed,
no_answer,
busy,
failed,
canceled
status_reason
string

Why a call failed, in plain words. Present only when there is one.

no_answer_by
enum<string> | null

Only on no_answer / busy: which phone did not pick up, when the provider says so.

Available options:
counsellor,
contact,
null
counsellor
object
phone_number
string
contact
object
crm_lead_linked
boolean

The call was filed on the one lead in your account with this number (it shows on the lead's timeline).

metadata
object
analyze
boolean
status_updates
enum<string>

How live status is on your provider: Vacademy Voice realtime, Exotel final_only, Airtel delayed (after its call record is imported).

Available options:
realtime,
final_only,
delayed
created_at
string<date-time>
dialed_at
string<date-time> | null
answered_at
string<date-time> | null

When the contact picked up, when known.

ended_at
string<date-time> | null
duration_seconds
integer | null
recording_url
string | null

A temporary link to the recording (24 hours). Fetch the call again for a fresh link.

recording_expires_at
string<date-time> | null
disposition
object | null

The outcome recorded by the counsellor or by you. null until set.

analysis
object

AI analysis of the conversation. Fields beyond status are present once it is completed.

cost
object | null

null while the call runs. Only Vacademy Voice talk time is charged to your credits; Exotel and Airtel bill you directly.

idempotent_replay
boolean

Only on POST /human-calls: true when this is the call created by an earlier request with the same Idempotency-Key.