Documentation Index
Fetch the complete documentation index at: https://curia.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
POST /api/messages is the primary way to interact with Curia programmatically. You send a message, Curia routes it to the Coordinator agent, and the response comes back in the same HTTP reply — no streaming required. If you want to watch the agent’s progress in real time (for example, to see which tools it is calling), use GET /api/messages/stream alongside this endpoint.
Request
Content-Type: application/json on every call.
Request body
The message text to send to the Coordinator. Must be a non-empty string. The body limit for the entire request is 64 KiB; messages approaching that size will be rejected with
413.An identifier for the conversation thread. Pass the same value across multiple requests to continue an existing conversation — the agent uses this to retrieve prior context from memory. If you omit this field, Curia generates a new ID (prefixed
http-) and returns it in the response. Save it if you want to continue the thread later.An identifier for the sender. Defaults to
http-user if not provided. Use this to distinguish between different callers in your logs or when building multi-user integrations.Example request
conversation_id from a previous response:
Response
A successful response has HTTP status200 and a JSON body.
Response fields
The conversation thread ID. If you provided one in the request, this echoes it back. If you did not, this is the newly generated ID — save it to continue the thread in future requests.
The agent’s reply as plain text.
The identifier of the agent that handled the request. Currently always
"coordinator".Example response
Conversation threading
Eachconversation_id represents a persistent thread. The agent retrieves relevant memory from that thread when formulating its reply, so passing the same ID lets you have a multi-turn conversation without repeating context.
Error responses
400 — missing or empty content
400 — missing or empty content
The
content field was absent or contained only whitespace.401 — unauthorized
401 — unauthorized
413 — message too large
413 — message too large
The request body exceeded the 64 KiB limit. Shorten your message.
429 — rate limited
429 — rate limited
You have exceeded the 200 requests per minute global limit.
504 — timeout
504 — timeout
The agent did not produce a response within 120 seconds. This can happen if the agent is waiting for a slow external tool. Retry your request or break the task into smaller steps.
500 — internal error
500 — internal error
An unexpected error occurred while publishing your message to the internal bus. Check your Curia server logs for details.