# List bulk jobs

Returns the caller's bulk jobs, most recent first, one cursor-paginated
page at a time. Optionally filter to a single status; when omitted, jobs
of every status are returned. `status` narrows the set and the cursor
addresses a position inside that already-ordered, already-filtered set,
so the two can be combined in one request. Follow `next_cursor` while
`has_more` is true.

**GET** `/v1/bulk`

## Parameters

- `limit` (query, integer)
- `cursor` (query, string) — Pagination cursor from a previous response.
- `status` (query, string)

## Responses

### 200 — Successful response.
- `next_cursor`
- `has_more`
- `data`
- `data.id`
- `data.status`
- `data.total`
- `data.completed`
- `data.failed`
- `data.created_at`
- `data.completed_at`
- `data.total_credits_charged`
- `data.total_billed_bytes`
- `data.estimated_credits`
- `data.webhook_url`

### 401 — Unauthorized. The request carried no valid credential, and no work was
performed. The unified `Error` envelope carries one of the codes below
in `error.code`; match on the code, never on the prose.

- `invalid_api_key` — a bearer API key was presented and rejected:
  unknown, revoked, expired or malformed. The bearer-only operations
  (`/v1/webhook-deliveries*` among them) also return it when no
  `Authorization` header is sent. `GET /v1/account` is the exception
  to "malformed": it returns `invalid_api_key` only for a key that
  starts `sk_test_` or `sk_live_` and is unknown, revoked or expired.
- `unauthorized` — the `Authorization` header is absent or malformed on
  an operation that also accepts a dashboard session (the dual-auth and
  billing operations). `GET /v1/account` also returns it, for no
  `Authorization` header and for any bearer value that does not start
  `sk_test_` or `sk_live_` (that value is checked as a dashboard
  session token).

Not retryable as-is: supply a valid API key first.
- `status`
- `error`
- `error.code`
- `error.message`
- `error.http_status`
- `error.failed_at`
- `error.details`

### 422 — Validation error. Returned when `status` is not one of the documented values, or when `cursor` is not a cursor this endpoint issued.
- `status`
- `error`
- `error.code`
- `error.message`
- `error.http_status`
- `error.failed_at`
- `error.details`