Naar documentatie springen
Op deze pagina

Documentatie

Bouwen met de Seevio API

Voeg videogeneratie toe aan je product. Kies een model, verstuur een request en haal het resultaat op via polling of een webhook.

Kies een model

Elke modelreferentie bevat de volledige parameters, tarieven en voorbeelden. Je kunt een integratie volledig afronden vanaf één modelpagina.

Authenticatie

Maak een API-sleutel aan in het dashboard. De volledige sleutel wordt slechts eenmalig getoond. Bewaar deze op je server en stuur hem mee als Bearer-token bij elk request.

Basis-URL

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

Stel de omgevingsvariabele SEEVIO_API_KEY in voordat je deze voorbeelden uitvoert. De JavaScript-voorbeelden draaien op je server met Node.js; de Python-voorbeelden gebruiken het requests-pakket.

Snelstart

Dit voorbeeld genereert een video van 5 seconden in 720p met Seedance 2.5. Open een modelreferentie voor alle generatiemodi en parameterlimieten.

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

Voorbeeldrespons taak aanmaken

Nadat het bovenstaande verzoek is geaccepteerd, retourneert de API deze JSON-respons. De taskId is de taak-id die wordt gebruikt voor volgende statusopvragingen; credits is het aantal credits dat voor deze taak is gereserveerd. Deze respons bevestigt dat de taak is aangemaakt, niet dat de video al klaar is. Je moet de status van de taak pollen of een webhook gebruiken om de videoresultaten te ontvangen.

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

Taak opvragen

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

Vervang de voorbeeld-ID door de taskId die is geretourneerd bij het aanmaken. Queries retourneren alleen taken die eigendom zijn van de gebruiker van de API-sleutel; niet-toegankelijke of onbekende ID's retourneren HTTP 404.

Doe als uitgangspunt elke 10-20 seconden een poll, verminder de frequentie bij HTTP 429 en stop wanneer de status completed of failed is. Gebruik bij voorkeur webhooks voor productieomgevingen. Elk codevoorbeeld hieronder voert één query uit.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusBeschrijving & beperkingen
queuedGeaccepteerd en wachtend op verwerking.
generatingGeneratie is in uitvoering.
completedSuccesvol voltooid. Download data.results voordat deze verlopen.
failedDefinitief mislukt. Controleer failed_reason en billing_status.
VeldTypeBeschrijving & beperkingen
idstring
Taak-ID. Dit is de taskId uit de response bij het aanmaken.
created_atnumber
Tijdstip van aanmaken van de taak in Unix-seconden.
modelstring
De openbare model-ID die voor deze taak is gebruikt.
billing_statusstring
reserved, charged, refunded of refund_failed.
creditsnumber
Credits gereserveerd voor deze taak. Deze waarde blijft behouden na een terugbetaling; controleer billing_status om het uiteindelijke factureringsresultaat te bepalen.
failed_reasonstring | null
Reden van mislukken bij mislukte taken; anders null. Mislukte query-responses bevatten geen data.
dataobject
Aanwezig bij succesvol opgevraagde taken. Bevat details over de output en de verwerking.
data.resultsstring[]
Array van video-URL's. Leeg tot de voltooiing of nadat de video is verlopen.
data.video_expires_atstring | null
Vervaltijd van de video als ISO 8601-timestamp, of null voordat deze beschikbaar is. Sla het resultaat vóór dit tijdstip op.
data.last_frame_urlstring | null
URL van het laatste frame indien aangevraagd en beschikbaar, anders null.
data.processing_timenumber | null
Verwerkingstijd van de provider in seconden indien beschikbaar, anders null.

Voltooide taak: opvraagrespons met video-resultaten

Wanneer de opvraging status=completed retourneert, is het genereren van de video voltooid. Lees de video-URL's uit via data.results en download deze vóór data.video_expires_at. De status billing_status=charged geeft aan dat de gereserveerde credits in rekening zijn gebracht.

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

Mislukte taak: opvraagrespons met fout- en factureringsdetails

Wanneer de opvraging status=failed retourneert, is het genereren mislukt. Zie failed_reason voor de oorzaak en billing_status voor het resultaat van de terugbetaling. In dit voorbeeld betekent refunded dat de credits zijn teruggestort. Bij credits blijft het oorspronkelijk gereserveerde aantal staan en de respons bevat geen data.

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

Webhooks

Geef voor productie-integraties een callback_url op bij het aanmaken van een taak. Elke modelreferentie bevat callback-payloads en een voorbeeld van een ontvanger.

Stel callback_url in het aanmaak-request in om een JSON POST te ontvangen wanneer de taak is voltooid of mislukt. Retourneer binnen 15 seconden een 2xx-response. Mislukte leveringen worden opnieuw geprobeerd; verwerk herhaalde leveringen idempotent op basis van de taak-ID.

Je callback-endpoint moet POST-verzoeken met een JSON-body accepteren (Content-Type: application/json).

Maak een taak met een 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-payloads verschillen van responses op taakqueries: ze bevatten geen billing_status en credits; details over fouten bevinden zich in data.failed_reason en data.credits_refunded. De created_at van de webhook is het tijdstip van de gebeurtenis in Unix-seconden.

Taak voltooid: payload voor succesvolle callback

Als het genereren is geslaagd, bevat de callback status=completed. Gebruik id om de taak te identificeren en data.results om de video-URL's op te halen. Download en bewaar de resultaten vóór 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
  }
}

Taak mislukt: payload voor mislukte callback

Als het genereren mislukt, bevat de callback status=failed. Gebruik id om de taak te identificeren, data.failed_reason voor de reden van de fout en data.credits_refunded voor het aantal teruggestorte credits.

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

Voorbeeld van een ontvanger

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

Dit Next.js-voorbeeld leest de JSON-callback-body en verwerkt voltooide en mislukte taken direct. Voeg persistentie en taak-ID-deduplicatie toe voor je eigen applicatie; zet traag werk in de wachtrij voordat je de callback bevestigt.

Foutmeldingen

HTTP-fouten bevatten een error-object met een code en message. Een succesvol geaccepteerde taak kan later alsnog mislukken; vraag de taak op of handel de fout af via de callback.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPVeldWat te doen
400invalid_request
Corrigeer de JSON, de ontbrekende prompt, het parameterbereik of de media-URL voordat je het opnieuw probeert.
401invalid_api_key
Controleer het Bearer-token en of de API-sleutel actief is.
402insufficient_credits
Waardeer je credits op of verlaag de kosten van de taak. De response kan de vereiste en beschikbare hoeveelheden bevatten.
403forbidden
Controleer de beperking op accountniveau die in de foutmelding wordt beschreven.
404not_found
Controleer de taak-ID en of de sleutel hoort bij de gebruiker van de taak.
429rate_limited
Wacht tot het Retry-After-interval is verstreken voordat je het opnieuw probeert.
500internal_error
Controleer de foutmelding en de API-logs. Wees voorzichtig met opnieuw proberen; het opnieuw verzenden van een aanmaak-request kan leiden tot een nieuwe factureerbare taak.