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 acme

A 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.

EventTriggered when
project.createdA new project is created.
issue.updatedAn issue's status or assignee changes.
sprint.closedA 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