Sari la documentație
Pe această pagină

Seedance 2.5

Generează videoclipuri cu Seedance 2.5 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-5

Generarea este asincronă. Salvează parametrul taskId returnat la crearea sarcinii, apoi interoghează statusul acesteia sau primește un webhook.

Funcționalități

FuncțieValori acceptate
Rezoluție de ieșire480p · 720p · 1080p
Durată de ieșire4–30 secunde
Raport de aspect16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Imagini de referințăMaxim 30 imagini
Videoclipuri de referințăMaxim 10 videoclipuri
Fișiere audio de referințăMaxim 10 fișiere audio
Toate referințele combinateMaxim 50 fișiere de referință în total
Durată totală per grup video/audio30 secunde
seedNeacceptat
Se acceptă de asemenea duration=-1 în modul referință-la-video; consultă secțiunile de editare video și tarife de mai jos. Modul image-to-video acceptă doar valoarea adaptive; omite acest câmp sau setează-l pe adaptive.

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ță.

Schițele utilizează tarifele 480p de mai sus, inclusiv inputul video de referință, dacă este cazul. Versiunile finale utilizează tariful exclusiv pentru ieșire la 1080p, adică 30 credite/secundă; videoclipul de referință nu mai este taxat din nou. De exemplu, o schiță de 5 secunde fără video de referință costă 50 de credite, iar versiunea sa finală de 5 secunde costă încă 150 de credite.

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șireFără intrare videoCu intrare video
480p10 credite/secundă6 credite/secundă
720p20 credite/secundă12 credite/secundă
1080p30 credite/secundă20 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 × 20 = 100 credite.

Generare de 5 secunde la 720p cu un videoclip de referință de 5 secunde: (5 + 5) × 12 = 120 credite.

Aceste credite sunt deduse în avans la crearea sarcinii. Dacă sarcina este finalizată cu succes, aceasta este suma finală reținută; costul nu va fi majorat și nu se vor acorda rambursări parțiale în funcție de durata efectivă a videoclipului generat. Sarcinile eșuate sau cele care au expirat intră în procesul de rambursare.

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ță.

Cum se tarifează creditele când durata este de -1

Când durata este setată la -1, durata finală a videoclipului nu este fixă, fiind determinată direct de model.

În majoritatea cazurilor, vă recomandăm să setați durata la lungimea exactă a videoclipului de care aveți nevoie, în loc de -1. Se recomandă utilizarea valorii -1 exclusiv pentru editarea video, nu și pentru alte scenarii de generare video.

Materiale de referințăCum se calculează costulExemplu
Cu videoclipuri de referințăSe adună duratele tuturor videoclipurilor de referință, iar totalul se rotunjește în plus la următoarea secundă întreagă (notată cu T). Costul este (T + T) × tariful aplicabil cu video: un T reprezintă durata estimată a videoclipului generat, iar celălalt T reprezintă durata videoclipurilor de referință furnizate.720p cu un videoclip de referință de 5 secunde: (5 + 5) × 12 = 120 credite.
Fără videoclipuri de referință (doar imagini sau audio)Se folosește o durată estimată de 30 de secunde pentru videoclipul generat. Costul este 30 × tariful aplicabil fără video.720p fără videoclipuri de referință: 30 × 20 = 600 credite.

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.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Setează 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-5",
  "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": 100
}

Creează o sarcină

POST https://api.seevio.ai/v1/videos/generations

Trimite 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âmpTipObligatoriuDescriere și constrângeri
model
stringDa

ID model. Pentru a utiliza Seedance 2.5, setează acest câmp la seedance-2-5.

callback_url
stringNu

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
objectDa

Setările de generare. Trebuie să conțină un prompt completat.

Parametri de intrare

Proprietatea image_urls este obligatorie în modul image-to-video. Modul reference-to-video necesită cel puțin o referință validă în image_urls, video_urls sau audio_urls.
Atunci când parametrul draft_task_id este prezent, omiteți prompt, generation_type, image_urls, video_urls, audio_urls, duration, aspect_ratio, seed, generate_audio, web_search și omni_reference_task_type, chiar dacă valorile lor corespund schiței. Aceste setări sunt moștenite automat. Nu combinați draft=true cu draft_task_id.

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âmpTipObligatoriuValoare implicităDescriere și constrângeri
input.draft
booleanNufalse

Creează o previzualizare schiță la 480p. Disponibil doar pentru Seedance 2.5. Se exclude reciproc cu parametrul draft_task_id.

Valori acceptate
true | false
input.draft_task_id
stringNu—

Creează o versiune finală la 1080p dintr-o schiță API deținută și finalizată, creată în urmă cu mai puțin de 7 zile. Furnizați valoarea taskId returnată de acest API și omiteți câmpurile de generare moștenite.

Exemplu: 3f2aK9mR7xQp4TnZ8bLc6YwH
input.output_format
stringNump4

Containerul de ieșire video. Acceptă mp4 și mov, inclusiv pentru cererile de tip Draft și cele finale.

Valori acceptate
mp4 | mov
input.prompt
stringCondiționat—

Obligatoriu pentru generarea obișnuită și pentru crearea unei schițe. Nu îl trimiteți atunci când generați o versiune finală cu draft_task_id; promptul schiței este moștenit automat.

Exemplu: A cat surfing at sunset
input.generation_type
stringNutext-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 30 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 10 videoclipuri și în limita a 30 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 10 fișiere audio și în limita a 30 secunde combinate. Ignorat în alte moduri.

Exemplu: ["https://example.com/music.mp3"]
input.duration
integerNu5

Durata de ieșire: 4–30 de secunde, implicit 5. Valoarea duration=-1 este acceptată pentru schițe și în modul reference-to-video. Pentru o versiune finală, omiteți durata; aceasta este moștenită de la schiță.

Valori acceptate
-1 | 4–30
Exemplu: 5
input.aspect_ratio
stringNuadaptive

Raportul de aspect al videoclipului generat. Valoarea adaptive permite modelului să determine raportul optim. Modul image-to-video acceptă doar valoarea adaptive; omite acest câmp sau setează-l pe adaptive.

Valori acceptate
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Exemplu: adaptive
input.resolution
stringNu720p

Generarea obișnuită are rezoluția implicită 720p. Schițele acceptă doar 480p (valoarea implicită pentru Draft). Versiunile finale acceptă doar 1080p (valoarea implicită pentru final).

Valori acceptate
480p | 720p | 1080p
Exemplu: 720p
input.generate_audio
booleanNutrue

Solicită generarea unui sunet sincronizat.

Valori acceptate
true | false
Exemplu: true
input.watermark
booleanNufalse

Solicită aplicarea unui filigran AI pe videoclipul generat.

Valori acceptate
true | false
Exemplu: false
input.web_search
booleanNufalse

Permite căutarea pe web, atunci când această funcție este susținută de model.

Valori acceptate
true | false
Exemplu: false
input.return_last_frame
booleanNufalse

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 | false
Exemplu: true

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": 100
}

Previzualizare schiță → Versiune finală 1080p

Seedance 2.5 oferă un flux de lucru în doi pași: generați o schiță (Draft) la 480p pentru a verifica aspectul vizual și mișcarea, apoi reutilizați-o pentru a crea versiunea finală la 1080p. Ambii pași folosesc POST /v1/videos/generations și generează sarcini separate, facturabile.

Modul Draft poate reduce costurile atunci când experimentați diverse idei. În loc să generați fiecare încercare direct la 1080p, puteți crea mai multe schițe la 480p cu costuri reduse, să o alegeți pe cea care vă place cel mai mult, iar apoi să folosiți acea schiță pentru a genera versiunea finală la 1080p. Acest lucru vă permite să explorați diverse rezultate la un preț accesibil înainte de a plăti pentru versiunea de înaltă definiție.

Utilizați o schiță finalizată în termen de 7 zile de la creare pentru a genera versiunea finală. Schița trebuie să aparțină aceluiași cont API. Folosiți valoarea taskId returnată de acest API.

1. Generarea unei schițe la 480p

Setați input.draft=true și furnizați promptul obișnuit, referințele și setările de generare. În modul Draft, rezoluția implicită este 480p; alte rezoluții sunt respinse. Puteți activa return_last_frame pentru schiță, așa cum se arată mai jos.

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-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "draft": true,
    "duration": 5,
    "resolution": "480p",
    "return_last_frame": true
  }
}'
{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 50
}

2. Așteptarea finalizării schiței

Salvați valoarea taskId din răspunsul de creare și interogați GET /v1/tasks/TASK_ID până când starea devine completed. Răspunsul interogării va avea is_draft=true; previzualizați videoclipul în data.results. Ultimul cadru solicitat se găsește în data.last_frame_url, dacă este disponibil.

De asemenea, puteți primi un Webhook atunci când schița este finalizată. Setați callback_url la nivelul principal al cererii de creare a schiței. Odată ce schița este gata, o notificare va fi trimisă la acel URL, iar serviciul dumneavoastră poate procesa apelul pentru a salva rezultatul, a actualiza starea sarcinii sau a declanșa acțiuni ulterioare. Consultați secțiunea Webhooks de pe această pagină pentru formatul apelului de callback.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "is_draft": true,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 50,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": "https://cdn.seevio.ai/api/images/draft-last-frame.jpg",
    "processing_time": 48
  }
}

3. Generarea versiunii finale la 1080p

Înlocuiți draft_task_id din acest exemplu cu valoarea taskId a schiței finalizate. Versiunea finală moștenește conținutul și durata schiței. Rezoluția implicită este 1080p și nu se acceptă nicio altă rezoluție. Parametrii output_format, watermark și return_last_frame pot fi setați independent pentru fiecare versiune finală; callback_url rămâne la nivelul principal al cererii.

Atunci când parametrul draft_task_id este prezent, omiteți prompt, generation_type, image_urls, video_urls, audio_urls, duration, aspect_ratio, seed, generate_audio, web_search și omni_reference_task_type, chiar dacă valorile lor corespund schiței. Aceste setări sunt moștenite automat. Nu combinați draft=true cu draft_task_id.
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-5",
  "input": {
    "draft_task_id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
    "resolution": "1080p",
    "output_format": "mp4",
    "watermark": false,
    "return_last_frame": true
  }
}'

Răspunsul conține un nou taskId pentru versiunea finală. Interogați acest nou ID sau așteptați webhook-ul corespunzător. Răspunsul de interogare pentru versiunea finală va avea is_draft=false, iar draft_task_id va fi egal cu ID-ul de sarcină API al schiței inițiale. Schița originală rămâne disponibilă. Fiecare cerere finală acceptată creează o nouă sarcină, facturată separat.

{
  "taskId": "final_7mQx2pN8kR4vT9cL6bW3",
  "credits": 150
}

Facturarea schițelor și a versiunilor finale

Schițele utilizează tarifele 480p de mai sus, inclusiv inputul video de referință, dacă este cazul. Versiunile finale utilizează tariful exclusiv pentru ieșire la 1080p, adică 30 credite/secundă; videoclipul de referință nu mai este taxat din nou. De exemplu, o schiță de 5 secunde fără video de referință costă 50 de credite, iar versiunea sa finală de 5 secunde costă încă 150 de credite.

Dacă duration=-1, schița și versiunea sa finală rezervă fiecare credite pentru o durată de ieșire de până la 30 de secunde, plus videoclipul de referință doar pentru schiță. La finalizare, taxa este ajustată la durata reală a videoclipului generat (dacă aceasta poate fi determinată), iar creditele rezervate și neutilizate sunt returnate. O versiune finală rezervă până la 900 de credite.

O resursă sursă nefinalizată, expirată, care nu este de tip Draft sau care este inaccesibilă va fi respinsă cu eroarea HTTP 400 (invalid_request). Rezoluția nevalidă, câmpurile moștenite transmise sau parametrii de schiță în conflict vor genera, de asemenea, HTTP 400. Creditele insuficiente generează HTTP 402.

Moduri de generare și exemple

Înlocuiește URL-urile media de tip example.com cu propriile tale fișiere accesibile public prin HTTPS. URL-urile din exemplu au scop demonstrativ pentru structura solicitării și nu reprezintă resurse descărcabile.

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-5",
  "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-5",
  "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-5",
  "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-5",
  "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"
  }
}'

Referință audio

Folosește audio ca singur tip de referință, alături de un prompt text obligatoriu care descrie videoclipul dorit.

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-5",
  "input": {
    "prompt": "Create a coastal sunrise scene matching the rhythm of this audio.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "audio_urls": [
      "https://example.com/music.mp3"
    ]
  }
}'

Editare video

Pentru editarea video în Seedance 2.5, durata trebuie setată la -1, iar parametrul aspect_ratio trebuie setat pe adaptive. Ambele setări sunt obligatorii; în caz contrar, generarea va eșua.

Descrie modificările dorite și furnizează videoclipul sursă. Setează duration=-1 și folosește raportul de aspect adaptive. Folosește un clip sursă de cel puțin 4 secunde pentru acest flux de lucru. Regula de facturare pentru duration=-1 este prezentată mai sus.

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-5",
  "input": {
    "prompt": "Edit the source video: change the character’s coat to blue and preserve the camera movement.",
    "duration": -1,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "video_urls": [
      "https://example.com/source.mp4"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Extindere video

Pentru extensia video Seedance 2.5, parametrul aspect_ratio trebuie setat pe adaptive; în caz contrar, generarea poate eșua. Setați parametrul duration în mod normal, la lungimea dorită a videoclipului rezultat, în intervalul acceptat; nu este necesar să folosiți valoarea -1.

Descrie cum ar trebui să continue videoclipul sursă. Folosește raportul de aspect adaptive și setează o durată normală de ieșire, în limitele permise de model.

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-5",
  "input": {
    "prompt": "Continue the camera movement from the source video, revealing a forest clearing.",
    "duration": 8,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "video_urls": [
      "https://example.com/source.mp4"
    ],
    "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"
StatusDescriere și constrângeri
queuedAcceptat și în așteptare pentru procesare.
generatingGenerarea este în curs de desfășurare.
completedSucces. Descarcă elementele din data.results înainte de expirare.
failedEșec definitiv. Inspectează failed_reason și billing_status.
CâmpTipDescriere și constrângeri
idstring
Identificatorul sarcinii. Acesta reprezintă valoarea taskId din răspunsul de creare.
created_atnumber
Data creării sarcinii, exprimată în secunde Unix.
modelstring
ID-ul public al modelului utilizat pentru această sarcină.
is_draftboolean
Valoarea true pentru o schiță la 480p; false pentru o versiune finală sau un videoclip obișnuit.
draft_task_idstring | null
ID-ul de sarcină API al schiței sursă pentru o versiune finală; null pentru schițe și videoclipuri obișnuite.
billing_statusstring
statusul facturării: reserved, charged, refunded sau refund_failed.
creditsnumber
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_reasonstring | 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.
dataobject
Prezent în interogările sarcinilor care nu au eșuat. Conține detalii despre rezultat și procesare.
data.resultsstring[]
Array cu URL-urile videoclipurilor generate. Rămâne gol până la finalizare sau după ce videoclipul a expirat.
data.video_expires_atstring | null
Expirarea videoclipului ca timestamp ISO 8601 sau null înainte ca acesta să fie disponibil. Salvează rezultatul înainte de acest termen.
data.last_frame_urlstring | null
URL-ul ultimului cadru când este solicitat și disponibil, în caz contrar null.
data.processing_timenumber | 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-5",
  "is_draft": false,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 100,
  "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-5",
  "is_draft": false,
  "draft_task_id": null,
  "status": "failed",
  "billing_status": "refunded",
  "credits": 100,
  "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-5",
  "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"
}'

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.

created_at este momentul creării evenimentului; task_created_at este momentul creării sarcinii, în secunde Unix. Exemplele arată câmpurile recomandate; răspunsurile pot conține câmpuri suplimentare.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "seedance-2-5",
  "status": "completed",
  "task_created_at": 1788652800,
  "billing_status": "charged",
  "credits": 100,
  "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ă: payload de callback eșuat

Atunci când generarea eșuează, callback-ul conține status=failed. Utilizați id pentru a identifica sarcina, failed_reason pentru motivul eșecului și credits_refunded pentru numărul de credite returnate.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "seedance-2-5",
  "status": "failed",
  "task_created_at": 1788652800,
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed",
  "credits_refunded": 100
}

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;
    // 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 30 imagini, 10 videoclipuri, 10 fișiere audio și în total maximum 50 elemente combinate. Durata video totală și durata audio totală trebuie să fie de maximum 30 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.
  • Fiecare videoclip și fișier audio de referință trebuie să aibă o durată cuprinsă între 2 și 30 de secunde. Pentru exemplele de editare video, folosește clipuri sursă de cel puțin 4 secunde.

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."
  }
}
HTTPCâmpSoluție recomandată
400invalid_request
Corectează codul JSON, promptul lipsă, limitele parametrilor sau URL-ul media înainte de a reîncerca.
401invalid_api_key
Verifică tokenul Bearer și dacă cheia API este activă.
402insufficient_credits
Adaugă credite sau redu costul sarcinii. Răspunsul poate include sumele necesare și cele disponibile.
403forbidden
Verificați restricția la nivel de cont descrisă în mesajul de eroare.
404not_found
Verifică ID-ul sarcinii și asigură-te că cheia aparține utilizatorului care a creat sarcina.
429rate_limited
Așteaptă intervalul indicat în antetul Retry-After înainte de a reîncerca.
500internal_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.

Codul HTTP 429 include Retry-After: 60 pentru creare și Retry-After: 5 pentru interogări. Folosește o strategie de backoff și evită interogările mai frecvente decât este necesar.