Seedance 2.5 API

Errors & retries

Handle errors, retries and shared limits without duplicate charges.

Error shape

{
  "error": {
    "code": "invalid_parameters",
    "message": "Unsupported resolution."
  }
}

Errors use application/json and the HTTP status. Check error.code; do not depend on the message text.

Idempotency

Every video/image create request requires an Idempotency-Key of 16–128 letters, digits, underscores or hyphens. Persist it with the intended business operation. Same key and body replays the original generation without a second charge; different parameters return 409 idempotency_conflict. Keep the same API key for retries and polling.

Common responses

HTTPCodeAction
401invalid_api_keyCheck or replace the key.
403api_key_upgrade_requiredCreate a new key.
403server_side_onlyCall from your server.
403paid_account_requiredUse an active paid plan or purchased credits.
404generation_not_foundCheck the ID and original API key.
409idempotency_conflictRestore the original request body.
409cost_limit_exceededReview the quote and cost cap.
413request_too_largeReduce the request size.
422invalid_parametersCorrect fields against the model catalog.
429rate_limit_exceeded / concurrency_limit_exceeded / daily_spend_limit_exceededRespect Retry-After and account limits.
503api_unavailable / service_unavailableBack off and retry the same request.

Safe retries

For network failures, 429 and 503, use backoff and keep the exact same request identity. A 409 generation_rejected explicitly means rejection before submission: correct the issue before a new request. Never turn an uncertain timeout into a new generation automatically. The edge firewall can return a non-JSON 403 after 120 requests/IP/minute; wait for its window to reset.