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ů.

Základní URL
https://api.seedance2.ai
Na 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_xxxxxxxx
sk_live_

Používejte klíče sk_live_ pro produkční provoz.

sk_test_

Používejte klíče sk_test_ pro testování integrace v sandboxu se stejnou API smlouvou.

401

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.

Odeslat úlohu

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
    }
  }'
Možnost výsledku: Dotazování

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"
Možnost výsledku: Webhook

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í.

POST
/v1/videos/generations
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
    }
  }'

Režimy generování

generation_type řídí, které mediální vstupy jsou přijímány a jak je model interpretuje.

RežimPovinná médiaVolitelná médiaPoznámky
text-to-videovýzvadoba trvání, poměr stran, rozlišení, seedPouze textová výzva. image_urls, video_urls a audio_urls nejsou potřeba.
image-to-videovýzva + pole image_urls (1-2 URL obrázků)doba trvání, poměr stran, rozlišení, seedimage_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-videovýzva + alespoň jeden obrázek nebo videoobrázky, videa a audio v rámci limitů materiáluAudio nemůže být použito samostatně s textem. Přidejte alespoň jeden obrázek nebo video, pokud je poskytnuto audio.
text-to-video

Použ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-video

Použ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-video

Použ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

Text + Obrázek
Text + Video
Text + Obrázek + Video
Text + Obrázek + Audio
Text + Video + Audio
Text + Obrázek + Video + Audio
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čkaPovinnéPopisPříklad
AuthorizationAnoBearer API klíč použitý k autentizaci požadavku.Bearer sk_live_xxx
Content-TypeAnoVšechny požadavky na zápis používají JSON.application/json

Pole nejvyšší úrovně

PoleTypPovinnéVýchozíRozsah / VýčetRežimyPříklad
model

Varianta modelu použitá pro generování.

stringAno-seedance-2-0 | seedance-2-0-fastvšechnyseedance-2-0
callback_url

HTTPS endpoint, který přijímá zpětná volání o dokončení a selhání úloh.

stringNe-HTTPS URL, žádné privátní sítěvšechnyhttps://your-domain.com/hook
input

Nastavení generování a mediální reference.

objectAno--všechny-

input.* pole

PoleTypPovinnéVýchozíRozsah / VýčetRežimyPříklad
input.prompt

Textová výzva popisující video, které se má vytvořit.

stringAno-neprázdný textvšechnya cat surfing
input.generation_type

Režim generování. Výchozí je text-to-video.

stringNetext-to-videotext-to-video | image-to-video | reference-to-video-image-to-video
input.image_urls

Veř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_urls

Veř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_urls

Veř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.duration

Délka výstupního videa v sekundách.

intNe54-15 sekundvšechny5
input.aspect_ratio

Poměr stran výstupu. 'adaptive' umožňuje službě odvodit nejlepší poměr.

stringNeadaptive16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptivnívšechny16:9
input.resolution

Úroveň rozlišení výstupu.

stringNe720p480p | 720p | 1080pvšechny720p
input.generate_audio

Zda má model generovat audio, pokud je podporováno.

booleanNetruetrue | falsevšechnytrue
input.watermark

Zda přidat vodoznak.

booleanNefalsetrue | falsevšechnyfalse
input.web_search

Zda povolit rozšíření o webové vyhledávání, pokud je podporováno.

booleanNefalsetrue | falsevšechnyfalse
input.return_last_frame

Zda vrátit URL posledního snímku, pokud je k dispozici.

booleanNefalsetrue | falsevšechnyfalse
input.seed

Deterministický seed. Použijte -1 pro náhodný seed.

intNe-1-1 nebo 0-4294967295vš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"
}
HodnotaVýznam
status=queuedPřijato a čeká na odeslání nebo zpracování.
status=generatingPoskytovatel zpracovává generování.
status=completedVideo dokončeno a data.results obsahuje URL výsledku.
status=failedGenerování se nezdařilo nebo vypršel časový limit.
billing_status=reservedKredity 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_failedTransakce 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ódHTTPVýznamOpakovat?
invalid_request400Chybějící nebo neplatné parametry.Ne, opravte požadavek.
invalid_api_key401API klíč chybí, je neplatný nebo zrušený.Ne, použijte platný klíč.
insufficient_credits402Nedostatečné kredity. Úloha není přijata ani účtována.Po dobití.
forbidden403API klíč nemá požadovaný rozsah.Ne.
not_found404Úloha neexistuje nebo nepatří vlastníkovi klíče.Ne.
rate_limited429Překročena frekvence požadavků.Ano, dodržujte Retry-After.
internal_error500Chyba 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.

Protokoly API