Documentație
Dezvoltă cu API-ul Seevio
Adaugă generarea video în produsul tău. Alege un model, trimite o solicitare și preia rezultatul prin interogare periodică (polling) sau webhook.
Alege un model
Fiecare pagină de referință a modelului include parametrii săi completi, tarifele și exemple practice. Poți finaliza o integrare folosind informațiile de pe pagina unui singur model.
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
Acest exemplu generează un videoclip de 5 secunde la rezoluție 720p folosind Seedance 2.5. Deschide documentația unui model pentru a vedea toate modurile de generare și limitele parametrilor.
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
}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-5",
"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",
"status": "failed",
"billing_status": "refunded",
"credits": 100,
"failed_reason": "provider_failed"
}Webhookuri
Pentru integrările în producție, furnizează un callback_url la crearea sarcinii. Fiecare pagină de model include payload-ul de callback și un exemplu de receptor.
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"
}'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-5",
"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-5",
"status": "failed",
"data": {
"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.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.
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ă. |