Skip to content

Tasks

A task has a title, a priority, a start date and optionally a recurrence, reminders, an assignee and a linked contact. A recurring task produces occurrences, each with its own status (todo or done).

Terminal window
curl -s -X POST "$MLT_API_URL/v1/tasks" \
-H "Authorization: Bearer $MLT_TOKEN" -H "Content-Type: application/json" \
-d '{
"entityId": "0192f3a1-7c2e-7b4d-9a61-200000000002",
"title": "Relancer Marie Durand - état des lieux",
"priority": "high",
"startAt": "2026-10-06T07:00:00.000Z",
"timezone": "Europe/Paris",
"reminders": [{ "offsetMinutes": 60 }],
"assigneeId": "0192f3a1-7c2e-7b4d-9a61-300000000003",
"contactId": "0192f3a1-7c2e-7b4d-9a61-600000000001"
}'
Field Description
priority low, medium (default) or high.
startAt Date of the (first) occurrence, ISO 8601.
timezone IANA time zone (default Europe/Paris), used for the recurrence and the reminders.
reminders Up to 5, in minutes before each occurrence (GET /v1/tasks/options gives the defaults of the entity). Reminders outside the working hours of the entity are postponed to the next working slot.
assigneeId A member who can use tasks in the entity (else 422 invalid_assignee). The assignee is notified.
contactId An address book contact of the same entity.
{ "frequency": "weekly", "interval": 1, "weekdays": ["MO", "TH"], "until": "2026-12-31" }
  • frequency: daily, weekly or monthly; interval: every n periods (1-99).
  • weekdays (weekly only): MO, TU, WE, TH, FR, SA, SU.
  • End with until (a date, inclusive) or count (1-1000), not both. Without either, the task repeats indefinitely.

List what is due with GET /v1/tasks/occurrences?from=…&to=… (400 days max). scope=mine (default) returns the tasks created by or assigned to the caller; scope=team every task the caller can see (tasks.read_all).

  • Mark one as done: PUT /v1/tasks/{id}/occurrences/status with { "occurrenceAt": "2026-10-06T07:00:00.000Z", "status": "done" }. This sends the task.completed webhook.
  • Skip one occurrence of a recurring task: POST /v1/tasks/{id}/occurrences/skip.

occurrenceAt must be an occurrence of the task, as returned by the list (else 422 invalid_occurrence).