Founding keys are opena year free at 6,000 req/hour, for the first 1,000 developersClaim yours
Documentation 29

Devin API quickstart · 3 min read

The agent fleet, first-party. Validated against Devin's own spec.

Devin publishes an official OpenAPI, and this replica conforms to it: enterprise sessions, ACU consumption, usage metrics, and members for a simulated org — where every session's pull request is a real, fetchable PR on the git hosts.

01Point your calls at devin.
02Read the enterprise scope
03Pin a snapshot for CI

01 / Base URL + auth

The v3 API, mirrored from the official spec.

Point requests at https://devin.sandboxapis.dev. Paths, envelopes, and pagination mirror api.devin.ai exactly — including RFC 9457 application/problem+json errors and the cursor pagination the spec defines (first max 200; more is your 422, never a silent clamp). Auth is a Bearer token — Devin's cog_ service-user keys — and any value passes here.

request.sh
curl -H 'Authorization: Bearer any-key' \
  "https://devin.sandboxapis.dev/v3/enterprise/sessions?first=5"

Using a key? Keys & rate limits → — a SandboxAPIs key rides the same Bearer slot and lifts the anonymous limit.

02 / The reads that matter

Sessions, ACUs, metrics, members.

report.sh
# The session fleet — statuses, categories, linked PRs
curl -H 'Authorization: Bearer any-key' "https://devin-v3.snap.sandboxapis.dev/v3/enterprise/sessions?first=200"

# Daily ACU consumption (PST day boundaries, as the real API documents)
curl -H 'Authorization: Bearer any-key' "https://devin-v3.snap.sandboxapis.dev/v3/enterprise/consumption/daily"

# Sessions / searches / PR counts for a time range
curl -H 'Authorization: Bearer any-key' "https://devin-v3.snap.sandboxapis.dev/v3/enterprise/metrics/usage"

03 / A real response

Live from the universe.

200 · application/json
{
  "items": [
    {
      "session_id": "devin-084f7444706944ee71694681",
      "url": "https://app.devin.ai/sessions/devin-084f7444706944ee71694681",
      "status": "exit",
      "status_detail": null,
      "title": "Support a request-id middleware in the core library",
      "tags": [],
      "org_id": "org-e516cc9a",
      "user_id": "du_d893a4d6c45ba3c4",
      "service_user_id": null,
      "created_at": 1784991172,
      "updated_at": 1784995959,
      "acus_consumed": 0.25,
      "pull_requests": [
        {
          "pr_url": "https://github.com/olympus-labs/parthenon/pull/85",
          "pr_state": "open"
        }
      ],
      "category": "feature_development",
      "subcategory": null,
      "devin_mode": "normal",
      "origin": "slack",
      "is_archived": false,
      "parent_session_id": null,
      "child_session_ids": [],
      "playbook_id": null,
      "automation_id": null,
      "structured_output": null
    },
    {
      "session_id": "devin-8945b1fb233e7515223e7382",
      "url": "https://app.devin.ai/sessions/devin-8945b1fb233e7515223e7382",
      "status": "exit",
      "status_detail": null,
      "title": "Trace the pagination cursor lifecycle",
      "tags": [],
      "org_id": "org-e516cc9a",
      "user_id": "du_d893a4d6c45ba3c4",
      "service_user_id": null,
      "created_at": 1784743534,
      "updated_at": 1784745946,
      "acus_consumed": 0.25,
      "pull_requests": [],
      "category": "research_and_exploration",
      "subcategory": null,
      "devin_mode": "fast",
      "origin": "slack",
      "is_archived": false,
      "parent_session_id": null,
      "child_session_ids": [],
      "playbook_id": null,
      "automation_id": null,
      "structured_output": null
    }
  ],
  "end_cursor": "bzoy",
  "has_next_page": true,
  "total": 56
}

04 / Pin a snapshot

Deterministic CI.

The *.snap. base URL is byte-identical on every request, with the ACU rate frozen at the pin's snapshot date — a consumption fixture that never moves under your dashboards.

.env
# reproducible in CI
export DEVIN_API_BASE=https://devin-v3.snap.sandboxapis.dev

Tour the universe → · Coverage manifest → · Versioning & pinning →