
Seedance API — ruble pricing and a 5-minute setup
Seedance API with ruble billing: text-to-video and image-to-video through one Zerocoder key. Per-second pricing, cURL / Python / Node samples, limits, refunds.
What Seedance does and where it's strong
Seedance is ByteDance's video generation family: you send a text prompt (or a text prompt plus a reference frame) and get back a short video clip. The family covers text-to-video and image-to-video, with several tiers from a lightweight eco model up to a pro-grade one, so you can match quality to the task instead of paying for headroom you don't need.
The models handle camera motion, lighting, and scene progression across a clip, which makes them a fit for product demos, social clips, and short narrative shots rather than just static image animation.
What Zerocoder adds
- One API key that works across every Seedance model and every other model on the platform
- A single ruble wallet — top up by Russian card or company invoice, no foreign card or VPN needed
- Transparent per-model pricing in one place, with docs and an SDK-compatible interface so existing HTTP clients just work
How a request and response work
You start a job with a prompt, a model id, a duration in seconds, and an aspect ratio or size; for image-to-video you add a reference frame URL. The API charges you immediately and hands back a task id with status queued. You then poll that id — the status moves to processing and then to completed with a video URL, or to failed, in which case the charge is returned to your wallet automatically.
Available models and prices
Built from the live GET /v1/models price list: prices include our margin, in rubles and in dollars at the internal rate. Anything missing is temporarily not served by the gateway.
| Model | Unit | ₽ | $ | Cost examples | Endpoint |
|---|---|---|---|---|---|
seedance-2.0-fastrecommendedalso: seedance-std | per second | 22.1 ₽ | $0.245 | 5-second clip: 110 ₽ · $1.23 10-second clip: 221 ₽ · $2.45 | /v1/videos |
seedance-2.0recommended | per second | 28.6 ₽ | $0.317 | 5-second clip: 143 ₽ · $1.59 10-second clip: 286 ₽ · $3.17 | /v1/videos |
seedance-2.0-prorecommended | per second | 28.6 ₽ | $0.317 | 5-second clip: 143 ₽ · $1.59 10-second clip: 286 ₽ · $3.17 | /v1/videos |
seedance-2.5recommended | per second | 22.4 ₽ | $0.249 | 5-second clip: 112 ₽ · $1.25 10-second clip: 224 ₽ · $2.49 | /v1/videos |
seedance-2.0-minirecommended | per second | 19.1 ₽ | $0.212 | 5-second clip: 95.6 ₽ · $1.06 10-second clip: 191 ₽ · $2.13 | /v1/videos |
seedance-2.0-eco | per second | 13.6 ₽ | $0.152 | 5-second clip: 68.2 ₽ · $0.758 10-second clip: 136 ₽ · $1.52 | /v1/videos |
seedance-2.5-eco | per second | 24.3 ₽ | $0.270 | 5-second clip: 121 ₽ · $1.35 10-second clip: 243 ₽ · $2.70 | /v1/videos |
Cost calculator
Pick a model and a volume — the calculator uses the same formulas as API billing.
Prices from GET /v1/models, internal exchange rate. Failed generations are not charged.
First request
One zc-sk-… key, the x-api-key header (or Authorization: Bearer), base URL https://zerocoder.com/api/v1. Samples are generated from the real route contracts.
Create a key
Account → API: top up the balance in rubles and create a zc-sk-… key
Send a request
Copy the sample below — the model id is already taken from the price list.
Check the charge
GET /v1/balance shows the balance; the call price comes back in the response.
# 1) start the render — price_rub is charged up front, refunded if the render fails
curl https://zerocoder.com/api/v1/videos \
-H "x-api-key: zc-sk-…" -H "content-type: application/json" \
-d '{"model": "seedance-std", "prompt": "A drone shot over a foggy pine forest at sunrise, slow dolly in", "seconds": 5, "aspect": "16:9"}'
# → {"id":"vid_…","object":"video","model":"seedance-std","status":"queued","seconds":5,"price_rub":…,"balance_rub":…,"poll":"/api/v1/videos?id=vid_…"}
# 2) poll until status is "completed" (url) or "failed" (refunded: true)
curl "https://zerocoder.com/api/v1/videos?id=vid_…" -H "x-api-key: zc-sk-…"
# image-to-video: add "image": "https://…/frame.jpg" to the bodyimport time, requests
API = "https://zerocoder.com/api/v1"
H = {"x-api-key": "zc-sk-…"}
job = requests.post(f"{API}/videos", headers=H, json={
"model": "seedance-std",
"prompt": "A drone shot over a foggy pine forest at sunrise, slow dolly in",
"seconds": 5, # 4–10
"aspect": "16:9", # or 9:16 / 1:1; "image": "https://…" for image-to-video
}).json()
print("charged", job["price_rub"], "RUB, balance", job["balance_rub"])
while True:
st = requests.get(f"{API}/videos", headers=H, params={"id": job["id"]}).json()
if st["status"] == "completed":
print(st["url"]); break
if st["status"] == "failed":
print("failed, refunded:", st.get("refunded")); break
time.sleep(4)const API = "https://zerocoder.com/api/v1";
const H = { "x-api-key": "zc-sk-…", "content-type": "application/json" };
const job = await fetch(`${API}/videos`, {
method: "POST", headers: H,
body: JSON.stringify({ model: "seedance-std", prompt: "A drone shot over a foggy pine forest at sunrise, slow dolly in", seconds: 5, aspect: "16:9" }),
}).then((r) => r.json());
console.log("charged", job.price_rub, "RUB");
for (;;) {
const st = await fetch(`${API}/videos?id=${job.id}`, { headers: H }).then((r) => r.json());
if (st.status === "completed") { console.log(st.url); break; }
if (st.status === "failed") { console.log("failed, refunded:", st.refunded); break; }
await new Promise((r) => setTimeout(r, 4000));
}Inputs, limits and refunds
- Text → video and image → video (image: public https URL)
- Duration seconds: 4–10 (default 5)
- aspect 16:9 / 9:16 / 1:1 or an explicit size
- Charged up front by price_rub, refunded if the render fails (refunded: true)
- A job stuck in the queue over 30 minutes is refunded automatically
- 30 requests per minute per key (all endpoints combined)
Error responses and refunds
# 401 {"type":"error","error":{"type":"authentication_error","message":"Invalid or revoked API key."}}
# 402 {"type":"error","error":{"type":"billing_error","message":"Not enough API balance: …"}}
# 429 {"type":"error","error":{"type":"rate_limit_error","message":"…"}} ← 30 requests/min per key
# 400 {"type":"error","error":{"type":"invalid_request_error","message":"Unknown model \"…\". See GET /v1/models."}}
# 502 {"type":"error","error":{"type":"api_error","message":"… Charge refunded."}} ← start failed → money back
# GET ?id → {"id":"vid_…","status":"failed","refunded":true} ← render failed → money backUse cases
An e-commerce team turns product photos into short looping showcase clips for listing pages
A social media bot generates daily short video posts from a content calendar of prompts
A marketing agency batch-produces ad variants in different aspect ratios for A/B testing
An indie hacker builds a text-to-video SaaS tool with a simple prompt box for end users
An internal ops team auto-generates training or onboarding video snippets from scripts
A game studio prototypes cutscene or trailer shots before committing to full production
Prompting tips
- Name the shot type and camera move explicitly: wide establishing shot, slow dolly in, handheld tracking shot
- Set the light and time of day — golden hour, overcast noon, neon night — it anchors color and mood
- Describe how the scene changes across the clip, not just the opening frame: what moves, what enters, what ends
- For image-to-video, pick a clean, well-lit reference frame with the subject centered and in focus
- Match duration and aspect ratio to the platform: vertical 9:16 for short-form, 16:9 for landscape players
- Avoid asking for on-screen text, dense crowds, or close-up hands — these are the hardest details to render cleanly
Real results
Works by Zerocoder users made with this model: preview, resolution, duration and date. Nothing was generated specifically for this page.
| Model | Resolution | Duration | Date | Likes | Prompt |
|---|---|---|---|---|---|
| Seedance | 480p | 10 s | 6 September 2026 | 55 | Ultra-photorealistic amateur smartphone video. The footage is filmed handheld by a passenger inside a second small aircraft flying parallel |
| Seedance | 480p | 6 s | 29 August 2026 | 17 | Universal Robotic Camera Prompt UNIVERSAL ROBOTIC CAMERA PROMPT Use the uploaded image as the exact first frame and exact visual reference. |
| Seedance | 720p | 4 s | 26 June 2026 | 10 | сделай короче отрывок снятый на айфон 7 как рыцарь в дали на горе вставляет свой меч в землю и там идет очень силный дождь и это ночь и в мо |
| Seedance | 720p | 5 s | 27 July 2026 | 0 | Оживи фото, чтобы мужская рука в золотых часах крутых нажимает кнопку с динамикой но плавно, типа брутально |
| Seedance | 720p | 5 s | 27 July 2026 | 0 | Оживи фотку, сохрани ракурс, и усиль динамику |
FAQ
Does the Seedance API support image-to-video?
Yes. Pass a public https image URL in the image field plus a prompt describing the motion — the model animates the frame while keeping the composition and character.
Do Seedance clips have sound?
Yes, the model generates a soundtrack together with the picture; audio is not billed separately.
How do I get a Seedance API key?
Sign up at Zerocoder, open the API section of your account and create a zc-sk-… key. The same key unlocks Seedance and every other model in the catalogue — no separate Seedance key needed.
How is Seedance API billed?
Top up the API balance in rubles (Russian bank card or invoice for companies). Usage is charged per second or per clip of Seedance video at the price returned by GET /v1/models; Seedance prices already include our margin, there are no hidden fees.
What if Seedance fails to generate the clip?
If the provider fails a Seedance generation, the charge is refunded automatically and the response carries refunded: true. You only pay for a finished clip.
What are the Seedance API rate limits?
A shared limit of 30 requests per minute per key across all generation endpoints, Seedance included. Above that you get 429 rate_limit_error; for higher Seedance volumes contact us and we raise it individually.
Do I need a VPN or a foreign card for Seedance API?
No. Seedance requests go to zerocoder.com, payment is in rubles, and accounting documents are available on request.
Can I try Seedance without code?
Yes: Seedance is available in the Zerocoder studio and in the free tools catalogue — check the quality by hand, then wire up the Seedance API.

AI API for your product
70% cheaper than the official APIs — one key for GPT, Claude, Gemini, images and video