This page is the public browser-readable guide for the Kanbalone JSON API.

Kanbalone AI API Guide

This API is a local, single-user Kanbalone API. The base URL is usually http://127.0.0.1:3000.

Codex Skill

Kanbalone ships with a Codex skill for API-only kanban operations at skills/kanbalone-api.

Install it from a repository checkout:

mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
cp -R skills/kanbalone-api "${CODEX_HOME:-$HOME/.codex}/skills/"

If you use only the Docker image, fetch the skill from the GitHub release tag to the host running Codex:

tmpdir=$(mktemp -d)
curl -L https://github.com/wamukat/kanbalone/archive/refs/tags/v0.9.34.tar.gz \
  | tar -xz -C "$tmpdir" kanbalone-0.9.34/skills/kanbalone-api
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
cp -R "$tmpdir"/kanbalone-0.9.34/skills/kanbalone-api "${CODEX_HOME:-$HOME/.codex}/skills/"
rm -rf "$tmpdir"

The skill is installed on the host because Codex runs outside the Kanbalone container. It then talks to the running Kanbalone API over HTTP.

Recommended Workflow

  1. List boards first. GET /api/boards
  2. Fetch the target board shell. GET /api/boards/:boardId
  3. Before updating tickets, fetch either the lightweight ticket list or a single ticket. GET /api/boards/:boardId/tickets GET /api/tickets/:ticketId
  4. Use dedicated endpoints when you need comments or relations. GET /api/tickets/:ticketId/comments GET /api/tickets/:ticketId/activity GET /api/tickets/:ticketId/relations
  5. Use PATCH /api/tickets/:ticketId with the smallest necessary change. Use PATCH /api/tickets/:ticketId/transition for lane-name-based moves. Use board-scoped bulk endpoints when changing multiple tickets.
  6. Subscribe to GET /api/boards/:boardId/events when the kanban UI needs automatic updates.

Important Semantics

1. laneId And isResolved Are Separate

2. Blockers Are Dependencies Of This Ticket

3. Parent/Child Depth Is One Level

4. Tags Are Board-Scoped

5. Comments Can Be Listed, Added, Edited, And Deleted

6. Archive State Is Separate From Completion

7. Canonical References Are Returned

8. Remote Tracked Tickets Split Title And Body Semantics

9. External References Are Non-Tracking Provenance

10. /api/meta Exposes Remote Provider Availability

11. /api/remote-diagnostics Checks Remote Credentials

Common Patterns

Search Tickets In A Board

Add query parameters to GET /api/boards/:boardId/tickets.

Move A Ticket To A Lane

ID-based:

Name-based:

Move multiple tickets, including order:

Mark multiple tickets resolved or open:

Transition multiple tickets by lane name:

Fetch Relations

Fetch Activity

Mark A Ticket Resolved

Update laneId at the same time when needed.

Reflect External API Updates In The UI

Import A Large Board

Error Handling

Errors usually use this shape:

{ "error": "message" }

Common cases: