Skip to main content
Threads, messages, and runs work together to run your agent. A thread holds the conversation context, with messages capturing your input and the agent’s responses as it calls tools. A run starts the agent on a thread.

Create a thread

Endpoint: POST /v1/threads

Create a message

Endpoint: POST /v1/threads/{thread_id}/messages

Start a run

Once your thread has a message, start a run against it. SeekrFlow supports synchronous and streaming runs.

Run synchronously

In synchronous mode, the agent processes the request and returns the complete response when generation is finished. Endpoint: POST /v1/threads/{thread_id}/runs

Run with streaming

In streaming mode, the agent’s response is sent back incrementally as it’s generated, allowing your application to display results in real time. Endpoint: POST /v1/threads/{thread_id}/runs/stream
To handle the streamed events yourself instead of printing them, iterate stream.raw_events(). Consume the stream only once, with either pretty_print() or raw_events().

Retrieve messages

Retrieve a message

Endpoint: GET /v1/threads/{thread_id}/messages/{message_id}

Retrieve all messages from a thread

Endpoint: GET /v1/threads/{thread_id}/messages

Manage threads

List threads

Endpoint: GET /v1/threads

Retrieve a thread

Endpoint: GET /v1/threads/{thread_id}

Delete a thread

Endpoint: DELETE /v1/threads/{thread_id}

Manage messages

Update a message

Endpoint: PATCH /v1/threads/{thread_id}/messages/{message_id}

Delete a message

Endpoint: DELETE /v1/threads/{thread_id}/messages/{message_id}

Track file search sources

When an agent uses file search, each retrieved chunk’s source tracing fields are appended to the assistant message content: Use chunk_id with GET /v1/flow/vectordb/{database_id}/chunk/{chunk_id} to retrieve the file_id and download the original source document.

Understand data structures

Thread

Message

Last modified on July 16, 2026