Video generation
Every video model HopBase sells — Seedance, Grok Imagine, MiniMax Hailuo, Kling, Wan 3.0, HappyHorse, and Gemini Omni — and the APIs that drive them.
HopBase sells six video model families. Five run on one asynchronous task API — submit to POST /v1/video/generate, then poll the task ID it returns — while Wan 3.0 and HappyHorse keep Alibaba's own DashScope paths and Gemini Omni returns video synchronously.
All video models
| Family | Model IDs | API | Reference |
|---|---|---|---|
| Seedance 2.5 / 2.0 | dreamina-seedance-2-5-260628, dreamina-seedance-2-0-* (overseas standard / fast / mini), doubao-seedance-2-*-a (China standard / fast / mini / 2.5) | Asynchronous task, POST /v1/video/generate | This page |
| Grok Imagine | grok-imagine-video-1.5 | Asynchronous task, POST /v1/video/generate | Grok Imagine video |
| MiniMax Hailuo | MiniMax-H3, MiniMax-H3-Max | Asynchronous task, POST /v1/video/generate | MiniMax Hailuo H3 |
| Kling | The kling-v3, kling-v2, and kling-v1-6 lines, plus motion control, avatar, and lip sync | Asynchronous task, POST /v1/video/generate | Kling video and image |
| Wan 3.0 / HappyHorse | wan3.0-video, happyhorse-1.1-t2v, happyhorse-1.1-i2v, happyhorse-1.1-r2v | DashScope native paths | Wan 3.0 and HappyHorse |
| Gemini Omni | gemini-omni-flash-preview | Synchronous, POST /v1beta/interactions | Gemini Omni video |
Each family sits in its own plan group, so a key that reaches one does not reach the others. Gemini Omni video is the exception in one respect: it shares the Gemini group with Gemini chat and image, so no separate video package is needed there. Call GET /v1/models with the key you intend to use and read the complete model ID from the response before sending paid work. Model IDs are exact: no aliases or bare names are registered, and an unknown name is rejected rather than routed to a near match.
This page documents the Seedance models. Every other family has its own page — follow the links above.
Seedance 2.5 and 2.0 asynchronous task API
China and overseas variants
| Group | Model ID | Supported resolutions | Scope |
|---|---|---|---|
| Seedance 2.0 Standard (China) | doubao-seedance-2-0-260128-a | 480p / 720p / 1080p | China |
| Seedance 2.0 Fast (China) | doubao-seedance-2-0-fast-260128-a | 480p / 720p | China |
| Seedance 2.0 Mini (China) | doubao-seedance-2-0-mini-260615-a | 480p / 720p | China |
| Seedance 2.5 (China) | doubao-seedance-2-5-260628-a | 480p / 720p / 1080p; integer 4-30 seconds or -1 | China |
| Seedance 2.0 Standard (Overseas) | dreamina-seedance-2-0-hcdreamina-seedance-2-0-epdreamina-seedance-2-0-260128 | 480p / 720p / 1080p / 4K | Overseas |
| Seedance 2.0 Fast (Overseas) | dreamina-seedance-2-0-fast-hcdreamina-seedance-2-0-fast-epdreamina-seedance-2-0-fast-260128 | 480p / 720p | Overseas |
| Seedance 2.0 Mini (Overseas) | dreamina-seedance-2-0-mini-hcdreamina-seedance-2-0-mini-epdreamina-seedance-2-0-mini-260615 | 480p / 720p | Overseas |
| Seedance 2.5 (Overseas) | dreamina-seedance-2-5-260628 | 480p / 720p; integer 4-30 seconds or -1 | Overseas |
Existing clients moving from overseas to China only need to replace the group key. The base_url, API paths, request parameters, and polling logic remain unchanged. Use GET /v1/models with the new key to select an available complete model ID.
Seedance 2.5 uses model ID dreamina-seedance-2-5-260628 in the overseas group and doubao-seedance-2-5-260628-a in the China group (the China variant additionally supports 1080p). For ordinary text-to-video and reference-media generation, duration defaults to -1 and accepts integer values from 4-30 seconds or -1; resolution defaults to 720p and accepts 480p or 720p; and ratio accepts 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, or adaptive. Some task modes have stricter requirements: video editing uses duration: -1 and ratio: adaptive, while extension and first/last-frame modes require ratio: adaptive. Generated audio, no watermark, and return_last_frame: true are the defaults. A completed task with return_last_frame: true includes last_frame_url.
Switching boundaries
The China variant now covers Standard, Fast, Mini, and Seedance 2.5 (model IDs above); only 4K is unsupported, so keep 4K requests on the overseas key. The China group also accepts the overseas dreamina-* IDs as compatibility aliases, so existing clients only need to swap the key. Seedance 2.5 reference media must use public HTTP(S) URLs; asset25-* IDs are not supported. Existing tasks remain queryable with their original task IDs.
1. Submit a generation task
curl https://api.hop-base.com/v1/video/generate \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "dreamina-seedance-2-5-260628",
"content": [
{ "type": "text", "text": "An orange cat runs across sunlit grass as the camera follows" }
],
"duration": 5,
"resolution": "720p",
"ratio": "16:9",
"generate_audio": false,
"watermark": false
}'The response contains a task.id such as vt... for later status queries. For image-to-video, append this object to content:
{
"type": "image_url",
"image_url": { "url": "https://example.com/reference.jpg" },
"role": "reference_image"
}Reference images of real people must go through the asset library
Seedance 2.0 runs real-person privacy detection on images passed directly in content. A public URL or data: base64 image that contains a recognizable real person — including photorealistic AI portraits — is rejected at submission with HTTP 400 InputImageSensitiveContentDetected.PrivacyInformation, naming the offending content[N]. Upload the same image with POST /v1/sd/assets (step 3 below) and reference it as asset://asset-id; images already inside the asset library skip that check and generate normally. Seedance 2.5 has no asset-library route, so it cannot accept real-person reference images.
| Parameter | Description |
|---|---|
model | Video model; see the model table below (required) |
content | Non-empty input array containing text, image_url, video_url, or audio_url; a text prompt is optional, and Seedance 2.5 also accepts audio-only input. Use first_frame / last_frame / reference_image for images and reference_video / reference_audio for video or audio. A Seedance 2.0 audio reference must be accompanied by an image or video reference. |
duration | Seedance 2.5 ordinary generation accepts integer 4-30 seconds or -1 (automatic; default). Seedance 2.0 keeps its existing model-specific range. Video editing requires -1; extension and first/last-frame modes follow their task-specific rules. |
resolution | Overseas Seedance 2.5 accepts 480p or 720p (default 720p). China Standard and China 2.5 support 480p, 720p, and 1080p; overseas Standard additionally supports 4k; Fast / Mini (overseas and China) support only 480p / 720p. |
ratio | Seedance 2.5 accepts 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, or adaptive; task-specific editing/extension modes may require adaptive. |
generate_audio | Whether to generate audio with the video |
watermark | Whether to add a watermark |
return_last_frame | Whether to return a relay URL for the generated video's final frame (Seedance 2.5) |
Other supported model parameters pass through unchanged.
Seedance 2.5 infers the task mode from your prompt
Seedance 2.5 has no explicit task-mode parameter. When a request carries a reference_video, the upstream classifies it as ordinary generation, video extension, or video editing based on the prompt text: a continuation-style prompt ("continue this clip", "extend the shot") is treated as video extension, and that mode requires ratio: "adaptive". Any other ratio fails with an upstream message such as identified your task as video extension based on your prompt. The failure happens upstream: the submit call still returns 200 and the task only turns failed during polling, with no charge. When a reference video is present and the prompt could read as continuing the source clip, send ratio: "adaptive". Seedance 2.0 has no extension or editing mode and is unaffected.
2. Poll task status
# Single task; polling every 5 seconds is recommended
curl https://api.hop-base.com/v1/video/tasks/vt-your-task-id \
-H "Authorization: Bearer sk-your-key"
# Task list; optionally append ?page=1&limit=20
curl https://api.hop-base.com/v1/video/tasks \
-H "Authorization: Bearer sk-your-key"status is pending, processing, completed, or failed. When complete, read the video URL from outputs. usage.completion_tokens contains the billable token count. 480p and 720p generation usually takes 2-5 minutes; 1080p and overseas-only 4K take longer.
Video URL expiration
outputs contains a HopBase relay URL on api.hop-base.com with browser playback and Range requests. Current Seedance relay signatures are valid for 30 days. If the response includes source_outputs, those URLs are valid for 24 hours. Download required results promptly. URL expiry is separate from task and uploaded-asset retention.
3. Upload Seedance 2.0 reference media
curl https://api.hop-base.com/v1/sd/assets \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"URL": "https://example.com/your-image.jpg",
"Name": "character_front",
"AssetType": "Image"
}'The returned data.Id is the asset ID. Reference it as asset://asset-id during Seedance 2.0 generation. URL must be publicly accessible. Use AssetType: Image, Video, or Audio to match the reference item, then query the asset with GET /v1/sd/assets/{asset-id} until it is ready. This upload flow applies to Seedance 2.0. Seedance 2.5 reference media must use public HTTP(S) URLs directly in content. The upload itself accepts a public URL only — no base64 or multipart — so host the file somewhere reachable first. Uploading is optional for ordinary reference images and required for any image containing a real person.
Seedance 2.5 reference media
asset25-* IDs are not supported. Pass a public HTTP(S) URL in the matching content item instead.
Reference media validation rules
All reference media is validated synchronously at submission. Invalid media returns an immediate 400 with a specific error code (such as invalid_image_aspect_ratio) and incurs no task cost. Pre-checking against the table below on your side eliminates most wasted calls:
| Item | Image | Video | Audio |
|---|---|---|---|
| Formats | jpg / jpeg / png / webp / bmp / tif / tiff / gif / heic / heif | mp4 / mov (container must be MP4/ISO-BMFF) | wav / mp3 |
| Size | < 30MB | ≤ 200MB | ≤ 15MB |
| Dimensions | 300-6000 px per side | 300-6000 px per side; total pixels 409,600-8,295,044 | - |
| Aspect ratio | 0.4-2.5 | 0.4-2.5 | - |
| Duration | - | 2.0: 2-15s; 2.5: 2-30s (combined total under the same cap) | 2.0: 2-15s; 2.5: 2-30s (combined total under the same cap) |
| Frame rate | - | 24-60 FPS | - |
| Count limits | 2.0: up to 9; 2.5: up to 30; frame mode at most 2 | 2.0: up to 3; 2.5: up to 10 | 2.0: up to 3 (must pair with an image or video reference); 2.5: up to 10 |
Media URL must be a publicly reachable http(s) address: private / loopback / link-local addresses and URLs with credentials are rejected, with at most 3 redirects; images and audio may also be passed inline as data: base64. Role constraints: frame mode takes at most 2 images — a single image must be first_frame, two images must be exactly one first_frame and one last_frame; multimodal references must be declared explicitly as reference_image and cannot be mixed with frame mode.
Rates
Official list prices are on the pricing page. Your own rate is the one shown in the signed-in model catalog, and each request's actual charge is in your usage record.