Re-enter a run at a step
const url = 'https://api.hyperresearch.ai/v1/runs/example/rerun-from';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"step":"example","levers":{"register":"teach","inference_depth":"surface","domain_notes":"example","response_format":"example","required_section_headings":["example"],"citation_style":"numbered","purpose":"decide","report_language":"zh","reader_expertise":"beginner"},"budget":{"fetch_usd_max":1,"sources_max":1},"rerun_reason":"platform"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.hyperresearch.ai/v1/runs/example/rerun-from \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "step": "example", "levers": { "register": "teach", "inference_depth": "surface", "domain_notes": "example", "response_format": "example", "required_section_headings": [ "example" ], "citation_style": "numbered", "purpose": "decide", "report_language": "zh", "reader_expertise": "beginner" }, "budget": { "fetch_usd_max": 1, "sources_max": 1 }, "rerun_reason": "platform" }'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).
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
object
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.
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.
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.
Example
decideThe 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.
Example
zhWho 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.
Example
expertobject
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.
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.
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.
Responses
Section titled “ Responses ”Rerun queued
object
Present only on a zero-price rerun of a run that failed on our side; price_cents is then 0.
Example
{ "status": "queued", "rerun_reason": "platform"}Headers
Section titled “Headers”Example
"reads";q=60;w=60The quota policy this request was counted against (draft-ietf-httpapi-ratelimit-headers): "<bucket>";q=<requests>;w=<window seconds>, e.g. "reads";q=60;w=60. Buckets: reads 60/min, status 600/min, creates 10/min, writes 20/min per credential; public 300/min per network on keyless routes.
Example
"reads";r=57;t=41Remaining quota in the current window: "<bucket>";r=<remaining>;t=<seconds until reset>, e.g. "reads";r=57;t=41.
Requests allowed per window in this bucket (legacy form of RateLimit-Policy).
Requests left in this window (legacy form of RateLimit).
Unix time (seconds) when the window resets.
Which bucket counted the request: reads, status, creates, writes or public.
Invalid request
object
object
Example
{ "error": { "type": "invalid_request", "code": "missing_api_key", "request_id": "req_01J9ZQ7V6H0000000000000000" }}Authentication failed
object
object
Example
{ "error": { "type": "invalid_request", "code": "missing_api_key", "request_id": "req_01J9ZQ7V6H0000000000000000" }}Insufficient scope or plan
object
object
Example
{ "error": { "type": "invalid_request", "code": "missing_api_key", "request_id": "req_01J9ZQ7V6H0000000000000000" }}Not found
object
object
Example
{ "error": { "type": "invalid_request", "code": "missing_api_key", "request_id": "req_01J9ZQ7V6H0000000000000000" }}Rate limited or over quota
object
object
Example
{ "error": { "type": "invalid_request", "code": "missing_api_key", "request_id": "req_01J9ZQ7V6H0000000000000000" }}Headers
Section titled “Headers”Seconds to wait before retrying. Always present on a 429.
Example
"reads";q=60;w=60The quota policy this request was counted against (draft-ietf-httpapi-ratelimit-headers): "<bucket>";q=<requests>;w=<window seconds>, e.g. "reads";q=60;w=60. Buckets: reads 60/min, status 600/min, creates 10/min, writes 20/min per credential; public 300/min per network on keyless routes.
Example
"reads";r=57;t=41Remaining quota in the current window: "<bucket>";r=<remaining>;t=<seconds until reset>, e.g. "reads";r=57;t=41.
Requests allowed per window in this bucket (legacy form of RateLimit-Policy).
Requests left in this window (legacy form of RateLimit).
Unix time (seconds) when the window resets.
Which bucket counted the request: reads, status, creates, writes or public.
Internal error
object
object
Example
{ "error": { "type": "invalid_request", "code": "missing_api_key", "request_id": "req_01J9ZQ7V6H0000000000000000" }}