Relays to `https://api.apify.com/v2/actor-runs/{runId}`, rewriting `Authorization` to the
secret Apify token; a client-sent `token` query parameter is discarded. Answers with the run
object — its `status`, and, once the run is terminal, its final `usageTotalUsd`.
**Ownership-gated**: only the account that created the run can read it. A run id belonging
to another account, and one that never existed, answer the same `404`, with no upstream call
made on its behalf. The account-wide run *list* carries no id to gate, so it is not mounted
and 404s as well.
Polling costs nothing on its own. The first poll that observes a terminal status settles the
run's exact `usageTotalUsd`, once, against the account that created it — repeated terminal
polls do not charge again.
Path parameters
runIdstringRequired
The run, from `data.id` of the create that started it. Only the account that created the run
can name it: another account's run id, and one that never existed, answer the same `404`,
refused locally with no upstream call. A run you **do** own that Apify has since expired also
answers `404` — that read is authorized and reaches Apify, so what comes back is Apify's own
answer rather than the local refusal.
Response
Apify's own run envelope, relayed as it arrived. `data.status` follows Apify's run
lifecycle: `READY` and `RUNNING` while the run is live, `SUCCEEDED`, `FAILED`, `TIMED-OUT`,
or `ABORTED` once it is finished, with `TIMING-OUT` and `ABORTING` in between.
`data.usageTotalUsd` is a running total until the run is terminal — which is why nothing is
charged before then. Once terminal, that exact figure is charged once, with no per-request
markup, to the account that created the run.
dataobjectOptional
The run object.