Seedance 2.0 Mini
Generează videoclipuri cu Seedance 2.0 Mini folosind text, primul și ultimul cadru sau referințe multimodale. Această pagină acoperă întregul flux, de la solicitare până la rezultat.
ID model API: seedance-2-0-mini
Generarea este asincronă. Salvează parametrul taskId returnat la crearea sarcinii, apoi interoghează statusul acesteia sau primește un webhook.
Funcționalități
| Funcție | Valori acceptate |
|---|---|
| Rezoluție de ieșire | 480p · 720p |
| Durată de ieșire | 4–15 secunde |
| Raport de aspect | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive |
| Imagini de referință | Maxim 9 imagini |
| Videoclipuri de referință | Maxim 3 videoclipuri |
| Fișiere audio de referință | Maxim 3 fișiere audio |
| Toate referințele combinate | Maxim 12 fișiere de referință în total |
| Durată totală per grup video/audio | 15 secunde |
| seed | -1 până la 4294967295 |
Tarife și credite
Generarea video este tarifată în credite, în funcție de durata facturabilă exprimată în secunde. În absența unui videoclip de intrare, durata facturabilă este egală cu durata videoclipului generat; în cazul utilizării unui videoclip de intrare, durata facturabilă include și durata videoclipului de referință.
Tabelul de mai jos prezintă creditele tarifate pe secundă, nu costul total al unei sarcini. Tariful depinde de model, de rezoluția de redare și de utilizarea videoclipurilor de referință în modul de conversie referință-video. Consultați formulele și exemplele de sub tabel pentru calculul costului total.
| Rezoluție de ieșire | Fără intrare video | Cu intrare video |
|---|---|---|
480p | 3 credite/secundă | 2 credite/secundă |
720p | 6 credite/secundă | 4 credite/secundă |
- Fără intrare video: secunde de ieșire × tariful fără video.
- Cu intrare video: (secunde de ieșire + secunde măsurate ale videoclipului de referință) × tariful cu video. Serverul măsoară durata totală a videoclipului de referință și o rotunjește în plus la secunde întregi înainte de facturare.
- Referințele de tip imagine sau exclusiv audio folosesc tariful fără video. Tariful de facturare cu video de referință se aplică doar în modul referință-la-video, atunci când sunt furnizate referințe video.
Exemple de calcul al costurilor
Generare text-la-video de 5 secunde la 720p: 5 × 6 = 30 credite.
Generare de 5 secunde la 720p cu un videoclip de referință de 5 secunde: (5 + 5) × 4 = 40 credite.
Creditele sunt rezervate la trimiterea solicitării și sunt încasate doar în caz de succes. Sarcinile eșuate sau care au expirat intră în fluxul de rambursare. Statusul de facturare refund_failed înseamnă că rambursarea nu s-a putut finaliza; verifică jurnalele API sau contactează echipa de asistență.
Autentificare
Creează o cheie API în panoul de control. Cheia completă este afișată o singură dată. Păstreaz-o în siguranță pe serverul tău și trimite-o ca token Bearer la fiecare solicitare.
URL de bază
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonSetează variabila de mediu SEEVIO_API_KEY înainte de a rula aceste exemple. Exemplele în JavaScript rulează pe serverul tău cu Node.js; exemplele în Python utilizează pachetul requests.
Ghid rapid
Trimite această solicitare minimă, salvează valoarea taskId returnată, apoi folosește exemplul de interogare a sarcinii de mai jos. Valoarea creditelor din răspunsul de creare reprezintă suma rezervată.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'Exemplu de răspuns pentru crearea sarcinii
După acceptarea cererii de mai sus, API-ul returnează acest răspuns JSON. Valoarea taskId este identificatorul de sarcină utilizat pentru interogările ulterioare de stare, iar credits reprezintă numărul de credite rezervate pentru această sarcină. Acest răspuns confirmă crearea sarcinii, nu și faptul că videoclipul este gata. Trebuie să interogați periodic starea sarcinii (polling) sau să folosiți un Webhook pentru a primi rezultatele video.
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 30
}Creează o sarcină
POST https://api.seevio.ai/v1/videos/generationsTrimite un obiect JSON care să conțină model și input, plus un parametru opțional callback_url. Specifică întotdeauna ID-ul exact al modelului indicat pe această pagină; omiterea parametrului model va selecta automat seedance-2-0.
Corp solicitare
| Câmp | Tip | Obligatoriu | Descriere și constrângeri |
|---|---|---|---|
model | string | Da | ID model. Pentru a utiliza Seedance 2.0 Mini, setează acest câmp la seedance-2-0-mini. |
callback_url | string | Nu | Endpoint HTTPS public pentru callback-urile de tip POST în caz de finalizare sau eșec. Rețelele private și localhost nu sunt permise. Exemplu: https://example.com/webhooks/seevio |
input | object | Da | Setările de generare. Trebuie să conțină un prompt completat. |
Parametri de intrare
Furnizați image_urls, video_urls și audio_urls ca liste de șiruri URL (string[]). Fiecare URL furnizat trebuie să fie accesibil public prin HTTPS, inclusiv fișierele media ignorate de modul selectat.
| Câmp | Tip | Obligatoriu | Valoare implicită | Descriere și constrângeri |
|---|---|---|---|---|
input.prompt | string | Da | — | Fiecare mod necesită introducerea unui prompt. Acesta poate conține cel mult 10.000 de caractere înainte de trunchiere și nu poate fi format exclusiv din spații goale. Exemplu: A cat surfing at sunset |
input.generation_type | string | Nu | text-to-video | text-to-video folosește doar promptul; image-to-video folosește 1–2 imagini; reference-to-video folosește referințe de tip imagine, video și/sau audio. Valori acceptate text-to-video | image-to-video | reference-to-video |
input.image_urls | string[] | Condiționat | [] | image-to-video: 1 imagine pentru primul cadru, sau 2 imagini ordonate pentru primul și ultimul cadru. reference-to-video: până la 9 imagini. Ignorat în modul text-to-video. Exemplu: ["https://example.com/first-frame.jpg"] |
input.video_urls | string[] | Condiționat | [] | Transmis doar în modul reference-to-video; până la 3 videoclipuri și în limita a 15 secunde combinate. Ignorat în alte moduri. Exemplu: ["https://example.com/source.mp4"] |
input.audio_urls | string[] | Condiționat | [] | Transmis doar în modul reference-to-video; până la 3 fișiere audio și în limita a 15 secunde combinate. Ignorat în alte moduri. Fișierele audio nu pot fi folosite ca singurele materiale de referință pentru acest model. Când furnizați audio_urls, trebuie să adăugați și cel puțin o imagine de referință în image_urls sau un videoclip de referință în video_urls. Exemplu: ["https://example.com/music.mp3"] |
input.duration | integer | Nu | 5 | Număr întreg reprezentând durata de ieșire, de la 4 la 15 secunde. Valori acceptate 4–15Exemplu: 5 |
input.aspect_ratio | string | Nu | adaptive | Raportul de aspect al videoclipului generat. Valoarea adaptive permite modelului să determine raportul optim. Valori acceptate 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptiveExemplu: adaptive |
input.resolution | string | Nu | 720p | Folosește una dintre rezoluțiile de ieșire acceptate și enumerate aici. Valori acceptate 480p | 720pExemplu: 720p |
input.generate_audio | boolean | Nu | true | Solicită generarea unui sunet sincronizat. Valori acceptate true | falseExemplu: true |
input.watermark | boolean | Nu | false | Solicită aplicarea unui filigran AI pe videoclipul generat. Valori acceptate true | falseExemplu: false |
input.web_search | boolean | Nu | false | Permite căutarea pe web, atunci când această funcție este susținută de model. Valori acceptate true | falseExemplu: false |
input.return_last_frame | boolean | Nu | false | Solicită ultimul cadru generat. Rezultatul interogării va conține adresa în data.last_frame_url când cadrul este disponibil; în caz contrar, valoarea va fi null. Valori acceptate true | falseExemplu: true |
input.seed | integer | Nu | -1 | Număr întreg de la -1 la 4294967295. Valoarea -1 alege un seed aleatoriu. Valori acceptate -1 până la 4294967295Exemplu: 42 |
Câmpurile booleene trebuie să fie true sau false în format JSON, nu stringuri sau numere.
Răspuns creare
Codul HTTP 200 returnează taskId (string) și credits (număr). Acest lucru confirmă crearea sarcinii, nu și finalizarea ei. Suma de mai jos corespunde ghidului rapid pentru un clip de 5 secunde la 720p.
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 30
}Moduri de generare și exemple
Text în video
Generează pornind de la un prompt text. URL-urile media nu sunt transmise în acest mod.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'Primul cadru
Furnizează o imagine ca prim cadru, apoi descrie mișcarea dorită în prompt.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg"
],
"aspect_ratio": "adaptive"
}
}'Primul și ultimul cadru
Furnizează două URL-uri de imagini în ordine: mai întâi primul cadru, apoi ultimul cadru. Acest exemplu solicită, de asemenea, ultimul cadru al videoclipului generat.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"aspect_ratio": "adaptive",
"return_last_frame": true
}
}'Referință multimodală
Combină referințe de tip imagine, video și audio. Promptul text rămâne obligatoriu. Introducerea unui videoclip de referință modifică formula de facturare.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
"duration": 5,
"resolution": "720p",
"generation_type": "reference-to-video",
"image_urls": [
"https://example.com/character.jpg"
],
"video_urls": [
"https://example.com/camera.mp4"
],
"audio_urls": [
"https://example.com/ambience.mp3"
],
"aspect_ratio": "adaptive"
}
}'Interoghează o sarcină
GET https://api.seevio.ai/v1/tasks/{taskId}Înlocuiește ID-ul din exemplu cu valoarea taskId returnată la crearea sarcinii. Interogările returnează doar sarcinile asociate utilizatorului cheii API; ID-urile inaccesibile sau necunoscute returnează HTTP 404.
Ca punct de pornire, interoghează la fiecare 10–20 secunde, redu frecvența în caz de HTTP 429 și oprește interogarea când statusul devine completed sau failed. Pentru mediile de producție, recomandăm utilizarea webhookurilor. Fiecare exemplu de cod de mai jos efectuează o singură interogare.
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| Status | Descriere și constrângeri |
|---|---|
queued | Acceptat și în așteptare pentru procesare. |
generating | Generarea este în curs de desfășurare. |
completed | Succes. Descarcă elementele din data.results înainte de expirare. |
failed | Eșec definitiv. Inspectează failed_reason și billing_status. |
| Câmp | Tip | Descriere și constrângeri |
|---|---|---|
id | string | Identificatorul sarcinii. Acesta reprezintă valoarea taskId din răspunsul de creare. |
created_at | number | Data creării sarcinii, exprimată în secunde Unix. |
model | string | ID-ul public al modelului utilizat pentru această sarcină. |
billing_status | string | statusul facturării: reserved, charged, refunded sau refund_failed. |
credits | number | Credite rezervate pentru această sarcină. Această valoare este păstrată după o rambursare; inspectează billing_status pentru a determina rezultatul final al facturării. |
failed_reason | string | null | Motivul eșecului pentru sarcinile eșuate; în caz contrar, are valoarea null. Răspunsurile de interogare eșuate nu conțin obiectul data. |
data | object | Prezent în interogările sarcinilor care nu au eșuat. Conține detalii despre rezultat și procesare. |
data.results | string[] | Array cu URL-urile videoclipurilor generate. Rămâne gol până la finalizare sau după ce videoclipul a expirat. |
data.video_expires_at | string | null | Expirarea videoclipului ca timestamp ISO 8601 sau null înainte ca acesta să fie disponibil. Salvează rezultatul înainte de acest termen. |
data.last_frame_url | string | null | URL-ul ultimului cadru când este solicitat și disponibil, în caz contrar null. |
data.processing_time | number | null | Durata de procesare la furnizor în secunde, când este disponibilă, în caz contrar null. |
Sarcină finalizată: răspuns la interogare cu rezultatele video
Atunci când interogarea returnează status=completed, generarea videoclipului s-a încheiat. Citiți URL-urile videoclipurilor din data.results și descărcați-le înainte de data.video_expires_at. billing_status=charged indică faptul că au fost debitate creditele rezervate.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-mini",
"status": "completed",
"billing_status": "charged",
"credits": 30,
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Sarcină eșuată: răspuns la interogare cu detalii despre eroare și facturare
Atunci când interogarea returnează status=failed, procesul de generare s-a încheiat fără succes. Consultați failed_reason pentru a afla cauza și billing_status pentru rezultatul rambursării. În acest exemplu, refunded înseamnă că toate creditele au fost returnate. Parametrul credits păstrează valoarea inițială rezervată, iar răspunsul nu include obiectul data.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-mini",
"status": "failed",
"billing_status": "refunded",
"credits": 30,
"failed_reason": "provider_failed"
}Webhookuri
Setează parametrul callback_url în solicitarea de creare pentru a primi un POST JSON atunci când sarcina se finalizează sau eșuează. Returnează un răspuns de tip 2xx în decurs de 15 secunde. Livrările eșuate vor fi reîncercate; procesează livrările repetate în mod idempotent pe baza ID-ului sarcinii.
Endpoint-ul dumneavoastră de callback trebuie să accepte solicitări de tip POST cu un corp de solicitare JSON (Content-Type: application/json).
Creează o sarcină cu callback
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
},
"callback_url": "https://example.com/webhooks/seevio"
}'Payload-ul webhookului diferă de cel al interogării de sarcină: exclude proprietățile billing_status și credits; detaliile despre eșec se află în data.failed_reason și data.credits_refunded. Proprietatea created_at din webhook reprezintă momentul creării evenimentului în secunde Unix.
Sarcină finalizată: payload de callback reușit
Atunci când generarea reușește, callback-ul conține status=completed. Utilizați id pentru a identifica sarcina și data.results pentru a prelua URL-urile videoclipurilor. Descărcați și salvați rezultatele înainte de data.video_expires_at.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-mini",
"status": "completed",
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Sarcină eșuată: payload de callback eșuat
Atunci când generarea eșuează, callback-ul conține status=failed. Utilizați id pentru a identifica sarcina, data.failed_reason pentru motivul eșecului și data.credits_refunded pentru numărul de credite returnate.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-mini",
"status": "failed",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 30
}
}Exemplu de receptor
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrls = callbackData.data.results;
// Save the video URLs and mark this task as completed in your application.
console.log(callbackData.id, videoUrls);
}
if (callbackData.status === "failed") {
const { failed_reason, credits_refunded } = callbackData.data;
// Record the failure reason and refunded credits for this task.
console.error(callbackData.id, failed_reason, credits_refunded);
}
return new Response(null, { status: 200 });
}Acest exemplu de Next.js citește corpul JSON al callback-ului și gestionează direct sarcinile finalizate și cele eșuate. Adăugați persistență și deduplicare a ID-urilor de sarcini pentru aplicația dumneavoastră; puneți în coadă procesele lente înainte de a confirma callback-ul.
Cerințe și limitări media
- Toate URL-urile pentru fișierele media și cele de callback trebuie să fie adrese HTTPS publice. Evită localhost, IP-urile private și fișierele care necesită cookie-uri sau autentificare. URL-urile pentru videoclipurile/fișierele audio de referință trebuie să returneze direct fluxul media.
- În modul reference-to-video, furnizează cel puțin o referință, fără a depăși 9 imagini, 3 videoclipuri, 3 fișiere audio și în total maximum 12 elemente combinate. Durata video totală și durata audio totală trebuie să fie de maximum 15 secunde fiecare.
- Modul text-to-video ignoră toate referințele media. Modul image-to-video transmite doar imaginile pentru primul/ultimul cadru și ignoră referințele video și audio. Folosește modul reference-to-video pentru a combina mai multe tipuri de fișiere media.
- Pentru modelele Seedance 2.0, folosește fișiere audio împreună cu cel puțin o imagine sau un videoclip pentru compatibilitatea cu modelul. Exemplele exclusiv audio sunt disponibile pe pagina modelului Seedance 2.5.
- Modelele Fast și Mini acceptă rezoluțiile 480p și 720p. Nu te baza pe faptul că rezoluțiile mai mari sunt acceptate la validarea solicitării: acestea nu reprezintă opțiuni de ieșire compatibile cu acest model.
Cerințe privind imaginile
- Fiecare imagine trebuie să aibă o dimensiune mai mică de 30 MB.
- Formate acceptate: jpeg, png, webp, bmp, tiff, gif.
- Raport de aspect (lățime ÷ înălțime): între 0,4 și 2,5, inclusiv.
- Atât lățimea, cât și înălțimea trebuie să fie între 300 și 6.000 de pixeli, inclusiv.
Cerințe privind videoclipurile
- Formate acceptate: mp4, mov.
- Fiecare videoclip nu trebuie să depășească 100 MB.
- Frecvență cadre: între 24 și 60 FPS, inclusiv.
- Raport de aspect (lățime ÷ înălțime): între 0,4 și 2,5, inclusiv.
- Număr total de pixeli (lățime × înălțime): între 407.696 și 8.295.044, inclusiv. De exemplu, 614 × 664 = 407.696 și 3.326 × 2.494 = 8.295.044. Acestea sunt exemple de număr de pixeli, nu cerințe fixe pentru lățime și înălțime.
Cerințe privind fișierele audio
- Formate acceptate: wav, mp3.
- Fiecare fișier audio nu trebuie să depășească 15 MB.
Erori
Erorile HTTP conțin un obiect error cu proprietățile code și message. O sarcină acceptată cu succes poate eșua ulterior; interoghează sarcina sau gestionează callback-ul de eșec primit.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | Câmp | Soluție recomandată |
|---|---|---|
| 400 | invalid_request | Corectează codul JSON, promptul lipsă, limitele parametrilor sau URL-ul media înainte de a reîncerca. |
| 401 | invalid_api_key | Verifică tokenul Bearer și dacă cheia API este activă. |
| 402 | insufficient_credits | Adaugă credite sau redu costul sarcinii. Răspunsul poate include sumele necesare și cele disponibile. |
| 403 | forbidden | Verificați restricția la nivel de cont descrisă în mesajul de eroare. |
| 404 | not_found | Verifică ID-ul sarcinii și asigură-te că cheia aparține utilizatorului care a creat sarcina. |
| 429 | rate_limited | Așteaptă intervalul indicat în antetul Retry-After înainte de a reîncerca. |
| 500 | internal_error | Inspectează mesajul de eroare și jurnalele API. Reîncearcă cu atenție; retrimiterea unei solicitări de creare poate genera o nouă sarcină facturabilă. |
Limite de rată
Crearea de sarcini: în mod implicit, fiecare cheie API permite maximum 100 de solicitări pe minut. Limitele personalizate de rată nu sunt disponibile în prezent.
Interogarea sarcinilor: în mod implicit, fiecare cheie API permite maximum 120 de solicitări pe minut. Solicitările de interogare și cele de creare a sarcinilor sunt contorizate separat.