Get a run
Returns one run in full: its status and current step, the pull requests and branches it opened, the files it changed, token use and cost, and the notes it wrote while working. Poll it to follow a run; a few seconds apart is plenty.
api_key viewAuthorizationBearer <token>A team API key, made by an admin under Settings, API keys. Send it as Authorization: Bearer chk_....
Scope: view
run_id*stringThe run's id.
The run.
application/json- response
One run, in full.
applied_standards*array<string>The team standards the run was given in full ("always apply").
[ "api-error-format"]branch?|The branch the run pushed.
"coderhelm/web-42-login-rate-limit"branches?array<string>|Their branches, in the same order.
[ "coderhelm/web-42-login-rate-limit"]cache_read_tokens*integerTokens read from the prompt cache.
int640 <= value905112cache_write_tokens*integerTokens written to the prompt cache.
int640 <= value64002close_reason?|Why it was closed.
nullclosed_at?|When it was closed (RFC 3339).
nullclosed_by?|Who closed the run on purpose.
nullclosed_from?|The status it had when it was closed.
nullcost_usd*numberWhat the run cost in model usage, in US dollars, as recorded.
double1.42created_at?|When the run started (RFC 3339).
"2026-10-22T14:03:11Z"current_pass?|The step the run is on or ended on.
"pr"duration_s?|How long the run took, in seconds.
int640 <= value734error?|Why the run failed, when it did.
nullfiles_modified?array<string>|The files the run changed.
[ "src/auth/login.ts", "src/auth/login.test.ts"]fix_location?|Where the fix belongs: code, or somewhere outside the code.
"code"lesson?|A lesson recorded for the repository when the fix was elsewhere.
nullmcp_servers?array<string>|The MCP servers the run used.
[]outside_change_report?|The report written when (part of) the fix is a change outside the code.
nullpass_history?array<>|The steps it went through, in order.
[ { "pass": "triage", "started_at": "2026-10-22T14:03:11Z" }, { "pass": "implement", "started_at": "2026-10-22T14:05:40Z" }, { "pass": "pr", "started_at": "2026-10-22T14:14:50Z" }]pr_number?|That pull request's number.
int640 <= value318pr_numbers?array<>|Their numbers, in the same order.
[ 318]pr_url?|The pull request the run opened.
"https://github.com/acme/web/pull/318"pr_urls?array<string>|Every pull request, when the work spans several repositories.
[ "https://github.com/acme/web/pull/318"]progress_notes?array<>|Notes it wrote while working, in order.
[ { "message": "Tests pass; opening the pull request.", "timestamp": "2026-10-22T14:15:02Z" }]repo?|The repository, owner/name.
"acme/web"status?|Where the run is: pending, running, awaiting_ci, completed,
failed, needs_input, needs_outside_change, cancelled,
retried or closed. Treat a value you don't know as in progress.
"completed"ticket_id?|The ticket's key or issue number in its source.
"WEB-42"ticket_source?|What started it, such as github, jira or alert.
"jira"title?|The ticket's title.
"Add rate limiting to the login form"tokens_in*integerInput tokens, not counting cache reads and writes.
int640 <= value182340tokens_out*integerOutput tokens.
int640 <= value20511updated_at?|When it last changed (RFC 3339).
"2026-10-22T14:15:25Z"curl -X GET 'https://api.coderhelm.com/api/runs/01JB8X6F4M2C9QZ3T7V5W1K0HA' \ -H "Authorization: Bearer $CODERHELM_API_KEY"{ "applied_standards": [ "api-error-format" ], "branch": "coderhelm/web-42-login-rate-limit", "branches": [ "coderhelm/web-42-login-rate-limit" ], "cache_read_tokens": 905112, "cache_write_tokens": 64002, "close_reason": null, "closed_at": null, "closed_by": null, "closed_from": null, "cost_usd": 1.42, "created_at": "2026-10-22T14:03:11Z", "current_pass": "pr", "duration_s": 734, "error": null, "files_modified": [ "src/auth/login.ts", "src/auth/login.test.ts" ], "fix_location": "code", "lesson": null, "mcp_servers": [], "outside_change_report": null, "pass_history": [ { "pass": "triage", "started_at": "2026-10-22T14:03:11Z" }, { "pass": "implement", "started_at": "2026-10-22T14:05:40Z" }, { "pass": "pr", "started_at": "2026-10-22T14:14:50Z" } ], "pr_number": 318, "pr_numbers": [ 318 ], "pr_url": "https://github.com/acme/web/pull/318", "pr_urls": [ "https://github.com/acme/web/pull/318" ], "progress_notes": [ { "message": "Tests pass; opening the pull request.", "timestamp": "2026-10-22T14:15:02Z" } ], "repo": "acme/web", "status": "completed", "ticket_id": "WEB-42", "ticket_source": "jira", "title": "Add rate limiting to the login form", "tokens_in": 182340, "tokens_out": 20511, "updated_at": "2026-10-22T14:15:25Z"}List runs GET
Lists the team's runs, newest first, one page at a time. Search with `q` and filter by `status`, `source` and `repo`. Each page reads at most a few hundred runs, so a page can come back short, or empty, with `next` set: keep reading until `next` is null.
Cancel a run POST
Stops a run that is `running`. The run becomes `cancelled`, and the work it has not done yet is dropped; a pull request it already opened stays open. A run in any other state answers `400`, so cancelling twice is harmless.