BytePlus Seedance
seedance serves BytePlus ModelArk's Dreamina
Seedance 2.5 on the same /v1/videos API as the MiniMax groups. It supports
clips up to 30 seconds at 480p, 720p or 1080p, from text or a single
first-frame image.
A deployment serves this group only when its BytePlus credential is configured.
GET /v1/models lists the groups your key can call.
Try it
Generate a video
POST /v1/videosBytePlus Seedance · billed by tokens
Create a job
curl -sS "https://llms.party/v1/videos" \
-H "Authorization: Bearer $LLMS_PARTY_KEY" \
-H "content-type: application/json" \
-d '{
"model": "seedance",
"prompt": "A glass city at sunset, slow aerial push-in.",
"seconds": 5,
"resolution": "720p",
"ratio": "16:9"
}'curl -sS "https://llms.party/v1/videos" \
-H "Authorization: Bearer $LLMS_PARTY_KEY" \
-H "content-type: application/json" \
-d '{
"model": "seedance",
"prompt": "The camera slowly pushes in as the lights come on.",
"input_reference": "https://example.com/frame.png",
"seconds": 5,
"resolution": "720p"
}'| Field | Seedance values |
|---|---|
seconds | 4–30, integer. |
resolution | 480p, 720p (default) or 1080p, lowercase. |
ratio | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9; image input follows the image. |
input_reference | One image URL for the first frame. |
Reference video input and the editing and extension surfaces are not exposed through the gateway. One first-frame image is the supported input.
Poll and download
Polling is the same as the other video groups:
curl -sS "https://llms.party/v1/videos/$VIDEO_ID" \
-H "Authorization: Bearer $LLMS_PARTY_KEY"The task moves from queued to in_progress to completed. A 4 s 480p job
took around two minutes in testing; longer clips take longer.
When the job completes, download the clip through the OpenAI-compatible content route:
curl -sS "https://llms.party/v1/videos/$VIDEO_ID/content" \
-H "Authorization: Bearer $LLMS_PARTY_KEY" \
-o seedance.mp4The response is video/mp4. The gateway streams the file from BytePlus as it
downloads (Range requests are supported), so large 720p/1080p clips are not
buffered. BytePlus's signed URL is resolved internally and is not returned in
the task object; it expires after 24 hours or 100 downloads, so always fetch
through /content. BytePlus keeps task records for 7 days; after that a
finished clip can no longer be downloaded.
What it costs
BytePlus bills Seedance by tokens, not per second. The price is per million completion tokens:
| Resolution | USD per 1M tokens | 5 s at 16:9, 24 fps | 30 s at 16:9, 24 fps |
|---|---|---|---|
| 480p | $10.70 | 48,038 tokens · $0.514 | 288,225 · $3.08 |
| 720p | $10.70 | 108,000 · $1.156 | 648,000 · $6.94 |
| 1080p | $11.70 | 243,000 · $2.843 | 1,458,000 · $17.06 |
The token estimate is:
tokens = (input video seconds + output seconds) × width × height × fps / 1024For text-to-video the input-video term is zero. The polled task's
usage.total_tokens is the real token count (BytePlus reports it as completion
tokens upstream). Only successful generations are billed. Failures, including
moderation rejections, are free. Input video has a lower token rate ($6.40/1M
tokens at 480p/720p, $7.00/1M at 1080p) with a minimum consumption floor, but
reference-video input is not exposed through the gateway anyway.
The gateway's spend meter estimates this from the clip's duration and resolution, so the spend booked against the key may differ slightly from the BytePlus invoice. Reconcile large runs against the invoice. Rates: BytePlus ModelArk pricing.
Compare with MiniMax H3, which is charged per second of output ($0.05–$0.13/s) but limited to 15 s.
Status and errors
| Status | Meaning |
|---|---|
queued | Accepted, waiting for a worker. |
in_progress | Rendering. |
completed | Ready to download via /content. |
failed | error.message says why. |
cancelled | Cancelled before completion. |
A moderation rejection surfaces as failed, usually quickly. A 422 from
create means the request was rejected before a task existed (budget, model
access or validation), not a provider failure.