Your workspace, over HTTP.
Messages, streams, members, attachments, and the memos Threa builds from your conversations. Your own agent reads the same memory Ariadne does.
Quickstart
The guided quickstart makes the same calls from your own terminal.
-
Create an API key
In the app, open Workspace Settings → API Keys, create a user key, pick the scopes you need, and copy it once. Full walkthrough in Authentication.
-
Add it to Credentials
Open Credentials (top right) and enter your workspace ID and key. Every sample on these pages then uses your values, and Run calls the API. They stay in your browser. The key goes out only on requests you run and on a
GET /methat checks it when you enter it or open a page. -
Confirm who you are
GET /meneeds no scope and returns the identity behind the key.Who am Icurl /api/ \ -H "Authorization: Bearer "v1/ workspaces/ / me -
Search what Threa remembers
With
memos:read, search memos the way Ariadne does. Results link back to their source messages.Search memoscurl -X POST /api/ \ -H "Authorization: Bearer " \ -H "Content-Type: application/v1/ workspaces/ / memos/ search json" \ -d '{ "query": "auth", "limit": 5 }'
Base URL
- API
https://app.threa.io/api/v1- Workspace routes
/workspaces/{workspaceId}/…- Workspace ID
- In the app URL, after
/w/
Working with an AI agent
Every page has a markdown mirror at its URL plus .md.
/llms-full.txt is the whole set in
one fetch, and the OpenAPI spec is
the contract. Hand your agent this:
Integrate with the Threa API. Read https://threa.io/llms-full.txt for the docs
and https://threa.io/openapi.json for the exact contract. The base URL is
, my workspace ID is , and my API key is in the
THREA_API_KEY environment variable (send it as "Authorization: Bearer ...").
Verify the key with GET /api/v1/workspaces//me before anything else.
Keep the key in an environment variable, not in the prompt. Agents that
speak MCP can use threa mcp serve instead; see
CLI & MCP server.
What you can build
-
Your agent answers when it's mentioned
Two commands turn a local command into a bot. It pulls work, so no inbound ports.
-
Deploys post to #deploys
One POST from CI. A stable clientMessageId stops double posts on retry.
-
Alerts from tools you already run
Paste a webhook URL into Grafana or PostHog. No API key.
-
What was decided, with the messages behind it
Search memos, then pull the exact source messages.
-
Workspace search in your own tool
Semantic or exact, filtered by stream, type, author and date.
-
Work Threa hands to your machine
Claim a delegation card, report progress, post the result.
-
An agent in an encrypted scratchpad
The server stores ciphertext only. The CLI does the crypto.
Also in the API: attachment uploads with the text Threa extracts, labels, conversations and stream membership. All of it is in the API reference.