Threa Developers

    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.

    1. 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.

    2. 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 /me that checks it when you enter it or open a page.

    3. Confirm who you are

      GET /me needs no scope and returns the identity behind the key.

      Who am I
      curl /api/v1/workspaces//me \
        -H "Authorization: Bearer "
    4. Search what Threa remembers

      With memos:read, search memos the way Ariadne does. Results link back to their source messages.

      Search memos
      curl -X POST /api/v1/workspaces//memos/search \
        -H "Authorization: Bearer " \
        -H "Content-Type: application/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:

    Prompt for your agent
    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

    1. Your agent answers when it's mentioned

      Two commands turn a local command into a bot. It pulls work, so no inbound ports.

    2. Deploys post to #deploys

      One POST from CI. A stable clientMessageId stops double posts on retry.

    3. Alerts from tools you already run

      Paste a webhook URL into Grafana or PostHog. No API key.

    4. What was decided, with the messages behind it

      Search memos, then pull the exact source messages.

    5. Semantic or exact, filtered by stream, type, author and date.

    6. Work Threa hands to your machine

      Claim a delegation card, report progress, post the result.

    7. 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.