> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.beatapi.io/video-api/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.beatapi.io/_mcp/server. # BeatAPI Video API > Compare BeatAPI video generation models, supported input modes, durations, resolutions, audio controls, and model-specific request contracts. # Video API Create one asynchronous video generation task with a stable BeatAPI model ID. | Model | Input modes | Required fields | Main controls | | ----------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------- | ------------------------------------------------------- | | [`minimax-h3`](/video-api/minimax-h3) | Original ID, retains Fast contract and prices | `model`, `prompt` | 4–15s, up to 2K | | [`minimax-h3-fast`](/video-api/minimax-h3-fast) | Explicit Fast alias of `minimax-h3` | `model`, `prompt` | Same input limits and prices as the original ID | | [`minimax-h3-normal`](/video-api/minimax-h3-normal) | Slower, half-price text, frames, or visual references | `model`, `prompt` | 3–15s; 480p/768p/1080p; native audio, no audio input | | [`grok-imagine-video-1.5`](/video-api/grok-imagine-video-1-5) | Text, first frame, up to seven reference images | `model`, `prompt` | 1–15s, 480p/720p/1080p; 1080p accepts at most one image | | [`seedance-2`](/video-api/seedance-2) | Text, first/last frames, multimodal references | `model`, `prompt` | 4–15s, up to 4K, generated audio | | [`seedance-2-fast`](/video-api/seedance-2-fast) | Text, first/last frames, multimodal references | `model`, `prompt` | 4–15s, 480p/720p, generated audio | | [`seedance-2-mini`](/video-api/seedance-2-mini) | Text, first/last frames, multimodal references | `model`, `prompt` | 4–15s, 480p/720p, no generated audio | | [`veo-3.1`](/video-api/veo-3-1) | Text, first/last frames, reference images | `model`, `prompt` | Fixed model duration and quality | | [`seedance-2.5`](/video-api/seedance-2-5) | Text, first/last frames, larger multimodal reference sets | `model`, `prompt` | 4–30s, 720p, generated audio and seed | | [`kling-3`](/video-api/kling-3) | Text, first/last frames, multi-shot, reusable elements | `model`, `prompt` | 3–15s, up to 4K, generated sound | | [`kling-2.6-motion-control`](/video-api/kling-2-6-motion-control) | One uploaded character image + one uploaded motion video | `model`, `images`, `reference_videos` | 3–30s, 720p/1080p, detected-duration billing | | [`kling-3-motion-control`](/video-api/kling-3-motion-control) | Motion transfer with orientation and background controls | `model`, `images`, `reference_videos` | 3–30s, 720p/1080p, detected-duration billing | | [`wan-3.0`](/video-api/wan-3-0) | Text, first frame, reference videos and audio | `model`, `prompt` | 2–30s, 480p/720p/1080p; a reference video bills at 1.5x | | [`wan-3.0-prime`](/video-api/wan-3-0-prime) | Same inputs as Wan 3.0, on a faster queue | `model`, `prompt` | 2–30s, 480p/720p/1080p, same price as Wan 3.0 | | [`happyhorse-1.0`](/video-api/happyhorse-1-0) | Image to video only, up to nine source angles | `model`, `prompt`, `images` | 3–15s, 720p/1080p | | [`happyhorse-1.1`](/video-api/happyhorse-1-1) | Same contract as 1.0 at a lower per-second rate | `model`, `prompt`, `images` | 3–15s, 720p/1080p | | [`minimax-h3-max`](/video-api/minimax-h3-max) | Text, first frame, first and last frames | `model`, `prompt` | From 5s, 480P/768P, seed | | [`minimax-h3-max-turbo`](/video-api/minimax-h3-max-turbo) | Same contract as H3 Max, about 2.5x quicker | `model`, `prompt` | From 5s, 480P/768P, half the per-second rate | Open the matching model page for every field, default, enum, combination rule, request example, response, and error behavior. ## List available models `GET /v1/media/models` | Parameter | Location | Type | Required | Allowed values | | ------------ | -------- | ------ | -------- | ---------------- | | `media_type` | Query | string | No | `image`, `video` | This public endpoint does not require authentication. ```bash curl "https://api.beatapi.io/v1/media/models?media_type=video" ``` ```json { "data": { "object": "list", "data": [ { "id": "minimax-h3", "object": "generation_model", "name": "MiniMax H3", "media_type": "video", "input_modes": ["text", "frames", "reference"] } ] } } ``` | Field | Type | Meaning | | ------------- | --------- | --------------------------------------------- | | `id` | string | Stable public model alias | | `object` | string | `generation_model` | | `name` | string | Display name | | `media_type` | string | `image` or `video` | | `input_modes` | string\[] | Any of `text`, `image`, `frames`, `reference` | Internal provider routing is not part of the public contract. ## Shared create contract `POST /v1/videos/tasks` | Header | Type | Required | Rules | | ----------------- | ------ | --------------- | ------------------------------------------------ | | `Authorization` | string | Yes | `Bearer ` | | `Content-Type` | string | Yes | `application/json` | | `Idempotency-Key` | string | No, recommended | Up to 255 characters; one key per logical create | The body must match exactly one model schema. `model` is the discriminator; unknown fields are rejected. ```bash curl https://api.beatapi.io/v1/videos/tasks \ -X POST \ -H "Authorization: Bearer $BEATAPI_API_KEY" \ -H "Idempotency-Key: video-seedance-2-5-001" \ -H "Content-Type: application/json" \ -d '{ "model": "seedance-2.5", "prompt": "A cinematic tracking shot through a rain-lit night market.", "duration": 5, "aspect_ratio": "16:9", "resolution": "720p" }' ``` A valid request returns `201 Created` with `data.id`, `task_kind="video"`, the selected `model`, `status="queued"`, usage metrics, and `request_id`. Poll `GET /v1/tasks/{task_id}` every 5–10 seconds until `succeeded` or `failed`; successful video is in `data.output.media[]` and `data.output.r2_url`. An exact idempotent replay returns the accepted task. Reusing a key with a different body returns `409 idempotency_conflict`. ## Shared errors | HTTP | Common code | Client action | | ----- | ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | | `400` | `bad_request` | Fix fields, values, combinations, counts, or media URLs | | `400` | `content_policy_violation` | Change the prompt or input; do not resend unchanged | | `401` | `missing_api_key` / `invalid_api_key` | Send the Bearer key, or replace a wrong, expired, disabled, or exhausted one | | `402` | `insufficient_credits` | Top up before creating a new task | | `403` | `forbidden` | Not allowed for this key or account — for example a model not available on free credit | | `409` | `idempotency_conflict` | Reuse the key only with the exact same body | | `429` | `rate_limit_exceeded` / `user_concurrency_exceeded` | Honor `Retry-After` or wait for active work to finish | | `500` | `internal_error` | Retry once with backoff | | `503` | `processing_unavailable` / `processing_timeout` / `processing_failed` / `result_transfer_failed` | Retry with backoff; nothing was charged | Error responses include `error.code`, an English `error.message`, `error.retryable`, `error.request_id`, and `error.retry_after_seconds` on a `429`. A task that fails after it was accepted is still read with `200`: see `data.error_code` and [Errors](/errors) for every code and retry rule. The per-model pages below are the production request contracts. > Compare BeatAPI video generation models, supported input modes, durations, resolutions, audio controls, and model-specific request contracts. ## Docs - [MiniMax H3](https://docs.beatapi.io/video-api/minimax-h3.md): The original MiniMax H3 model ID keeps the Fast speed tier, prices, and request contract. For half-price slower generation at 480p, 768p, or 1080p, use minimax-h3-normal. - [MiniMax H3 Fast](https://docs.beatapi.io/video-api/minimax-h3-fast.md): The explicit Fast alias of minimax-h3, with the same prices, input contract, and speed tier and 4–15 second output up to 2K. - [MiniMax H3 Normal](https://docs.beatapi.io/video-api/minimax-h3-normal.md): Slower MiniMax H3 generation at half the Fast price. Generate 3–15 second videos with native audio at 480p, 768p, or 1080p. - [MiniMax H3 Max](https://docs.beatapi.io/video-api/minimax-h3-max.md): A post-trained H3 tuned for prompt adherence. Text or first and last frames, at 480P or 768P. - [MiniMax H3 Max Turbo](https://docs.beatapi.io/video-api/minimax-h3-max-turbo.md): H3 Max Turbo uses its own listed per-second rates and the H3 Max request contract. Completion time depends on the request and current service conditions. - [Seedance 2](https://docs.beatapi.io/video-api/seedance-2.md): Generate 4–15 second videos from text, first/last frames, or multimodal references, with optional generated audio. - [Seedance 2 Fast](https://docs.beatapi.io/video-api/seedance-2-fast.md): Generate 4–15 second 480p or 720p videos through the official faster Seedance 2.0 route, with optional generated audio. - [Seedance 2 Mini](https://docs.beatapi.io/video-api/seedance-2-mini.md): Generate low-cost 4–15 second 480p or 720p drafts through the official Seedance 2.0 Mini route without generated audio. - [Seedance 2.5](https://docs.beatapi.io/video-api/seedance-2-5.md): Generate 4–30 second 480p, 720p, or 1080p videos from text, first/last frames, or larger multimodal reference sets. - [Veo 3.1](https://docs.beatapi.io/video-api/veo-3-1.md): Generate fixed 8-second videos with selectable Quality, Fast, or Lite tiers and 720p, 1080p, or 4K output. Text and frame generation default to Quality at 720p; reference images require Fast or Lite. - [Kling 3](https://docs.beatapi.io/video-api/kling-3.md): Generate 3–15 second videos from text or frames, with optional multi-shot and reusable-element controls up to 4K. - [Kling 2.6 Motion Control](https://docs.beatapi.io/video-api/kling-2-6-motion-control.md): Transfer motion from one uploaded MP4/MOV video to one uploaded character image at 720p or 1080p; image orientation supports up to 10 seconds and video orientation up to 30 seconds. - [Kling 3.0 Motion Control](https://docs.beatapi.io/video-api/kling-3-motion-control.md): Transfer full-body motion with selectable character orientation and background source at 720p or 1080p; image orientation supports up to 10 seconds and video orientation up to 30 seconds. - [Wan 3.0](https://docs.beatapi.io/video-api/wan-3-0.md): Render 2–30 seconds in a single pass at 480p, 720p, or 1080p — the longest single take in the catalog. - [Wan 3.0 Prime](https://docs.beatapi.io/video-api/wan-3-0-prime.md): The priority render tier of Wan 3.0 — the same 2–30 second output at the same price, served from the faster queue. - [HappyHorse 1.0](https://docs.beatapi.io/video-api/happyhorse-1-0.md): Animate a photo into 3–15 seconds of 720p or 1080p video. Image input is required. - [HappyHorse 1.1](https://docs.beatapi.io/video-api/happyhorse-1-1.md): The cheaper HappyHorse — the same image-to-video contract as 1.0 at a lower per-second rate. - [Grok Imagine Video 1.5](https://docs.beatapi.io/video-api/grok-imagine-video-1-5.md): Generate 1–15 second videos from text, one first frame, or up to seven image references at 480p, 720p, or 1080p. 1080p accepts at most one image.