> ## Documentation Index
> Fetch the complete documentation index at: https://developers.cuttr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Face Swap Status

> Poll a face swap job for progress and download link

Check the status of a face swap job. When the job is complete, the response includes a download URL valid for **7 days**.

<Note>
  We recommend polling every **5-10 seconds**. Face mode jobs typically complete in a few minutes. Fullbody mode jobs may take longer depending on video length.
</Note>

```bash theme={null}
curl https://api.cuttr.com/api/platform/v1/face-swap/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "X-API-Key: YOUR_API_KEY"
```

### Headers

<ParamField header="X-API-Key" type="string" required>
  Your API key.
</ParamField>

### Path parameters

<ParamField path="jobId" type="string" required>
  The `job_id` (UUID) returned from [Create Face Swap](/api-reference/endpoint/create-face-swap).
</ParamField>

### Response

The response shape changes based on the job status.

**When processing:**

<ResponseField name="job_id" type="string">
  The job identifier.
</ResponseField>

<ResponseField name="status" type="string">
  `"processing"` while the face swap is in progress.
</ResponseField>

<ResponseField name="progress" type="integer">
  Progress percentage (0-100). Note: progress may not update linearly.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp of when the job was created.
</ResponseField>

**When completed:**

<ResponseField name="job_id" type="string">
  The job identifier.
</ResponseField>

<ResponseField name="status" type="string">
  `"completed"` when the face swap is done.
</ResponseField>

<ResponseField name="download_url" type="string">
  Pre-signed URL to download the result video. Valid for **7 days**.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp.
</ResponseField>

**When failed:**

<ResponseField name="job_id" type="string">
  The job identifier.
</ResponseField>

<ResponseField name="status" type="string">
  `"failed"` if the job encountered an error. Your wallet is **automatically refunded** on failure.
</ResponseField>

<ResponseField name="error" type="string">
  Human-readable error message describing what went wrong.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp.
</ResponseField>

<ResponseExample>
  ```json Processing theme={null}
  {
    "job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "processing",
    "progress": 10,
    "created_at": "2026-02-18T12:00:00.000Z"
  }
  ```

  ```json Completed theme={null}
  {
    "job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "completed",
    "download_url": "https://clipster-videos-prod.s3.us-west-2.amazonaws.com/comfy-outputs/...",
    "created_at": "2026-02-18T12:00:00.000Z"
  }
  ```

  ```json Failed theme={null}
  {
    "job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "failed",
    "error": "No faces detected in video",
    "created_at": "2026-02-18T12:00:00.000Z"
  }
  ```
</ResponseExample>
