Workbenches is an open standard. Read why
Docs Projects

API reference

Projects

Projects belong to the organization that creates them and group run sessions. A project's tasks are its sessions. Names keep their display case; matching accepts the exact name or slug without regard to case. A project is created explicitly; a run never creates one.

The project object#

Field Type Meaning
name string, 1 to 64 characters No control characters.
slug string Lowercase words joined by -.
counts object Tasks per column: needs_you, running, done, failed.
updated_at date-time
now list, up to 3 What is running: task_id, latest_run_id, title, workbench, source (cloud), text (up to 140 characters), at.
waiting list Tasks waiting on you: task_id, latest_run_id, title, text, at.
latest_done object or null The latest completion: task_id, latest_run_id, title, at, has_outcome.
today object runs, tokens, cost_usd (or null).

List projects#

GET /v1/projects

Key runs:read, or session: member.

Query Type Meaning
organization slug For a session.

Response 200 { "projects": [ ... ] }.

Create a project#

POST /v1/projects

Key runs:write, or session: member.

Field Type Meaning
name string, 1 to 64 characters Required.
organization slug For a session.

Response 201: the project. Names and slugs are unique within the organization.

List tasks#

GET /v1/projects/:slug/tasks

Key runs:read, or session: member. Newest update first.

Query Type Meaning
organization slug For a session.

Response 200:

{
    "tasks": [
        {
            "id": "wbs_...",
            "project": { "name": "API", "slug": "api" },
            "source": "cloud",
            "title": "Review the open migration",
            "workbench": { "name": "code-review", "version": "1.2.0" },
            "status": "needs_input",
            "column": "needs_you",
            "latest_run_id": "wb_...",
            "needs_input": true,
            "created_at": "...",
            "updated_at": "..."
        }
    ]
}

status is the latest run's status. column is needs_you, running, done, or failed.

Use a project#

Pass project (name or slug) to POST /v1/runs or the MCP run tool. Filter runs and sessions with project on GET /v1/runs and GET /v1/sessions, or wait on a whole project with the MCP wait tool. Project and task changes are published on the realtime socket under project:<slug>.

Projects on workbenches.dev are separate from the local projects wb project manages on your machine.