BeatAPI Video API

Video API

Create one asynchronous video generation task with a stable BeatAPI model ID.

ModelInput modesRequired fieldsMain controls
minimax-h3Text, first/last frames, multimodal referencesmodel, prompt4–15s, up to 2K
grok-imagine-video-1.5Text, first frame, up to seven reference imagesmodel, prompt1–15s, 480p/720p/1080p; 1080p accepts at most one image
seedance-2Text, first/last frames, multimodal referencesmodel, prompt4–15s, up to 4K, generated audio
seedance-2-fastText, first/last frames, multimodal referencesmodel, prompt4–15s, 480p/720p, generated audio
seedance-2-miniText, first/last frames, multimodal referencesmodel, prompt4–15s, 480p/720p, no generated audio
veo-3.1Text, first/last frames, reference imagesmodel, promptFixed model duration and quality
seedance-2.5Text, first/last frames, larger multimodal reference setsmodel, prompt4–30s, 720p, generated audio and seed
kling-3Text, first/last frames, multi-shot, reusable elementsmodel, prompt3–15s, up to 4K, generated sound
kling-2.6-motion-controlOne uploaded character image + one uploaded motion videomodel, images, reference_videos3–30s, 720p/1080p, detected-duration billing
kling-3-motion-controlMotion transfer with orientation and background controlsmodel, images, reference_videos3–30s, 720p/1080p, detected-duration billing
wan-3.0Text, first frame, reference videos and audiomodel, prompt2–30s, 480p/720p/1080p; a reference video bills at 1.5x
wan-3.0-primeSame inputs as Wan 3.0, on a faster queuemodel, prompt2–30s, 480p/720p/1080p, same price as Wan 3.0
happyhorse-1.0Image to video only, up to nine source anglesmodel, prompt, images3–15s, 720p/1080p
happyhorse-1.1Same contract as 1.0 at a lower per-second ratemodel, prompt, images3–15s, 720p/1080p
minimax-h3-maxText, first frame, first and last framesmodel, promptFrom 1s, 480P/768P, seed
minimax-h3-max-turboSame contract as H3 Max, about 2.5x quickermodel, promptFrom 1s, 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

ParameterLocationTypeRequiredAllowed values
media_typeQuerystringNoimage, video

This public endpoint does not require authentication.

$curl "https://api.beatapi.io/v1/media/models?media_type=video"
1{
2 "data": {
3 "object": "list",
4 "data": [
5 {
6 "id": "minimax-h3",
7 "object": "generation_model",
8 "name": "MiniMax H3",
9 "media_type": "video",
10 "input_modes": ["text", "frames", "reference"]
11 }
12 ]
13 }
14}
FieldTypeMeaning
idstringStable public model alias
objectstringgeneration_model
namestringDisplay name
media_typestringimage or video
input_modesstring[]Any of text, image, frames, reference

Internal provider routing is not part of the public contract.

Shared create contract

POST /v1/videos/tasks

HeaderTypeRequiredRules
AuthorizationstringYesBearer <BEATAPI_API_KEY>
Content-TypestringYesapplication/json
Idempotency-KeystringNo, recommendedUp to 255 characters; one key per logical create

The body must match exactly one model schema. model is the discriminator; unknown fields are rejected.

$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

HTTPCommon codeClient action
400bad_requestFix fields, values, combinations, counts, or media URLs
401unauthorizedCheck the Bearer key
402insufficient_creditsAdd credits before creating a new task
409idempotency_conflictReuse the key only with the exact same body
429Rate or concurrency codeHonor the retry delay or wait for active work to finish

Error responses include error.code, error.message, error.request_id, and optional error.retry_after_seconds. The per-model pages below are the production request contracts.