This page is the public browser-readable guide for the Kanbalone JSON API.
API Examples
All examples assume http://127.0.0.1:3000.
Health Check
curl -s http://127.0.0.1:3000/api/health
List Boards
curl -s http://127.0.0.1:3000/api/boards
Get Board Shell
curl -s http://127.0.0.1:3000/api/boards/3
Create Board
curl -s -X POST http://127.0.0.1:3000/api/boards \
-H 'content-type: application/json' \
--data '{
"name": "Agent Tasks",
"laneNames": ["todo", "doing", "review", "done"]
}'
Create Tag
curl -s -X POST http://127.0.0.1:3000/api/boards/3/tags \
-H 'content-type: application/json' \
--data '{
"name": "frontend",
"color": "#2563eb"
}'
Create Ticket
curl -s -X POST http://127.0.0.1:3000/api/boards/3/tickets \
-H 'content-type: application/json' \
--data '{
"laneId": 9,
"title": "Draft API usage guide",
"bodyMarkdown": "Document the most common ticket operations.",
"priority": 4,
"tagIds": [3],
"blockerIds": []
}'
Move Ticket To Done And Mark Resolved
curl -s -X PATCH http://127.0.0.1:3000/api/tickets/6 \
-H 'content-type: application/json' \
--data '{
"laneId": 11,
"isResolved": true
}'
Move Ticket Back To Todo And Reopen
curl -s -X PATCH http://127.0.0.1:3000/api/tickets/6 \
-H 'content-type: application/json' \
--data '{
"laneId": 9,
"isResolved": false
}'
Bulk Mark Resolved
curl -s -X POST http://127.0.0.1:3000/api/boards/3/tickets/bulk-complete \
-H 'content-type: application/json' \
--data '{
"ticketIds": [4, 5, 6],
"isResolved": true
}'
Bulk Transition By Lane Name
curl -s -X POST http://127.0.0.1:3000/api/boards/3/tickets/bulk-transition \
-H 'content-type: application/json' \
--data '{
"ticketIds": [4, 5, 6],
"laneName": "Done",
"isResolved": true
}'
Set Blocker
curl -s -X PATCH http://127.0.0.1:3000/api/tickets/7 \
-H 'content-type: application/json' \
--data '{
"blockerIds": [6]
}'
Set Parent
curl -s -X PATCH http://127.0.0.1:3000/api/tickets/5 \
-H 'content-type: application/json' \
--data '{
"parentTicketId": 4
}'
Add Comment
curl -s -X POST http://127.0.0.1:3000/api/tickets/6/comments \
-H 'content-type: application/json' \
--data '{
"bodyMarkdown": "Confirmed on local UI and API."
}'
Edit Comment
curl -s -X PATCH http://127.0.0.1:3000/api/comments/12 \
-H 'content-type: application/json' \
--data '{
"bodyMarkdown": "Confirmed on local UI, API, and archive flow."
}'
Delete Comment
curl -s -X DELETE http://127.0.0.1:3000/api/comments/12
Archive Ticket
curl -s -X PATCH http://127.0.0.1:3000/api/tickets/6 \
-H 'content-type: application/json' \
--data '{
"isArchived": true
}'
Filter Ticket Summaries
curl -s 'http://127.0.0.1:3000/api/boards/3/tickets?resolved=false'
curl -s 'http://127.0.0.1:3000/api/boards/3/tickets?lane_id=11'
curl -s 'http://127.0.0.1:3000/api/boards/3/tickets?tag=frontend'
curl -s 'http://127.0.0.1:3000/api/boards/3/tickets?archived=all'
curl -s 'http://127.0.0.1:3000/api/boards/3/tickets?q=sidebar'
curl -s 'http://127.0.0.1:3000/api/boards/3/tickets?q=%23123'
Reorder Tickets
curl -s -X POST http://127.0.0.1:3000/api/boards/3/tickets/reorder \
-H 'content-type: application/json' \
--data '{
"items": [
{ "ticketId": 4, "laneId": 9, "position": 0 },
{ "ticketId": 5, "laneId": 9, "position": 1 },
{ "ticketId": 6, "laneId": 11, "position": 0 }
]
}'
Export Board
curl -s http://127.0.0.1:3000/api/boards/3/export > board-3.json
Import Board
curl -s -X POST http://127.0.0.1:3000/api/boards/import \
-H 'content-type: application/json' \
--data @board-3.json
Import Large Local Seed Data
/api/boards/import can also handle larger local-only payloads.
curl -s -X POST http://127.0.0.1:3000/api/boards/import \
-H 'content-type: application/json' \
--data @perf-5000-board.json
After import, check the list through the lightweight summary route.
curl -s 'http://127.0.0.1:3000/api/boards/6/tickets?resolved=false'
curl -s 'http://127.0.0.1:3000/api/boards/6/tickets?lane_id=20'
Subscribe To Board Updates With SSE
curl -N http://127.0.0.1:3000/api/boards/3/events
data: {"boardId":3,"event":"board_updated","sentAt":"2026-04-10T00:00:00.000Z"}
List Comments
curl -s http://127.0.0.1:3000/api/tickets/6/comments
List Activity
curl -s http://127.0.0.1:3000/api/tickets/6/activity
Get Relations
curl -s http://127.0.0.1:3000/api/tickets/6/relations
Transition By Lane Name
curl -s -X PATCH http://127.0.0.1:3000/api/tickets/6/transition \
-H 'content-type: application/json' \
--data '{
"laneName": "Done",
"isResolved": true
}'