Hoppa till dokumentation
På denna sida

Dokumentation

Bygg med Seevio API

Lägg till videogenerering i din produkt. Välj en modell, skicka ett anrop och hämta resultatet via statuskontroll eller en webhook.

Välj en modell

Varje modellreferens innehåller kompletta parametrar, priser och exempel. Du kan slutföra en integration direkt från en enskild modellsida.

Autentisering

Skapa en API-nyckel i instrumentpanelen. Den fullständiga nyckeln visas bara en gång. Spara den säkert på din server och skicka den som en Bearer-token i varje anrop.

Bas-URL

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Sätt miljövariabeln SEEVIO_API_KEY innan du kör dessa exempel. JavaScript-exemplen körs på din server med Node.js; Python-exemplen använder requests-paketet.

Snabbstart

Det här exemplet genererar en 5 sekunder lång video i 720p med Seedance 2.5. Öppna en modellreferens för att se alla genereringslägen och parametergränser.

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
  }
}'

Exempel på svar vid skapande av uppgift

När begäran ovan har godkänts returnerar API:et detta JSON-svar. taskId är det ID som används för efterföljande statusförfrågningar, och credits är antalet krediter som reserverats för uppgiften. Svaret bekräftar endast att uppgiften har skapats, inte att videon är klar. Du behöver göra regelbundna anrop för att kontrollera status eller använda en webhook för att ta emot videoresultatet.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Fråga efter en uppgift

GET https://api.seevio.ai/v1/tasks/{taskId}

Ersätt exempel-ID:t med det taskId som returnerades när uppgiften skapades. Statusfrågor returnerar endast uppgifter som tillhör API-nyckelns användare; okända eller oåtkomliga ID:n returnerar HTTP 404.

Gör en statuskontroll var 10:e till 20:e sekund som utgångspunkt. Vid HTTP 429 bör du vänta längre, och sluta när statusen är completed eller failed. Använd webhooks i produktionsmiljö. Varje kodexempel nedan utför en enskild sökning.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusBeskrivning och begränsningar
queuedMottagen och väntar på att köras.
generatingGenerering pågår.
completedLyckades. Ladda ner data.results innan giltighetstiden går ut.
failedMisslyckades. Kontrollera failed_reason och billing_status.
FältTypBeskrivning och begränsningar
idstring
Unikt ID för uppgiften. Detta är samma taskId som i svaret vid skapandet.
created_atnumber
Tidpunkt då uppgiften skapades, i Unix-sekunder.
modelstring
Det publika modell-ID som användes för uppgiften.
billing_statusstring
reserved, charged, refunded eller refund_failed.
creditsnumber
Krediter reserverade för denna uppgift. Detta värde ligger kvar efter en återbetalning; kontrollera billing_status för att se det slutgiltiga debiteringsresultatet.
failed_reasonstring | null
Felorsak för misslyckade uppgifter; annars null. Misslyckade anrop utelämnar data-objektet.
dataobject
Finns med när uppgiften inte har misslyckats. Innehåller resultat och bearbetningsdetaljer.
data.resultsstring[]
En array med video-URL:er. Tom fram till att videon är klar, eller efter att videon har löpt ut.
data.video_expires_atstring | null
Tidpunkt då videon raderas, i ISO 8601-format, eller null innan den är tillgänglig. Spara resultatet före denna tidpunkt.
data.last_frame_urlstring | null
URL till den sista bildrutan om det begärts och är tillgängligt, annars null.
data.processing_timenumber | null
Leverantörens bearbetningstid i sekunder om tillgänglig, annars null.

Slutförd uppgift: svar på statusförfrågan med videoresultat

När statusförfrågan returnerar status=completed är videogenereringen klar. Hämta videons URL-adresser från data.results och ladda ner dem före data.video_expires_at. billing_status=charged visar att de reserverade krediterna har dragits.

{
  "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
  }
}

Misslyckad uppgift: svar på statusförfrågan med fel- och debiteringsinformation

När statusförfrågan returnerar status=failed har genereringen misslyckats. Läs failed_reason för att se orsaken och billing_status för återbetalningsresultatet. I detta exempel innebär refunded att krediterna har återförts. credits visar det ursprungliga reserverade beloppet, och svaret innehåller inte data.

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

Webhooks

För integrationer i produktionsmiljö anger du callback_url när du skapar en uppgift. Varje modellreferens innehåller exempel på webhook-data och mottagarkod.

Ange callback_url i anropet för att ta emot en JSON-POST när uppgiften slutförs eller misslyckas. Svara med en 2xx-statuskod inom 15 sekunder. Misslyckade leveranser försöks igen; hantera dubbletter i din kod baserat på uppgiftens ID (idempotens).

Ditt callback-ändpunkt måste acceptera POST-anrop med JSON-body (Content-Type: application/json).

Skapa en uppgift med 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"
}'

Webhook-data skiljer sig från vanliga statussvar: de utelämnar billing_status och credits. Feldetaljer finns istället i data.failed_reason och data.credits_refunded. Värdet created_at i en webhook är händelsens skapandetid i Unix-sekunder.

Uppgiften slutförd: callback-payload för lyckat anrop

När genereringen lyckas innehåller callback-anropet status=completed. Använd id för att identifiera uppgiften och data.results för att hämta videolänkarna. Ladda ner och spara resultaten före 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
  }
}

Uppgiften misslyckades: callback-payload för misslyckat anrop

När genereringen misslyckas innehåller callback-anropet status=failed. Använd id för att identifiera uppgiften, data.failed_reason för felorsaken och data.credits_refunded för antalet återbetalade krediter.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 100
  }
}

Exempel på mottagarkod

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 });
}

Detta Next.js-exempel läser callback-anropets JSON-body och hanterar slutförda och misslyckade uppgifter direkt. Lägg till persistens och deduplicering av uppgifts-ID:n för din applikation. Köa långsamma processer innan du bekräftar callback-anropet.

Felmeddelanden

HTTP-fel returnerar ett error-objekt med code och message. En uppgift som har tagits emot utan fel kan fortfarande misslyckas senare; kontrollera uppgiftens status eller hantera webhooken för misslyckade uppgifter.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPFältÅtgärd
400invalid_request
Korrigera din JSON, saknad prompt, felaktiga parametervärden eller medie-URL:er innan du försöker igen.
401invalid_api_key
Kontrollera din Bearer-token och att API-nyckeln är aktiv.
402insufficient_credits
Fyll på krediter eller minska uppgiftens kostnad. Svaret kan innehålla information om saldo som krävs samt ditt nuvarande saldo.
403forbidden
Kontrollera kontobegränsningen som beskrivs i felmeddelandet.
404not_found
Kontrollera uppgiftens ID och att API-nyckeln tillhör samma användare som skapade uppgiften.
429rate_limited
Vänta den tid som anges i Retry-After innan du försöker igen.
500internal_error
Kontrollera felmeddelandet och API-loggarna. Försök igen med försiktighet; att skicka om ett anrop kan skapa ytterligare en debiterbar uppgift.