Your agent can talk.
Give it your API and it can act.
Let the agent call your own endpoints in the middle of a live call: look up the order, check the balance, write to the CRM, then say the answer out loud. You set the timeout, and a filler phrase keeps the line alive while your system is queried.
Function calling lets a voice agent reach your own API during a live call. The agent pulls the arguments out of what the caller said, sends them to the URL you registered, waits for your JSON, and speaks the result back in conversation, so callers get real answers from your systems instead of a promise that someone will ring them back.
HOW IT WORKS
How does the agent call your API?
Describe the function
You give it a name, a plain-English description of when to use it, and the URL to call. The description is what the agent reasons over, so write it the way you would brief a new receptionist.
The agent calls it mid-call
When the conversation needs that information, the agent pulls the arguments out of what the caller said and POSTs them to your endpoint, speaking your filler phrase while it waits.
Your JSON becomes speech
Whatever you return comes back into the conversation as spoken words. The caller gets a real answer from your system rather than a promise that somebody will call them back.
FUNCTION CONFIGURATION
What you set on each function
| Field | What it does |
|---|---|
name | How the function is referred to internally. |
description | Plain English telling the agent when to reach for it. This is the field that decides whether it gets called at the right moment. |
url | Your endpoint. The agent POSTs the arguments it extracted from the conversation. |
headers | Anything your endpoint needs to authorise the request. |
timeout | How long to wait, from 1000ms to 45000ms. Defaults to 5000ms. |
speak_during | The line the agent says while your endpoint is being queried, so the caller never hears silence. |
Functions live on the phone number, not the agent, so one template can serve many numbers that each call different systems.
BUILT FOR LIVE CONVERSATION
Why does it hold up on a real call?
Silence is the enemy, so we cover it
A tool call that blocks the audio is what makes a voice agent feel broken. Your filler phrase plays the moment the agent decides to call you, so the wait sounds like a person checking rather than a dropped line.
You own the timeout budget
Set it tight for a fast lookup or long for a slow legacy system, anywhere from one second to forty-five. Nothing hangs indefinitely, and a slow endpoint degrades the moment rather than the call.
Per number, not per agent
Each number reaches its own systems with its own credentials.
Facts come from the engine
Exact values are taken from your response, never improvised.
Booking uses the same loop
Calendar tools ride the identical path, so behaviour is consistent.
Fifteen per number
Enough for a real product, capped so the agent stays decisive.
THE PART TEAMS GET WRONG
Write the description like a briefing, not a label.
The description is the whole decision. The agent has no other way to judge whether this is the right moment to call you, so name the situation it belongs to and the information it needs. Keep what you return small as well: a handful of fields the agent can say out loud beats a large object it has to summarise, because everything you send back has to survive being spoken to somebody holding a phone.
QUESTIONS
Function calling, answered
What is function calling in a voice agent?+
Function calling lets the agent reach your own API during a live call. When the caller asks something only your systems know, the agent sends the details to your endpoint, waits for the JSON, and speaks the answer back in the conversation. Without it a voice agent can only talk; with it the agent can actually do the work.
What can a custom function actually do?+
Anything your API does. Common ones are looking up an order or a booking, checking a balance or a stock level, creating a ticket, quoting a price, and writing the call outcome into a CRM. If your endpoint can answer in a second or two, the agent can use it in conversation.
Does the caller hear silence while my API is called?+
Not if you set a filler phrase. Every function has a speak_during field: the agent says that line while your endpoint is being queried, so the line never goes quiet. Dead air during a tool call is the most common reason a voice agent feels broken, and this is the direct fix for it.
What happens if my endpoint is slow or fails?+
You set the timeout yourself, from one second up to forty-five, with five seconds as the default. If your endpoint does not answer in that window the agent stops waiting and handles the moment gracefully rather than leaving the caller hanging on an open line.
How many functions can one number have?+
Up to fifteen per number. They are configured per phone number rather than per agent, so one shared agent template can back many numbers while each number reaches a different set of endpoints with its own credentials.
How does the agent know which function to call?+
From the description you write. The agent matches the intent of what the caller said against your descriptions, so a specific one such as look up an order by its reference number works far better than a vague one such as get data.
Can the agent invent an answer instead of calling my API?+
The engine supplies the facts, not the model. Anything that has to be exact, such as a reference number or a time, comes from the tool result rather than from the model writing something plausible. That separation is deliberate: prompts are guidance, but a value that must be correct is never left to the model to imagine.
Do functions cost extra?+
No. Function calls are part of the conversation and included in the flat $0.08 per minute of voice. You pay for the minutes, not per tool call, and there is no SDK to install to use them.
Give your agent something to do.
Register one endpoint and the next caller gets an answer from your own systems.
Last updated August 2026