---
title: "Generate Video (Async)"
method: POST
path: "/api/v1/videos/create"
tags: ["Videos"]
---

# Generate Video (Async)

`POST /api/v1/videos/create`

Generate a video asynchronously. Supports two modes:

**Image-to-Video (i2v):** Provide an `imageUrl` and a `category` to animate an existing image with a specific motion/position. You must also provide a `videoPath` for the output location. Poll `GET /api/v1/videos/get?videoId={id}` for status.

**Text-to-Video (t2v):** Provide a `character_id` and a `prompt` — the system generates a starting image from the character and animates it automatically. Poll `GET /api/v1/jobs/{job_id}/status` for status.

## Request body

- object — Two modes are supported depending on which fields you provide. For image-to-video, provide `imageUrl`, `category`, and `videoPath`. For text-to-video, provide `character_id`.
  - `prompt` string, required — Description of the video content or motion to generate.
  - `imageUrl` string, uri — **Image-to-Video mode.** URL of the source image to animate. Required for i2v mode.
  - `category` 'blowjob' | 'pov_blowjob' | 'cowgirl' | 'pov_cowgirl' | 'reverse_cowgirl' | 'pov_reverse_cowgirl' | 'pov_missionary' | 'doggy' | 'pov_doggy' | 'cunnilingus' | 'handjob' | 'pov_handjob' | 'foot_job' | 'pov_foot_job' | 'tit_job' | 'standing_up_sex_from_behind' — **Image-to-Video mode.** Motion/position category for the video. Determines what kind of motion is applied to the source image. Required for i2v mode.
  - `videoPath` string — **Image-to-Video mode.** S3 storage path for the output video (e.g., `videos/{customerId}/{timestamp}-5s.mp4`). Required for i2v mode.
  - `videoLength` 5 | 10 | 15 — **Image-to-Video mode.** Video length in seconds. Must be 5, 10, or 15.
  - `character_id` string — **Text-to-Video mode.** Character identifier. The system generates a starting image from the character and animates it.
  - `image_url` string, uri — **Text-to-Video mode.** Alternative to character_id — provide your own source image. The system will animate it based on the prompt with automatic action detection.
  - `prompt_enhancement` boolean — **Text-to-Video mode.** When enabled, the system enhances your prompt using AI to improve video quality and motion. Enabled by default.
  - `resolution` union — **Text-to-Video mode.** Output resolution. Can be an aspect ratio string or [width, height] array. Aspect ratio presets map to: 9:16 → 720×1800, 16:9 → 1280×720, 1:1 → 1024×1024, 4:3 → 960×720, 3:4 → 720×960.
    - integer[] — Explicit [width, height] in pixels
    - '9:16' | '16:9' | '1:1' | '4:3' | '3:4' — Aspect ratio preset
  - `length` 5 | 10 | 15 — **Text-to-Video mode.** Video length in seconds. Must be 5, 10, or 15.

## Response `201`

Video generation job accepted (Image-to-Video mode)

- object
  - `id` string — Video job ID. Poll status with GET /api/v1/videos/get?videoId={id}
  - `status` 'GENERATING' — Initial job status

## Other responses

- `202` — Video generation job accepted (Text-to-Video mode)
- `400` — Validation error or missing required fields

---

[API](https://skmtc.dev/oh/apis/ohapi-documentation.md) · [All operations](https://skmtc.dev/oh/apis/ohapi-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/oh/ohapi-documentation/revisions/b623c2e9cb65/schema)
