My agent will not hang up
My agent will not hang up
Attach the
hangUp built-in tool. Without it the agent
finishes speaking and waits indefinitely. This is the most common first-agent
problem.My tool never fires
My tool never fires
Almost always the
description. It is the only thing the model uses to decide.
Name the phrasings callers actually use — “asks where their order is”, “gives an
order number” — rather than describing the endpoint. See
Tools.If it is a client tool on a phone agent, it cannot fire at all — there is no
client on a phone call.The agent ignores its greeting
The agent ignores its greeting
Check
firstSpeaker. A greeting on a firstSpeaker: user agent is silently
unused, and outbound calls always wait regardless. See
Writing agent prompts.Which endpoint updates an agent?
Which endpoint updates an agent?
PATCH /agents/{id}. There is no PUT handler — send only the fields you are
changing.How do I assign a phone number?
How do I assign a phone number?
PATCH /numbers/{id} with {"agentId": "..."}. GET /agents/{id}/numbers is
read-only; there is no POST on it. Unassign with {"agentId": null}.Why is my API key getting 401 on /credits?
Why is my API key getting 401 on /credits?
Balance, usage, and subscription endpoints are dashboard-only — they
authenticate with a session, not an API key. Track spend by aggregating
GET /calls instead. See Credits.Is there a webhook for call events?
Is there a webhook for call events?
No. Call lifecycle events flow inbound from the voice provider to Omnia for
billing; they are not forwarded on. Poll
GET /calls with a cursor — a call is
finished once endTime is populated.Why does /calls paginate differently?
Why does /calls paginate differently?
/calls uses cursor pagination (cursor, pageSize) to match the underlying
voice provider. Everything else uses page and limit.Can I manage corpora through the API?
Can I manage corpora through the API?
Not currently. Corpus creation and source management authenticate with a
dashboard session. Linking a corpus to an agent is available via the API —
the
corpora field on the agent payload.Why was my tool URL rejected?
Why was my tool URL rejected?
baseUrlPattern refuses internal addresses — private ranges, loopback, and
link-local including the cloud metadata endpoint. A tool is a URL the model can
cause your infrastructure to call, so it cannot point inward.Can I put the SDK key in the browser?
Can I put the SDK key in the browser?
OmniaSession sends your key with X-API-Key from wherever it runs — in a
browser, that key is visible in devtools. Create calls server-side and hand the
client only the websocketUrl, or point baseUrl at your own proxy.Who gets billed?
Who gets billed?
The person who created the workspace, for everything that happens in it —
not the member who made the call, and not the API key holder. See
Workspaces.
Does restoring an old agent version restore everything?
Does restoring an old agent version restore everything?
No. Snapshots capture personality fields, language, and voice — not tool
assignments, corpora, or call settings. Restoring brings back the older wording
with today’s everything-else.
What languages are supported?
What languages are supported?
50+, with particular depth in English and the Nordic languages. Language is
auto-detected and an agent can switch mid-conversation. Fetch what your account
has with
GET /languages.Still stuck?
How to get a useful answer quickly.