Tasks, schedules and groups¶
Earlier technical reference
This page is retained from earlier documentation and has not been fully revalidated for the public 2026.10.19 release. Its revision-specific links and examples may describe older or development behavior. Start with the current public-release user guide; do not use this page alone to select installation commands, image tags, or security settings.
BURROW exposes several work surfaces with different state models. The task board, scheduled jobs, group channels and retained Workbench compatibility API are not interchangeable task queues.
Task board¶
Create a project with {name}. Create a task with at least projectId and title; optional state, priority, description and assigned-agent fields are validated by the store. Read available statuses/priorities rather than inventing identifiers. List filters are projectId, status, priority and assignedAgentId.
POST /api/task-board/tasks/{id}/execute launches work through the assigned agent after awaiting the task/project lookups and execution record. Verify the returned outcome and then inspect the terminal execution receipt. Its response is not final task completion, and execution does not automatically move the task through board columns. The current UI shows five columns and creates tasks in To Do; the API/store default is Backlog.
A conversation can bind an active project. GET/DELETE use agentId and optional sessionId (default default); PUT additionally requires projectId. The binding supports continuity and task context, not filesystem confinement.
Scheduled jobs¶
Create requires nonblank agentId, name, prompt and a five-field cron expression; timezone and model selection are separate stored settings. List can filter agentId and enabled. Job detail, PATCH, DELETE and run history use the job ID; run history accepts limit.
POST /api/scheduled-jobs/{jobId}/trigger returns 202 admission. Inspect run history for terminal outcome. To cancel an active run, POST its /runs/{runId}/cancel path with optional reason; a non-active run returns 404. Cancellation does not undo completed tools.
Validate execution, not only scheduling
The current scheduler receives the composed stores; the old missing-store wiring defect is resolved. Saving a cron job or receiving a trigger acknowledgement still does not establish successful unattended execution. Inspect terminal receipts and try a harmless job before relying on it.
Group channels¶
Create with name and a nonempty participantAgentIds array. The browser asks for at least two agents; the server boundary permits a nonempty participant list. Read channel detail for up to 500 turns plus active runs.
POST messages with message and optional agentIds. Explicit targets win; otherwise recognized @ mentions select participants; without targets/mentions the message is broadcast. Unknown mentions fail validation. The server launches private per-agent group-<channelId> sessions and returns 202 with run IDs. Participants keep their own identity, tools and memory scope while receiving shared room context; the visible transcript is not a single merged agent identity.
Cancel through the group run endpoint. Poll detail for final visible messages; there is no group NDJSON contract here.
Legacy Workbench compatibility¶
/api/tasks and /api/workbench remain isolated compatibility routes for work items and planning/step/continuation. They are distinct from /api/task-board/tasks, the current Tasks UI and Minion execution. Do not build new task-board clients by treating the names as aliases.
Endpoint inventory¶
Methods are significant. Braced segments are placeholders; URL-encode identifiers. See the contract and conventions for artifact limitations.
| Method | Path | Purpose |
|---|---|---|
GET |
/api/task-board/statuses |
List task statuses |
GET |
/api/task-board/priorities |
List task priorities |
GET |
/api/task-board/projects |
List projects |
POST |
/api/task-board/projects |
Create a project |
GET |
/api/task-board/tasks |
List tasks |
POST |
/api/task-board/tasks |
Create a task |
GET |
/api/tasks |
List work items |
POST |
/api/tasks |
Create a work item |
GET |
/api/tasks/{id} |
Read a work item |
POST |
/api/tasks/{id}/step |
Run one work-item step |
POST |
/api/tasks/{id}/continue |
Continue a work item |
POST |
/api/tasks/{id}/archive |
Archive a work item |
POST |
/api/workbench |
Plan a workbench turn |
POST |
/api/workbench/run |
Run a workbench step |
GET |
/api/scheduled-jobs |
List scheduled jobs |
POST |
/api/scheduled-jobs |
Create a scheduled job |
GET |
/api/scheduled-jobs/{jobId} |
Read a scheduled job |
PATCH |
/api/scheduled-jobs/{jobId} |
Update a scheduled job |
DELETE |
/api/scheduled-jobs/{jobId} |
Delete a scheduled job |
GET |
/api/scheduled-jobs/{jobId}/runs |
List scheduled job runs |
POST |
/api/scheduled-jobs/{jobId}/trigger |
Trigger a scheduled job |
GET |
/api/group-channels |
List group channels |
POST |
/api/group-channels |
Create a group channel |
GET |
/api/group-channels/{channelId} |
Read a group channel |
POST |
/api/group-channels/{channelId}/messages |
Post a group-channel message |
POST |
/api/group-channels/{channelId}/runs/{runId}/cancel |
Cancel a group-channel run |
POST |
/api/task-board/tasks/{id}/execute |
Execute task-board task |
POST |
/api/scheduled-jobs/{jobId}/runs/{runId}/cancel |
Cancel scheduled job run |
PATCH |
/api/task-board/projects/{projectId} |
Update task-board project |
DELETE |
/api/task-board/projects/{projectId} |
Delete task-board project |
GET |
/api/task-board/tasks/{taskId} |
Read task-board task |
PATCH |
/api/task-board/tasks/{taskId} |
Update task-board task |
DELETE |
/api/task-board/tasks/{taskId} |
Delete task-board task |
GET |
/api/task-board/conversation-project |
Get the conversation active project |
PUT |
/api/task-board/conversation-project |
Set the conversation active project |
DELETE |
/api/task-board/conversation-project |
Clear the conversation active project |