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.

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.

Delete thread

Permanently deletes the thread and its messages. Creator only, like GET.

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, including a share-link guest, can read, update and delete the workspace’s threads. 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 is applied if present, otherwise unarchive, 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

Generates a three-to-six-word title with Claude Haiku 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 completion is running on this thread right now. Use it to decide between rendering a finished transcript and re-attaching to a live one.
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