Polling a video task returns 404 not found: task id errors explained

A 404 not found when polling GET /v1/video/generations/{task_id} means the task id in the URL does not match a task on RelayDance. Common causes: copying the id incorrectly, polling before the submit call returned an id, using a different API key than the one that created the task, or a wrong base_url. Set base_url to https://relaydance.com/v1, verify the exact task id, and retry.

Confirm the base URL and task id

Most 404 errors come from a wrong base URL or a mistyped task id. RelayDance is OpenAI-compatible, so the polling path is GET /v1/video/generations/{task_id} against the same host you submitted to. According to the official relaydance.com/docs docs, 「Set base_url to https://relaydance.com/v1 and keep your OpenAI SDK」. The task id must be the exact string returned by your POST /v1/video/generations call, with no trailing spaces or truncation. If you submit to one host and poll another, the id will not resolve and the server returns 404. See https://relaydance.com/docs for the request and response shapes.

Check auth and ownership of the task

A task id is tied to the API key that created it, so polling with a different key can return 404. Send the header Authorization: Bearer YOUR_API_KEY using the same key from your submit call. Create or manage keys at https://relaydance.com/console. If you rotated keys between submit and poll, the new key may not see the earlier task. Also confirm you are reading the id from the submit response body, not from a log line that may have wrapped or been cut. Matching the key and the exact id resolves ownership related 404 responses.

Handle race conditions and failed submissions

A 404 can appear if you poll before the submit call has returned a task id, which is a timing (race) problem. Wait for the POST /v1/video/generations response, extract the id, then start polling GET /v1/video/generations/{task_id} until status is succeeded or failed. If the submit itself errored, there is no task to poll, and no charge applies: According to the official relaydance.com docs, 「Failed or errored requests are never billed」. As an alternative to polling, set metadata.callback_url so the final state is POSTed to your server, which avoids polling a task id that does not yet exist.

Diagnostic checklist

Use the following steps to isolate a 404 quickly:

  1. Confirm base_url is https://relaydance.com/v1.
  2. Copy the task id directly from the submit response body.
  3. Poll with the same API key used to submit (Authorization: Bearer YOUR_API_KEY).
  4. Wait for the submit response before the first poll to avoid a race.
  5. If submit errored, expect no task and no charge, then resubmit.
SymptomLikely causeAction
404 on every pollWrong base_url or truncated idSet base_url to /v1, re-copy id
404 with correct idDifferent API keyPoll with the submitting key
404 right after submitRace conditionWait for submit response first
No id returnedSubmit failedNo charge; resubmit

Billing context while debugging

Retrying after a 404 does not risk charges for the failed attempts, because billing is pay-as-you-go per generated video. Only completed generations are billed, and rates are per second: Seedance 2.0 720p is about $0.190 / second and 1080p is about $0.470 / second, Seedance Fast is about $0.152 / second, and Seedance native 4K is about $4.90 per 5-second clip (source relaydance.com/models). For image generation via POST /v1/images/generations, image output is free and only input is billed, with image-to-image from about CNY 0.035. See live per-model rates at https://relaydance.com/models.

FAQ

Does a 404 while polling cost anything? No. Failed or errored requests are never billed, and billing is pay-as-you-go per generated video.

What is the correct polling endpoint? GET /v1/video/generations/{task_id} against base_url https://relaydance.com/v1, using the task id from your submit response.

How can I avoid polling a not-yet-existing task id? Set metadata.callback_url so the final state (succeeded or failed) is POSTed to your server instead of polling.

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