API reference

Tasks & follow-ups

To-dos and follow-ups, optionally linked to a client.

Endpoints

GET/api/v1/tasksList, newest first
POST/api/v1/tasksCreate · write key
GET/api/v1/tasks/{id}Get one
PATCH/api/v1/tasks/{id}Change · write key
DELETE/api/v1/tasks/{id}Delete · write key · owners, admins, managers

Fields

Every record also has object = "task".

FieldTypeDescription
id
read only
uuidUnique ID.
brand_id
required on create
set on create only
uuidThe brand this belongs to (see GET /brands). Required when creating; cannot be changed.
client_iduuidThe client it belongs to (optional).
title
required on create
string, max 200What needs doing.
descriptionstring, max 5000Details.
statusone of: todo, progress, review, doneDefault: todo.
priorityone of: urgent, high, normal, lowDefault: normal.
due_ondateDue date (YYYY-MM-DD).
estimate_minutesinteger, 0–100000Estimated minutes.
created_at
read only
date-timeWhen 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.

ParameterTypeMeaning
brand_iduuidOnly this brand.
client_iduuidOnly this client.
statusone of: todo, progress, review, doneOnly this status.
priorityone of: urgent, high, normal, lowOnly this priority.
due_beforedateDue on or before this date.
created_sincedate-timeCreated 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
}