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
- Open My account (your name at the bottom of the sidebar) and go to API tokens.
- Give the token a Name that says what uses it, for example Nightly report.
- Choose Read only or Read and write. Pick read only unless the script needs to post messages or create tasks.
- 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'sidin 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 includesnext_beforefor the next page.POST /channels/{channel}/messages— post as you. Sendtext, and optionallythread_idto 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. Sendtitle, and optionallydescription,assignee_email,due_on(as2026-11-01) andpriority(low,normal,highorurgent).GET /search?q=— search, with the same filters as the app, such asfrom:,in:andhas: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
errorormessagefield 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.