Send a client chat message
Send a message for a browser client-token chat session. The request streams flow/agent events over Server-Sent Events. turnId and submitMode are optional and let newer Persona clients suppress stale interrupted responses; older clients can omit both fields. Opt-in steer accepts exactly one new user message whose id equals turnId for visitor-owned native durable agents. A new execution streams SSE; steering an existing execution returns a 202 delivery receipt without replacing its response. auto takes the same shape as steer and lets a classifier choose while a turn runs: a message that belongs to the running work steers it (202 delivery receipt), and an independent one queues as the next turn (202 queued handle); with nothing running it is an ordinary turn with no route report. A routed or downgraded answer carries X-Runtype-Busy-Message-Route and X-Runtype-Busy-Message-Source (plus -Probability and -Model when the classifier answered), repeated as busyMessageRoute on JSON bodies. Where auto cannot route (another lane, another message shape) it behaves as normal and reports source disabled. Retry with the same turn and message IDs. Send voice: { spoken: true } when the user turn came from a live voice call and the reply will be spoken by a voice model; the turn then runs with a per-turn instruction to lead with a short, speakable answer, which is not stored in the conversation.
Request
Customer-native auth proof for the Identity Exchange. When present and the surface has a matching integration, the verified tenant/end-user replace any body-asserted tenant/endUser (which are never trusted for web-embedded callers). When Identity Exchange admission is disabled for the caller, the proof is accepted but ignored and confers no trust.
Voice context for this turn. Omit for typed chat; behavior is unchanged when absent.