Unlimited Seedance, Kling, Wan and Seedream 5.0, now on KreatorFlow · available now · Fair use

See passes
A brass metronome on a black piano lid, its pendulum leaving an arc of glowing film frames
API

Official BytePlus partnerBytePlus, a ByteDance company

Seedance API rate limits

Seedance API rate limits on KreatorFlow: 20 to 300 per minute for video jobs by volume tier, 120 per minute per job for polling, what a 429 means and how to batch clips safely.

KreatorFlow7 min read

Short answer

On the KreatorFlow API you can create 20 per minute Seedance video jobs on the Standard tier, rising to 300 per minute at Enterprise, and poll each job 120 per minute. There is no limit on how many Seedance jobs run at once. Over a limit you get a 429 with a Retry-After header and nothing is reserved. Jobs run in the background, so a batch is many quick creates plus webhooks, not many open connections.

Updated:

Batch Seedance clips without hitting limits

  1. 1

    Create, do not wait

    POST /v1/videos returns with a job id and the clip renders in the background, so your code does not hold a connection open for the whole render.

  2. 2

    Pace creates

    Stay under your tier's video limit (20 per minute on Standard); for big batches, send them from a queue at a steady rate instead of all at once.

  3. 3

    Use webhooks

    Pass webhook_url instead of polling every job, so polling never eats your limit. Keep a slow sweep with GET /v1/jobs/{job_id} for anything that never reported back.

  4. 4

    Back off on 429

    Wait the seconds in Retry-After, then resend with the same Idempotency-Key, so a resend can never create a second clip.

  5. 5

    Grow into a higher tier

    Paid top-ups over the last 30 days raise the video limit automatically, up to 300 per minute at Enterprise.

Rate limits per developer account

EndpointLimit
POST /v1/uploads60 per minute
PUT /v1/uploads60 per minute
DELETE /v1/uploads/{upload_id}60 per minute
GET /v1/storage60 per minute
POST /v1/images60 per minute
POST /v1/characters60 per minute
GET /v1/characters60 per minute
GET/DELETE /v1/characters/{character_id}60 per minute
POST /v1/videos20 / 60 / 120 / 300 per minute by volume tier (Standard / Scale / Growth / Enterprise)
POST /v1/video-edits20 / 60 / 120 / 300 per minute by volume tier (Standard / Scale / Growth / Enterprise)
POST /v1/videos/edit and /v1/videos/extend (shared with POST /v1/videos)20 per minute
POST /v1/lip-sync20 per minute
GET /v1/jobs/{job_id}120 per minute, per job
GET/HEAD /v1/jobs/{job_id}/output300 per minute
API key creation5 per 600 s, per user

Video request limit by volume tier

Your tier comes from paid top-ups over the last 30 days and applies to POST /v1/videos and /v1/video-edits. It also lowers the Seedance price.

TierPaid top-upsVideo requests / minuteSeedance price
StandardAny20List price
Scale$1,000+60up to 5% off
Growth$2,500+120up to 7.5% off
Enterprise$5,000+300up to 10% off

Seedance API price per second on KreatorFlow

Seedance 2.0 and 2.5 at 720p and above on the KreatorFlow API: price per second, tokens per 5-second clip, and clips per prepaid top-up.

Model · resolutionTokens5 s clipList rate per second$20 top-up · 400 tokens$50 top-up · 1,000 tokens$100 top-up · 2,000 tokens$250 top-up · 5,000 tokens
Seedance 2.0 · 720p11/5s$0.55$0.110/s3690181454
Seedance 2.0 · 1080p24/5s$1.20$0.240/s164183208
Seedance 2.0 · 4K58/5s$2.90$0.580/s6173486
Seedance 2.5 · 720p21/5s$1.05$0.207/s194795238
Seedance 2.5 · 1080p45/5s$2.25$0.444/s82244111
Seedance 2.5 · 4K100/5s$5.00$0.999/s4102050

Seedance 2.0 and 2.5, 720p and above. List rate per second is the rate card price; a clip is billed at that rate and its total rounded up to whole tokens ($0.05), which is why a 5-second clip can cost a cent or two more than rate x 5. Top-up columns: 5-second clips each top-up covers, without a video input. A 10-second clip uses about twice the tokens.

How the limits work

Limits are counted per developer account in a one-minute window, and every key on the account shares them. Creating video jobs, polling a job and downloading its output each have their own bucket, so polling never takes away from your video creates and downloads never slow your polling.

The video create limit counts requests, not running jobs. A clip takes minutes to render and there is no cap on how many Seedance jobs render at the same time, so a steady stream of creates builds up a large number of jobs in flight.

How many clips is that an hour?

At the Standard limit you can start 1200 video jobs an hour; at Enterprise it is 18000. Most products never get near that: the practical limit is usually your balance and how many clips your users actually need.

  • Standard: up to 1200 video jobs started an hour
  • Scale: up to 3600 video jobs started an hour
  • Growth: up to 7200 video jobs started an hour
  • Enterprise: up to 18000 video jobs started an hour

How often should I poll a Seedance job?

Every 10 to 15 seconds for video is plenty; a clip takes minutes, not seconds. The polling limit is 120 per minute per job, with a cap across the account as well, and downloads of finished output have their own bucket (300 per minute). Better still, use a webhook and keep a slow sweep for anything that never reported back.

Webhooks instead of polling

Send webhook_url (or callback_url) with the create request and KreatorFlow calls it when the job ends: completed, failed, canceled or blocked. Deliveries go to HTTPS addresses only and carry an X-KreatorFlow-Signature header signed with your workspace signing secret from the Webhooks tab, so you can check the call really came from KreatorFlow.

Webhooks make a big batch cheap on limits: your creates are the only requests that scale with the batch, and your server hears about each clip the moment it is ready.

Handling a 429

A 429 means the window is full. Nothing was reserved or charged. Wait the number of seconds in Retry-After and send the same request again with the same Idempotency-Key. Never resend in a tight loop: it keeps the window full and slows the whole batch.

Python: create with backoff

import os, time, uuid, requests API = "https://kreatorflow.ai/v1" HEADERS = {"Authorization": f"Bearer {os.environ['KREATORFLOW_API_KEY']}"} def create_video(body, key=None): key = key or str(uuid.uuid4()) while True: r = requests.post(f"{API}/videos", json=body, timeout=90, headers={**HEADERS, "Idempotency-Key": key}) if r.status_code == 429: # Over the limit: nothing was reserved. Wait, then resend with the SAME key. time.sleep(int(r.headers.get("Retry-After", "10"))) continue r.raise_for_status() return r.json()["data"]["job"]

Pacing a batch

For a batch, spread creates evenly across the minute instead of firing them all at once. A simple gap between requests works for a script; in production, use a queue worker that sends at your tier's rate and puts any 429 back on the queue.

Node.js: a paced batch with webhooks

// Node: send a batch at a steady pace instead of all at once. const PER_MINUTE = 20; // your tier's video limit const gap = Math.ceil(60000 / PER_MINUTE); for (const [i, prompt] of prompts.entries()) { const res = await fetch("https://kreatorflow.ai/v1/videos", { method: "POST", headers: { Authorization: "Bearer " + process.env.KREATORFLOW_API_KEY, "Content-Type": "application/json", "Idempotency-Key": "batch-42-" + i, }, body: JSON.stringify({ model: "kreator-video-fast", prompt, duration: 5, aspect_ratio: "9:16", resolution: "720p", webhook_url: "https://your-app.example/hooks/kreatorflow", }), }); if (res.status === 429) { await new Promise((r) => setTimeout(r, Number(res.headers.get("Retry-After") || 10) * 1000)); continue; // in production, put the item back on your queue and resend it with the same key } await new Promise((r) => setTimeout(r, gap)); }

Can I get higher limits?

The video limit rises on its own with your volume tier, up to 300 requests a minute. If your product needs more than that, contact support with your expected volume.

Volume pricing for the Seedance API

The more you top up, the less Seedance video costs. Your tier comes from the token top-ups you paid for in the last 30 days. It lowers the per-second price of Seedance video and raises your video request limit, automatically, with no contract and no sales call. If your top-ups drop, the tier moves back down.

Every job's quote shows your price before it runs; a few low-priced settings get a smaller discount. Smaller top-ups add up toward a tier too. Price comparisons on this site use list prices unless a price is marked as at volume. Need more volume? Custom pricing for committed monthly spend: email harry@kreatorflow.ai.

  • Standard: Any · List price · 20 video requests / minute
  • Scale: $1,000+ · up to 5% off · 60 video requests / minute
  • Growth: $2,500+ · up to 7.5% off · 120 video requests / minute
  • Enterprise: $5,000+ · up to 10% off · 300 video requests / minute

Frequently asked questions

What is the Seedance API rate limit on KreatorFlow?

20 to 300 per minute for POST /v1/videos depending on your volume tier, and 120 per minute per job for GET /v1/jobs/{id}. Limits are per developer account.

What happens over the limit?

The request returns 429 with a Retry-After header. Nothing is reserved.

Are limits per key or per account?

Per developer account, shared by all its keys.

How do I fix a Seedance API 429 error?

Wait the seconds in the Retry-After header, then resend with the same Idempotency-Key. If it happens often, pace your creates from a queue and use webhooks instead of polling.

How many Seedance jobs can run at the same time?

There is no limit on concurrent Seedance jobs at any tier. The limit is on how many new video jobs you create per minute.

Does a 429 cost tokens?

No. A rate-limited request never becomes a job, so nothing is reserved or charged.

Does polling count against my video limit?

No. Polling and output downloads have their own buckets, separate from video creates.

How do I raise my Seedance API rate limit?

Top up more: paid top-ups over the last 30 days move the account to a higher volume tier, up to 300 video requests a minute at Enterprise. For more than that, contact support.

Is there volume pricing for the Seedance API?

Yes. Once your paid top-ups in the last 30 days reach $1,000, Seedance video costs up to 5% less per second, rising to up to 10% off at $5,000 (Enterprise), and your video request limit goes up with each tier. It applies automatically, with no contract, and each job's quote shows your price before it runs. For more volume than that, email harry@kreatorflow.ai.

Batch Seedance the easy way

Quick creates, webhooks back, no open connections.

More guides