seedanceapi

DEVELOPER GUIDE / REST API

Seedance 2.5 API docs.
Your integration starts here.

A video job has three parts: discover the model, submit once, and retrieve the result. Use the same server-side API key throughout.

Seedance 2.5 API availability. Check the current enabled model and its price with authenticated GET /v1/models. A catalog listing alone does not enable generation.

01 / Create a server-side key

Sign in to the developer console, create a named API key, and save it as SEEDANCE_API_KEY on your backend. Send Authorization: Bearer YOUR_API_KEY with each request. Never put keys in browser code, public repositories or URLs. Keys are specific to this site, not interchangeable with API Many keys.

Base URL: https://seedanceapi.pro/v1. Use the developer console to sign in. Never put production secrets in a public browser application.

02 / Discover an enabled model

GET /v1/models returns the enabled model IDs, exact specifications and current prices. A model card or a provider's announcement is not proof of gateway availability. For Seedance 2.5, wait until the target ID is returned before submitting it.

The existing media contract accepts only model and prompt. Do not add duration, resolution, image URLs, audio, video references or webhook fields: unreviewed fields are rejected. Specifications are fixed by the enabled route.

03 / Discover, create, retrieve

Start with Discover. Create one new REQUEST_ID per logical job and persist it with your payload. After creation, save the returned id as JOB_ID. Python examples use the requests package; Node.js examples use built-in fetch.

REQUEST PREVIEWREST / JSON
curl https://seedanceapi.pro/v1/models \
  -H "Authorization: Bearer $SEEDANCE_API_KEY"
GET/v1/modelsBearer auth

Only this authenticated response confirms enabled IDs, exact specs and prices. Keep your API key on your server.

Video API endpoints

MethodEndpointPurpose
GET/v1/modelsEnabled IDs, specifications and prices
POST/v1/jobsSubmit a model and prompt with an Idempotency-Key
GET/v1/jobs/{id}Read the job, cost and available output
GET/v1/jobs/{id}/contentDownload the available result with authentication

Know when to wait—and when to stop

  • queued / running: keep the original ID and poll with a delay. Avoid tight polling loops.
  • succeeded: check that output is non-empty, then download the result using the same API key. Output access expires; archive your own copy promptly.
  • failed: generation failed; the reservation is released. Inspect the failure before starting a new job.
  • reconciliation_required: the outcome is uncertain. Stop automatic resubmission and contact support with the job ID.

The returned output[0].url is a relative gateway URL. Resolve it against https://seedanceapi.pro, and authenticate the download. It is not a public share link.

One request, one receipt

When retrying the same submission, keep the original Idempotency-Key and exactly the same payload. Reusing a key with a different payload returns a conflict. A timeout does not prove the provider rejected a request.

Video jobs reserve the quoted balance before processing, then settle or release it based on the result. No Seedance 2.5 price or free-video entitlement is promised until a reviewed route and its rate are published. See pricing and service status before production use.

HTTP errors: 401 means authentication is required; 402 means insufficient available balance; 409 is an idempotency conflict; 429 is a rate or queue limit. For ambiguous failures, retain the job or request ID rather than blindly retrying with a new key.