Polling a video task returns 404 not found: task id errors explained
A 404 not found when polling a video task means the task id sent to GET /v1/video/generations/{task_id} does not match a task on the server. The RelayDance API is OpenAI compatible with base URL https://relaydance.com/v1, so the id you poll must be the exact task_id returned by the earlier POST /v1/video/generations call. Common causes: a mistyped or truncated id, calling the wrong base URL, or a submission that never succeeded because failed or errored requests are never billed and produce no pollable task.
What a 404 on task polling actually means
A 404 indicates the server has no record of the task_id in the GET path, not that generation failed. When you submit a video with POST /v1/video/generations, the response contains a task_id; you then poll GET /v1/video/generations/{task_id} until status is succeeded or failed. If the submission itself returned an error, no task exists to poll, because "failed or errored requests are never billed"(According to the official relaydance.com docs). Verify you captured the task_id from a 2xx submission response, and confirm the id is passed in the URL path exactly, with no extra whitespace, quotes, or truncation.
Confirm your base URL and authentication
A 404 can also come from calling the wrong host or path, so check that requests go to https://relaydance.com/v1. The service is OpenAI compatible: "set base_url to https://relaydance.com/v1 and keep your OpenAI SDK"(According to the official relaydance.com/docs). Authentication uses the header Authorization: Bearer YOUR_API_KEY, with keys created at https://relaydance.com/console. If the base URL still points at the default OpenAI host, or you poll a different path than the submission endpoint, the task_id will not resolve. See https://relaydance.com/docs for the request contract and https://relaydance.com/models for live per-model rates.
Steps to diagnose and fix a 404
Work through the polling flow in order to isolate the mismatch.
- Re-read the POST /v1/video/generations response and copy the exact
task_id. - Confirm the submission returned a 2xx status; a failed submission creates no task.
- Set base_url to
https://relaydance.com/v1and keep the OpenAI SDK. - Poll GET /v1/video/generations/{task_id} with the id in the URL path, not the body.
- Send header
Authorization: Bearer YOUR_API_KEYon every poll. - Wait for status to reach succeeded or failed, then read the video url.
As an alternative to polling, set metadata.callback_url so the final state is POSTed to your server via webhook, avoiding repeated GET calls.
Reference limits that can cause submission errors
If your submission returns an error (and therefore no pollable task_id), a request that exceeds reference media limits is one cause. Per request you may include up to 9 reference images, 3 reference videos, and 3 audio tracks, with clips up to 15 seconds; reference media go in metadata.content[] and are cited in the prompt as @image1 to @imageN. Because "failed or errored requests are never billed"(According to the official relaydance.com docs), an over-limit request is not billed but also yields nothing to poll. Confirm the submission succeeded before assuming the 404 is a polling bug.
Model rates you may be polling for
Pricing is pay-as-you-go per generated video, listed live at https://relaydance.com/models.
| Model / mode | Rate |
|---|---|
| Seedance 2.0 720p | about $0.190 / second |
| Seedance 2.0 1080p | about $0.470 / second |
| Seedance Fast | about $0.152 / second |
| Seedance native 4K | about $4.90 per 5-second clip |
FAQ
Does a 404 mean I was charged for the task? No. Failed or errored requests are never billed, and a 404 means no matching task was found to bill or return.
Can I avoid polling entirely? Yes. Set metadata.callback_url and the final state is POSTed to your server as a webhook instead of polling GET.
Where do I confirm the endpoints and base URL? See https://relaydance.com/docs for the OpenAI compatible contract and base URL https://relaydance.com/v1, and https://relaydance.com/models for per-model rates.
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.