Skip to main content
POST
Add a counsellor

Authorizations

X-API-Key
string
header
required

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

Headers

Idempotency-Key
string

Same body + same key within 24 hours returns the first result.

Maximum string length: 255

Body

application/json
name
string
required
Maximum string length: 120
email
string<email>
required

Their dashboard login. An email whose login belongs to another account is refused (email_in_use_elsewhere); the login of someone removed from your account earlier is reused (see existing_account).

mobile_number
string

E.164. Their phone rings first on a human call, so Vacademy Voice and Exotel need it (a warning says so when it is missing). Ignored for an existing account.

airtel_extension
string

Their Airtel IQ extension, when your calling provider is Airtel. Unique in your account.

Maximum string length: 32
send_welcome_email
boolean
default:true

Email a NEW account its login (username, password, dashboard link). Never sent to an existing account.

Response

Already a counsellor here (created: false), or a replay of this Idempotency-Key (idempotent_replay: true).

id
string

Use as counsellor_id on POST /human-calls.

object
string
Allowed value: "counsellor"
name
string
email
string | null
roles
string[]
Example:
can_call
boolean

Whether this person can take a human call right now on your calling provider.

blocked_reason
string | null

Why can_call is false, e.g. no mobile number on their profile (Vacademy Voice, Exotel) or no Airtel extension mapped.

status
enum<string>

inactive after DELETE /counsellors/{id} (deactivated); GET /counsellors lists active ones only.

Available options:
active,
invited,
inactive
mobile_number
string | null

Only on GET /counsellors/{id} (and write responses) for keys with counsellors:manage, and null when the login also belongs to another account (shared_account). Digits with the country code, as stored on the profile.

Example:

"919876543210"

airtel_extension
string | null

Only on single-counsellor responses, for keys with counsellors:manage.

manageable
boolean

Only for counsellors:manage keys: whether the API may change this person (their roles here are counsellor roles only). Admins and other staff are false.

shared_account
boolean

Only for counsellors:manage keys: the login also belongs to another account on the platform, so its name and mobile number cannot be changed through the API.

created
boolean

true when this request made the person a counsellor here; false when they already were (nothing changed).

existing_account
boolean

The email already had a login on the platform: it was reused, its name, mobile and password were not changed, and no email was sent.

welcome_email_sent
boolean
effects
object

On deactivation / reactivation: what else changed (see the counsellors guide).

warnings
object[]

Non-fatal notes about what was (not) done, e.g. mobile_number_missing.

idempotent_replay
boolean