---
title: "Get a Lipsync 2.0 job"
method: GET
path: "/v1/lipsync-2.0/{job_id}"
tags: ["Lipsync 2.0"]
---

# Get a Lipsync 2.0 job

`GET /v1/lipsync-2.0/{job_id}`

Retrieve the current state of a Lipsync 2.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 re-synced video
- **`FAILED`** — the job was accepted but rendering failed; the error holds a Lipsync 2.0 failure code

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

## Path parameters

- `job_id` string, uuid, required — Identifier of the Lipsync 2.0 job, returned when the job was submitted.

## Headers

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

## Response `200`

OK

- ResourceLipsync20Job
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `data` Lipsync20Job, required
    - `error` JobErrorLipsync20ErrorCode
      - `code` 'input_validation' | 'content_moderation' | 'invalid_file' | 'audio_too_long' | 'transload_failed' | 'generation_failed' | 'timeout', 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` Lipsync20Video
      - `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

---

[API](https://skmtc.dev/veed/apis/veed-api.md) · [All operations](https://skmtc.dev/veed/apis/veed-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/veed/veed-api/revisions/c541599acc5a/schema)
