---
title: "Poll job status"
method: GET
path: "/v1/jobs/{id}"
tags: ["Jobs"]
---

# Poll job status

`GET /v1/jobs/{id}`

## Request

- Base URL: `https://contentmaschine.ai/api`
- URL: `https://contentmaschine.ai/api/v1/jobs/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://contentmaschine.ai/api/oauth/authorize`, token URL `https://contentmaschine.ai/api/oauth/token`)

Returns the current status of an async job. When `status` is `completed`, `result.download_url` contains the image URL.

## Path parameters

- `id` integer, required

## Response `200`

Job status

- JobStatus
  - `success` boolean
  - `data` object
    - `job_id` integer
    - `generation_id` integer
    - `status` 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled'
    - `created_at` string, date-time, nullable
    - `started_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable
    - `attempts` integer
    - `credits_used` number, float
    - `result` object, nullable
      - `file_uuid` string, uuid, nullable
      - `download_url` string, nullable
      - `credits_used` number, float
    - `error` string, nullable
  - `timestamp` string, date-time

## Other responses

- `401`: Missing or invalid API key
- `404`: Job not found
- `default`: Any other error. Every failure this API emits uses the same envelope; branch on `error.type`, never on `error.message`, and quote `error.correlation_id` to support.

---

[API](https://skmtc.dev/contentmaschine/apis/contentmaschine-ai-api.md) · [All operations](https://skmtc.dev/contentmaschine/apis/contentmaschine-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/contentmaschine/apis/contentmaschine-ai-api/revisions/28c74f46051c?raw)
