Limits and errors
How large each event may be, what the mint refuses, and the error codes a session sends.
Limits
| What | Limit |
|---|---|
| A conversation | Up to the service's maximum. session. in session., and the events route's started, say when it ends. |
An append's content, a response.'s instructions | 2,000 characters |
Typed words, one tool result's output | 24,000 characters |
| Images in one tool result | 4, each a JPEG or PNG |
| A floor hold | 1 to 3,600 seconds; a reason of up to 200 characters |
An event_ | 512 characters |
| An event you send | 64,000 bytes as one packet; send a larger one as a text stream |
| An event you get | 15 KiB as one packet; larger ones come as message. packets |
| Tools | 16 run, of up to 128 listed. Names up to 64 characters, descriptions 2,000, parameters 16,000 as compact JSON, annotations 2,000 |
The backend's instructions | 65,536 characters |
| A backend task | 8 steps that may make calls, then one to answer; 60 seconds of backend time, not counting your tools |
The AI persona speaks English only, and the speech recognizer hears English only.
Your plan's limits on conversations at once and credits apply as for any conversation: get your usage shows them.
Turn-taking is the runtime's: when the user's turn ends, and what cuts the persona off, aren't settings. Past the persona's first few replies, a short acknowledgment from the user ("mm-hmm", "yeah") lets it carry on, and other words cut it off.
Errors at mint
POST /session-tokens answers these, besides the errors any token can get:
| Status | code | Meaning |
|---|---|---|
| 400 | unknown_interface | The service doesn't offer the interface. detail lists what it offers. |
| 422 | interface_setup | A key or value in interface_ the session can't run, such as a key other than delegation, video and runtime_, or a delegation without its model. detail names it. |
| 400 | Our review refused the backend's instructions or tools; detail names interface_ and says why. |
The token's warnings list what the session will run without: each tool it drops, a tool_choice it runs as auto, and top-level tools, which a Nuance Live session never runs.
Errors during the session
The session sends an error event, which names your event in client_event_id when it answers one. Most leave the session running. These are the codes you'll meet; handle a code you don't know as an error of its own, since new ones are added.
error.code | Meaning |
|---|---|
instructions_refused | An append, a response.'s instructions or a hold's reason is in another script, asks the persona to speak another language, asks it to name the AI model or company it runs on, or asks it to say it is human or to deny being an AI. Nothing of it reaches the persona. |
command_refused | The runtime couldn't apply the event now, such as session. while the persona isn't talking. |
delegation_type_mismatch | response. (a tool result or typed words) in a session with client delegation. |
invalid_delegation_id | An append names a delegation that isn't one of your page's open tasks. |
function_call_outputs_required | A response. that can resume no task while one of its calls still waits for a result. |
immutable_field_update | A session. changes what is fixed at mint. None of it applies. |
responses_validation_failed | Right after session. or a session.: a tool_ the session runs as auto. |
unknown_event_type | An event type the session doesn't know, such as a misspelling. |
unsupported_, unsupported_, unsupported_ | An event, a feature or a setting the session doesn't serve, such as session. in a room (the user's audio rides the microphone track), a remote image URL, response., an output part other than text or an image, or the token's top-level tools, which a Nuance Live session never runs. |
missing_, unknown_, invalid_, invalid_, string_, array_, integer_, integer_ | A field of your event is missing, unknown, of the wrong type, too long, has too many items (such as a fifth image in one result), or is out of range (such as a hold's seconds). error. names it. |
invalid_, unsupported_ | A packet on the topic isn't a JSON object, or isn't text. |
rate_limit_exceeded | Too much waits on the session: you send faster than it answers, or more than it holds before session.. Slow down, and send nothing before session.. |
session_closed | The session closed before your append or update applied. |
delegation_failed | A task failed in a way the session couldn't tie to a step. Every failure today arrives as a step's response. instead; handle this only as a last resort. |
event_too_large | A session. too large for one packet, or whose result is. |
message_, message_ | An event of the session's was too large to send, or the room refused it. |
message_dropped | A text stream of yours was dropped before it was whole. Send the event again. |
llm_, llm_, llm_ | The persona's language model failed a reply. The session goes on, and the persona's next turn tries again. If it can't be reached for about 30 seconds, it ends with this error as a server_, then session. with reason: "error". |
output_not_ready | The persona's video didn't start within 5 seconds, and the session is over. |
When the session is over for an error, mint a new session token and start again: a token starts one conversation.
When nothing happens
- The persona never speaks. Check that the microphone is published, and that the events route request is still open: it keeps the conversation alive. The persona doesn't speak first, so speak or send
response.create. - The persona talks about doing something, but no hand-off comes. Say plainly in its prompt which requests to hand off.
- A session seems stuck. If
session.startedhasn't come about 30 seconds after you joined the room, leave the room, stop following its events and start a new conversation: asession.closesent beforesession.startedmay reach no one. If about 15 seconds after the user's first words nothing has come back (no audio, no transcript, no hand-off), sendsession.closeand start a new conversation. A task waiting on your tool isn't stuck: the persona may be quiet until its result.