Seedance API Key: How to Get and Use One (2026)

Oct 20, 2026

Short answer: To get a Seedance API key, sign in at seedance2-5.com and create a key in Settings → API keys. Copy it immediately, because it is shown only once. Then send it from your server in the Authorization: Bearer YOUR_API_KEY header to the base URL https://seedance2-5.com/api/v1. Keep the key server-side: requests that carry an Origin header are rejected.

  • Where to create it: Settings → API keys.
  • Auth scheme: HTTP Bearer, Authorization: Bearer YOUR_API_KEY.
  • Base URL: https://seedance2-5.com/api/v1 (OpenAPI 3.1.0 spec at /api/v1/openapi.json).
  • Shown once: Keys are stored as a digest, and list pages cannot recover the original key.
  • Limits: 10 active keys per account; you can create 10 per hour and 20 per day.
  • Legacy keys: Keys issued before the API launch return 403 api_key_upgrade_required. Replace them.
  • Billing: Generations use your account credits. New accounts get free credits on sign-up, enough for one video.
  • Last verified: 2026-10-20

What is a Seedance API key?

A Seedance API key is the credential that the Seedance 2.5 API uses to identify your account. The official OpenAPI spec describes the API as "server-side video and image generation using your account credits." It defines the key as a cryptographically generated account API key (46 characters) that you should keep on your server. Every endpoint in the spec requires it.

For a visual starting point before writing requests, explore Seedance 2.5 video generator online and outline the scene your server-side integration will need to create.

How to get a Seedance API key (step by step)

  1. Sign in to your account at seedance2-5.com.
  2. Open Settings → API keys and create a new key.
  3. Copy the key right away. API launch keys are shown only once, and the list page cannot show it again.
  4. Store it in a server secret manager or an n8n Credential. Do not paste it into your code.
  5. Test it with a read-only call such as GET /models or GET /credits/balance (examples below).
  6. Replace any legacy key. If you get 403 api_key_upgrade_required, create a replacement, update your server, and revoke the old key.

API authentication: how the Bearer header works

The Seedance 2.5 API documentation uses a single scheme, Bearer authentication:

Authorization: Bearer YOUR_API_KEY

Send this header on every request to https://seedance2-5.com/api/v1. The authentication docs also set these rules:

  • Server-side only: requests that carry an Origin header are rejected, so browser calls fail.
  • Never expose the key in query strings, prompts, frontend code, mobile binaries, logs, repositories, or exported workflows.
  • Task ownership: retrying and polling require the original API key. A different key cannot query that generation through the API, even if it belongs to the same account.
  • Revocation: revoke exposed keys immediately. Revoking a key does not cancel a task that was already submitted.

Seedance API endpoints (from the OpenAPI spec)

Method & pathSummary (official)
GET /modelsList available product models and parameters
GET /credits/balanceGet the account credit balance
POST /quotesQuote a generation without charging credits
POST /videosGenerate a video
POST /imagesGenerate an image
GET /generations/{id}Read generation status and signed download URLs
POST /uploadsPrepare up to five image uploads. PUT the exact bytes using all returned headers.
POST /uploads/completeVerify uploaded images and obtain generation input URLs

For model IDs, supported parameters, and account limits, see Models & pricing. For cost planning, see Seedance 2.5 API pricing and limits.

curl example: test your Seedance API key

# Keep the key in an environment variable, never in code
export SEEDANCE_API_KEY="YOUR_API_KEY"
## List models (read-only)
curl https://seedance2-5.com/api/v1/models \
  -H "Authorization: Bearer $SEEDANCE_API_KEY"
## Check credit balance
curl https://seedance2-5.com/api/v1/credits/balance \
  -H "Authorization: Bearer $SEEDANCE_API_KEY"
## Get a quote without charging credits
curl -X POST https://seedance2-5.com/api/v1/quotes \
  -H "Authorization: Bearer $SEEDANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.5",
    "mode": "text-to-video",
    "prompt": "A paper boat drifting down a rainy street at dusk",
    "inputs": [],
    "parameters": {"duration_seconds": 5, "generate_audio": true}
  }'

Python example: Seedance 2.5 API with requests

import os
import requests
BASE_URL = "https://seedance2-5.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['SEEDANCE_API_KEY']}"}
## 1) Quote first (no credits charged)
body = {
    "model": "seedance-2.5",
    "mode": "text-to-video",
    "prompt": "A paper boat drifting down a rainy street at dusk",
    "inputs": [],
    "parameters": {"duration_seconds": 5, "generate_audio": True},
}
quote = requests.post(f"{BASE_URL}/quotes", json=body, headers=HEADERS)
print(quote.status_code, quote.json())
## 2) Submit the video (returns 202), then poll with the SAME key
job = requests.post(f"{BASE_URL}/videos", json=body, headers=HEADERS)
gen_id = job.json()["id"]
status = requests.get(f"{BASE_URL}/generations/{gen_id}", headers=HEADERS).json()
print(status["status"], status["credits"]["cost"], status["outputs"])

Per the spec, a generation object has id, model, status (pending, processing, success, failed, canceled, expired), created_at, credits.cost, outputs (each with type, url, expires_at), and error. Download outputs before expires_at. For the async pattern and retry guidance, see the Async generations and Errors & retries pages in the API docs.

Auth errors and status codes

Error responses use this shape: {"error": {"code": "...", "message": "..."}}. The spec says rejected requests return "No upstream diagnostics."

SituationWhat the docs sayFix
Legacy key (issued before API launch)403 api_key_upgrade_requiredCreate a replacement, update your server, and revoke the old key
Request sent with an Origin headerRejectedCall from your backend, not the browser
Polling with a different keyCannot query that generationUse the original API key
Key was exposedRevoke immediately; submitted tasks are not canceledRevoke it and create a new key
Other rejectionsDocumented codes: 400, 401, 402, 403, 409, 413, 422, 429, 503 (/generations/{id}: 401, 404, 429, 503)Read error.code and follow Errors & retries

Seedance API vs BytePlus

This guide covers the seedance2-5.com account API, which bills against your site credits. If you are comparing it with the BytePlus route, read BytePlus Seedance 2.5 API.

FAQ

How do I get a Seedance API key?

Sign in at seedance2-5.com, open Settings → API keys, create a key, and copy it right away. It is shown only once.

How does Seedance API authentication work?

It uses HTTP Bearer authentication. Send Authorization: Bearer YOUR_API_KEY from your server to https://seedance2-5.com/api/v1.

Why does my key return 403 api_key_upgrade_required?

The key was issued before the API launched. Create a replacement, update your server, and revoke the old key.

Can I call the Seedance API from the browser?

No. Requests that carry an Origin header are rejected. Keep keys out of frontend code and mobile apps.

How many API keys can I have?

Each account allows 10 active keys. You can create 10 per hour and 20 per day.

Sources

Last verified: 2026-10-20

Try Seedance 2.5 Today

Create your API key, run a free quote, and generate your first clip. New accounts get free credits on sign-up, enough for one video. Try Seedance 2.5 Today →

Seedance Team