Developers

One API. Three ways to call it.

Weft's own app is built on the public API, so anything you can click you can script, query or hand to an agent.

REST

Every action in the app is a typed endpoint, described by an OpenAPI 3.1 document you can feed to any client generator.

OpenAPI document →

GraphQL

The same operations as one graph, with batched lookups so a customer and their tenant come back in a single round trip.

GraphQL schema →

MCP server

Give Claude, Cursor or your own agent the same tools your team uses: search threads, reply, snooze, mark done.

Authenticate with a workspace key.

Create a key in Settings, API keys. Each key belongs to one workspace and carries a role, so a read-only integration stays read-only.

REST
curl https://app.weft.day/api/v1/threads \
  -H "Authorization: Bearer weft_sk_..."
GraphQL
curl https://app.weft.day/api/graphql \
  -H "Authorization: Bearer weft_sk_..." \
  -H "content-type: application/json" \
  -d '{"query":"{ threads { data { id title status } } }"}'
MCP (Claude Code)
claude mcp add --transport http weft https://app.weft.day/api/mcp \
  --header "Authorization: Bearer weft_sk_..."