Skip to content
producteev.de

Developers

Integrations made simple.

Every request acts on behalf of one person and sees only what that person can see. There is a REST API with OAuth 2 and PKCE, board tokens, real-time events and an MCP server for AI assistants.

curl -s https://producteev.de/app/api/v1/boards \
  -H "Authorization: Bearer $PRODUCTEEV_TOKEN" \
  -H "Accept: application/json"

Base URLhttps://producteev.de/app/api/v1

This address is the prefix for all API paths and is not an endpoint by itself. Open the API reference or call a path such as /plans (public) or /boards (with a Bearer token).

Authentication

How to authenticate.

Send the token in the Authorization: Bearer header. A token can never do more than the person it belongs to.

Power user

Board tokens

You create the token in the board’s settings under API access and choose its scopes. By default it only works for that board; you can allow every board you have access to instead. It expires after 12 months and is shown only once.

Power user

OAuth 2 with PKCE

Redirect people to /app/oauth/authorize with an S256 code challenge, then exchange the code at /app/oauth/token.

Access tokens last 15 days, refresh tokens 30 days. Clients are registered by the operator.

Every plan

MCP for assistants

The assistant signs in to the remote MCP server at /app/mcp with OAuth or an MCP token from Settings → Access tokens. It then acts on your behalf.

REST access for scripts and apps is a power user feature
Board tokens and OAuth apps work while the board owner spends at least 10 EUR a month on seats. MCP stays open on every plan.

Scopes

Scopes don’t include each other. A token that only has write cannot call read endpoints. OAuth clients that don’t request a scope get read.

ScopeGrants
readRead boards, cards, comments and history
writeCreate and change cards, custom fields, checklists, comments, attachments and automations
manageManage boards, subpages, lists and members

Conventions

What to keep in mind when sending requests.

Card versions

With every update you send the version you last read. If it is out of date, the API answers with 409 Conflict and the current card, so you can apply your change again.

Moves by neighbour

before_id is the card directly above the target position, after_id the card below it. Moving a card into a done list marks it as completed.

Idempotency-Key

Send this header with writes that must not run twice. With the same key and the same body you get the stored response for 30 days.

Cursor pagination

Card lists take per_page from 1 to 200 and return links.next. Follow it until it is null.

404 for hidden cards

For a card outside your subpage, the API gives the same answer as for a card that doesn’t exist. That way nobody can find out whether a hidden id exists.

Stable v1

Within v1, changes only add things. Breaking changes ship as /app/api/v2, and v1 stays available for at least six months after that.

Rate limits

Limits apply per user. Every response includes the X-RateLimit-Remaining header. A 429 tells you in Retry-After how long to wait.

RequestsLimit
All API requests240 per minute
Changes120 per minute
Attachment uploads20 per minute
Search60 per minute
Invitations50 per hour

Real-time and sync

Always up to date.

Treat a real-time event as a hint and fetch the change afterwards. That way your copy stays current even if a message gets lost.

Realtime

Changes to a board arrive over a Pusher-compatible WebSocket. Each person has a private channel, and every board has a presence channel.

Sync for offline clients

Load a snapshot of the board, then read the changes after a cursor. The phone app works exactly this way and serves as the reference.

Webhooks

Send card events from a board to Slack, Teams, Discord or another HTTPS endpoint. A test button lets you check the connection.

MCP server

Let an assistant work on your boards.

The assistant does not get its own account and never sees more than you do. Card history shows its name next to yours.

  • Tools to read, create, move, complete and comment on cards, and to manage boards, subpages and members. Tools that delete something ask first.
  • Prompts for a standup, a plan for the week, and triage of stale, overdue and blocked cards.
  • Not included: backups, notification settings, account security, API tokens and the admin area.
Claude Code
claude mcp add --transport http producteev https://producteev.de/app/mcp
Cursor · mcp.json
{
  "mcpServers": {
    "producteev": {
      "url": "https://producteev.de/app/mcp"
    }
  }
}

Docs

Further reading

The API reference is generated from the server’s OpenAPI document and rebuilt with each app release. There are also guides on sign-in, conventions, real-time and sync.

The API reference in dark mode.The API reference in dark mode.