- Start a conversation. The call returns in about a second with a
conversation_idandstatus: "running". - Read the conversation with
wait=45untilstatusis no longerrunning. Each call holds up to 45 seconds and returns as soon as the run ends. - Read the answer and citations from the last turn. Fetch documents the agent wrote, if any.
- Send a follow-up and poll again.
Statuses
A conversation’sstatus is its latest message’s status.
Answers and citations
answer is markdown. Citations appear in it as [1], [2], matching the index of an entry in the turn’s citations. Citation numbers continue across the turns of a conversation. A link of the form doc:<id> in an answer points at an entry in the conversation’s documents.
Each citation gives the source document’s name, dataset, date and page, and a url that opens the source in the conversation on rhizomeai.com.
Retries and idempotency
Send anIdempotency-Key header with each message to make retries safe. If a request times out and you retry it with the same key, you get the conversation or turn the first request created instead of a second run. Keys are scoped to your account; use a new one, such as a UUID, for each message. Reusing a key with a different message is a 422.
Plans and limits
Runs use the plan of the API key’s owner, as on rhizomeai.com: on a free plan each message counts against the monthly question limit, and a message over the limit is a402. Downloading Word, Excel and PowerPoint files needs a paid plan.
An account can have 3 conversations running at once, counting those started on rhizomeai.com. A message that would start a fourth is a 429 with code concurrent_conversations and a Retry-After header; send it again once a run finishes. Request bodies are JSON, up to 1 MB.
Errors
Errors return{"error": {"code", "message", "field", "request_id"}}, as on every API v3 endpoint; field names the value at fault when there is one. Every response has an X-Request-Id header. See Errors.
Example
Python