Fetches the conversation’s metadata plus its current version. Use the version
immediately before posting a run as expected_version — that’s how the platform’s
compare-and-swap guard knows whether the conversation has advanced since you last
looked.
version, post it as expected_version. If you
cache the value across long delays you’ll hit
Version Conflict
more often.requires_action run: the conversation’s version has advanced
because the assistant turn was persisted on the run row’s finalize. Re-read it
before posting tool_outputs.defaults if you’ve forgotten what was pinned.There is no PATCH / PUT for conversations. The system_prompt and defaults are
immutable at the conversation level. To change behavior, override per-run via
config_override, or create a new conversation.
The endpoint returns 404 for both “conversation does not exist” and “conversation belongs to a different company” — the API does not distinguish them. This is deliberate: a 200 for the former and a 404 for the latter would leak existence.
agent_conversations resource with read verb.
Documentation Index
Fetch the complete documentation index at: https://docs.narrative.io/llms.txt
Use this file to discover all available pages before exploring further.
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
The conversation's UUID.
UUID identifying a conversation. Returned from POST /agents/conversations and used
in every other agent endpoint that operates on this conversation.
"bc2505b7-068d-44ed-8055-a6f6ffe54ab1"
The conversation row.
The conversation row as the API returns it. The same shape comes back from
POST /agents/conversations (201 Created) and GET /agents/conversations/{id} (200 OK).
UUID identifying a conversation. Returned from POST /agents/conversations and used
in every other agent endpoint that operates on this conversation.
"bc2505b7-068d-44ed-8055-a6f6ffe54ab1"
Company ID derived from the bearer token. Pinned for the conversation's lifetime.
1
User ID derived from the bearer token. Pinned for the conversation's lifetime.
407
The configuration applied to every run on this conversation by default. Each field
can be overridden per-run via config_override on the POST .../runs body, except
system_prompt which is fixed at conversation creation time.
For mcp_servers and client_tools, overrides replace the whole list, not
individual entries. There is no per-server or per-tool merge — set the complete
catalog you want for that run.
Monotonic per-conversation counter, bumped by 1 (or more) every time a successful run appends messages. Two roles:
GET .../messages?since=N — fetch only messages with
sequence_no > N.POST .../runs — set expected_version to the
conversation's current head; if it doesn't match at run-creation time, you get a
Version Conflict
(HTTP 409).Always start a new run cycle by reading the current version from
GET /agents/conversations/{id} rather than caching a value from earlier.
x >= 04
"2026-05-18T13:21:30.355180Z"
"2026-05-18T13:21:51.983952Z"