Skip to content

Conversation Resources

GET /api/orgs/{org_id}/chats/{chat_id}/artifacts

Section titled “GET /api/orgs/{org_id}/chats/{chat_id}/artifacts”

List Conversation Artifacts

List all artifacts produced within a conversation (conversation-wide).

Phase 2 (chat-outcomes model): Artifact.chat_id is the sole NOT-NULL anchor; the old assignment_id subquery path is gone.

Requires membership in the organization.

Parameters

NameInTypeRequiredDescription
chat_idpathstring (uuid)yes
org_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseConversationArtifactListResponse
422Validation ErrorHTTPValidationError

GET /api/orgs/{org_id}/chats/{chat_id}/files

Section titled “GET /api/orgs/{org_id}/chats/{chat_id}/files”

List Conversation Files

List all files attached to a conversation (conversation-wide).

Returns every File row where chat_id matches the conversation. Because chat_id is the required NOT-NULL owner (Phase 2 chat-outcomes model), this is the authoritative read for all files in a conversation.

Requires membership in the organization.

Parameters

NameInTypeRequiredDescription
chat_idpathstring (uuid)yes
org_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseConversationFileListResponse
422Validation ErrorHTTPValidationError

GET /api/orgs/{org_id}/chats/{chat_id}/files/{file_id}/download

Section titled “GET /api/orgs/{org_id}/chats/{chat_id}/files/{file_id}/download”

Download Conversation File

Download a file that belongs to this conversation.

The owning column is files.chat_id — membership in the conversation is sufficient to download any file attached to it.

Validates that the file belongs to both this conversation and this organisation before streaming the bytes from S3.

Requires membership in the organization.

Parameters

NameInTypeRequiredDescription
chat_idpathstring (uuid)yes
file_idpathstring (uuid)yes
org_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

GET /api/orgs/{org_id}/chats/{chat_id}/logs

Section titled “GET /api/orgs/{org_id}/chats/{chat_id}/logs”

List Conversation Logs

List all log entries for a conversation.

Phase 2 (chat-outcomes model): ChatLog.chat_id is the direct owner (table renamed from assignment_logschat_logs; assignment_id column renamed to chat_id). Queries directly without any subquery.

Results are ordered by created_at ascending.

Requires membership in the organization.

Parameters

NameInTypeRequiredDescription
chat_idpathstring (uuid)yes
org_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseConversationLogsResponse
422Validation ErrorHTTPValidationError

GET /api/orgs/{org_id}/chats/{chat_id}/related-memories

Section titled “GET /api/orgs/{org_id}/chats/{chat_id}/related-memories”

Get Conversation Related Memories

Return memories related to a conversation.

Delegates to get_chat_related_memories in agent_memories.py. The legacy /api/orgs/{org_id}/assignments/{chat_id}/related-memories path has been removed; this is now the only endpoint for this resource.

Requires membership in the organization.

Parameters

NameInTypeRequiredDescription
chat_idpathstring (uuid)yes
org_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError

GET /api/orgs/{org_id}/chats/{chat_id}/todos

Section titled “GET /api/orgs/{org_id}/chats/{chat_id}/todos”

List Conversation Todos

List all todo items for a conversation, ordered by position then created_at.

Mirrors the list the agent manages via the write_todos internal agent tool. All todo items are anchored on chat_id (assignment_id was dropped in Phase 2).

Requires membership in the organization.

Parameters

NameInTypeRequiredDescription
chat_idpathstring (uuid)yes
org_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseConversationTodoListResponse
422Validation ErrorHTTPValidationError

GET /api/orgs/{org_id}/chats/{chat_id}/transcripts

Section titled “GET /api/orgs/{org_id}/chats/{chat_id}/transcripts”

Get Conversation Transcripts

Lightweight index of per-step LLM transcripts for an entire conversation.

Returns all agent_transcripts rows ordered by created_at ascending then step ascending. Only scalar columns are selected — the heavy request_messages, response_message, tool_definitions, and model_params JSONB columns are never loaded. Instead, request_message_count gives the number of messages in request_messages (computed in Postgres via jsonb_array_length).

Use GET /transcripts/steps/{step_id} to lazy-load the full payload for any individual step.

Gated to ADMIN or OWNER role.

Parameters

NameInTypeRequiredDescription
chat_idpathstring (uuid)yes
org_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseConversationTranscriptIndexResponse
422Validation ErrorHTTPValidationError

GET /api/orgs/{org_id}/chats/{chat_id}/transcripts/steps/{step_id}

Section titled “GET /api/orgs/{org_id}/chats/{chat_id}/transcripts/steps/{step_id}”

Get Transcript Step Detail

Full detail for a single transcript step — heavy JSONB included.

Returns request_messages, response_message, tool_definitions, and model_params for a single agent_transcripts row. Designed to be called lazily (on scroll / on selection) from the transcript debug page so the index renders instantly and the heavy payload is fetched only for the step being inspected.

The step must belong to the specified chat_id (i.e. agent_transcripts.chat_id == chat_id). Returns 404 if the step is not found or does not belong to this conversation.

Gated to ADMIN or OWNER role.

Parameters

NameInTypeRequiredDescription
chat_idpathstring (uuid)yes
org_idpathstring (uuid)yes
step_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseConversationTranscriptStepResponse
422Validation ErrorHTTPValidationError