---
title: "Generate a standalone AI video clip"
method: POST
path: "/clips"
tags: ["Clips"]
---

# Generate a standalone AI video clip

`POST /clips`

Starts generating a single AI video clip (1-30 seconds) from a text prompt, an image, or both. This is different from `POST /videos/generate`: no narration, no captions, just one raw clip.

**Flow:** pick a model from `GET /clip-models`, create the clip, then poll `GET /clips/{id}` until `status` is `completed` and download from `outputUrl`. Typical generation takes 1-3 minutes.

**Cost:** per second of clip, by model and resolution (see `creditsPerSecondByResolution` in `GET /clip-models`). Credits are reserved when the clip starts and refunded automatically if generation fails.

**Requires an active paid subscription.**

## Request body

- object
  - `title` string — Optional clip title. Defaults to the start of the prompt.
  - `modelKey` string, required — The generation model to use. Get valid keys, capabilities, and per-second costs from `GET /clip-models`.
  - `prompt` string — What the clip should show. Required for text-to-video models; optional when animating from images.
  - `aspectRatio` 'auto' | '16:9' | '9:16' | '4:3' | '3:4' | '1:1' | '21:9' | '3:2' | '2:3' | '9:21' | '5:4' | '4:5' — Clip dimensions. Check the model's `supportedAspectRatios` from `GET /clip-models`. Default: "16:9".
  - `resolution` string — Output resolution (e.g. "720p", "1080p"). Check the model's `supportedResolutions`. Higher resolutions cost more credits per second. Default: "720p".
  - `durationSeconds` union — Clip length in seconds, or "auto" for models that support automatic duration. Default: 5.
    - integer
    - 'auto'
  - `firstFrameUrl` string — Public image URL to use as the first frame (image-to-video). Only for models with `supportsFirstFrame`.
  - `lastFrameUrl` string — Public image URL to use as the last frame. Only for models with `supportsLastFrame`.
  - `referenceImageUrls` string[] — Public image URLs used as style/subject references. Only for models with `supportsReferenceImages`; respect `maxReferenceImages`.
  - `referenceVideoUrls` string[] — Public video URLs used for motion, editing, or extension. Check model capabilities first.
  - `referenceAudioUrls` string[] — Public audio URLs used for voice, lip sync, rhythm, or timing. Check model capabilities first.

## Response `200`

OK

- object
  - `id` string, uuid, required — Clip ID. Poll `GET /clips/{id}` until completed.
  - `status` 'pending', required — Initial status.
  - `estimatedCredits` number, required — Credits reserved for this generation.

## Other responses

- `401` — 401
- `402` — 402
- `403` — 403

---

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