---
title: "H3 Text to Video"
method: POST
path: "/v2/hailuo/text-to-video"
tags: ["H3 Video"]
---

# H3 Text to Video

`POST /v2/hailuo/text-to-video`

## Request

- Base URL: `https://genaipro.io/api`
- URL: `https://genaipro.io/api/v2/hailuo/text-to-video`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/genaipro/apis/genaipro-api/docs/v2/hailuo/text-to-video/post.ts> (a function with typed inputs; its response is checked against the schema)

Generate one or more H3 / H3 Max videos from a text prompt. Returns immediately with `202 Accepted` and the task object.

### Example

```bash
curl -X POST https://genaipro.io/api/v2/hailuo/text-to-video \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A drone flying over mountains at sunrise",
    "model": "h3",
    "number_of_videos": 1,
    "aspect_ratio": "16:9",
    "duration": 10,
    "resolution": "768p"
  }'
```

Each video is priced separately — see *Credits* in the **H3 Video** tag (this example: 2 credits).

> **Rate limit:** 30 requests/minute — shared across all `/v2/hailuo` creation endpoints.

## Request body

- object
  - `prompt` string, required: Text description of the video (at most 2400 characters)
  - `model` 'h3' | 'h3_max', required: Video model — `h3` (H3) or `h3_max` (H3 Max). Case-insensitive.
  - `number_of_videos` integer, required: Number of videos to generate (1–4). Each is billed separately.
  - `aspect_ratio` '21:9' | '16:9' | '4:3' | '1:1' | '3:4' | '9:16': Video aspect ratio. `VIDEO_ASPECT_RATIO_LANDSCAPE` / `VIDEO_ASPECT_RATIO_PORTRAIT` are also accepted (= `16:9` / `9:16`).
  - `duration` integer: Clip length in whole seconds — 5–15 (`h3` at `2k`: 5–12).
  - `resolution` '480p' | '768p' | '2k': Output resolution — `h3`: `768p` or `2k`; `h3_max`: `480p` or `768p`.
  - `callback_url` string: Optional `http`/`https` webhook URL. When the task reaches `completed` or `failed`, GenAIPro POSTs the task object (same shape as `GET /v2/hailuo/tasks/{id}`) to this URL.

## Response `202`

Task accepted for processing. Use `id` to poll `GET /v2/hailuo/tasks/{id}`.

- H3Task: Task object returned by every `/v2/hailuo` endpoint — creation (`202`), `GET /tasks/{id}`, `GET /histories`, the `hailuo_task_updated` WebSocket event and the `callback_url` webhook.
  - `id` string: Task ID (use for `GET /v2/hailuo/tasks/{id}`)
  - `prompt` string: The prompt used for generation (for Boost HD, the source task's prompt)
  - `file_urls` string[]: URLs of the generated files (empty while processing). Public; deleted about 90 days after creation (then `404`) — download them yourself.
  - `status` 'processing' | 'completed' | 'failed': Task status
  - `error` string: Error message — present only when `status` is `failed`
  - `failed_slots` object[]: Outputs that failed while the rest completed (their credits are refunded). Present only when `status` is `completed` and some outputs failed; `file_urls` contains only the generated files.
    - `index` integer: 0-based position of the failed output in the request
    - `error` string
  - `task_type` string: `text_to_video`, `frames_to_video`, `reference_to_video` or `upscale_video` (image tasks: `create_image`)
  - `aspect_ratio` string: Aspect ratio of the task — `Auto` for frames-to-video (follows the start image)
  - `model` string: Model and options of the task. Video: `<model>_<resolution>_<duration>s` (e.g. `h3_768p_10s`, `h3_max_480p_5s`); Boost HD: `upscale_<resolution>` (e.g. `upscale_1440p`).
  - `number_of_outputs` integer: Number of videos (or images) requested
  - `created_at` string, date-time: Timestamp when the task was created

## Other responses

- `400`: Invalid request (missing fields, unsupported model / resolution / duration / aspect ratio, prompt too long or rejected by moderation, invalid `callback_url`, insufficient credits)
- `401`: Missing or invalid API token
- `403`: H3 video generation is not enabled for your account, or video generation is temporarily disabled
- `429`: Rate limit exceeded
- `503`: No capacity for this model right now (nothing is charged) — retry later

## Changes

- **2026-10-29** `8e065c159192`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/genaipro/apis/genaipro-api/changes/v2/hailuo/text-to-video/post.md)

---

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