Most agents should create a stored agent instead. Storing your configuration server-side keeps secrets off the client, runs HTTP tools for you, and lets you deploy the same agent across the API, a browser, and Twilio by
agent_id. This page covers the inline alternative: configuring an agent at connect-time without storing it, useful for fully dynamic or one-off agents. The field reference below applies to both: the same fields exist on a stored agent’s input/output objects.session.update is the configuration surface for an inline (non-stored) agent. Everything that shapes how the agent sounds and behaves lives here: its personality, its greeting, the tools it can call, how it interprets user speech, and what voice it speaks in.
Send a session.update as your first WebSocket message, and any time after, to update most fields. Some fields can only be set in the first update; see Mutability after session.ready below.
Here’s a full configuration showing every available field:
Mutability after session.ready
The first session.update you send before session.ready initializes the session. After session.ready, only a subset of fields can be changed. Changing one of the immutable fields raises a session.error with code immutable_field and the rejected change is ignored.
Other fields (
session.tools, session.input.format) are also accepted in subsequent session.update messages and don’t raise immutable_field.
Fields
Thesession object carries the same fields as a stored agent. Each has a dedicated guide with details and examples; the cURL there maps one-to-one onto the session.update shape shown above.
system_prompt— the agent’s personality and behavior. Updatable mid-session. See the Prompting guide.greeting— the exact words spoken on connect, sent straight to TTS. Immutable aftersession.ready. See Greeting.output.voice— the TTS voice, e.g."ivy". Immutable aftersession.ready. See Voices.input.format/output.format— audio encoding (defaultaudio/pcmat 24 kHz).output.formatis immutable aftersession.ready. See Audio encoding.output.volume— playback volume,0–100. Updatable mid-session. See Volume.input.keyterms— up to 100 transcription-bias terms. Updatable mid-session. See Key terms.input.turn_detection— VAD tuning and barge-in. Updatable mid-session. See Turn detection and interruptions.tools— actions the agent can call. See Add tools.