---
url: /orchestration/reference/operations/InvokeVideoGenStepTemplate.md
description: 'POST /v2/consumer/recipes/videoGen — Video generation'
---

> Documentation index: https://developer.civitai.com/llms.txt — every page on this site has a markdown version at its URL + `.md`.

# Video generation

`POST https://orchestration.civitai.com/v2/consumer/recipes/videoGen`

Operation `InvokeVideoGenStepTemplate` · Recipes · Civitai Orchestration API, generated from the published OpenAPI spec ([v2-consumers.json](https://developer.civitai.com/openapi/v2-consumers.json)); the interactive HTML page is this URL without `.md`.

Generate videos through text/image inputs using any of our supported engines

## Authentication

Send `Authorization: Bearer <token>` (the spec's `ApiKey` scheme); this operation documents `401 Unauthorized` for a missing or invalid token. See [Authentication](https://developer.civitai.com/orchestration/guide/authentication.md).

## Parameters

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `experimental` | query | boolean | no |  |
| `allowMatureContent` | query | boolean | no |  |
| `whatif` | query | boolean | no |  |
| `ephemeral` | query | boolean | no |  |
| `tier` | query | `WorkflowTier` (one of `paid`, `free`) | no | How a workflow is paid for. |

## Request body

Optional. Content types: `application/json`, `text/json`, `application/*+json`.

Schema `VideoGenInput`.

Polymorphic: the `engine` field selects the concrete type — `haiper` → `HaiperVideoGenInput`, `mochi` → `MochiVideoGenInput`, `kling` → `KlingVideoGenInput`, `minimax` → `MiniMaxVideoGenInput`, `lightricks` → `LightricksVideoGenInput`, `ltx2` → `ComfyLtx2VideoGenInput`, `ltx2.3` → `ComfyLtx23VideoGenInput`, `ltx2.5` → `ComfyLtx25VideoGenInput`, `hunyuan` → `HunyuanVdeoGenInput`, `wan` → `WanVideoGenInput`, `vidu` → `ViduVideoGenInput`, `vidu-q3` → `ViduQ3VideoGenInput`, `vidu-q4` → `ViduQ4VideoGenInput`, `veo3` → `Veo3VideoGenInput`, `gemini-omni` → `GeminiOmniVideoGenInput`, `sora` → `SoraVideoGenInput`, `kling-v3` → `KlingV3VideoGenInput`, `grok` → `GrokVideoGenInput`, `seedance` → `SeedanceVideoGenInput`, `happyHorse` → `HappyHorseVideoGenInput`, `heygen` → `HeyGenVideoGenInput`, `minimax-h3-max` → `MiniMaxH3MaxVideoGenInput`, `minimax-h3` → `MiniMaxH3VideoGenInput`, `minimax-h3-comfy` → `ComfyMiniMaxH3VideoGenInput`, `flux` → `Flux3VideoGenInput`.

| Field | Type | Required | Description |
|---|---|---|---|
| `engine` | string | yes |  |
| `prompt` | string | yes |  |

## Responses

### 200 OK

Content type: `application/json`.

Schema `VideoGenOutput`.

| Field | Type | Required | Description |
|---|---|---|---|
| `video` | `VideoBlob` | no |  |
| `additionalVideos` | array of `VideoBlob`, nullable | no | Extra videos when Quantity > 1, produced by engines that batch multiple videos in one job (e.g. LTX 2.3); `video` is always the primary slot. Null/empty for single-output engines. |
| `draftCache` | `Blob` | no | Encrypted draft cache produced by a FLUX-3 draft generation. Pass its url as the draftCache input of a later draftEnhance step to re-render the draft at full quality. |

### 400 Bad Request

Content type: `application/json`.

Schema `ProblemDetails`.

| Field | Type | Required | Description |
|---|---|---|---|
| `type` | string, nullable | no |  |
| `title` | string, nullable | no |  |
| `status` | integer (int32), nullable | no |  |
| `detail` | string, nullable | no |  |
| `instance` | string, nullable | no |  |

### 401 Unauthorized

Content type: `application/json`.

Schema `ProblemDetails` — fields as listed above.

### 403 Forbidden

Content type: `application/json`.

Schema `ProblemDetails` — fields as listed above.
