API Reference
Interact with your productive.quest boards programmatically. All endpoints return JSON and accept JSON request bodies — no SDK needed, just curl.
https://productive.quest
Quick Start
Create a board, add a task, and complete it — three requests:
# 1. Create a new board curl -s -X POST https://productive.quest/api/board/ | python3 -m json.tool # → {"uuid": "0ABCDEF...", "url": "/board/0ABCDEF.../"} # 2. Add a todo (replace UUID with yours) curl -s -X POST https://productive.quest/api/board/UUID/todo/ \ -H "Content-Type: application/json" \ -d '{"name": "Ship the feature #red #prio1"}' # → {"id": 1, "name": "Ship the feature #red #prio1", ...} # 3. Complete it curl -s -X POST https://productive.quest/api/board/UUID/todo/1/complete/
Conventions
A few things to know before making requests.
JSON in, JSON out
All responses are JSON. Send Content-Type: application/json with a JSON body for endpoints that accept data.
HTTP status codes
200 success, 201 created, 400 bad request, 404 not found, 405 wrong method.
No authentication needed
No API keys or CSRF tokens. Board security relies on the secret UUID — keep it private.
Hashtags in todo names
Use #red or #orange for colors. Use #prio1 or #prio2 for priority sorting.
/api/board/
Create a board
Creates a new empty board. Returns the board UUID and URL. No tutorial tasks are created.
Example
curl -X POST https://productive.quest/api/board/
Response 201
{
"uuid": "0ABCDEFGHIJK...",
"url": "/board/0ABCDEFGHIJK.../"
}
/api/board/{uuid}/
View a board
Returns the board with all tasks grouped into current, future, and completed lists.
Path parameters
uuid
required
Example
curl https://productive.quest/api/board/YOUR_BOARD_UUID/
Response 200
{
"uuid": "0ABCDEF...",
"created_at": "2025-01-15T10:30:00+00:00",
"current_todos": [
{"id": 1, "name": "Task #red", "is_future": false,
"is_completed": false, "color": "red", "priority": 99,
"created_at": "...", "completed_at": null}
],
"future_todos": [],
"completed_todos": [],
"counts": {"current": 1, "future": 0, "completed": 0, "total": 1}
}
/api/board/{uuid}/todo/
Add a todo
Creates a new task on the board's current list.
Parameters
uuid
required
name
required
#red #orange #prio1 #prio2 hashtags.Example
curl -X POST https://productive.quest/api/board/UUID/todo/ \ -H "Content-Type: application/json" \ -d '{"name": "Deploy to production #red #prio1"}'
Response 201
{
"id": 42,
"name": "Deploy to production #red #prio1",
"is_future": false,
"is_completed": false,
"color": "red",
"priority": 1,
"created_at": "2025-01-15T10:30:00",
"completed_at": null
}
/api/board/{uuid}/todo/{id}/complete/
Complete a todo
Marks a task as completed with the current timestamp.
Path parameters
uuid
required
id
required
Example
curl -X POST https://productive.quest/api/board/UUID/todo/42/complete/
Response 200
{
"id": 42,
"name": "Deploy to production #red #prio1",
"is_future": false,
"is_completed": true,
"color": "red",
"priority": 1,
"created_at": "2025-01-15T10:30:00",
"completed_at": "2025-01-15T14:22:00"
}
/api/board/{uuid}/todo/{id}/uncomplete/
Uncomplete a todo
Moves a completed task back to the current list.
Path parameters
uuid
required
id
required
Example
curl -X POST https://productive.quest/api/board/UUID/todo/42/uncomplete/
/api/board/{uuid}/todo/{id}/
Delete a todo
Permanently removes a task from the board. Returns the deleted todo's data.
Path parameters
uuid
required
id
required
Example
curl -X DELETE https://productive.quest/api/board/UUID/todo/42/
/api/board/{uuid}/todo/{id}/
Edit a todo
Renames an existing task.
Parameters
uuid
required
id
required
name
required
Example
curl -X PATCH https://productive.quest/api/board/UUID/todo/42/ \ -H "Content-Type: application/json" \ -d '{"name": "Updated task name #orange"}'
/api/board/{uuid}/todo/{id}/move_to_future/
Move to future
Moves a task from the current list to the future list.
Path parameters
uuid
required
id
required
Example
curl -X POST https://productive.quest/api/board/UUID/todo/42/move_to_future/
/api/board/{uuid}/todo/{id}/move_to_current/
Move to current
Moves a task from the future list back to the current list.
Path parameters
uuid
required
id
required
Example
curl -X POST https://productive.quest/api/board/UUID/todo/42/move_to_current/