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.
Coverage, hosts and pinned snapshots for Devin — 63 of 122 read surfaces served and verified.
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.
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.
# 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.
{
"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.
# reproducible in CI
export DEVIN_API_BASE=https://devin-v3.snap.sandboxapis.devTour the universe → · Coverage manifest → · Versioning & pinning →