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"
}