API reference
Tasks & follow-ups
To-dos and follow-ups, optionally linked to a client.
Endpoints
GET
/api/v1/tasksList, newest firstPOST
/api/v1/tasksCreate · write keyGET
/api/v1/tasks/{id}Get onePATCH
/api/v1/tasks/{id}Change · write keyDELETE
/api/v1/tasks/{id}Delete · write key · owners, admins, managersFields
Every record also has object = "task".
| Field | Type | Description |
|---|---|---|
idread only | uuid | Unique ID. |
brand_idrequired on create set on create only | uuid | The brand this belongs to (see GET /brands). Required when creating; cannot be changed. |
client_id | uuid | The client it belongs to (optional). |
titlerequired on create | string, max 200 | What needs doing. |
description | string, max 5000 | Details. |
status | one of: todo, progress, review, done | Default: todo. |
priority | one of: urgent, high, normal, low | Default: normal. |
due_on | date | Due date (YYYY-MM-DD). |
estimate_minutes | integer, 0–100000 | Estimated minutes. |
created_atread only | date-time | When it was created (UTC, ISO 8601). |
List filters
Add to GET /api/v1/tasks as query parameters. Also limit (1–200, default 50) and cursor. See Pagination.
| Parameter | Type | Meaning |
|---|---|---|
brand_id | uuid | Only this brand. |
client_id | uuid | Only this client. |
status | one of: todo, progress, review, done | Only this status. |
priority | one of: urgent, high, normal, low | Only this priority. |
due_before | date | Due on or before this date. |
created_since | date-time | Created at or after this time. |
List
Terminal
curl "$QUILO_URL/api/v1/tasks?limit=20&status=todo" \
-H "Authorization: Bearer $QUILO_API_KEY"JSON
{
"object": "list",
"data": [
{
"object": "task",
"id": "6f1c2a90-3b4d-4e5f-8a7b-9c0d1e2f3a4b",
"brand_id": "0b7e9a52-1c3d-4f6e-9a8b-7c6d5e4f3a2b",
"client_id": "5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
"title": "Call Elena about the sapphire",
"description": null,
"status": "todo",
"priority": "urgent",
"due_on": "2026-10-21",
"estimate_minutes": 30,
"created_at": "2026-10-17T09:30:00Z"
}
],
"has_more": false,
"next_cursor": null
}Create
Answers 201 Created with the new task. Send an Idempotency-Key to retry safely.
Terminal
curl -X POST "$QUILO_URL/api/v1/tasks" \
-H "Authorization: Bearer $QUILO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: my-unique-id-123" \
-d '{
"brand_id": "0b7e9a52-1c3d-4f6e-9a8b-7c6d5e4f3a2b",
"client_id": "5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
"title": "Call Elena about the sapphire",
"status": "todo",
"due_on": "2026-10-21"
}'Get one
Terminal
curl "$QUILO_URL/api/v1/tasks/ID" -H "Authorization: Bearer $QUILO_API_KEY"JSON
{
"object": "task",
"id": "6f1c2a90-3b4d-4e5f-8a7b-9c0d1e2f3a4b",
"brand_id": "0b7e9a52-1c3d-4f6e-9a8b-7c6d5e4f3a2b",
"client_id": "5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
"title": "Call Elena about the sapphire",
"description": null,
"status": "todo",
"priority": "urgent",
"due_on": "2026-10-21",
"estimate_minutes": 30,
"created_at": "2026-10-17T09:30:00Z"
}Unknown IDs, IDs from other companies and records you cannot access all answer 404 not_found.
Change
Send only the fields to change. brand_id cannot be changed after creation.
Terminal
curl -X PATCH "$QUILO_URL/api/v1/tasks/ID" \
-H "Authorization: Bearer $QUILO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Call Elena about the sapphire"}'Delete
Owners, admins and managers only, with a Read and write key. Deleting cannot be undone.
Terminal
curl -X DELETE "$QUILO_URL/api/v1/tasks/ID" -H "Authorization: Bearer $QUILO_API_KEY"JSON
{
"object": "task",
"id": "6f1c2a90-3b4d-4e5f-8a7b-9c0d1e2f3a4b",
"deleted": true
}