Skip to main content
POST
Send Conversation Message
mode=auto queues the message while a turn is running and signals started when the conversation is idle. mode=queue queues the message while a turn is running. mode=steer hands the message to the running turn so the agent takes it into account at its next skill call. Check is_steerable on Run State first. mode=interrupt stops the running turn and runs this message as the next turn. When no turn is running, queue and steer also signal started and queue nothing. Run the turn yourself with Run Conversation Turn. On a CLI agent whose process is still live, every mode signals steered: the message goes straight to that process. A started response means the message was not enqueued (queue_depth: 0): the conversation is idle, so run the turn yourself with Run Conversation Turn passing id = conversation_id. A queued response means it waits behind the running turn; if a stream is open on that turn it runs next on the same stream, otherwise run the queue with Drain Queue. See the Conversations overview for the full conversation model.

Authorizations

x-api-key
string
header
required

API Key for authentication

Path Parameters

agent_id
string
required
conversation_id
string
required

Body

application/json

Body of the chat-backend messages / steer endpoints.

text
string
default:""
files
string[]
mode
enum<string>
default:auto

How an inbound message to a (possibly running) conversation is handled.

Available options:
auto,
queue,
steer
idempotency_key
string | null
user
User · object | null

Response

Successful Response

Result of accepting an inbound message for a running conversation.

action
string
required
message_id
string | null
queue_depth
integer
default:0
steer_target
string | null