Seedance 2.0 API
Zabudujte generování videa do vašeho produktu s asynchronním vytvářením úloh, dotazováním stavu, webhooky a účtováním na základě kreditů.
https://api.seedance2.aiNa této stránce
Úvod
API umožňuje programově odesílat úlohy generování videa Seedance 2.0. Generování je asynchronní: vytvoříte úlohu, okamžitě obdržíte ID úlohy a poté získáte hotové video buď dotazováním na endpoint úlohy, nebo přijetím webhooku.
Asynchronní úlohy
Dotazování funguje dobře pro vývoj a jednoduché integrace.
Webhook připraven
Webhooky se doporučují pro produkci, protože zabraňují agresivnímu dotazování a upozorní vaši službu, když úloha dosáhne koncového stavu.
Citlivé na kredity
Kredity jsou rezervovány při odeslání. Úspěšné úlohy jsou účtovány z této rezervace; neúspěšné nebo vypršené úlohy jsou automaticky vráceny.
Autentizace
Vytvořte API klíč v nástěnce a posílejte ho jako Bearer token při každém požadavku. Úplný klíč se zobrazí pouze jednou při vytvoření.
Authorization: Bearer sk_live_xxxxxxxxPoužívejte klíče sk_live_ pro produkční provoz.
Používejte klíče sk_test_ pro testování integrace v sandboxu se stejnou API smlouvou.
Chybějící, neplatné nebo zrušené klíče vrátí invalid_api_key s HTTP 401.
Rychlý start
Nejprve odešlete úlohu. Po přijetí úlohy si vyberte jednu z metod doručení výsledku: dotazování na endpoint úlohy, nebo příjem konečného výsledku prostřednictvím webhooku.
Vytvořte asynchronní úlohu videa a okamžitě obdržíte ID úlohy.
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cat surfing on a neon wave, cinematic lighting",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false,
"seed": -1
}
}'Získejte stavovou endpoint úlohy, pokud vaše integrace preferuje explicitní dotazování.
curl https://api.seedance2.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"Při odesílání úlohy předejte callback_url a poté přijímajte zpětná volání o dokončení nebo selhání a aktualizujte svůj vlastní záznam úlohy.
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrl = callbackData.data.results[0];
// Save the video URL or update your own task record here.
}
if (callbackData.status === "failed") {
const errorMessage = callbackData.data.failed_reason;
// Mark your own task record as failed here.
}
return new Response(null, { status: 200 });
}Vytvořit úlohu videa
Vytvořte úlohu videa pomocí POST /v1/videos/generations. Tělo požadavku obsahuje model nejvyšší úrovně, volitelnou callback_url a vstupní objekt obsahující výzvu a nastavení generování.
/v1/videos/generationscurl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cat surfing on a neon wave, cinematic lighting",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false,
"seed": -1
}
}'Režimy generování
generation_type řídí, které mediální vstupy jsou přijímány a jak je model interpretuje.
| Režim | Povinná média | Volitelná média | Poznámky |
|---|---|---|---|
text-to-video | výzva | doba trvání, poměr stran, rozlišení, seed | Pouze textová výzva. image_urls, video_urls a audio_urls nejsou potřeba. |
image-to-video | výzva + pole image_urls (1-2 URL obrázků) | doba trvání, poměr stran, rozlišení, seed | image_urls musí být pole. Poskytněte 1 URL obrázku pro první snímek, nebo 2 URL obrázků pro první a poslední snímek. Video a audio jsou ignorovány. |
reference-to-video | výzva + alespoň jeden obrázek nebo video | obrázky, videa a audio v rámci limitů materiálu | Audio nemůže být použito samostatně s textem. Přidejte alespoň jeden obrázek nebo video, pokud je poskytnuto audio. |
text-to-videoPoužijte text-to-video, když je výzva jediným kreativním vstupem.
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cinematic drone shot over a futuristic coastal city at sunrise",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false,
"seed": -1
}
}'image-to-videoPoužijte image-to-video, když input.image_urls je pole s 1-2 URL obrázků: jedna URL nastavuje první snímek a dvě URL nastavují první a poslední snímek. Odkazy na video a audio jsou v tomto režimu ignorovány.
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"input": {
"prompt": "the subject turns toward camera, soft studio motion",
"generation_type": "image-to-video",
"image_urls": ["https://your.cdn.com/first-frame.jpg"],
"duration": 5,
"resolution": "720p"
}
}'reference-to-videoPoužijte reference-to-video pro bohatší směrování s referenčními obrázky, videi a audiem. Audio nemůže být použito samostatně s textem; zahrňte alespoň jeden obrázek nebo video, pokud je poskytnuto audio.
Limity materiálu
- Až 9 referenčních obrázků
- Až 3 referenční videa, celková doba trvání <= 15 sekund
- Až 3 referenční audio, celková doba trvání <= 15 sekund
- Maximálně 12 materiálů celkem napříč všemi typy
Podporované vstupní kombinace
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"input": {
"prompt": "use the product from image 1 and the camera motion from the reference video",
"generation_type": "reference-to-video",
"image_urls": ["https://your.cdn.com/product.jpg"],
"video_urls": ["https://your.cdn.com/camera-motion.mp4"],
"audio_urls": [],
"duration": 8,
"resolution": "1080p"
}
}'Parametry požadavku
Názvy parametrů, hodnoty výčtu, cesty k endpointům a příklady jsou součástí API smlouvy. Níže uvedené popisy vysvětlují, jak se jednotlivá pole chovají.
Hlavičky
| Hlavička | Povinné | Popis | Příklad |
|---|---|---|---|
Authorization | Ano | Bearer API klíč použitý k autentizaci požadavku. | Bearer sk_live_xxx |
Content-Type | Ano | Všechny požadavky na zápis používají JSON. | application/json |
Pole nejvyšší úrovně
| Pole | Typ | Povinné | Výchozí | Rozsah / Výčet | Režimy | Příklad |
|---|---|---|---|---|---|---|
modelVarianta modelu použitá pro generování. | string | Ano | - | seedance-2-0 | seedance-2-0-fast | všechny | seedance-2-0 |
callback_urlHTTPS endpoint, který přijímá zpětná volání o dokončení a selhání úloh. | string | Ne | - | HTTPS URL, žádné privátní sítě | všechny | https://your-domain.com/hook |
inputNastavení generování a mediální reference. | object | Ano | - | - | všechny | - |
input.* pole
| Pole | Typ | Povinné | Výchozí | Rozsah / Výčet | Režimy | Příklad |
|---|---|---|---|---|---|---|
input.promptTextová výzva popisující video, které se má vytvořit. | string | Ano | - | neprázdný text | všechny | a cat surfing |
input.generation_typeRežim generování. Výchozí je text-to-video. | string | Ne | text-to-video | text-to-video | image-to-video | reference-to-video | - | image-to-video |
input.image_urlsVeřejně dostupné URL obrázků. Pro image-to-video pošlete 1 obrázek pro první snímek nebo 2 obrázky pro první a poslední snímek. Pro reference-to-video pošlete až 9 obrázků jako vizuální reference. | string[] | Podmíněné | [] | Image-to-video: 1 nebo 2 obrázky. Reference-to-video: až 9 obrázků. (image-to-video) (reference-to-video) | image-to-video / reference-to-video | ["https://.../a.jpg"] |
input.video_urlsVeřejně dostupné referenční videa pouze pro reference-to-video. Můžete poslat až 3 video soubory a jejich kombinovaná délka přehrávání musí být 15 sekund nebo méně. | string[] | Ne | [] | Až 3 videa. Celková délka videa musí být 15 sekund nebo méně. | reference-to-video | [] |
input.audio_urlsVeřejně dostupné referenční audio soubory pouze pro reference-to-video. Můžete poslat až 3 audio soubory a jejich kombinovaná délka přehrávání musí být 15 sekund nebo méně. | string[] | Ne | [] | Až 3 audio soubory. Celková délka audio musí být 15 sekund nebo méně. | reference-to-video | [] |
input.durationDélka výstupního videa v sekundách. | int | Ne | 5 | 4-15 sekund | všechny | 5 |
input.aspect_ratioPoměr stran výstupu. 'adaptive' umožňuje službě odvodit nejlepší poměr. | string | Ne | adaptive | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptivní | všechny | 16:9 |
input.resolutionÚroveň rozlišení výstupu. | string | Ne | 720p | 480p | 720p | 1080p | všechny | 720p |
input.generate_audioZda má model generovat audio, pokud je podporováno. | boolean | Ne | true | true | false | všechny | true |
input.watermarkZda přidat vodoznak. | boolean | Ne | false | true | false | všechny | false |
input.web_searchZda povolit rozšíření o webové vyhledávání, pokud je podporováno. | boolean | Ne | false | true | false | všechny | false |
input.return_last_frameZda vrátit URL posledního snímku, pokud je k dispozici. | boolean | Ne | false | true | false | všechny | false |
input.seedDeterministický seed. Použijte -1 pro náhodný seed. | int | Ne | -1 | -1 nebo 0-4294967295 | všechny | -1 |
Kredity se liší podle rozlišení, délky trvání, modelu a toho, zda reference-to-video obsahuje video reference. Hodnota kreditů vrácená odpovědí při vytvoření je skutečná rezervovaná částka pro danou úlohu.
Zobrazit ceny kreditůOdpověď
Toto je úspěšná odpověď z POST /v1/videos/generations. Znamená to, že úloha byla přijata a kredity byly rezervovány. Použijte vrácené taskId k dotazování GET /v1/tasks/:id nebo k porovnání se zpětným voláním o dokončení nebo selhání.
Úspěšná odpověď POST /v1/videos/generations
{
"taskId": "3f2aK9mR...",
"credits": 60
}Získat stav úlohy
Použijte GET /v1/tasks/:id k získání aktuálního stavu úlohy. Dotazujte se ne častěji než jednou za 10 sekund. Pro produkční systémy preferujte webhooky.
curl https://api.seedance2.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"Odpověď na dokončenou úlohu
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-0",
"billing_status": "charged",
"credits": 60,
"failed_reason": null,
"data": {
"results": ["https://cdn.seedance2.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Odpověď na neúspěšnou úlohu
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-0",
"billing_status": "refunded",
"credits": 60,
"failed_reason": "provider_failed"
}| Hodnota | Význam |
|---|---|
status=queued | Přijato a čeká na odeslání nebo zpracování. |
status=generating | Poskytovatel zpracovává generování. |
status=completed | Video dokončeno a data.results obsahuje URL výsledku. |
status=failed | Generování se nezdařilo nebo vypršel časový limit. |
billing_status=reserved | Kredity jsou rezervovány, dokud je úloha v průběhu. |
billing_status=charged | Úloha uspěla a rezervace je vyrovnána. |
billing_status=refunded | Úloha se nezdařila nebo vypršel časový limit a kredity byly vráceny. |
billing_status=refund_failed | Transakce vrácení peněz se nezdařila a vyžaduje ruční zpracování. |
Po video_expires_at je data.results prázdné. Stáhněte a uložte soubor před vypršením platnosti.
Webhooky
Pokud je přítomno callback_url, Seedance zavolá váš endpoint, když je úloha dokončena nebo se nezdaří, a odešle JSON data popisující konečný výsledek. Pokud váš endpoint vrátí odpověď, která není 2xx, nebo neodpoví do 15 sekund, doručení se opakuje až 5krát. Opakování používají stejné ID úlohy, takže je odstraňte duplikáty podle ID. Vraťte odpověď 200, jakmile bezpečně zaznamenáte data zpětného volání.
Zpětné volání o dokončení úlohy
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-0",
"data": {
"results": ["https://cdn.seedance2.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Zpětné volání o selhání úlohy
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-0",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 60
}
}export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrl = callbackData.data.results[0];
// Save the video URL or update your own task record here.
}
if (callbackData.status === "failed") {
const errorMessage = callbackData.data.failed_reason;
// Mark your own task record as failed here.
}
return new Response(null, { status: 200 });
}Ověřte tvar dat zpětného volání, odstraňte duplicity podle ID, aktualizujte svůj vlastní záznam o úloze a rychle odpovězte.
callback_url musí být HTTPS a nesmí odkazovat na privátní, loopback nebo link-local síťové rozsahy.
Chyby
POST /v1/videos/generations a GET /v1/tasks/:id vrací tento tvar chyby, když se samotný požadavek API nezdaří, například neplatné parametry, neplatný API klíč, nedostatečné kredity, omezení rychlosti nebo úloha nebyla nalezena. Některé chyby zahrnují další pole, jako jsou 'required', 'available' nebo 'retry_after' v závislosti na situaci.
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits for this task.",
"required": 60,
"available": 12
}
}| Kód | HTTP | Význam | Opakovat? |
|---|---|---|---|
invalid_request | 400 | Chybějící nebo neplatné parametry. | Ne, opravte požadavek. |
invalid_api_key | 401 | API klíč chybí, je neplatný nebo zrušený. | Ne, použijte platný klíč. |
insufficient_credits | 402 | Nedostatečné kredity. Úloha není přijata ani účtována. | Po dobití. |
forbidden | 403 | API klíč nemá požadovaný rozsah. | Ne. |
not_found | 404 | Úloha neexistuje nebo nepatří vlastníkovi klíče. | Ne. |
rate_limited | 429 | Překročena frekvence požadavků. | Ano, dodržujte Retry-After. |
internal_error | 500 | Chyba serveru. | Ano, zkuste to později. |
Omezení frekvence
Omezení frekvence jsou aplikována na každý API klíč s posuvným oknem. Generování má výchozí hodnotu 60 požadavků za minutu; dotazy na stav jsou shovívavější. Odpovědi HTTP 429 zahrnují Retry-After.
Generování
60/min
Dotazy stavu
Shovívavější
Hlavička 429
Retry-After
Účtování a kredity
API používá rezervaci při odeslání, účtování při úspěchu a vrácení peněz při selhání. Stránky využití na nástěnce zobrazují historii API kreditů, protokoly úloh a statistiky využití založené na čase.
Rezervováno
Kredity jsou zkontrolovány a rezervovány, když je úloha přijata.
Účtováno
Dokončené úlohy vyrovnávají stávající rezervaci.
Vráceny peníze
Neúspěšné nebo vypršelé úlohy automaticky vrátí rezervované kredity.
Zkontrolujte využití v nástěnce
Prohlédněte si protokoly API, časové osy úloh, historii kreditů a metriky využití založené na čase.