Data model
How tasks, projects, sections and saved filters are represented.
Objects
| Object | What it is |
|---|---|
| Task | A to-do. Can belong to a project and section, and can be a subtask of another one. |
| Project | A list of tasks. Projects can be archived. |
| Section | A group of tasks inside one project. |
| Saved filter | A sidebar view: title text, optional project, minimum priority, dated-only. |
Inbox is not a project. Tasks without a project have project_id: null. To list them, use
GET /v1/tasks?project_id=inbox.
IDs are UUIDs, returned in upper case. Lookups accept either case.
Due dates
A task's due is either null or:
{ "date": "2026-11-09", "time": "09:30", "timezone": "Asia/Seoul", "recurrence": "weekly" }dateis a calendar date, not an instant. An all-day task (time: null) stays on that date when you travel.timeis a wall-clock time intimezone(an IANA name).recurrenceisdaily,weekly,monthlyornull. Completing a recurring task in the app creates the next occurrence as a new task. Monthly repeats on the original day and clamps to the end of shorter months.
due_from and due_to filters compare date values.
Priority
priority is p1 (most urgent), p2, p3, or null for none, matching the app's Priority 1–3.
Timestamps
created_at and completed_at are ISO 8601 instants in UTC, for example
2026-11-02T08:12:44.000Z.
Revisions
Every object has a revision number that increases each time the object changes on any device.
Use it to tell whether something changed since you last read it.