DevFlow API guide
Hit the API in five minutes.
DevFlow is a project management platform for engineering teams. This guide walks through authentication, projects, webhooks, and our SDKs.
Quick start
Install the CLI, sign in to a workspace, and spin up your first project.
# Install the DevFlow CLI
npm install -g @devflow/cli
# Authenticate
devflow auth login
# Create a project
devflow projects create "Apollo redesign" --workspace acmeA workspace pops up in seconds. From there you can add issues, sprints, and integrations.
Authentication
All API requests use Bearer tokens. There are live and test tokens, and you can rotate them from the dashboard at any time.
curl https://api.devflow.dev/v1/projects \
-H "Authorization: Bearer df_live_••••••" \
-H "Content-Type: application/json"
# 200 OK
{
"data": [
{ "id": "prj_8h2k1", "name": "Apollo redesign", "status": "active" }
],
"next_cursor": null
}Tip: Test tokens (df_test_…) only work against the sandbox environment.
Projects
Project create / update / delete are symmetric — POST / PATCH / DELETE. The payload is intentionally small; a workspace ID and an owner email are enough to get started.
POST /v1/projects
{
"name": "Apollo redesign",
"workspace_id": "ws_a1b2c3",
"owner_email": "lead@acme.dev",
"due_date": "2026-09-15"
}
# 201 Created
{
"id": "prj_8h2k1",
"name": "Apollo redesign",
"status": "active",
"created_at": "2026-06-14T05:12:03Z"
}Issues
Issues belong to a project and move through three statuses — backlog / in_progress / done. Create, update, and transition them via the API, with an assignee and a priority (low / medium / high).
POST /v1/issues
{
"project_id": "prj_8h2k1",
"title": "Fix login redirect loop",
"assignee_email": "dev@acme.dev",
"priority": "high",
"status": "in_progress"
}
# 201 Created
{
"id": "iss_71c",
"project_id": "prj_8h2k1",
"title": "Fix login redirect loop",
"status": "in_progress",
"priority": "high",
"created_at": "2026-06-14T05:13:40Z"
}Tip: updating status to done fires the issue.updated webhook.
Sprints
A sprint is a time-boxed set of issues. Add issues to it, and when it closes its velocity (completed points) is recorded.
POST /v1/sprints
{
"project_id": "prj_8h2k1",
"name": "Sprint 14",
"starts_on": "2026-06-16",
"ends_on": "2026-06-29"
}
# 201 Created
{ "id": "spr_4a9", "name": "Sprint 14", "status": "active", "issue_count": 0 }
# Add an issue to the sprint
POST /v1/sprints/spr_4a9/issues { "issue_id": "iss_71c" }Webhooks
Webhooks deliver key events so you can wire up billing, CI, or alerting. Receiver endpoints must be HTTPS.
| Event | Triggered when |
|---|---|
| project.created | A new project is created. |
| issue.updated | An issue's status or assignee changes. |
| sprint.closed | A sprint is closed out. |
Rate limits
Each plan has a per-minute request cap. Going over returns 429 with a Retry-After header.
- Free — 60 requests / min
- Team — 600 requests / min
- Enterprise — custom
Pagination
List endpoints are cursor-based. limit is max 100 (default 50). Pass the response's next_cursor as the cursor on the next request to page forward.
GET /v1/issues?project_id=prj_8h2k1&limit=50
# Response includes next_cursor; pass it back for the next page
GET /v1/issues?project_id=prj_8h2k1&limit=50&cursor=eyJpZCI6Imlzc183MWMi...SDKs
Official SDKs are available for TypeScript, Python, and Go. Auth, pagination, retries, and webhook signature verification are all built in.
TypeScript
npm i @devflow/sdk
Python
pip install devflow
Go
go get devflow.dev/sdk
Not sure how something in DevFlow works? Ask Aide in the corner — it answers from the docs.
Aide is online