---
title: "Video Generations"
method: POST
path: "/v1/videos/generations"
---

# Video Generations

`POST /v1/videos/generations`

## Request

- Base URL: `https://api.empiriolabs.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.empiriolabs.ai/v1/videos/generations`
- Auth: none declared
- TypeScript: <https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway/docs/v1/videos/generations/post.ts> (a function with typed inputs; its response is checked against the schema)

Route video generation requests to the model's worker, store results in Bunny.

Supports template resolution: when the request body includes
`template: "<slug>"`, the canonical prompt + recommended model +
default params are merged in before the worker call. See
template_store.apply_template for the exact merge rules.

Real-face Seedance bridge: when the resolved template has
`metadata.seedance_real_face_bridge: true` AND the chosen model is
one of the Seedance video workers, the gateway first calls Seedream
5.0 Lite to generate a synthetic portrait from the customer's
uploaded photo, then substitutes that synthetic image as the
Seedance input. Seedance refuses real-person photos unless the
source image was generated by Seedance or Seedream 5.0 Lite, so the
bridge unlocks Seedance for real-face templates while keeping
identity recognizable. Customer pays for both calls; see
`runbooks` and the Generation Templates section of AGENTS.md.

## Response `200`

Successful Response

- unknown

---

[API](https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway.md) - [All operations](https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway/llms.txt) - [OpenAPI document](https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway/revisions/94bb966b0560?raw)
