Short answer
According to the current public Seedance 2.0 API documentation, the API provides task creation and task-status queries, but does not provide a task cancellation or deletion endpoint. After a task is created successfully, the API returns atask_id. A client timeout, network interruption, closed web page, or stopped polling should not be treated as proof that the task was canceled. Query the original task before deciding whether to retry, so that you do not create duplicate tasks.
Public endpoints and task statuses
Seedance 2.0 currently uses asynchronous task endpoints:
The task normally follows this lifecycle:
queued: The task was created and is waiting in the queue.running: The task is being processed.succeeded: Video generation completed successfully.failed: Task processing failed.expired: The task exceeded its execution window and expired.
What should I do after submitting a task?
Step 1: Save the task ID and request details
Save the returnedtask_id immediately after the creation request succeeds.
You should also record:
- The model name;
- The prompt or a prompt summary;
- Important parameters such as duration, resolution, and aspect ratio;
- The submission time;
- The request ID;
- The business ID in your own system.
Step 2: Query the original task
Seedance 2.0 tasks usually take minutes. The current API documentation recommends:- Waiting about 20–30 seconds after submission before the first query;
- Querying every 10–20 seconds afterward;
- Not resubmitting immediately just because the video is not available yet.
YOUR_TASK_ID: The task ID returned by the task-creation endpoint;YOUR_API_KEY: An API key created in the APIYI console.
Step 3: Handle each task status
Handle the returned status as follows:queued: The task is still waiting; continue waiting and querying.running: The task is still generating; continue waiting and querying.succeeded: Download the video fromcontent.video_urlimmediately.failed: Inspect theerrorinformation in the response.expired: Review the task details and call logs to determine why it expired.
queued or running as failures, and do not create another task just because the current task has not finished.
Step 4: Confirm the task status after a client timeout
Do not retry immediately if the client did not receive a complete response. Check the following in order:- Check whether the client response already contains a
task_id. - Check whether the console call logs contain a task record.
- If a
task_idexists, query the original task first. - If no
task_idis visible yet, do not conclude from the network error alone that no task was created. - If you cannot confirm whether the task was created, ask support to verify it before retrying.
How can I prevent duplicate submissions?
The following are integration-side engineering practices, not mandatory platform rules:- Generate a unique business ID for each request.
- Store the mapping between the business ID and the Seedance
task_id. - Temporarily disable the submit button after the user submits a request.
- After a client timeout or process exit, resume by querying the original task.
- Store the prompt, model, duration, aspect ratio, and reference-material details.
- Consider a new submission only after confirming that the original task does not exist or has clearly failed.
- Distinguish in-progress statuses from terminal statuses. Do not treat
queuedorrunningas failures.
How should I reconcile billing after duplicate submissions?
The current Seedance 2.0 documentation describes the billing flow as:InvalidParameter HTTP 400 request—is not charged.
However, the following cannot be used alone to determine whether a charge was made:
- A client timeout;
- A network disconnection;
failed;expired;- The client not receiving a complete response;
- The client showing a request failure even though the server may have created a task.
- All related Seedance
task_idvalues; - The corresponding request IDs;
- Submission times;
- Model names;
- Important request parameters;
- Console call logs;
- Screenshots of billing or charge records.
Do not conclude that a task was definitely charged or definitely not charged based only on
failed, expired, or a client timeout.Frequently asked questions
Does stopping polling automatically stop the Seedance task?
That cannot be assumed. Stopping polling only means that the client no longer queries the task status. The current public API documentation does not provide a cancellation endpoint, so stopping polling does not mean that the server-side task was canceled. Save the originaltask_id and query it again later.
Can I retry immediately after a request timeout?
We do not recommend an immediate retry. First check:- Whether the response contains a
task_id; - Whether the console call logs contain a task record;
- The current status of the original task;
- Whether a corresponding billing record already exists.
Does failed or expired always mean that no charge was made?
You cannot determine the billing result from the task status alone. Seedance 2.0 uses pre-charging at submission followed by settlement after completion. Check both the call logs and billing records. If the records look incorrect, provide the task ID and request ID to support for review.Is an HTTP 400 caused by invalid parameters charged?
The current documentation states that a request rejected because of invalid parameters, without creating a task, is not charged. Examples include:- Invalid parameter formats;
- An unsupported resolution;
- An invalid aspect ratio;
- An unsupported video duration;
- An incompatible model and parameter combination.
How long can I keep the generated video URL?
The current documentation states that the successful response’scontent.video_url is a temporary signed URL valid for about 24 hours.
Download and store the video as soon as the task reaches succeeded. Do not treat the URL as permanent.
The current documentation also states that the task ID itself is retained for 7 days. You should still store your own task record for business tracking.
Related documentation
- Seedance 2.0 Video Generation API
- Seedance 2.0 Video Generation Overview
- How should I troubleshoot model errors?
Contact support
Contact support for help if:- A task remains in
queuedorrunningfor an unusually long time; - You cannot confirm whether a task was created after a client timeout;
- Multiple tasks were created after a duplicate submission;
- The task status and billing record do not match;
- A successful task does not return or allow the video to be downloaded.
- The Seedance
task_id; - The request ID;
- The submission time;
- The model name;
- Important request parameters;
- Console call logs;
- Related billing records.