# Get a Lipsync 2.0 job

Model: Lipsync 2.0
Endpoint: `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`.

## Parameters

- `job_id` (path) · required — Identifier of the Lipsync 2.0 job, returned when the job was submitted.
- `X-Veed-Store-IO` (header) — Set to `0` to not store this request's and response's bodies. They are then not available in your request logs for debugging.
- `X-Veed-Media-Expiration-Seconds` (header) — Number of seconds before the media URLs returned for this request expire. A value above the maximum is capped rather than rejected.

## Example request

```bash
curl "https://api.veed.io/v1/lipsync-2.0/{job_id}" \
  -H "Authorization: Bearer $VEED_API_KEY"
```

## Example response (200)

```json
{
  "data": {
    "credits_charged": 0,
    "credits_estimated": 0,
    "error": {
      "code": "input_validation",
      "details": [
        {
          "field": "<field>",
          "message": "<message>",
          "type": "<type>"
        }
      ],
      "message": "<message>"
    },
    "job_id": "123e4567-e89b-12d3-a456-426614174000",
    "result": {
      "video": {
        "content_type": "video/mp4",
        "file_name": "<file_name>",
        "file_size": 0,
        "url": "<url>"
      }
    },
    "status": "PROCESSING"
  }
}
```

Rendered page: https://api.veed.io/docs/api/get-v1-lipsync-2-0-job-id
