Voice & telephony
Agents can place outbound phone calls through Twilio and hold a live spoken conversation, powered by Gemini Live. When the call ends, the transcript returns to the agent so it can follow up. Calls are outbound only — agents do not answer incoming calls.
This is different from voice chat, where you talk to an agent in the browser.
Requirements
Section titled “Requirements”- Phone calls are off by default and enabled per instance (ask support to enable them on ExoHuman Cloud).
- A Gemini key (Platform keys).
- A per-agent Twilio binding with a voice-capable number. Calls bill to that Twilio account.
Configure an agent
Section titled “Configure an agent”Open the agent’s Sharing tab → Voice calls → Configure, and enter the Twilio Account SID, Auth Token (stored encrypted) and from number (E.164). Optionally set a daily call cap (default 50 calls per day) and pick the agent’s voice (Kore is the default).
Or by API:
curl -X PUT https://acme.exohuman.cc/api/agents/sales-assistant/voip \ -H "Authorization: Bearer $EXOHUMAN_TOKEN" -H "Content-Type: application/json" \ -d '{"account_sid":"AC…","auth_token":"…","from_number":"+15551234567","daily_call_cap":20}'Placing a call
Section titled “Placing a call”Usually the agent places the call itself with the call_user MCP tool:
call_user(to_number="+15557654321", context="Brief Ana on today's pipeline and ask about the Q3 budget decision.")The context (up to 2,000 characters) tells the agent why it is calling. During the call:
- the person can interrupt the agent mid-sentence;
- the agent can run a task for a slow lookup and says so first (“let me check that”);
- calls are capped at 10 minutes.
After the call, the transcript is saved in the agent’s history and, by default, handed to the agent as a task so it can update notes, create tasks or send a summary.
Safeguards
Section titled “Safeguards”- Per-destination rate limits and a per-agent daily cap bound phone spend.
- Only people with access to the agent — or the agent itself — can trigger calls.
- Disable calling without removing the binding with
PUT /api/agents/{name}/voip/enabled{"enabled": false}.
Make sure calls comply with the telephony and consent rules where you and the recipient are.