The protocol uses a consistent framing for all messages.
Client Commands:
Clients send commands containing an id, a method, and params.
{
"id": 1,
"method": "run.start",
"params": {
"assistantId": "agent",
"input": {
"messages": [{ "role": "user", "content": "Hello" }]
}
}
}
Server Responses:
- Success: Includes the original command
id and a result object. - Error: Includes the original command
id and an error code/message.
Server Events:
Unsolicited pushes that include an eventId (for SSE reconnection) and a seq (monotonic sequence number for ordering/replay).
{
"type": "event",
"eventId": "evt_123",
"seq": 43,
"method": "messages",
"params": {
"namespace": [],
"timestamp": 1710000000000,
"data": {
"event": "message-start",
"role": "ai",
"id": "msg_123"
}
}
}
{
"id": 1,
"method": "run.start",
"params": {
"assistantId": "agent",
"input": {
"messages": [{ "role": "user", "content": "Hello" }]
}
}
}