---
title: "Resume a run"
method: POST
path: "/v1/runs/{id}/resume"
tags: ["runs"]
---

# Resume a run

`POST /v1/runs/{id}/resume`

## Request

- Base URL: `https://api.hyperresearch.ai`
- URL: `https://api.hyperresearch.ai/v1/runs/{id}/resume`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `hr_session`

Accepted, not applied: resume asks the Workflow engine to resume the run and returns the status the RunAgent holds at that moment. A blocked run resumes from the gate it parked on; a cooperative abort reaches billing finalization before the run reads `aborted` everywhere.

## Path parameters

- `id` string, required

## Request body

- ResumeRunBody
  - `budget` RunBudget
    - `fetch_usd_max` number: Deprecated. Still accepted, and still applied as a ceiling on paid page fetching and search for this run, but a low value can leave a run short of sources and stop it before it finishes. Must be greater than 0. The tier already bounds this spend and the price does not change with it. Omit it.
    - `sources_max` integer: Deprecated. Still accepted, and still applied as a cap on how many sources this run reads, up to the tier ceiling. A value below the tier’s source floor stops the run at the source gate, and the price does not change with it. Omit it.

## Response `202`

Control request accepted; the run status as it now stands

- RunControlResponse
  - `id` string, required
  - `status` 'clarifying' | 'queued' | 'running' | 'paused' | 'blocked' | 'done' | 'failed' | 'aborted', required
  - `cancellation_requested` boolean

## Other responses

- `400`: Invalid request
- `401`: Authentication failed
- `403`: Insufficient scope or plan
- `404`: Not found
- `429`: Rate limited or over quota
- `500`: Internal error

---

[API](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api.md) · [All operations](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api/revisions/726ef831ebf4?raw)
