---
title: "Upscale a video with FLUX 3."
method: POST
path: "/v1/flux-tools/video-upscale-v1"
tags: ["Models"]
---

# Upscale a video with FLUX 3.

`POST /v1/flux-tools/video-upscale-v1`

Submits a video upscaling task: 1.5x-3x super-resolution of the source clip (13.75 MP output frames). The upscale covers the first 20 seconds of the source; clips well past that are rejected. `creativity` selects precise source-faithful upscaling (0) or creative detail enhancement (1).

## Request body

- Flux3VideoUpscaleInputs
  - `input_video` string, required — The clip to upscale: base64-encoded mp4 (max 50MB) or an http(s) URL. The upscale covers the first 20 seconds; a clip slightly over that is upscaled up to the 20 second mark, and one well over is rejected.
  - `prompt` string — Optional description of the clip's content, steering the enhanced detail. Leave empty for a neutral upscale.
  - `creativity` 0 | 1 — Upscale behavior: 0 preserves the source precisely; 1 allows creative detail enhancement.
  - `upscale_factor` number — Output scaling relative to the source resolution, between 1.5 and 3. The output preserves the source aspect ratio and is capped at a 13.75 MP frame: very large sources are upscaled by less than the requested factor.
  - `safety_tolerance` integer — Tolerance level for harm moderation, between 0 and 4 with 0 the strictest. It bounds every harm class on the prompt, which is screened before any generation, and on the delivered frames, which are withheld when their sexual-content level exceeds what the tolerance allows. Sexual is capped at level 3 and hate at level 2 regardless of the requested tolerance.
  - `webhook_url` string, uri, nullable — URL to receive the result callback.
  - `webhook_secret` string, password, nullable — Secret echoed in the webhook signature header.

## Response `200`

Successful Response

- union
  - AsyncResponse
    - `id` string, required
    - `polling_url` string, required
    - `cost` number, nullable — Cost in credits for this request
    - `input_mp` number, nullable — Input megapixels (2 decimal places)
    - `output_mp` number, nullable — Output megapixels (2 decimal places)
  - AsyncWebhookResponse
    - `id` string, required
    - `status` string, required
    - `webhook_url` string, required
    - `cost` number, nullable — Cost in credits for this request
    - `input_mp` number, nullable — Input megapixels (2 decimal places)
    - `output_mp` number, nullable — Output megapixels (2 decimal places)

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/bfl/apis/bfl-api.md) · [All operations](https://skmtc.net/bfl/apis/bfl-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bfl/bfl-api/revisions/86b239145f28/schema)
