---
title: "Re-enter a run at a step"
method: POST
path: "/v1/runs/{id}/rerun-from"
tags: ["runs"]
---

# Re-enter a run at a step

`POST /v1/runs/{id}/rerun-from`

## Request

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

Priced as a fraction of the tier: 25% from step 12 on, 50% for steps 8–11, 100% below that. With `rerun_reason: "platform"` the rerun is free, and is accepted only for a source run that failed on our side (409 `rerun_not_platform` otherwise).

## Path parameters

- `id` string, required

## Request body

- RerunFromBody
  - `step` string, required
  - `levers` RunLevers
    - `register` 'teach' | 'survey' | 'analyze' | 'advocate'
    - `inference_depth` 'surface' | 'standard' | 'deep': Deprecated. Still accepted and stored on the run, but the research planner sets its own depth for each question and no longer reads this value. Omit it.
    - `domain_notes` string
    - `response_format` string
    - `required_section_headings` string[]
    - `citation_style` 'numbered' | 'wikilink': Deprecated and ignored. Still accepted so existing callers keep working, but no longer stored on the run: every report uses the same citation markers whatever this says. Omit it.
    - `purpose` 'decide' | 'understand' | 'brief_someone': What the report is for. `decide` opens with the answer and what it means for the decision, sets out the trade-offs and closes with a recommendation; `understand` explains the subject and its mechanisms without pushing a recommendation; `brief_someone` makes the opening summary a stand-alone brief you can forward. It changes how the report is organised and summarised, never what it researches, claims or cites, and it does not change the price, the sources or the run time. Omitted, the report is organised as before.
    - `report_language` string: The language the report is written in, as a language tag (`en`, `zh`, `ja`, `ko`, `fr`, ...) or a bilingual pair (`zh+en`). Omitted, the report follows the language the question asks for, or the language it is written in. Headings and the labels the pipeline adds are localised for English, Chinese, Japanese and Korean, and are in English for other languages.
    - `reader_expertise` 'beginner' | 'intermediate' | 'expert': Who the report is written for. `beginner` defines technical terms and acronyms in plain words and explains the background a newcomer needs; `intermediate` uses the field’s standard terms and defines only specialist ones; `expert` uses the field’s terminology without definitions and spends the words on specifics. It changes how the report explains things, never what it researches, claims or cites, and it does not change the price, the sources or the run time. Omitted, the report is written for an informed non-specialist, as before.
  - `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.
  - `rerun_reason` 'platform': Re-enter a run that failed on OUR side at no charge. Accepted only when the source run is `failed` with a platform failure (interrupted by a platform fault or restart, a platform limit, a stopped worker, exhausted automatic recovery, or an unavailable workspace store); any other source answers 409 `rerun_not_platform`. Omit it for the usual 25–100% rerun price.

## Response `202`

Rerun queued

- RerunCreated
  - `id` string, required
  - `status` 'queued', required
  - `tier` string, required
  - `price_cents` integer, required
  - `price_percent_of_tier` integer, required
  - `source_run` string, required
  - `resume_from` string, required
  - `events_url` string, required
  - `created_at` string, required
  - `rerun_reason` 'platform': Present only on a zero-price rerun of a run that failed on our side; `price_cents` is then 0.

## 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)
