Language
TensorFusion Docs

Other video models

Parameters, sizes, aspect ratios, and input/output reference for Hailuo 3, Grok Imagine, Kling, Veo, Gemini Omni, and Motion.

Every video model other than the Seedance family is served by the le-video provider and shares one asynchronous task API: submit and receive a task ID, poll for status, download the MP4 when it completes.

Each model accepts only its own fixed enumeration of sizes and durations, and no two are alike. Any value outside the table returns 400 and is never forwarded upstream. The tables below are the complete enumerations — there is no "derivable aspect ratio" rule here.

The Seedance family (dreamina-seedance-*) is a separate group — see Dreamina video generation.

Model overview

These models are billed per second of video (meter video_seconds, unit: second).

Model IDNameInputAudioDuration (s)
hailuo-3MiniMax Hailuo 3Text-to-video / image-to-videoAlways on, cannot be disabled5–15 (default 5)
grok-imagine-1.5Grok Imagine 1.5Image-to-video onlyToggleable (default on)3–15 (default 6)
kling-3.0-turboKling 3.0 TurboText-to-video / image-to-videoToggleable (default on)3–15 (default 5)
veo-3.1-generate-001Veo 3.1Text-to-video / image-to-videoToggleable (default on)4 / 6 / 8 (default 8)
gemini-omni-flashGemini Omni FlashText-to-video / image-to-videoNot supported3–10 (default 8)
motion_2.0-fastMotion 2.0 FastText-to-video / image-to-videoNot supportedFixed 5

hailuo-03 is an equivalent spelling of hailuo-3; both IDs work and are identical in capability and billing. Treat the unit price returned by the console or the model discovery endpoint as authoritative. Models your organization has not enabled return 403.

Sizes and aspect ratios

size takes a "WIDTHxHEIGHT" string. The tables are the complete set of legal values.

hailuo-3 / hailuo-03

2K only; 720p and below are rejected.

sizeAspect ratio
3360x144021:9
2560x144016:9
1920x14404:3
1440x14401:1 (default)
1440x19203:4
1440x25609:16

grok-imagine-1.5

sizeAspect ratio
1280x72016:9 (default)
720x12809:16
960x9601:1
544x5441:1 (small)
736x40016:9 (small)
400x7369:16 (small)

kling-3.0-turbo

sizeAspect ratioTier
1280x72016:9720p (default)
960x9601:1720p
720x12809:16720p
1920x108016:91080p
1440x14401:11080p
1080x19209:161080p

veo-3.1-generate-001

sizeAspect ratioTier
1280x72016:9720p (default)
720x12809:16720p
1920x108016:91080p
1080x19209:161080p
3840x216016:94K
2160x38409:164K

gemini-omni-flash

sizeAspect ratio
1280x72016:9 (default)
720x12809:16

motion_2.0-fast

sizeAspect ratio
1280x72016:9 (only legal value)

Input and output

ModelText-to-videoImage-to-videoReference image limitOutput
hailuo-3YesYes4MP4 with audio
grok-imagine-1.5NoRequired1 (first frame)MP4
kling-3.0-turboYesYes1 (first frame)MP4
veo-3.1-generate-001YesYes3MP4
gemini-omni-flashYesYes4MP4 (no audio)
motion_2.0-fastYesYes1 (first frame)MP4 (no audio)

grok-imagine-1.5 has no text-to-video path upstream. Submitting without input_reference returns 400 invalid_reference and is never forwarded upstream.

Endpoints

OperationEndpoint
Create taskPOST /v1/videos
Get taskGET /v1/videos/{task_id}
Download resultGET /v1/videos/{task_id}/content

The key must carry the ai:video scope:

Authorization: Bearer $TOS_API_KEY

Request parameters

FieldTypeRequiredDescription
modelstringYesA model ID from the table above
promptstringYesAn empty prompt returns 400
sizestringNo"WIDTHxHEIGHT". A value outside the model's enumeration snaps to the legal size with the closest aspect ratio; omitting it uses the model's default
durationnumberNoSeconds. A value outside the enumeration snaps to the nearest legal value, ties rounding up; omitting it uses the default. Aliases: duration_seconds, seconds
audiobooleanNoOnly meaningful for models that support audio. hailuo-3 always produces audio regardless
input_referencestring or string[]Required for grok-imagine-1.5Publicly reachable http(s) image URL. Exceeding the model's reference limit returns 400

Billing follows the duration actually rendered, i.e. the value after snapping. Asking a model that only accepts 4/6/8/10 seconds for 5 seconds renders 6 seconds and is billed as 6.

Text-to-video

curl --noproxy '*' "https://ai.tos.run/v1/videos" \
  -H "Authorization: Bearer $TOS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "hailuo-3",
    "prompt": "A red apple rolling slowly across a white table, cinematic",
    "size": "2560x1440",
    "duration": 5
  }'
{
  "id": "78a2ab60-9a53-4d2c-99fb-b5f8ca8d4018",
  "task_id": "78a2ab60-9a53-4d2c-99fb-b5f8ca8d4018",
  "object": "video",
  "model": "hailuo-3",
  "status": "queued",
  "progress": 0,
  "created_at": 1786370088,
  "expires_at": 1786974888,
  "metadata": { "provider": "le-video" }
}

Image-to-video

grok-imagine-1.5 must use this path:

curl --noproxy '*' "https://ai.tos.run/v1/videos" \
  -H "Authorization: Bearer $TOS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-imagine-1.5",
    "prompt": "Slow camera push-in with natural light",
    "size": "1280x720",
    "duration": 6,
    "input_reference": "https://example.com/first-frame.jpg"
  }'

The reference image must be publicly downloadable and stay reachable for the duration of the task — upstream fetches it while generating.

Polling and download

FieldDescription
id / task_idGateway task ID, used for both polling and download
statusqueuedin_progresscompleted / failed
progress0–100, display only; never use it to decide terminal state
metadata.urlResult URL, present once status is completed
expires_atWhen the stored result expires

status is the only terminal-state signal.

curl --noproxy '*' "https://ai.tos.run/v1/videos/$TASK_ID" \
  -H "Authorization: Bearer $TOS_API_KEY"

curl --noproxy '*' "https://ai.tos.run/v1/videos/$TASK_ID/content" \
  -H "Authorization: Bearer $TOS_API_KEY" -o output.mp4

2K generation takes considerably longer than 720p: a 5-second 2K clip from hailuo-3 typically needs more than 7 minutes. Poll no more often than every 15 seconds.

Errors

HTTPcodeMeaning
400invalid_sizeSize is outside the model's enumeration. The error lists every legal size for that model
400invalid_durationDuration is outside the model's enumeration
400invalid_referenceMissing a required reference image, or more references than the model allows
400model_not_available_for_routingThe model ID is not in the video catalog
403model_not_authorized_for_orgYour organization has not enabled this model
502 / 504upstream_errorUpstream returned an error or timed out

On this page