REST API Reference

Full REST API reference for TR-1. All endpoints, fields, and authentication details.

All endpoints under /api/v1/. Authenticate with session cookie or API key Bearer token.

Authentication

Pass an API key as a Bearer token in the Authorization header:

Authorization: Bearer mt_your_api_key_here

Create API keys in the app under Account → API Keys.

Views

Read-only endpoints that return task lists for each GTD view.

EndpointDescription
GET /inboxUnprocessed inbox items
GET /todayTasks flagged for today + due today
GET /in-progressTasks currently in progress
GET /nextNext actions
GET /waitingWaiting/delegated tasks
GET /somedaySomeday/maybe list
GET /upcomingScheduled + tasks with future due dates
GET /logbook?limit=50Completed tasks (most recent first)
GET /trashTrashed items

Tasks

EndpointDescription
POST /tasksCreate a task. Body: { title, status?, projectId?, ... }
GET /tasks/:idGet a single task with full details
PATCH /tasks/:idUpdate any fields on a task
POST /tasks/:id/completeMark task complete
POST /tasks/:id/reopenReopen a completed task
DELETE /tasks/:idMove to trash

Task Fields

FieldTypeNotes
titlestringRequired on create
notesstringFree-text notes
statusenuminbox, next, waiting, scheduled, someday
projectIdstring?UUID of parent project
areaIdstring?UUID of area
todaybooleanFlag for today’s focus
inProgressbooleanCurrently being worked on
energyenum?low, medium, high
prioritynumber0 = none, 1-3 = !/!!/!!!
sortOrdernumberLower values appear first
dueDatestring?ISO date (YYYY-MM-DD)
deferDatestring?Don’t show until this date

Projects

EndpointDescription
GET /projectsAll active projects
GET /projects/:idProject with all its tasks
POST /projectsCreate a project. Body: { title, areaId?, status? }

Areas

EndpointDescription
GET /areasAll areas
GET /areas/:idArea details
POST /areasCreate area. Body: { name, notes? }
PATCH /areas/:idUpdate area
DELETE /areas/:idDelete area
EndpointDescription
GET /search?q=&status=&energy=&projectId=&areaId=Search tasks (case-insensitive). All params optional.

Activity and Reviews

EndpointDescription
GET /activity?limit=50Recent activity log
GET /activity/agent?limit=50Agent-only activity
GET /reviews/statsDashboard stats + throughput + project activity
POST /reviews/startStart a review. Body: { type: "weekly" | "daily" }

API Keys

EndpointDescription
GET /api-keysList your API keys
POST /api-keysCreate key. Body: { name }. Returns the key once.
DELETE /api-keys/:idRevoke a key

Server-Sent Events

Subscribe to real-time task changes:

const es = new EventSource('/api/v1/events');
es.addEventListener('task-change', (e) => {
  const { actor, action, taskId } = JSON.parse(e.data);
  console.log(actor, action, taskId);
});