The Vibeflow API.
v0, documented live.
A REST API over your tasks, boards, comments and files — every
endpoint under /api/v0, authenticated with a
Bearer token you create yourself. This page is the tour: the full
reference lives in the
hosted API viewer,
rendered from the served contract, so it can never drift from what
the server actually does.
Live contract
Read the contract, not a copy of it.
The viewer below renders the exact OpenAPI document the hosted
app serves — contract version
0.1.0. When this page and the viewer
disagree, the viewer wins.
- Hosted API viewer — every endpoint, parameter and schema, in your browser.
- Raw OpenAPI JSON — the same bytes the viewer renders; point your code generator at this URL.
Base URLs
One path prefix, two places it lives.
The API surface is always under /api/v0.
Against your own machine it is the board you already run; against
the cloud it is your workspace.
Start local with vibeflow kanban (or
vibeflow serve in API-only mode) and
the API answers on the same port as the board. Local requests
carry no quota; cloud requests carry per-token quotas (see
errors).
-
Local —
http://localhost:3700/api/v0(port 3700 is the default; use yours if you changed it). -
Cloud —
https://app.vibeflow.tools/api/v0(Bearer token required).
Authentication
One token, carried as a Bearer.
Cloud calls authenticate with a personal access token sent as an
HTTP Bearer token. Create one in the app under Settings → API
tokens — the screen links straight to the
API reference
so the next step is obvious — or programmatically with
POST /api/v0/tokens, which takes a
name and a scopes
array (both required).
The secret is shown exactly once, at creation — after
that only the prefix (e.g.
vbf_pat_9f2c…) is stored and listed.
Lose it and there is nothing to recover: revoke the token
with DELETE /api/v0/tokens/{id} and
create a new one.
-
Send it every time —
Authorization: Bearer vbf_pat_…on each request. - Scope it down — each endpoint declares the scope it needs (see the table below); a token without it gets 403.
-
Expiry is optional — pass
expiresAtat creation if you want the token to die on its own.
Scopes you will see. tasks:read /
tasks:write,
boards:read /
boards:write,
comments:read /
comments:write,
files:read /
files:write,
settings:read /
settings:write,
profile:read and
tokens:manage. One endpoint is public
without any token: GET /api/v0/changelog.
Endpoint groups
What the API covers.
The groups below are the whole v0 surface. Parameters, bodies and schemas for each live in the viewer — what follows is the map, not the territory.
| Group | Endpoints | Scope |
|---|---|---|
Tasks |
GET / POST /api/v0/tasks, GET / PATCH / DELETE /api/v0/tasks/{id}, open / expand / links sub-resources |
tasks:read / tasks:write |
Boards |
GET / POST /api/v0/boards, GET / PATCH / DELETE /api/v0/boards/{id} |
boards:read / boards:write |
Agent |
POST …/tasks/claim-next, POST …/tasks/{id}/verify, POST …/tasks/{id}/prompt, POST …/tasks/{id}/auth-state |
tasks:read / tasks:write |
Comments |
GET / POST …/tasks/{id}/comments, PATCH / DELETE …/comments/{commentId} |
comments:read / comments:write |
Files |
GET / POST …/tasks/{id}/files (+ {fileId} fetch/delete), screenshot, baseline and baseline-page captures |
files:read / files:write |
Meta |
GET /api/v0/project, GET /api/v0/me, GET / PATCH /api/v0/settings, GET /api/v0/changelog (public) |
varies — see viewer |
Auth |
GET / POST /api/v0/tokens, DELETE /api/v0/tokens/{id} |
tokens:manage |
MCP |
GET / POST /mcp — the Streamable HTTP endpoint (see the MCP setup guide) |
token scopes |
Example
List your todo tasks.
The shapes below are real: the query parameters, the
{ items, nextCursor } envelope and the
summary fields come straight from the contract.
Filter with status (one of
backlog,
todo,
in-progress,
review,
done,
cancelled), page with
limit and
cursor. Creating a task is the
mirror image: POST /api/v0/tasks
with at least a title.
Errors and quotas
One error shape, three quota buckets.
-
Every failure is
{ "error": "…" }— the message is required;codeanddetailsappear when there is more to say.401means the token is missing or invalid,403means it lacks the scope. -
Cloud quotas are per token — reads 300/min, writes 60/min, token creation 10/hour. Past the limit the API answers
429with aRetry-Afterheader: wait, then retry. -
Local has no quotas — against
localhostthe limits above do not apply.
Versioning
v0 means pre-stable. Plainly.
The API is v0 and the contract is version
0.1.0: paths, fields and quotas can
change without notice, and breaking changes are allowed until
v1. Build against the
live contract
rather than this page, and expect to adapt your integration when
it moves. When v1 lands, that stability commitment will be
written here — not before.
If something looks wrong
Common questions.
Is the v0 API stable?
No — v0 is pre-stable. Paths, fields and quotas can change without notice until v1, so pin your integration to the live contract and expect to adapt it.
Where is the full endpoint reference?
In the hosted viewer, rendered from the served OpenAPI document at /api/openapi.json (contract version 0.1.0). This page is the tour; the viewer is the truth.
I lost my token secret. Can I see it again?
No — the secret is shown once at creation and only the prefix is stored afterwards. Revoke the token (DELETE /api/v0/tokens/{id}) and create a new one.
Related pages
Where to go next.
- How to use Vibeflow — the three-step CLI workflow
- vibeflow tasks — the CLI over the same task model
- vibeflow kanban — run the board your API calls land on
- vibeflow serve — API-only mode for existing apps
- MCP setup guide — the same operations as twelve MCP tools
Ten seconds to your
first annotated task.
No account, no cloud, no browser extension.
Apache-2.0 · Node.js 22+ · tasks stay in your repository