Nuance LabsDocs

Limits and errors

How large each event may be, what the mint refuses, and the error codes a session sends.

Limits

WhatLimit
A conversationUp to the service's maximum. session.expires_at in session.started, and the events route's started, say when it ends.
An append's content, a response.create's instructions2,000 characters
Typed words, one tool result's output24,000 characters
Images in one tool result4, each a JPEG or PNG
A floor hold1 to 3,600 seconds; a reason of up to 200 characters
An event_id512 characters
An event you send64,000 bytes as one packet; send a larger one as a text stream
An event you get15 KiB as one packet; larger ones come as message.part packets
Tools16 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 instructions65,536 characters
A backend task8 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:

StatuscodeMeaning
400unknown_interfaceThe service doesn't offer the interface. detail lists what it offers.
422interface_setupA key or value in interface_setup the session can't run, such as a key other than delegation, video and runtime_tools, or a delegation without its model. detail names it.
400Our review refused the backend's instructions or tools; detail names interface_setup.delegation.responses 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.codeMeaning
instructions_refusedAn append, a response.create'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_refusedThe runtime couldn't apply the event now, such as session.output_audio.interrupt while the persona isn't talking.
delegation_type_mismatchresponse.item.create (a tool result or typed words) in a session with client delegation.
invalid_delegation_idAn append names a delegation that isn't one of your page's open tasks.
function_call_outputs_requiredA response.create that can resume no task while one of its calls still waits for a result.
immutable_field_updateA session.update changes what is fixed at mint. None of it applies.
responses_validation_failedRight after session.started or a session.update: a tool_choice the session runs as auto.
unknown_event_typeAn event type the session doesn't know, such as a misspelling.
unsupported_event, unsupported_feature, unsupported_parameterAn event, a feature or a setting the session doesn't serve, such as session.input_audio.append in a room (the user's audio rides the microphone track), a remote image URL, response.conversation: "none", an output part other than text or an image, or the token's top-level tools, which a Nuance Live session never runs.
missing_required_parameter, unknown_parameter, invalid_type, invalid_value, string_above_max_length, array_above_max_length, integer_below_min_value, integer_above_max_valueA 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.param names it.
invalid_json, unsupported_binaryA packet on the topic isn't a JSON object, or isn't text.
rate_limit_exceededToo much waits on the session: you send faster than it answers, or more than it holds before session.started. Slow down, and send nothing before session.started.
session_closedThe session closed before your append or update applied.
delegation_failedA task failed in a way the session couldn't tie to a step. Every failure today arrives as a step's response.failed instead; handle this only as a last resort.
event_too_largeA session.update too large for one packet, or whose result is.
message_too_large, message_not_sentAn event of the session's was too large to send, or the room refused it.
message_droppedA text stream of yours was dropped before it was whole. Send the event again.
llm_unavailable, llm_rejected, llm_failedThe 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_error, then session.closed with reason: "error".
output_not_readyThe 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.started hasn't come about 30 seconds after you joined the room, leave the room, stop following its events and start a new conversation: a session.close sent before session.started may reach no one. If about 15 seconds after the user's first words nothing has come back (no audio, no transcript, no hand-off), send session.close and start a new conversation. A task waiting on your tool isn't stuck: the persona may be quiet until its result.

On this page