Skip to content

Video overview

Compare every video generation family HopBase sells, and learn the submit, poll, download, balance, and failure rules they share.

ItemValue
Base URLhttps://api.hop-base.com/v1
Submit a taskPOST /v1/video/generate
Poll a taskGET /v1/video/tasks/{task_id}

Video generation is asynchronous: submit a task to get a task ID, poll until it finishes, then download the clip before its link expires.

# 1. Submit a task and keep the returned task.id (shaped like vt…)
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"
      }
    ]
  }'

# 2. Query every 5 seconds until task.status is completed
#    The clip URL is in task.outputs
curl https://api.hop-base.com/v1/video/tasks/vt-your-task-id \
  -H "Authorization: Bearer sk-your-key"

Choose a family

HopBase sells six video model families. Every family follows the same async flow below: submit → poll → download.

FamilyResolutionsDuration (s)ReferencesAudioOfficial price
Seedance
Multimodal-reference video; overseas 2.0 Standard is the only 4K option
480p–1080p, 4K2.0: 4–15; 2.5: 4–30Image · video · audiogenerate_audio$2.06from/ 1M tokens
Kling
First/last frames, subject references, motion control, avatar, and lip sync
720p–4K, per modelPer modelImage · videoAudio-capable models$0.0441from/ second
MiniMax Hailuo
24 FPS native stereo; dialogue and narration generated with the picture
H3: 768P / 2K; H3-Max: 480P / 768P; H3-SelfHosted: 480P / 768P / 1080P / 2K / 4KH3: 4-15; H3-Max: 5-15; H3-SelfHosted: 4-15H3: image · video · audioBuilt in$0.05from/ second
Wan 3.0
References images, video, audio, and documents together
480P / 720P / 1080P2-30Image · video · audio · documentaudio switch, same price$0.0441from/ second
HappyHorse 1.1
Text-to-video, first-frame image-to-video, reference-image video
480P / 720P / 1080P3-15First frame or reference images—$0.0662from/ second
Grok Imagine
Text-to-video with optional reference images
480p / 720p / 1080p1-15Reference images only—$0.08from/ second

The price column shows each family's lowest starting tier; full tiers are on each family page and the model cards, and special modes such as Kling lip sync are priced separately. Your own rate is the one shown in the signed-in Model Plaza.

Model IDs and groups

Each family sits in its own group, so call it with a key that includes that group.

FamilyModel IDsGroup
Seedance 2.5 / 2.0Overseas: dreamina-seedance-2-5-260628, dreamina-seedance-2-0-*
China: doubao-seedance-2-*-a
Seedance overseas + Seedream
Seedance China (Doubao)
Klingkling-v3, kling-v3-omni, kling-v3-turbo, and moreKling Official
MiniMax HailuoMiniMax-H3
MiniMax-H3-Max
MiniMax-H3-SelfHosted
MiniMax H3 Official
MiniMax H3 Max Official
MiniMax H3 Self-hosted
MiniMax H3 Max Cloud
Wan 3.0wan3.0-videoWan 3.0 Official
HappyHorse 1.1happyhorse-1.1-t2v, happyhorse-1.1-i2v, happyhorse-1.1-r2vHappyHorse 1.1 Official
Grok Imaginegrok-imagine-video-1.5Grok Video

Kling also has motion control, avatar, and lip sync variants; see the Kling page. Each family's minimum request and result location:

FamilyMinimum requestSubmit returnsRead when complete
Seedancemodel + non-empty content[]200, task.id (vt…)task.outputs
Grok Imaginemodel + prompt / content + resolution200, task.id (vt…)task.outputs
MiniMax Hailuomodel + content + resolution + duration202, id (mmt…)outputs
Klingmodel + prompt or images[] / videos[]202, id (kt…)outputs
Wan 3.0 / HappyHorsemodel + input; parameters optional200, output.task_idoutput.video_url

MiniMax text-only requests also require ratio. Kling's special modes are on the Kling page. Seedance content[] usually carries text and image_url items.

Task flow: submit → poll → download

Every video model follows these three steps.

Submit

FamilySubmitQuery
Seedance, Grok Imagine, MiniMax, KlingPOST /v1/video/generateGET /v1/video/tasks/{task_id}
Wan 3.0, HappyHorsePOST /api/v1/services/aigc/video-generation/video-synthesisGET /api/v1/tasks/{task_id}

HopBase hands each request to the right family based on its model and the key's groups. Request bodies and status values differ by family, so follow each family's page. Families return different success codes on submit, so treat any 2xx as a successful submission.

A key reaches only the families whose groups it includes; one key can include several video groups. Call GET /v1/models with the key you intend to use and take the complete model ID from the response. Model IDs are exact: an unknown name is rejected, never routed to a near match.

Poll

Query the task ID returned on submit until the task succeeds or fails. Seedance, Grok Imagine, MiniMax, and Kling also have a task list:

GET /v1/video/tasks?page=1&limit=20

Wan 3.0 and HappyHorse have no list endpoint, so keep track of task IDs on your side.

Download

Output URLs are signed URLs on api.hop-base.com, valid from the moment the task completes:

FamilyResult link lifetime
Seedance, Grok Imagine, Kling, MiniMax, Wan 3.0, HappyHorse24 hours

Querying again returns the same URL without extending it, and an expired URL returns 410. Download and save results promptly.

Balance and billing

A video submit checks available balance minus the estimates for in-flight tasks minus this request's estimate. If that falls short you get a 402 with code insufficient_balance. The estimate is released automatically when the task ends.

Insufficient balance: available $X, reserved in flight $Y, this request estimated $Z
Insufficient quota: …    # an enterprise member with a spending quota; the message starts with this

Kling lip sync cannot be estimated and reserves nothing.

Failed video tasks are never billed. Once a task is finished, the single-task query also returns a top-level usage:

FieldMeaning
usage.costThe charge for the task in CNY (the same charge as usage.cost_usd)
usage.cost_usdThe USD amount actually deducted from your balance for the task, the same as its usage record
usage.currencyThe currency of usage.cost, always CNY

A failed task that was not charged shows 0. The field is absent while the task is running, and a single-task query returns it only to the key that created the task; amounts in the examples are illustrative. In the task list (GET /v1/video/tasks without a task ID), every finished task carries the same cost, cost_usd, and currency in its usage; the list covers the whole account, so tasks created by other keys of the same account carry the amount too.

Official list prices are on the pricing page. Your own rate is the one shown in the signed-in Model Plaza, and each request's actual charge is on the Usage page in the console.

Failures, timeouts, and cancellation

A 2xx submit only means the task was accepted. A failed generation still queries as HTTP 200 with a failed status and an English reason, but no stable error code.

Seedance puts the reason in task.error.message; for other families, see their pages. The console Usage page shows the failure category and a suggested fix. See Errors.

The time limit for running tasks differs by family; see each family's page. A Seedance task still unfinished 24 hours after creation is failed automatically with this message:

The task did not finish within 24 hours and was terminated automatically

Video tasks cannot be cancelled.

Reference media comparison

How many references each model accepts:

ModelFieldCount limit
Seedance 2.0 (China/overseas, Standard/Fast/Mini)contentimages ≤9 · videos ≤3 · audio ≤3
Seedance 2.5 (China/overseas)contentimages ≤30 · videos ≤10 · audio ≤10
Grok Imagine videoTop-level reference_images[]Not live-verified; not the 2-image edit limit
MiniMax-H3contentimages ≤9 · videos ≤3 · audio ≤3, ≤12 total
MiniMax-H3-SelfHostedcontentimages ≤9 · videos ≤3 · audio ≤3, ≤12 total
MiniMax-H3-MaxcontentText or at most 1 first and 1 last frame
All Kling video variantsimages[] / videos[]Per variant; see the Kling page
Wan 3.0input.media[]images ≤10 · videos ≤5 · audio ≤5
HappyHorse t2v / i2v / r2vinput.media[]t2v none · i2v exactly 1 first frame · r2v 1–9 reference images
  • Seedance takes at most 2 first/last-frame images; on 2.0, frame mode is separate from reference mode.
  • On MiniMax-H3, frames and references are exclusive; H3-Max takes no reference_* inputs.
  • Wan 3.0 takes ≤1 document or webpage (exclusive), and frames exclude the reference group.
  • Kling usage and special modes depend on the variant's contract; see the Kling page.
  • Grok Imagine content is text only.

Which encodings each model accepts:

ModelURLData URLAsset ID
Seedance 2.0HTTP(S)Image/audio yes, video noReady asset://
Seedance 2.5HTTP(S)Image/audio under gateway rules, video noNo library IDs
Grok Imagine videoPublic HTTP(S) onlyNoNo asset://
MiniMax-H3HTTP(S)Full Data URLNo mm_file:// or asset://
MiniMax-H3-MaxImage HTTP(S)Full Data URL—
MiniMax-H3-SelfHostedPublic HTTP(S)Image Data URL onlyNo mm_file:// or asset://
KlingOne HTTP(S) url per itemNoUsable file_id (instead of url); no asset://
Wan 3.0HTTP(S); link requires a web URLFull Data URLNo oss:// or asset://
HappyHorseHTTP(S)Image Data URLNo oss://

The Seedance 2.0 library registration URL accepts HTTP(S) only. On MiniMax-H3-Max, encoding does not bypass type restrictions. HappyHorse takes no video/audio references.

A Data URL is data:media-MIME;base64,encoded-content, not raw base64.

Next steps