Tasklane
A todo backend with a full REST interface for creating, filtering, searching, sorting and completing tasks.
- 0stored
- 0open
- 0done
Try it
This calls the real endpoints below. Add a task, mark it done, or delete it.
- Loading todos...
Endpoints
GET/api/todos
List todos. Supports filtering, search, sorting and paging.
POST/api/todos
Create a todo. Only title is required.
DELETE/api/todos?status=completed
Clear every finished todo in one call.
GET/api/todos/{id}
Fetch one todo by id.
PATCH/api/todos/{id}
Update any subset of fields on one todo.
DELETE/api/todos/{id}
Delete one todo.
Writable fields
Send any subset of these as JSON on a create or update. Anything invalid comes back as a 422 with a per-field message.
- title
- text
- Required when creating. Up to 200 characters.
- notes
- text or null
- Optional longer detail. Up to 2000 characters.
- completed
- true or false
- Flipping this stamps or clears completedAt automatically.
- priority
- low, medium or high
- Defaults to medium.
- dueDate
- YYYY-MM-DD or null
- Rejected if it is not a real calendar date.
- position
- whole number
- Manual ordering. New todos go to the end of the list.
Managed fields
Returned on every todo, never accepted as input.
- id
- text
- Generated when the todo is created.
- completedAt
- timestamp or null
- Set the moment a todo is marked done.
- createdAt
- timestamp
- Set once, on creation.
- updatedAt
- timestamp
- Re-stamped on every change, including edits made in the content manager.
List query options
Combine these on the list endpoint. Every response carries a meta block with the total, the paging window and the overall counts.
- status
- all, active or completed
- Defaults to all.
- priority
- low, medium or high
- Narrows the list to one priority.
- q
- text
- Case-insensitive search across title and notes.
- sort
- position, created, updated, due or title
- Defaults to position. Undated todos always sort last.
- order
- asc or desc
- Defaults to asc.
- limit
- whole number
- Defaults to 50, capped at 200.
- offset
- whole number
- Skips this many rows for paging.
Example request
POST /api/todos
Content-Type: application/json
{
"title": "Send the invoice",
"priority": "high",
"dueDate": "2026-10-01"
}