Get API key
Base URL
https://api.seedanceapis.com/v1
Model
uncensored

Seedance API: Prompts and scripts over one endpoint

Get started with the Seedance API in minutes. Use our OpenAI-compatible endpoint to generate uncensored scripts and captions for your creative pipeline.

Prerequisites: Install the SDK

Before sending your first request, ensure you have the official OpenAI SDK for your preferred language installed. This API uses the standard chat/completions protocol, so any OpenAI-compatible client works. For Python, install the package via pip. For Node.js, use npm. You only need the client library; no extra dependencies are required for basic text generation or tool calling.

Authentication: Setting Your API Key

Authentication is handled via a simple Bearer token. Create an account on the Get API key page to receive your unique key. No credit card is required for the trial. Store this key in an environment variable or your application's config file. The key grants access to the uncensored model and is tied to your prepaid credit balance. Regenerate the key anytime from your dashboard if needed.

Sending a Chat Completion Request

Make a POST request to the base URL. The model field must be set to uncensored. Include your system prompt to define the role, and user messages for the content generation. This endpoint handles scriptwriting, captioning, and post-processing text tasks efficiently.

curl https://api.seedanceapis.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
  }'

Streaming Responses for Real-Time Output

For long scripts or real-time captioning, enable streaming by setting stream: true. The API returns a Server-Sent Events (SSE) stream of partial completions. This allows your application to display text as it is generated, improving perceived latency. Handle the stream chunks in your SDK to update the UI incrementally.

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Tell the story in second person."}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Using Tool Calling for Structured Data

The API supports function calling to extract structured data from text or generate JSON output. Define your tool schemas in the request. The model will respond with structured arguments that your code can execute. This is ideal for post-processing steps where you need specific fields from generated scripts or metadata.

from openai import OpenAI

client = OpenAI(base_url="https://api.seedanceapis.com/v1", api_key="YOUR_KEY")

resp = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)

Understanding Limits and Quotas

Watch for standard HTTP status codes. A 401 error means your API key is invalid or expired. A 402 error indicates insufficient prepaid credit; top up to continue. A 429 error signals rate limiting, capped at 300 requests per minute per key. The context window is 100,000 tokens total. Requests exceeding 8 MB will be rejected.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.seedanceapis.com/v1", apiKey: process.env.API_KEY });

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);

Specs at a glance

The numbers below are the real limits of this API, not marketing. Compare them with what your app needs.

ParameterDetails
ProtocolOpenAI-compatible: any OpenAI SDK or client works — change the base URL and the key
Modeluncensored
MethodsPOST /v1/chat/completions · GET /v1/models
API keyAuthorization: Bearer YOUR_KEY
Base URLhttps://api.seedanceapis.com/v1
Completion length16,000 tokens max; 2,048 if max_tokens is not set
Function callingSupported: tools + tool_choice, tool_calls in the reply (streamed too), tool results as role: tool messages
StreamingSupported (stream: true), usage included at the end
Sampling parameterstemperature, top_p, stop, seed, presence_penalty, frequency_penalty
JSON modeJSON object mode via response_format json_object
Max context100,000 tokens, input and output combined
Requests per minute300/min per key
Concurrency8 requests at the same time per key
Response headersX-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency
Max body8 MB request body
Price$0.25 per 1M input tokens · $1.00 per 1M output tokens
Trial credit$0.50 of credit valid 7 days, no card needed
Credit expirypaid credit never expires, no subscription
Billingprepaid credit, charged by real token usage; errors and refusals are free
Volume bonus+5% from $50, +10% from $100
Paymentcrypto: USDT on TRON or USDC on Base, $10–$500, any whole sum
Accountsign in with Google or with e-mail + password
Key managementone key per account, regenerate any time (the old one stops working)
Contentadult content allowed; sexual content involving minors is refused

Error codes

Every error is JSON with a type you can switch on. You are never charged for an error.

CodeTypeMeaning
400bad_requestinvalid JSON, empty messages, bad parameter, or prompt + max_tokens over the window — fix and resend
401missing_key · invalid_key · key_revokedno key, wrong key, or a key replaced by a newer one
402no_creditout of credit; add credit and retry
403content_blockedrefused by the content policy
404not_foundunknown endpoint
413request_too_largebody over 8 MB
429rate_limited · concurrencyover 300/min or 8 parallel — back off and retry
503upstream_busytemporary overload, retry shortly

Questions and answers

Does the Seedance API generate images or video?

No. This is a text-completion API. It provides the uncensored LLM layer for scripts, captions, and post-processing. You must use separate tools for image or video generation.

What is the uncensored model's context window?

The model supports a 100,000 token context window, including both the input prompt and the generated output. This allows for extensive scriptwriting or document analysis in a single request.

How do I check my credit balance?

You can view your remaining prepaid credit in your account dashboard. If you receive a 402 error, your balance is too low for the request. Top-ups start at $10.

Your key is one form away

Create an account, copy the key, change the base URL. That is the whole setup.

Get API key