Skip to main content
A thread is a stored transcript attached to one computer. Threads are what the dashboard reads to show a conversation, and what Create chat completion writes each turn into.
A thread is a record, not a memory. Passing a thread_id to POST /v1/chat/completions does not replay the thread’s messages to the model. Each completion replaces the thread’s stored messages with that request’s transcript rather than appending to it. Keep the conversation client-side and resend it in full on every completion. See Threads and history.
There are two thread surfaces, and they are not interchangeable. Base URL: https://www.orgo.ai/api Auth: Authorization: Bearer $ORGO_API_KEY on every request. Both surfaces require an account-wide key. A workspace-scoped key is refused on every thread endpoint.

The /v1 surface

List threads

Returns every thread stored against the computer. Threads are scoped to the computer’s workspace, not to whoever created them, so every workspace member sees the same list. Message bodies are not included, only a count.
string
required
The computer’s UUID or its instance id. Omitting it returns 400 missing_computer_id.
string
Always list.
array
Thread summaries, most recently updated first.

Create thread

Creates an empty thread bound to a computer, and returns 201 Created. You rarely need this. A completion with no thread_id creates one for you.
string
required
The computer’s UUID or its instance id. Omitting it returns 400 missing_computer_id.

Get thread

Returns the thread with its full stored transcript. On this surface a thread is readable only by the account that created it. A workspace teammate gets 404, not 403. A thread id that is not a UUID returns 500.

Delete thread

Permanently deletes the thread and its messages. Creator only, like GET. The creator also needs write access to the computer’s workspace. A view-only member gets 401 even for a thread they created.

Errors

type is one of invalid_request, authentication_error, permission_error, or not_found.

The /chat surface

Access on this surface is by workspace, not by author. Any member of the computer’s workspace can read its threads. Creating, updating, deleting, and generating a title need write access to the workspace, so a view-only member gets 403. The /run endpoints are the exception and are restricted to the thread’s creator.

List threads

Returns every thread on the given computer that you can see, including full message history. Archived threads are returned too; filter on status client-side if you want to hide them.
string
required
The computer’s UUID. This surface does not accept an instance id: a non-UUID value returns 500. Omitting it returns 400.
array
Thread objects, most recently updated first.

Create thread

Creates an empty thread bound to a computer, and returns 201 Created.
string
required
The computer’s UUID. Omitting it returns 400.
string
Client-side identifier. Echoed back as externalId so clients can reconcile local and remote threads. When omitted, externalId is absent from the response.
string
The new thread’s UUID. Use it as thread_id in later chat completions.
string
Mirror of localId. Omitted if not supplied.

Get thread

Fetches a single thread with its full message history.
string
Thread UUID.
string
regular or archived.
string
Title. Omitted if none has been generated.
array
Full message history in chronological order.

Update thread

Updates the title, replaces the messages, or toggles the archive state. Only one thing happens per request: archive: true is applied first, otherwise unarchive: true, otherwise title and messages together. A body with none of these fields is accepted and changes nothing.
string
New title.
array
Replaces the entire stored message history with this array. A full overwrite, not an append.
boolean
true sets status to archived. Nothing else changes: archived threads still appear in the list response, so filter on status client-side. Any other value is ignored.
boolean
true sets status back to regular. Ignored when archive: true is also present. Any other value is ignored.
string
Thread UUID.
string
Updated status: regular or archived.
string
Updated title. Omitted if unset.

Delete thread

Permanently deletes the thread and its message history. Prefer PATCH with archive: true if you might need the conversation back.

Generate title

Asks Claude Haiku for a title of three to six words and saves it to the thread. Returns an assistant-ui text stream rather than JSON. The generation is metered against your credits but never blocks: an out-of-credit account still gets a title.
array
required
The messages to summarize. Only the first three are read, and the joined text is truncated to 1000 characters. Each message is { role, content } where content may be a string or an array of { type: "text", text } blocks. A missing or empty array returns 400.
Response is text/plain:
The title is also persisted, so a later GET returns it in title.

Run state

GET reports whether a run is in progress on this thread right now. Use it to decide between rendering a finished transcript and re-attaching to a live one.
Only runs started from the Orgo dashboard’s chat are tracked here. A /v1/chat/completions request is never registered, so GET reports running: false for it and DELETE cannot stop it.
running answers for the single server process that handled your request. With several processes behind the load balancer, a run in progress elsewhere reports running: false. Treat true as reliable and false as “not here”.
DELETE stops a run you started. It returns 200 in both outcomes:
Both /run methods are restricted to the thread’s creator; a workspace teammate gets 403.

Errors

Error responses on this surface carry a single string error field:

Using threads with completions