---
title: "Get a fabric-1.0 job"
method: GET
path: "/v1/fabric-1.0/{job_id}"
tags: ["Fabric 1.0"]
---

# Get a fabric-1.0 job

`GET /v1/fabric-1.0/{job_id}`

## Request

- Base URL: `https://api.veed.io`
- URL: `https://api.veed.io/v1/fabric-1.0/{job_id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/veed/apis/veed-api/docs/v1/fabric-1.0/:job_id/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieve the current state of a fabric-1.0 job by its `job_id`.

The response uses the shared job envelope, whose `status` is one of:

- **`PROCESSING`** — still rendering; the result is empty
- **`COMPLETED`** — done; the result holds the rendered video
- **`FAILED`** — the job was accepted but rendering failed; the error holds a fabric-1.0 failure code

Poll this endpoint until the status is `COMPLETED` or `FAILED`. An unknown `job_id` returns `404 Not Found`.

**Failure codes**

| Code | Meaning |
| --- | --- |
| `input_validation` | An input is missing or invalid. `error.details` names the input at fault when there is one. |
| `content_moderation` | An input breaks the content rules. Only send images, video and voices you own or have permission to use. |
| `invalid_file` | A file could not be read. Check its format, and that it is not corrupted. |
| `audio_too_long` | The audio is longer than the model accepts. Shorten it, or split it across jobs. |
| `transload_failed` | A file could not be downloaded from its URL. Make sure the URL is public and works without a login. |
| `generation_failed` | The model failed while rendering. Retry; if it keeps failing, contact support with the `job_id`. |
| `timeout` | The job ran out of time. Retry; if it keeps failing, contact support with the `job_id`. |
| `insufficient_credits` | The balance ran out before the job could be paid for. Top up in the dashboard's Billing, then retry. |

## Path parameters

- `job_id` string, uuid, required: Identifier of the fabric-1.0 job, returned when the job was submitted.

## Headers

- `X-Veed-Store-IO` '0' | '1'
- `X-Veed-Media-Expiration-Seconds` integer

## Response `200`

OK

- ResourceFabricJob
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `data` FabricJob, required
    - `credits_charged` integer: Credits charged for the job. Present once the job is COMPLETED and the final charge is known.
    - `credits_estimated` integer: Credits quoted before the job ran. Present only on the response that created the job. This is an estimate, not the price: the charged amount can be higher or lower.
    - `error` JobErrorFabricErrorCode
      - `code` 'input_validation' | 'content_moderation' | 'invalid_file' | 'audio_too_long' | 'transload_failed' | 'generation_failed' | 'timeout' | 'insufficient_credits', required: Stable, machine-readable failure code for this job type.
      - `details` JobErrorDetail[], nullable: Optional structured failure details.
        - `field` string: Dotted path to the offending input, when applicable.
        - `message` string, required: Human-readable explanation of this detail.
        - `type` string, required: The category of this detail entry.
      - `message` string, required: Human-readable failure message.
    - `job_id` string, uuid, required: Stable identifier of the job and of the resource it produces.
    - `result` FabricVideo
      - `video` File, required
        - `content_type` string: The mime type of the file.
        - `file_name` string: The name of the file.
        - `file_size` integer: The size of the file in bytes.
        - `url` string, required: The URL where the file can be downloaded from.
    - `status` 'PROCESSING' | 'COMPLETED' | 'FAILED' | 'CANCELLED', required: Current lifecycle state of the job.

## Other responses

- `401`: Unauthorized
- `404`: Not Found
- `422`: Unprocessable Entity
- `429`: Rate limit exceeded
- `500`: Internal Server Error

## Changes

- **2026-10-16** `5391bbfa1626`: 5 warning
  - added the new `model_access_required` enum value to the `error/details/items/reason` response property for the response status `401`
  - added the new `model_access_required` enum value to the `error/details/items/reason` response property for the response status `404`
  - added the new `model_access_required` enum value to the `error/details/items/reason` response property for the response status `422`
  - added the new `model_access_required` enum value to the `error/details/items/reason` response property for the response status `429`
  - …1 more
- **2026-10-02** `d0fe74663830`: 1 warning
  - added the new `insufficient_credits` enum value to the `data/error/code` response property for the response status `200`
- **2026-09-30** `2cd55951003c`: 11 warning, 2 info
  - for the `header` request parameter `X-Veed-Media-Expiration-Seconds`, the max was set to `2592000.00`
  - added the new `insufficient_credits` enum value to the `error/details/items/reason` response property for the response status `401`
  - added the new `insufficient_credits` enum value to the `error/details/items/reason` response property for the response status `404`
  - added the new `insufficient_credits` enum value to the `error/details/items/reason` response property for the response status `422`
  - …9 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/veed/apis/veed-api/changes/v1/fabric-1.0/:job_id/get.md)

---

[API](https://skmtc.dev/veed/apis/veed-api.md) - [All operations](https://skmtc.dev/veed/apis/veed-api/llms.txt) - [OpenAPI document](https://skmtc.dev/veed/apis/veed-api/revisions/b55472650209?raw)
