Quickstart.
Four steps from a new API key to searching what Threa remembers, run from your own terminal.
-
Create an API key
In the app, open Workspace Settings → API Keys, create a personal access key, pick its scopes, and copy the
threa_uk_…value. Threa shows it once and can't show it again.Give it
memos:readfor step 4.GET /mein step 3 takes no scope. Bot keys and the other scopes are in Authentication. -
Put it in your shell
Export the key and your workspace ID. The workspace ID is in the app URL, after
/w/.Shellexport THREA_API_KEY=threa_uk_... export THREA_WORKSPACE_ID=ws_... -
Confirm who you are
GET /mereturns the identity behind the key. It's the quickest way to confirm a key is live and pointed at the right workspace.Who am Icurl https:// $THREA_WORKSPACE_ID/app.threa.io/ api/ v1/ workspaces/ me \ -H "Authorization: Bearer $THREA_API_KEY"A working key comes back as a
useror abotprincipal, with its API version:200 response{ "data": { "kind": "user", "workspaceId": "ws_...", "userId": "usr_...", "apiVersion": { "pinned": "2026-08-21", "resolved": "2026-08-21", "current": "2026-08-21", "supported": ["2026-08-21"] } } }user- A personal access key. It acts as you, and messages it sends show as yours, flagged as sent via the API.
bot- A bot key. The bot acts as itself, in the streams it's been added to.
401- The key is missing or invalid.
-
Search what Threa remembers
With
memos:read, search memos the way Ariadne does. Search is semantic by default.Search memoscurl -X POST https:// $THREA_WORKSPACE_ID/app.threa.io/ api/ v1/ workspaces/ memos/ \ -H "Authorization: Bearer $THREA_API_KEY" \ -H "Content-Type: application/search json" \ -d '{ "query": "auth", "limit": 5 }'Each result is a memo: a title, an abstract, its knowledge type (a decision, a procedure, and so on), tags, and the ids of the messages it came from. It's the same memo Ariadne answers from in Threa:
Take a memo's
idtoGET /memos/{memoId}for the source stream and the exact messages, as in Find out what was decided, and why.
Then pick a recipe
- Notify a stream from CI, with sends that never double-post on retry.
- Connect your local agent so it replies in Threa.
- API reference for every endpoint and its scope.