---
title: "Topaz Astra 2"
method: POST
path: "/generate/enhance/topaz/astra-2"
tags: ["Video Enhance"]
---

# Topaz Astra 2

`POST /generate/enhance/topaz/astra-2`

Creative diffusion-based video upscaler with prompt guidance, creativity, and sharpness controls. Max 4K.

## Headers

- `X-Webhook-URL` string, uri

## Request body

- object
  - `target_width` number — Output width in pixels. Defaults to the source width; output is scaled proportionally to at least 1920x1080 pixels in area.
  - `target_height` number — Output height in pixels. Defaults to the source height; output is scaled proportionally to at least 1920x1080 pixels in area.
  - `crop_to_fit` boolean — Crop the video to fill the target dimensions instead of preserving the source aspect ratio.
  - `creativity` 'low' | 'middle' | 'high' — How much creative detail Astra 2 adds while enhancing.
  - `sharp` number — Sharpening strength (0 to 1).
  - `realism` number — Realism strength (0 to 1); higher pushes toward photoreal detail.
  - `video_url` string, uri, required — Can be an external URL, base64 data URI, or uploaded asset URL.
  - `prompt` string — Optional prompt guiding the enhancement.
  - `frame_interpolation` boolean — Interpolate extra frames to raise the output frame rate.
  - `frame_interpolation_fps` integer — Target output frame rate (frame interpolation only).
  - `frame_interpolation_model` 'apo-8' | 'apf-2' | 'chr-2' | 'chf-3' — Frame interpolation model.
  - `frame_interpolation_slowmo` integer — Slow-motion factor, 1 keeps the original speed (frame interpolation only).
  - `frame_interpolation_fix_duplicate_frames` boolean — Detect and drop duplicate frames before interpolating.
  - `frame_interpolation_duplicate_sensitivity` number — Sensitivity of duplicate-frame detection (only when fix duplicate frames is on).
  - `video_output_preset` 'h264-high' | 'h265-main' | 'h265-main10' | 'prores-422-proxy' | 'prores-422-lt' | 'prores-422-std' | 'prores-422-hq' | 'av1-8-bit' | 'av1-10-bit' | 'vp9-good' | 'vp9-best' — Output encoder profile: codec, container, and bit depth.

## Response `200`

The resulting job data. This will be returned in a pending state until the job is completed. See [`/jobs/{id}`](#tag/default/get/jobs/{id}) for retrieving the results.

- object
  - `job_id` string, uuid, required
  - `status` 'backlogged' | 'queued' | 'scheduled' | 'processing' | 'sampling' | 'intermediate-complete' | 'completed' | 'failed' | 'cancelled', required
  - `created_at` string, date-time, required
  - `completed_at` unknown, required
  - `result` unknown, required
  - `error` object
    - `code` string, required
    - `message` string

## Other responses

- `400` — The request body is invalid.
- `401` — You are not authenticated.
- `402` — You have run out of credits.
- `429` — You have reached the maximum number of concurrent jobs.

## Changes

- **2026-09-05** `27a8a554d4fd` — 1 info
  - the `created_at` response's property pattern was changed from `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$` to `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$` for the status `200`

[Change history](https://skmtc.dev/krea/apis/krea-api/changes/generate/enhance/topaz/astra-2/post.md)

---

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