Guides

Seedance 2.5 API: First Request, Prices and 480p Drafts

Seedance 2.5 is on the BudgetPixel API as seedance-2.5: one POST starts a video, one GET returns it. It costs 150, 330 or 750 credits a second at 480p, 720p or 1080p, the same as on the website. Draft mode makes a 480p preview at the 480p price, and one more call renders that same video in 1080p within 7 days. Below: the requests, a real draft-to-final run, prices, limits and the MCP route.

By BudgetPixel Team10 min readFacts verified
A sculptor in a dusty canvas apron stands in a sunlit studio between a small, rough terracotta study of a horse's head and the same head carved full size in white marble. Made with GPT Image 2.5 Flare through the BudgetPixel API.
On this page

Seedance 2.5 is ByteDance's flagship video model, and it is on the BudgetPixel API under the id seedance-2.5. One request starts a clip, another fetches it, and you pay in credits only when a job succeeds, at the same price as on the website.

It also has a draft mode: make a 480p preview at the 480p price, then turn the take you like into the same video in 1080p. Every clip below was made through the API on November 4, 2026, and each step of that run shows the call that made it.

What you need

  1. A BudgetPixel account on a paid plan. Basic is $10 a month for 11,000 credits. The API spends the same credits as the website.
  2. An API key from the developer console. Send it in every request as Authorization: Bearer <your key>.
  3. Nothing from ByteDance. One BudgetPixel key reaches Seedance 2.5 and the rest of the more than 70 models on the API.

The base address is https://api.budgetpixel.com/v1, and the full reference is in the API docs.

The basic request

A 5-second 720p clip from a text prompt, with sound:

curl -X POST https://api.budgetpixel.com/v1/videos/seedance-2.5 \
  -H "Authorization: Bearer $BUDGETPIXEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Slow push-in on a ceramicist shaping a tall vase on a spinning wheel in a sunlit studio. Sounds: the hum of the wheel, wet clay. No music.",
    "length_seconds": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }'

The answer comes back at once, with the job's id. This is the one our first draft got:

{
  "id": "4cdc4824-1620-4947-bcfe-ffdcdead61e8",
  "message": "Video generation started. Poll GET /v1/videos/{id} until status is succeeded.",
  "model": "seedance-2.5",
  "status": "pending"
}

There are no webhooks: ask GET /v1/videos/{id} every 15 to 30 seconds. The status moves through pending, starting, processing and completing to succeeded, failed or timeout. A succeeded job carries video_url, a signed link to the MP4 that lasts at least 6 hours (ask again for a fresh one). The file itself is deleted 24 hours after the job was created, so download what you want to keep.

The same thing in Python:

import os, time, requests

API = "https://api.budgetpixel.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['BUDGETPIXEL_API_KEY']}"}

r = requests.post(f"{API}/videos/seedance-2.5", headers=HEADERS, json={
    "prompt": "Slow push-in on a ceramicist shaping a tall vase on a spinning wheel. No music.",
    "length_seconds": 5,
    "resolution": "720p",
    "generate_audio": True,
})
r.raise_for_status()  # a refused request (no paid plan, low balance, a bad field) has no id
job = r.json()

while True:
    status = requests.get(f"{API}/videos/{job['id']}", headers=HEADERS).json()
    if status["status"] == "succeeded":
        open("clip.mp4", "wb").write(requests.get(status["video_url"]).content)
        break
    if status["status"] in ("failed", "timeout"):
        raise RuntimeError(status.get("error_message"))
    time.sleep(20)

Drafts: preview at 480p, keep it in 1080p

A 1080p second costs five times a 480p second. Most first takes miss something, a camera move that overshoots or a line read you don't like, so paying 1080p prices to find out is the expensive way to iterate. Re-running a prompt at a higher resolution doesn't help either: you get a new video, not a sharper copy of the one you liked.

A draft solves both. It is a 480p video at the 480p price. When one is right, a second call renders that same video in 1080p: the same motion, framing, voice and sound, only sharper. Here is the whole run we made for this post.

Step 1: make two drafts

The same request twice, with "draft": true and no resolution:

curl -X POST https://api.budgetpixel.com/v1/videos/seedance-2.5 \
  -H "Authorization: Bearer $BUDGETPIXEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Slow push-in at eye level in a sunlit pottery studio. A ceramicist in her thirties, sleeves rolled up and a linen apron over a cream sweater, shapes a tall vase on a spinning wheel; wet clay rises smoothly between her hands and beads of water catch the window light. Shelves of unglazed pots stand behind her and dust drifts in the sunbeams. She looks up at the camera with a calm smile. She says: \"Every piece starts as a rough draft.\" Then she goes back to the clay. Sounds: the steady hum of the wheel, wet clay under her fingers, birds outside the open window. No music. Photorealistic, natural color, shallow depth of field. No text, no logos.",
    "draft": true,
    "length_seconds": 8,
    "aspect_ratio": "16:9",
    "generate_audio": true
  }'

Each 8-second draft is 1,200 credits at the standard price, and ours came back in about 2 minutes. Both said the line word for word. Draft A pushed in so far that her head left the frame; draft B kept her in the shot.

Draft A, 480p
Draft B, 480p
Two Seedance 2.5 drafts of the same prompt, 8 seconds at 480p, 1,200 credits each. The sound is draft B's.

Step 2: check the draft

A finished draft carries four extra fields. Here is draft B, trimmed to the parts that matter:

{
  "id": "e7a4f6c1-76e2-451b-9b8a-a17869061cc0",
  "model": "seedance-2.5",
  "status": "succeeded",
  "resolution": "480p",
  "length_seconds": 8,
  "video_codec": "h264",
  "video_url": "https://...",
  "expires_at": "2026-11-05T13:04:20-05:00",
  "draft": true,
  "draft_finalizable": true,
  "draft_expires_at": "2026-11-11T13:04:20-05:00",
  "draft_final_credits": 6000
}
  • draft_finalizable is true from the moment the draft succeeds until draft_expires_at, 7 days after it was made.
  • draft_final_credits is the final's standard price: 1080p for the draft's length, plus 375 credits per second of any reference video it used. Here, 8 × 750 = 6,000 credits.
  • expires_at is when the draft's own file is deleted (24 hours). A final can still be made after that, until draft_expires_at.

Step 3: render the keeper in 1080p

Send the draft's id as from_draft_job_id, and nothing else:

curl -X POST https://api.budgetpixel.com/v1/videos/seedance-2.5 \
  -H "Authorization: Bearer $BUDGETPIXEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "from_draft_job_id": "e7a4f6c1-76e2-451b-9b8a-a17869061cc0" }'

It returns a new job, polled the same way. Ours took about 75 seconds, quicker than either draft. The final follows the draft move for move, and she says the same line at the same moment (5.6 to 7.4 seconds into both clips).

Draft B, 480p
Final, 1080p
The draft and its 1080p final, playing together. Same take, same sound; the final costs 6,000 credits.

At this size the two look close. Up close, the final has the detail a 1080p screen shows: skin texture, eyelashes, the knit of the sweater.

Two close-ups from the same moment of the clip, the draft on the left and the final on the right: her smiling face, then the neck of her cream sweater beside the vase. The 480p draft is soft and smooth; the 1080p final shows skin texture, eyelashes, loose strands of hair and the knit of the sweater. Made with Seedance 2.5.

The final reuses everything from its draft: prompt, inputs, length, aspect ratio, seed and audio setting. Nothing can be changed at this step; to try something else, make a new draft. A final is H.265 at 1080p, like any 1080p Seedance 2.5 output.

What this run cost: at standard prices, two drafts at 1,200 credits and one final at 6,000, so 8,400 credits, about $7.64 on the Basic plan. Two takes straight at 1080p would have cost 12,000, and every extra try costs 1,200 credits as a draft instead of 6,000 as a final.

What the Seedance 2.5 API costs

Seedance 2.5 is priced per second of video, by resolution, the same as on the website. In credits, with the last column in dollars:

ResolutionPer second5 seconds8 seconds8 s on Basic
480p, drafts1507501,200$1.09
720p3301,6502,640$2.40
1080p, finals7503,7506,000$5.45
  • Free: generated sound, reference images (up to 30) and reference audio (up to 10 clips).
  • Reference videos add 80, 160 or 375 credits per second of input at 480p, 720p or 1080p, about half the output rate. A final adds its draft's reference-video seconds at the 1080p rate.
  • Failed jobs cost nothing.
  • Plan discounts apply to API calls too.
  • Dollars: the column above uses the $10 Basic plan (11,000 credits). Bigger plans and credit packs are on the pricing page, and paid plans can also buy a Developer Pack in the console: 1,150,000 credits for $1,000.

POST /v1/cost quotes a request before you send it, finals included. This is the quote for draft B's final:

curl -X POST https://api.budgetpixel.com/v1/cost \
  -H "Authorization: Bearer $BUDGETPIXEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "model": "seedance-2.5", "from_draft_job_id": "e7a4f6c1-76e2-451b-9b8a-a17869061cc0" }'
# {"credits": 5400, "discount_percent": 10, "exact": true, "model": "seedance-2.5", "type": "video"}

Our test account gets 10% off Seedance through its plan, so the quote is 5,400 credits instead of the standard 6,000. For how these prices compare with other apps and APIs, see Seedance 2.5 pricing.

Inputs and limits

SettingWhat it takes
length_seconds4 to 30 seconds (default 5)
resolution480p, 720p (default) or 1080p; leave it out for drafts and finals
aspect_ratio16:9 (default), 9:16, 1:1, 4:3, 3:4 or 21:9, for text-to-video and with reference images or audio; a start frame or a reference video sets the shape instead
generate_audiotrue for sound and speech, at no extra cost
image, end_imagea start frame, and optionally an end frame to land on
reference_imagesup to 30, free
reference_videosup to 10, each 2 to 30 seconds, 30 seconds combined; also how you edit or extend a clip (a clip to edit must be 4 to 30 seconds, and the result takes its length)
reference_audiosup to 10, each 2 to 30 seconds, 30 seconds combined, free
OutputMP4 with sound: H.264 at 480p and 720p, H.265 (HEVC) 10-bit at 1080p
  • Three modes from one endpoint: text-to-video (a prompt only), image-to-video (a start frame, optionally an end frame), and reference-to-video (any mix of reference images, videos and audio). Reference media can't be combined with a start or end frame.
  • Inputs: images can be public links, data URIs or base64; videos and audio are public links. Any file can also go to POST /v1/uploads first (up to 50 MB, free), which returns a link to use.
  • Characters: write an @handle in the prompt, such as @barry, to cast a BudgetPixel character with the same face in every clip.
  • 1080p is H.265. It plays in Safari, QuickTime, VLC and on most phones, but some Chrome and Firefox setups show a black frame. Transcode it if your player or pipeline needs H.264; the job's video_codec_note says so too.

For prompt structure, references and 30-second shots, see how to use Seedance 2.5.

Prompt tips from our Seedance 2.5 runs

  • Give a spoken line a sentence of its own, in quotes: She says: "Every piece starts as a rough draft." Both drafts said it word for word. Describe gestures in separate sentences: in an earlier take of ours, a gesture written between two quoted lines was spoken aloud.
  • Name the sounds you want ("the steady hum of the wheel, wet clay under her fingers, birds outside") and add "No music" when you don't want a score.
  • End with "No text, no logos" to keep stray lettering out of the frame.
  • Expect camera moves to overshoot. Our "slow push-in" ran too far in one of two takes. That is what drafts are for.

From Claude, Codex or Cursor: the MCP route

If you work with an AI assistant, BudgetPixel's MCP server at https://mcp.budgetpixel.com/mcp gives it the same draft flow without code. Its generate_video tool takes draft: true for Seedance 2.5, finalize_video_draft turns a draft into its 1080p final, and check_generation_status shows a finished draft's final price and deadline. Connect it in Claude, Claude Code, Codex or Cursor on a paid plan, then ask in plain words:

Make an 8-second Seedance 2.5 draft of a ceramicist at a pottery wheel who looks up and says "Every piece starts as a rough draft." If it looks good, make the 1080p final.

More on connecting it: the best MCP servers for image and video generation.

No code: drafts in the Video Workshop

In the Video Workshop, pick Seedance 2.5 and turn on Draft in the settings. Drafts are made at 480p for 150 credits a second. Under a finished draft, Make 1080p final shows the price and renders the same video in 1080p; the page tells you until when a final can be made.

Sources: the BudgetPixel API reference and model docs, and our own API calls on November 4, 2026. Prices and limits checked the same day.

Questions people ask

Is there a Seedance 2.5 API?

Yes. On BudgetPixel, Seedance 2.5 is the model seedance-2.5 at POST https://api.budgetpixel.com/v1/videos/seedance-2.5. It makes text-to-video, image-to-video and reference-to-video clips of 4 to 30 seconds at 480p, 720p or 1080p, with sound. You need a BudgetPixel API key on a paid plan; no ByteDance account is involved.

How much does the Seedance 2.5 API cost?

150 credits a second at 480p, 330 at 720p and 750 at 1080p, the same as on the website, charged only when a job succeeds. An 8-second 720p clip is 2,640 credits, about $2.40 on the $10 Basic plan. Reference videos add 80, 160 or 375 credits per input second; reference images, reference audio and generated sound are free.

Is there a free Seedance 2.5 API?

Not on BudgetPixel. Generating through the API needs a paid plan, from $10 a month for 11,000 credits. A job that fails costs nothing, and the cheapest test is a 4-second 480p draft for 600 credits.

What is Seedance 2.5 draft mode?

A draft is a 480p video at the 480p price, 150 credits a second. If you like it, send its id as from_draft_job_id within 7 days and you get the same video in 1080p, with the same motion, framing and sound, for 750 credits per second of the draft, plus 375 per second of any reference video it used.

How long does a Seedance 2.5 API job take?

In our run on November 4, 2026, two 8-second 480p drafts took about 2 minutes each and the 1080p final took about 75 seconds. Times change with load, so poll GET /v1/videos/{id} every 15 to 30 seconds.

Can I finish a Seedance 2.5 draft somewhere other than where I made it?

Between the API and MCP, yes: a draft made through one can be finalized through the other, within its 7 days. Drafts made in the Video Workshop are finished there with Make 1080p final, and drafts made inside Recast are finished in Recast.

What file does the Seedance 2.5 API return?

A link to an MP4 with sound. 480p and 720p are H.264; 1080p is H.265 (HEVC), 10-bit, which some browsers can't play, so transcode it if your player needs H.264. The link lasts at least 6 hours, and the file is deleted 24 hours after the job was created, so download it.

Try it yourself

Generating needs a paid plan, from $10 a month. A job that fails costs nothing.

All posts →