curl "https://rhizomeai.com/api/v3/conversations/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01?wait=45" \
-H "x-api-key: YOUR_API_KEY"
import requests
conversation_id = "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01"
while True:
response = requests.get(
f"https://rhizomeai.com/api/v3/conversations/{conversation_id}",
headers={"x-api-key": "YOUR_API_KEY"},
params={"wait": 45},
)
response.raise_for_status()
conversation = response.json()
if conversation["status"] != "running":
break
print(conversation["turns"][-1]["answer"])
{
"conversation_id": "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"status": "completed",
"url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"turns": [
{
"turn_index": 0,
"message": "What De Novo requests has the FDA granted this year?",
"status": "completed",
"answer": "The FDA granted 31 De Novo requests so far this year [1]. ...",
"citations": [
{
"index": 1,
"name": "DEN240012 Decision Summary, p.1",
"dataset": "FDA 510(k) and De Novo",
"date": "2026-03-14",
"page_num": 1,
"url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01?showSourceNumber=1"
}
],
"question": null,
"submitted_at": "2026-10-09T14:02:11.000Z"
}
],
"documents": [],
"error": null
}
{
"conversation_id": "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"status": "running",
"url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"turns": [
{
"turn_index": 0,
"message": "What De Novo requests has the FDA granted this year?",
"status": "running",
"answer": null,
"citations": [],
"question": null,
"submitted_at": "2026-10-09T14:02:11.000Z",
"steps": [
{ "message": "Planning the research approach…", "count": 1 },
{ "message": "Researching sources…", "count": 9 }
]
}
],
"documents": [],
"error": null
}
Conversations
Read a conversation
Status, answers, citations and documents; optionally waits for the run to end
GET
/
api
/
v3
/
conversations
/
{conversation_id}
curl "https://rhizomeai.com/api/v3/conversations/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01?wait=45" \
-H "x-api-key: YOUR_API_KEY"
import requests
conversation_id = "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01"
while True:
response = requests.get(
f"https://rhizomeai.com/api/v3/conversations/{conversation_id}",
headers={"x-api-key": "YOUR_API_KEY"},
params={"wait": 45},
)
response.raise_for_status()
conversation = response.json()
if conversation["status"] != "running":
break
print(conversation["turns"][-1]["answer"])
{
"conversation_id": "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"status": "completed",
"url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"turns": [
{
"turn_index": 0,
"message": "What De Novo requests has the FDA granted this year?",
"status": "completed",
"answer": "The FDA granted 31 De Novo requests so far this year [1]. ...",
"citations": [
{
"index": 1,
"name": "DEN240012 Decision Summary, p.1",
"dataset": "FDA 510(k) and De Novo",
"date": "2026-03-14",
"page_num": 1,
"url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01?showSourceNumber=1"
}
],
"question": null,
"submitted_at": "2026-10-09T14:02:11.000Z"
}
],
"documents": [],
"error": null
}
{
"conversation_id": "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"status": "running",
"url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"turns": [
{
"turn_index": 0,
"message": "What De Novo requests has the FDA granted this year?",
"status": "running",
"answer": null,
"citations": [],
"question": null,
"submitted_at": "2026-10-09T14:02:11.000Z",
"steps": [
{ "message": "Planning the research approach…", "count": 1 },
{ "message": "Researching sources…", "count": 9 }
]
}
],
"documents": [],
"error": null
}
Returns a conversation with every turn. While research runs, poll with
Plus
wait=45: the request holds until the run ends or 45 seconds pass, so a run of a few minutes takes a handful of calls.
Path parameters
string
required
The conversation’s id.
Query parameters
number
default:0
Seconds to wait for a running conversation to finish, 0 to 45. The response
comes as soon as the status leaves
running, or when the time is up. 0
returns at once.Response
string
The conversation’s id.
string
running, completed, needs_input, stopped or error: the latest
message’s status. After a stopped follow-up it is stopped while the last
turn is the previous answer. See
Statuses.string
The conversation on rhizomeai.com, for the API key’s owner.
array
Every message and its answer, oldest first. A stopped message is removed, so
a conversation whose first message was stopped has no turns.
Show Turn object
Show Turn object
integer
Position in the conversation, from 0.
string
The message you sent.
string
This turn’s status.
string | null
The answer in markdown, with citation markers like
[1]. null until
the turn is completed or needs_input.array
Sources cited in the answer. Empty until the turn finishes.
Show Citation object
Show Citation object
integer
The number used in the answer, as in
[1].string
The source document and page.
string
The dataset’s name.
string | null
The document’s date, when it has one.
integer | null
The cited page. The first page is 1.
string
Opens the source in the conversation on rhizomeai.com.
string
Only on a passage citation: the paragraph or table rows cited, such
as
¶3 or ¶3-5. parent_index is then the citation of the page
they are on.object | null
Set when the agent asked a clarifying question instead of answering:
question (text) and options (suggested replies, possibly empty).string | null
When the message was sent, ISO 8601.
array
Only on a running turn: progress so far, such as
{"message": "Researching sources…", "count": 14}.array
Reports, files and images the agent produced in this conversation, with
id,
title, type (text, file or image) and created_at. Fetch one with
Get a document.string | null
Why the run failed, when
status is error.Errors
| Status | Code | Description |
|---|---|---|
| 400 | invalid_request | wait isn’t a number from 0 to 45 |
| 404 | not_found | No conversation with this id in your account |
401 and 429, see Errors.
curl "https://rhizomeai.com/api/v3/conversations/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01?wait=45" \
-H "x-api-key: YOUR_API_KEY"
import requests
conversation_id = "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01"
while True:
response = requests.get(
f"https://rhizomeai.com/api/v3/conversations/{conversation_id}",
headers={"x-api-key": "YOUR_API_KEY"},
params={"wait": 45},
)
response.raise_for_status()
conversation = response.json()
if conversation["status"] != "running":
break
print(conversation["turns"][-1]["answer"])
{
"conversation_id": "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"status": "completed",
"url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"turns": [
{
"turn_index": 0,
"message": "What De Novo requests has the FDA granted this year?",
"status": "completed",
"answer": "The FDA granted 31 De Novo requests so far this year [1]. ...",
"citations": [
{
"index": 1,
"name": "DEN240012 Decision Summary, p.1",
"dataset": "FDA 510(k) and De Novo",
"date": "2026-03-14",
"page_num": 1,
"url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01?showSourceNumber=1"
}
],
"question": null,
"submitted_at": "2026-10-09T14:02:11.000Z"
}
],
"documents": [],
"error": null
}
{
"conversation_id": "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"status": "running",
"url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
"turns": [
{
"turn_index": 0,
"message": "What De Novo requests has the FDA granted this year?",
"status": "running",
"answer": null,
"citations": [],
"question": null,
"submitted_at": "2026-10-09T14:02:11.000Z",
"steps": [
{ "message": "Planning the research approach…", "count": 1 },
{ "message": "Researching sources…", "count": 9 }
]
}
],
"documents": [],
"error": null
}