The Tandem App REST API lets your own scripts and tools read channels, messages and tasks, search, post messages and create tasks. It uses a personal access token, so a script can see and do exactly what you can, and nothing more. This guide covers creating a token, the endpoints and a few examples.

Step 1: create a token

  1. Open My account (your name at the bottom of the sidebar) and go to API tokens.
  2. Give the token a Name that says what uses it, for example Nightly report.
  3. Choose Read only or Read and write. Pick read only unless the script needs to post messages or create tasks.
  4. Click Create token and copy it now. It won't be shown again.

You can have up to 20 tokens. The list shows when each was last used; click Revoke on any you no longer need, and anything using it stops working straight away. Treat a token like a password: keep it out of code repositories and shared documents.

Step 2: make a request

The API lives at your workspace's own address:

https://your-company.thetandem.app/api/v1

Send the token in the Authorization header of every request, and ask for JSON:

curl -H "Authorization: Bearer YOUR_TOKEN" -H "Accept: application/json" https://your-company.thetandem.app/api/v1/me

The How to use the API link next to your tokens opens a reference page inside your workspace with ready-made examples for your address.

Endpoints

  • GET /me — who the token belongs to: name, email, role and workspace.
  • GET /channels — the channels and conversations you can open. Use each one's id in the addresses below.
  • GET /channels/{channel}/messages — messages, newest first. Add ?limit= (up to 100), ?before= a message id for older ones, or ?thread= a message id for a thread's replies. The answer includes next_before for the next page.
  • POST /channels/{channel}/messages — post as you. Send text, and optionally thread_id to reply in a thread.
  • GET /channels/{channel}/tasks — the channel's tasks with their status, priority, assignee and due date.
  • POST /channels/{channel}/tasks — create a task. Send title, and optionally description, assignee_email, due_on (as 2026-11-01) and priority (low, normal, high or urgent).
  • GET /search?q= — search, with the same filters as the app, such as from:, in: and has:file.

The two POST endpoints need a read-and-write token.

Examples

Post a message to #deploys:

curl -X POST -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -d '{"text": "Deployed v2.1"}' https://your-company.thetandem.app/api/v1/channels/deploys/messages

Create a task in #operations:

curl -X POST -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -d '{"title": "Renew the domain", "due_on": "2026-11-01", "priority": "high"}' https://your-company.thetandem.app/api/v1/channels/operations/tasks

Limits and errors

  • Up to 120 requests a minute, and 30 a minute for posting messages or creating tasks.
  • Answers are JSON. Problems come back with an error or message field and a suitable status code, for example 401 for a missing or revoked token and 403 when a read-only token tries to write.
  • If your account is deactivated, its tokens stop working.

Other ways to connect

To let another tool post into a channel without a personal token, an owner or admin can create an incoming webhook. To run your own code when someone types a command, see slash commands.