Get a reply
Only live agents answer. Turn an agent live in the dashboard, or withPATCH /v1/agents/{agent_id} and {"status": "live"}.
conversation_id with the next message to continue the conversation. To hear the reply, pass reply to POST /v1/audio/speech, which is charged separately.
Sending the same Idempotency-Key with an API key returns the same reply, with no second charge. Keys last a day, and belong to one API key and one agent. Client tokens can’t use them.
tool_calls shows each tool’s input and output to API keys. Client tokens get tool names only, so a browser can’t read your documents or what your webhook returned.
Errors
Conversations
We keep a conversation for 1 hour after its last message, or for your organization’s retention period if that’s longer, and delete it within a day of that. A conversation older than this returns404. Delete one sooner with DELETE /v1/conversations/{conversation_id}.
Knowledge
Upload TXT, Markdown, CSV, JSON or HTML files of up to 2 MB, or add short notes, up to 20 per agent. With Knowledge search on, the agent looks up answers there andsources names the documents it used.
An agent can repeat anything in its documents to whoever it’s talking to, so don’t upload anything callers shouldn’t hear.
Tools
Webhooks
Your endpoint must be a publichttps URL. We wait 5 seconds in total, read at most 8 KB and don’t follow redirects. An agent can make at most 8 tool calls in a reply. A live agent’s webhook needs a signing secret. A POST carries this JSON, and a GET sends the same fields as query parameters:
X-Vocalistic-Signature on each request. It’s sha256= followed by the hex HMAC-SHA256 of {X-Vocalistic-Timestamp}.{body}, keyed with your secret. For a GET, use the path and query in place of the body. Reject old timestamps.
A failed reply can be retried after a webhook has already run. Use X-Vocalistic-Delivery, which is unique to each call, to spot repeats, and make actions safe to repeat where you can.
Testing
Send"test": true with an API key to run a draft. It’s charged like any reply, but webhooks aren’t called: the agent is told the action was simulated. A test conversation can’t continue as a real one. The dashboard’s test console does this for you.