Skip to main content
The default voice agent is the fallback used when a campaign or flow node does not specify a voice_agent_id. Yotel resolves voice agents using this override hierarchy:
flow node voice_agent_id  →  campaign voice_agent_id  →  tenant default  →  lazy-create from tenants.voice_agent_default_ws_url

Get the tenant default

curl https://api.yotel.in/api/v1/voice-agents/default \
  -H "Authorization: Bearer yt_live_YOUR_KEY"
Scope: voice_agents:read  |  Status: 200 OK

Response

{
  "voice_agent_id": "va_abc123"
}
Returns null if no default is set.

Set the tenant default

curl -X POST https://api.yotel.in/api/v1/voice-agents/default \
  -H "Authorization: Bearer yt_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"voice_agent_id": "va_abc123"}'
Scope: voice_agents:admin  |  Status: 200 OK Pass voice_agent_id: null to clear the default:
curl -X POST https://api.yotel.in/api/v1/voice-agents/default \
  -H "Authorization: Bearer yt_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"voice_agent_id": null}'
Setting a default requires the voice_agents:admin scope, which is more restrictive than voice_agents:write. This is intentional — the default affects all campaigns that don’t pin a specific voice agent.

Errors

StatusCondition
403Missing voice_agents:admin scope
404The specified voice_agent_id does not exist in this tenant