Latanso API

Read and change your tasks, lists, routines and goals from your own scripts, Zapier, Make or IFTTT webhooks.

Authentication

Make a key in the Latanso app: Settings → API Keys. Send it with every request:

curl https://api.latanso.com/v1/tasks?view=inbox \
  -H "Authorization: Bearer lat_..."

A key can do everything you can do in the app, so keep it secret. Revoke it in the same place at any time. Up to 120 requests a minute per key.

Conventions

Bodies are JSON. Dates are YYYY-MM-DD and times HH:mm. “Today” is worked out in the timeZone parameter or the X-Time-Zone header (for example Europe/Istanbul), else UTC. Lists are called projects here, as in the data. Errors come back as {"error": {"message": "..."}} with a 4xx status.

Endpoints

RequestWhat it does
GET /v1/tasksview = day (default; date), inbox, upcoming (days), project (projectId), open or completed (days). Also includeCompleted, limit.
POST /v1/tasksCreate a task: title, and optionally date, time, deadline, projectId, notes, priority (low, normal, high), tags, repeat, steps. With no date and no project it goes to the Inbox.
GET /v1/tasks/{id}One task.
PATCH /v1/tasks/{id}Change fields; null clears one.
POST /v1/tasks/{id}/completeComplete it ({"completed": false} reopens). A repeating task gets its next copy.
DELETE /v1/tasks/{id}Move it to the Trash.
GET /v1/projectsYour lists, with open task counts.
POST /v1/projectsCreate a list: name, parentId, notes, startDate, deadline.
PATCH /v1/projects/{id}Rename, move or change a list.
POST /v1/projects/{id}/completeComplete a list (completeTasks to complete its tasks too).
GET /v1/routinesRoutines planned for date with their check-ins, or every active one with all=true.
POST /v1/routines/{id}/check-inCheck in once more, or set count (0 undoes).
GET /v1/goalsYour goals with progress: current, percent, reached, remaining. Filter with projectId; recent adds the latest progress entries.
POST /v1/goalsCreate a goal: title, mode (total: entries add up; measure: each entry is the current value), targetValue, and optionally startValue, unit, startDate, deadline, projectId, tags.
PATCH /v1/goals/{id}Change a goal; null clears deadline, projectId or tags.
DELETE /v1/goals/{id}Move it to the Trash.
POST /v1/goals/{id}/progressLog progress: value (an amount to add, or the current reading, by the goal's mode), optionally date and note.
DELETE /v1/goals/progress/{id}Delete one progress entry.
GET /v1/search?query=Search tasks, routines, lists and goals.

Example

curl https://api.latanso.com/v1/tasks \
  -H "Authorization: Bearer lat_..." \
  -H "Content-Type: application/json" \
  -d '{"title": "Renew passport", "deadline": "2026-12-01", "tags": ["errands"]}'

Email to Latanso

Every account also has a private email address (Settings → Email to Latanso). Mail sent or forwarded to it lands in the Inbox: the subject becomes the title, the text the notes.

AI apps

For Claude, ChatGPT and other AI apps, use the MCP server instead: https://mcp.latanso.com/mcp.