# Job

A **job** is the async execution behind a resource. There is one status vocabulary across the whole
API, so you write the wait logic once.

## The status enum

| Status | Terminal? | Meaning |
|---|---|---|
| `queued` | no | Accepted, not started |
| `running` | no | In progress |
| `succeeded` | yes | Results available on the resource |
| `failed` | yes | See `error` on the resource; do not blind-retry |
| `canceled` | yes | You called `/cancel` |

## Which resources are async

Search, Extraction, TopicSearch, and
Document parsing. Everything else is synchronous.

## Three ways to wait

1. **Poll** the resource. Back off; do not poll faster than once a second.
2. **Webhook** — subscribe to `*.completed` and `*.failed`. See webhook.
3. **SDK `.wait()`** — handles backoff and timeout for you.

> [!info] This endpoint is asynchronous
> Reuse this callout verbatim on every async endpoint page, linking here.

## Related

jobs · webhook · errors-and-retries
