Video result URL stopped working: downloading and storing Seedance output the right way
When a Seedance video result URL stops working, the cause is usually that the URL is temporary and tied to a completed task, so the correct approach is to download the file immediately after the task status returns succeeded and store it in your own storage. RelayDance returns the video URL in the poll response of GET /v1/video/generations/{task_id}, and you should persist that file rather than relying on the returned link long term.
Why the result URL expires and what to do
The result URL is delivered inside the task response, so treat it as a one-time fetch source and copy the file to your own storage right away. After submitting a task with POST /v1/video/generations, poll GET /v1/video/generations/{task_id} until the status is succeeded or failed; on success the response contains the video url. Download that file and re-host it. Because Seedance clips can run up to 15 seconds and a native 4K clip is billed at about $4.90 per 5-second clip (source relaydance.com/models), losing access to an output means paying again to regenerate it.
Two ways to receive the output: polling versus webhook
RelayDance offers two delivery methods, and both hand you the video URL you must download promptly. In polling mode you call GET /v1/video/generations/{task_id} on a loop until the status is terminal. In webhook mode you set metadata.callback_url and the final state is POSTed to your server.
| Method | How you get the URL | Best when |
|---|---|---|
| Polling | Read the video url from the succeeded response | Simple scripts and short-lived jobs |
| Webhook | Final state POSTed to your callback_url | Server-side pipelines that auto-store output |
Steps to download and store Seedance output correctly
Follow these numbered steps to capture the file before the URL becomes unusable.
- Submit the task via
POST /v1/video/generationswith your model, prompt, and seconds. - Poll
GET /v1/video/generations/{task_id}(or wait for the webhook) until status issucceeded. - Read the video url from the response body.
- Download the file immediately using that URL.
- Upload the file to your own object storage and record the new persistent URL.
Because failed jobs cost nothing, retrying a lost download is safe: 「Failed or errored requests are never billed」, According to the official relaydance.com docs. Seedance 2.0 720p is billed at about $0.190 / second and 1080p at about $0.470 / second (source relaydance.com/models).
API setup so storage automation works
The API is OpenAI-compatible, so your existing download and storage code needs minimal change. 「Set base_url to https://relaydance.com/v1 and keep your OpenAI SDK」, According to the official relaydance.com/docs. Authenticate with Authorization: Bearer YOUR_API_KEY, using a key from the console. For cost planning while you build a re-hosting pipeline, Seedance Fast is billed at about $0.152 / second (source relaydance.com/models). Reference media placed in metadata.content[] support up to 9 reference images, 3 reference videos, and 3 audio tracks per request, so store any inputs you supplied as well if you plan to reproduce a result. See https://relaydance.com/docs and https://relaydance.com/models for current details.
FAQ
Q: Why does my Seedance video URL stop working after a while?
The URL is returned with the completed task response and is intended for prompt download, so you should fetch and re-host the file rather than depend on the link.
Q: Do I pay again if my download fails and I regenerate?
A regenerate is a new billed task, but per the docs, failed or errored requests themselves are never billed.
Q: How long can a Seedance clip be?
Clips run up to 15 seconds per request.
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
| Item | Value | Source |
|---|---|---|
| Seedance 2.0 720p price | about $0.190 / second | relaydance.com/models |
| Seedance 2.0 1080p price | about $0.470 / second | relaydance.com/models |
| Seedance Fast price | about $0.152 / second | relaydance.com/models |
| Seedance native 4K price | about $4.90 per 5-second clip | relaydance.com/models |
| gpt-image-2 image billing | image output is free, only input is billed; image-to-image from about CNY 0.035; 4K and 1K output cost the same | relaydance.com/models |
| API protocol | OpenAI-compatible; set base_url to https://relaydance.com/v1 | relaydance.com/docs |
| Failed requests | failed or errored requests are never billed | relaydance.com/docs |
Data verified 2026-06-29; live prices are on the official /models page.