- The account subdomain. Every account is served from its own host:
acmeforacme.kanbanize.com. Connect delivers it as thesubdomaincredential; the plugin option of the same name overrides it. A call with neither throws before any request is sent. - A board’s structure. Cards live in a column on a lane, inside a workflow.
workflows.list,columns.listandlanes.listread the IDs a card needs; a board with no workflow cannot take cards.
- Booleans are
0and1. Businessmap validatesis_archived,is_enabled,is_blockedand friends as integers, so the plugin takes0or1rather thantrueorfalse. Passing a boolean is rejected before the request. - A column is a main column or a subcolumn. A main column takes
workflow_idand asection(1backlog,2requested,3progress,4done). A subcolumn takesparent_column_idand no section. Sending both, or neither, is rejected locally. - A lane sits on a workflow or under another lane. Same rule:
workflow_idorparent_lane_id, never both. - Lists are comma-joined.
card_ids,board_idsand the rest travel as one comma-separated value, which is how the API documents them. Pass an array and the plugin joins it. - Paging. Only
cards.listpages, withpageandper_page(200 by default, 1000 at most). It returnsnext_page, which is null on the last page. - Deletes answer 204.
boards.delete,workflows.delete,columns.delete,lanes.delete,cards.delete,subtasks.deleteandwebhooks.deletereturn{ success: true }once the API answers, and throw on a 404 or 403. - Rate limits. The account has an hourly and a minutely ceiling, 600 and 30 by default; read them with
limits.get. A limit answer carries the seconds to wait, which the plugin turns into the retry delay, and a bare 429 from a gateway is treated the same. Only reads are replayed after a 5xx, because a retried card create would leave a duplicate. - Webhooks.
webhooks.createregisters a URL with Businessmap, which then posts that board’s events to it. The plugin does not handle the deliveries itself; point the URL at your own endpoint.
- 39 typed API operations
Setup
1
Install
2
Add the plugin
corsair.ts
multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
Store the Kanbanize API key before the first call: More: API Key
pnpm corsair setup --plugin=kanbanize --tenant=acme api_key=<your-key> (leave out --tenant without multiTenancy), or pass it as key in the plugin options. With Hub, each tenant enters their own key on the connect page. See API key auth.4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
List the cards on a boardWhat’s next
API reference
Every
kanbanize.api.* operation with input and output types.Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.