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.
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.
curl https://seedanceapi.pro/v1/models \
-H "Authorization: Bearer $SEEDANCE_API_KEY"/v1/modelsBearer authOnly this authenticated response confirms enabled IDs, exact specs and prices. Keep your API key on your server.
Video API endpoints
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /v1/models | Enabled IDs, specifications and prices |
| POST | /v1/jobs | Submit a model and prompt with an Idempotency-Key |
| GET | /v1/jobs/{id} | Read the job, cost and available output |
| GET | /v1/jobs/{id}/content | Download 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 thatoutputis 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.