> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sigmora.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Jobs & polling

> One endpoint collects the result of every asynchronous capability.

## One path, whatever produced it

A capability that runs a pipeline answers `202` with a `jobId`. You poll it here
regardless of which capability created it.

```bash theme={null}
curl https://api.sigmora.org/v1/jobs/job_4k1... \
  -H "Authorization: Bearer $SIGMORA_API_KEY"
```

## Branch on status, never on phase

`status` is a closed set and safe to branch on. `phase` is the pipeline's own
stage word — useful to show someone, and not stable across releases.

| Status            | Meaning                                                 |
| ----------------- | ------------------------------------------------------- |
| `queued`          | Accepted, not started.                                  |
| `rendering`       | In flight.                                              |
| `awaiting_review` | Footage edits only. A person must approve the cut list. |
| `done`            | Terminal. Artifacts are available.                      |
| `failed`          | Terminal. See `error`.                                  |

<Warning>
  `awaiting_review` will not advance on its own. Footage edits stop there when the
  cut list is ready: nothing renders until a person approves it, and the approval
  happens in the app. Polling forever will not move it.
</Warning>

## Collecting the file

`artifacts` carries URLs pointing at the origin that holds the bytes. Fetch them
directly — they are not proxied through the API, which is why a multi-gigabyte
render downloads at the origin's speed rather than an API gateway's.

<Note>
  A job that fails after being charged is refunded against the same idempotency
  key it was billed under. You are never charged for an output that does not
  exist.
</Note>

## A capability may not be servable here

Some operations need the GPU backend. A deployment without one answers
`capability_unavailable` rather than failing mid-render, so check
`GET /v1/capabilities` before building a flow that depends on it.
