---
title: "Submit a video upscale job"
method: POST
path: "/v2/videos/upscale"
tags: ["Videos"]
---

# Submit a video upscale job

`POST /v2/videos/upscale`

## Request

- Base URL: `https://api.apiframe.ai`
- URL: `https://api.apiframe.ai/v2/videos/upscale`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Today wired to Topaz Video. Variant key encodes resolution + fps (`1080p_30`, etc.); the route probes the input video duration via ffprobe to compute the per-second multiplier.

## Headers

- `Idempotency-Key` string

## Request body

- VideoUpscaleRequest: Video upscale via Topaz Video.
  - `model` 'topaz-video-upscale', required
  - `webhookUrl` string, uri
  - `webhookEvents` string[]
  - `topazVideoParams` object, required
    - `video` string, required
    - `target_resolution` '720p' | '1080p' | '4k', required
    - `target_fps` union, required
      - 24
      - 30
      - 60
    - `enhance_model` 'auto' | 'theia-fine-tune-detail' | 'theia-fine-tune-fidelity' | 'apollo' | 'rhea' | 'iris'
    - `subject_detection` 'all' | 'foreground' | 'background' | 'none'

## Response `202`

Job accepted and queued. Track via `GET /v2/jobs/{id}` or webhook.

- JobAccepted: Returned by every successful job submission.
  - `jobId` string, uuid, required
  - `status` 'QUEUED' | 'PROCESSING' | 'COMPLETED' | 'FAILED', required: Status at the moment the job record was persisted. Almost always `QUEUED`; idempotent replays may return the original status.

## Other responses

- `400`: Request body failed validation.
- `401`: Authentication failed (missing / invalid API key).
- `402`: Team has insufficient credits to run this model.
- `403`: Authenticated but the API key is inactive or lacks permission.
- `429`: Rate limit exceeded. Retry after the `Retry-After` seconds.
- `503`: Service temporarily unavailable (queue / DB outage). Retry with backoff.

---

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