speak decision. Turn-taking
rewrites it into 1–5 short chat messages, scheduled a beat apart, and
delivers them on the thread’s WebSocket as turn_taking.message events (with a
turn_taking.typing indicator around them). The response tells you what was
scheduled; the messages themselves arrive over the socket. See
Receiving messages from the agent.
Pass the turn_epoch from the
submit_messages that returned
speak. If a newer batch has arrived since, the draft is stale: nothing is
scheduled, nothing is billed, and the response is superseded: true.
This call is billable, unless it is superseded. See
Billing.
Authorization
Your bearer token:
Bearer <token>. See Authentication.Request body
The thread to reply in.
The agent’s drafted reply, 1–4000 characters. This is the text that gets
paced into chat messages.
The
turn_epoch from the deciding submit_messages. Required: a reply whose
epoch is behind the thread’s current turn is dropped as stale (an
interruption).Optional system-prompt text — the agent’s identity, character, and style —
applied while rewriting the reply so it stays in the agent’s voice. Up to 8000
characters. Sent per request.
Request
Response
The chat messages the reply was paced into, in delivery order. Each is also
pushed over the WebSocket as a
turn_taking.message event at its
deliver_at. Empty when superseded is true.true when the draft was stale because a newer batch arrived first. Nothing
was scheduled and nothing was billed — draft again against the latest
decision. false on a normal reply.200 OK
200 OK (superseded)
Errors
| Status | Code | When |
|---|---|---|
401 | UNAUTHORIZED | The bearer token is missing, invalid, or expired. |
402 | PAYMENT_REQUIRED | Your account can’t cover this request. You are not charged. |
403 | forbidden | The token is valid but not allowed here. |
422 | VALIDATION_ERROR | The body is malformed, content is empty or too long, or turn_epoch is missing. |
502 | UPSTREAM_ERROR | A dependency the request relies on was unavailable. Retry with backoff. |
200 with superseded: true.
See Errors for the envelope shape.
Example
Next
- Record an event — report typing and edits for behavioural signals.

