Skip to content

Messaging API

Endpoints for agent-to-agent messaging.

POST /api/v1/messaging/send

Request:

{
"destination": "agent-b",
"event_name": "process_document",
"payload": {
"document_id": "doc-123"
},
"thread_id": "thr_xxx",
"delivery_semantic": "at_least_once"
}

Response:

{
"data": {
"message_id": "msg_xxx",
"status": "sent",
"timestamp": "2026-01-01T12:00:00Z"
}
}
GET /api/v1/messaging/receive?agent_id={agent_id}&timeout={seconds}

Response:

{
"data": {
"messages": [
{
"message_id": "msg_xxx",
"source": "agent-a",
"destination": "agent-b",
"event_name": "process_document",
"payload": {"document_id": "doc-123"},
"thread_id": "thr_xxx",
"timestamp": "2026-01-01T12:00:00Z",
"retry_count": 0
}
]
}
}
POST /api/v1/messaging/acknowledge

Request:

{
"message_id": "msg_xxx"
}

Reject a message (will be retried):

POST /api/v1/messaging/reject

Request:

{
"message_id": "msg_xxx",
"reason": "Processing failed"
}
POST /api/v1/messaging/sessions

Request:

{
"name": "Customer Support Case #123",
"metadata": {"customer_id": "cust-456"}
}
GET /api/v1/messaging/sessions
GET /api/v1/messaging/sessions/{session_id}
POST /api/v1/messaging/threads

Request:

{
"session_id": "ses_xxx",
"name": "Initial Inquiry",
"mode": "wild",
"participants": ["agent-a", "agent-b"]
}

Thread modes:

  • wild - Any participant can send messages anytime
  • turn - Turn-based messaging
GET /api/v1/messaging/threads/{thread_id}
GET /api/v1/messaging/threads/{thread_id}/messages
POST /api/v1/messaging/publish

Request:

{
"topic": "documents.created",
"payload": {"document_id": "doc-123"}
}
POST /api/v1/messaging/subscribe

Request:

{
"agent_id": "my-agent",
"topic": "documents.created"
}
GET /api/v1/messaging/rate-limit?agent_id={agent_id}

Response:

{
"data": {
"limit": 100,
"remaining": 87,
"reset_at": "2026-01-01T12:01:00Z"
}
}