task_id; generation continues after that HTTP request finishes.
Lifecycle
An internal finalization stage is exposed as
processing, so clients never need to handle a separate finalizing state.
All-in-one Seedance family names
seedance-2.5, seedance-2.0, seedance-2.0-fast, and seedance-2.0-mini are all-in-one model IDs: one model covers every scenario, and the scenario is inferred from the request materials:
Pin the interpretation of
image_urls with the top-level role field: first_last_frame treats 1–2 images as the first frame plus an optional last frame, and reference_images treats all images as reference images regardless of count. first_last_frame cannot be combined with reference videos or audios. Scenario-specific model IDs (seedance-2.5-i2v, seedance-2.5-r2v, …) remain available when you want the scenario pinned by the model itself. Reference video duration is billed together with the output duration on all 2.x models.
Polling endpoints
Polling strategy
- Start with a short delay, then use bounded exponential backoff with jitter.
- Stop immediately on a terminal status.
- Honor
Retry-Afterwhen the API supplies it. - Persist the
task_idbefore beginning background polling. - Set an application deadline appropriate for the selected model; do not assume every model completes within the same duration.
- Treat an empty result as not yet deliverable even if an upstream operation has finished; APIPod keeps finalizing media before exposing it as completed.
Image and video error fields
Image status responses can exposeerror_code and error_message in data. Video status responses expose the client-safe message as error. Webhooks use error and optional error_code. Always branch on status before reading result or error fields.
Usage and cost on completion
Both status endpoints and completion webhooks attach ausage object when a task reaches completed, containing the final amount charged (usage.cost, in USD) plus token counts when the upstream provider reports them. It is absent for non-terminal and failed tasks, so record cost from the terminal response or callback.
Use webhooks
Receive terminal task results without continuous polling.
Handle errors
Normalize HTTP, synchronous, and asynchronous failures.