# Follow an execution to completion.

A pending result belongs to the run you already started.

Updated: 2026-09-21.
## Save the run ID

A successful request can return while a provider is still working or consumption is being reconciled. Preserve the returned run ID and state. Do not mistake an accepted or pending run for a completed output.

## Retrieve the existing run

Use MCP `get_run` with `run_id`, or authenticated REST `GET /v1/runs/{id}`. Respect retry guidance and poll with bounded backoff. Follow the [OpenAPI state and result schema](/openapi.json), rather than assuming every tool returns the same output shape.

Some providers publish a separate submission and result-retrieval tool. Inspect both contracts and preserve their returned task identifiers. Do not invent a task ID or call the submission tool again to check progress.

## Read the receipt

Retrieving a run can reconcile provider consumption and settle its existing reservation. It does not authorise a fresh tool execution. A final charge can exist even when an output is incomplete; an uncertain outcome can retain its reservation until reconciliation.

When the result is ready, return the actual output and reported charge. If it remains unresolved beyond your retry budget, report the run ID and state and contact [support](/contact). Do not claim success, a refund or free execution without the receipt.

---

[HTML page](/docs/async) · [Agent index](/llms.txt)
