Getting 429 Too Many Requests from the Seedance API: rate limit causes and retry strategies

A 429 Too Many Requests response from the Seedance API on RelayDance means your client sent more requests than the current rate allows, so the server declined the extra calls. The fix is to retry with exponential backoff, reduce concurrency, and space out polling on GET requests. Because RelayDance is OpenAI-compatible, standard SDK retry logic works, and a 429 is not a billed generation, so retried failed calls do not add cost.

Why 429 errors occur on the Seedance API

A 429 occurs when the volume of requests exceeds what the endpoint accepts in a given window. Common triggers include tight polling loops on GET /v1/video/generations/{task_id}, high parallel submissions to POST /v1/video/generations, and burst traffic from multiple workers sharing one key. Because RelayDance is OpenAI-compatible and you set base_url to https://relaydance.com/v1, the same client-side concerns that apply to OpenAI SDKs apply here. According to the official relaydance.com/docs, 「Set base_url to https://relaydance.com/v1 and keep your OpenAI SDK」, so your existing retry middleware and connection pooling settings carry over directly to the Seedance endpoints.

Retry strategy: exponential backoff with jitter

The recommended response to a 429 is exponential backoff with jitter, not immediate re-sending. Increase the wait between attempts on each retry and add random jitter so parallel clients do not retry in lockstep. Follow these steps:

  1. Catch the 429 status from the response.
  2. Wait an initial interval (for example, 1 second), then double it on each failure.
  3. Add random jitter to spread out concurrent clients.
  4. Cap the maximum retries and total wait time.
  5. Reduce your worker concurrency if 429s persist.

For polling, avoid sub-second intervals on GET /v1/video/generations/{task_id}; poll on a fixed cadence until status is succeeded or failed. See https://relaydance.com/docs for endpoint details.

Do 429 and failed requests cost money?

No, a 429 and any errored request are not billed, so retries do not create charges. RelayDance billing is pay-as-you-go per generated video, and only successful generations count. According to the official relaydance.com docs, 「Failed or errored requests are never billed」, which means backoff and retry logic is safe from a cost perspective. As a reference for what a successful call costs, Seedance 2.0 720p is about $0.190 per second, Seedance 2.0 1080p is about $0.470 per second, and Seedance Fast is about $0.152 per second. Native 4K is about $4.90 per 5-second clip. Live rates are at https://relaydance.com/models.

Reducing 429s with webhooks instead of polling

Switching from polling to webhook mode lowers request volume and reduces the chance of a 429. Set metadata.callback_url when you submit the task, and the final state (succeeded or failed) is POSTed to your server, so you no longer need repeated GET calls. This is useful when you run many concurrent tasks or long clips up to 15 seconds. You can also submit with up to 9 reference images, 3 reference videos, and 3 audio tracks per request in metadata.content[]. Combining webhooks for completion with backoff for submissions keeps request rates within limits while preserving throughput.

Rate limit handling reference table

SituationCauseAction
429 on submitHigh concurrent POST volumeReduce worker count, add backoff with jitter
429 on pollSub-second polling loopIncrease poll interval, use fixed cadence
Frequent 429 at scaleMany parallel tasksSwitch to callback_url webhook mode
Retry cost concernAssumed billing on failuresNone: failed or errored requests are never billed

FAQ

Does a 429 count against my billing? No. Billing is pay-as-you-go per generated video, and failed or errored requests are never billed, so retried 429 calls add no cost.

Can I use my existing OpenAI SDK retry logic? Yes. RelayDance is OpenAI-compatible; set base_url to https://relaydance.com/v1 and your SDK-level retry and backoff settings apply.

How can I reduce polling-related 429s? Set metadata.callback_url to use webhook mode, so the final state is POSTed to your server instead of requiring repeated GET requests.

According to the official relaydance.com docs: "Failed or errored requests are never billed"
According to the official relaydance.com/docs docs: "Set base_url to https://relaydance.com/v1 and keep your OpenAI SDK"

Key facts and figures

ItemValueSource
Seedance 2.0 720p priceabout $0.190 / secondrelaydance.com/models
Seedance 2.0 1080p priceabout $0.470 / secondrelaydance.com/models
Seedance Fast priceabout $0.152 / secondrelaydance.com/models
Seedance native 4K priceabout $4.90 per 5-second cliprelaydance.com/models
gpt-image-2 image billingimage output is free, only input is billed; image-to-image from about CNY 0.035; 4K and 1K output cost the samerelaydance.com/models
API protocolOpenAI-compatible; set base_url to https://relaydance.com/v1relaydance.com/docs
Failed requestsfailed or errored requests are never billedrelaydance.com/docs

Data verified 2026-06-29; live prices are on the official /models page.


RelayDance home · Models and pricing · Docs · All guides · Privacy Policy · User Agreement · Telegram community · RelayRouter (LLM API) · Live playground