Naar documentatie springen
Op deze pagina

Seedance 2.5

Genereer video's met Seedance 2.5 op basis van tekst, eerste en laatste frames of multimodale referenties. Deze pagina beschrijft de volledige workflow van request tot resultaat voor dit model.

API-model-ID: seedance-2-5

Generatie verloopt asynchroon. Sla de taskId op die wordt geretourneerd bij het aanmaken van een taak, en vraag vervolgens de status op of ontvang een webhook.

Mogelijkheden

FunctieOndersteunde waarden
Outputresolutie480p · 720p · 1080p
Outputduur4–30 seconden
Beeldverhouding16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
ReferentieafbeeldingenMaxinaal 30 afbeeldingen
Referentievideo'sMaximaal 10 video's
Referentie-audiobestandenMaximaal 10 audiobestanden
Alle referenties gecombineerdMaximaal 50 referentiebestanden in totaal
Totale duur per video-/audiogroep30 seconden
seedNiet ondersteund
Accepteert ook duration=-1 in de referentie-naar-video-modus; zie videobewerking en tarieven hieronder. image-to-video accepteert alleen adaptive; laat dit veld weg of stel het in op adaptive.

Tarieven & credits

Voor het genereren van video's worden credits in rekening gebracht op basis van de factureerbare duur in seconden. Zonder video-invoer is de factureerbare duur gelijk aan de uitvoerduur. Met video-invoer is dit inclusief de duur van de referentievideo.

Drafts worden afgerekend tegen de hierboven vermelde 480p-tarieven, inclusief eventuele referentievideo-input. Definitieve video's gebruiken het 1080p-tarief (alleen output) van 30 credits/seconde; de referentievideo wordt niet opnieuw in rekening gebracht. Een Draft van 5 seconden zonder referentievideo kost bijvoorbeeld 50 credits, en de definitieve video van 5 seconden kost nog eens 150 credits extra.

De onderstaande tabel toont het aantal credits dat per seconde in rekening wordt gebracht, niet de totale kosten van een taak. Het tarief is afhankelijk van het model, de uitvoerresolutie en of er referentievideo's worden meegeleverd in de referentie-naar-video-modus. Zie de formules en voorbeelden onder de tabel om de totale kosten te berekenen.

OutputresolutieZonder video-inputMet video-input
480p10 credits/seconde6 credits/seconde
720p20 credits/seconde12 credits/seconde
1080p30 credits/seconde20 credits/seconde
  • Zonder video-input: output in seconden × tarief zonder video.
  • Met video-input: (output in seconden + gemeten seconden referentievideo) × tarief met video. De server meet de totale duur van de referentievideo en rondt dit af naar boven op hele seconden voor de facturering.
  • Bij gebruik van alleen afbeelding- of audioreferenties geldt het tarief zonder video. Het tarief voor referentievideo's is alleen van toepassing in de referentie-naar-video-modus wanneer er daadwerkelijk videoreferenties worden meegeleverd.

Voorbeelden van kostenberekening

5 seconden 720p tekst-naar-video: 5 × 20 = 100 credits.

5 seconden 720p output met een referentievideo of 5 seconden: (5 + 5) × 12 = 120 credits.

Deze credits worden vooraf afgeschreven bij het aanmaken van de taak. Als de taak is voltooid, is dit het definitieve bedrag. Er vindt achteraf geen extra afschrijving of gedeeltelijke terugbetaling plaats op basis van de werkelijke uitvoerduur. Bij mislukte of time-out taken wordt de terugbetalingsprocedure gestart.

Credits worden gereserveerd bij indiening en afgeschreven bij succes. Mislukte of getimede taken gaan naar de terugbetalingsprocedure. Een facturatiestatus refund_failed betekent dat de terugbetaling niet is voltooid; controleer de API-logs of neem contact op met support.

Berekening van credits wanneer de duur=-1 is

Wanneer de duur is ingesteld op -1, is de uiteindelijke video-duur niet vastgelegd; het model bepaalt deze zelf.

In de meeste gevallen kun je de duur het beste instellen op de daadwerkelijke videolengte die je nodig hebt in plaats van op -1. We raden aan om -1 alleen te gebruiken voor videobewerking, en niet voor andere scenario's waarin video's worden gegenereerd.

ReferentiebestandenBerekening van de kostenVoorbeeld
Met referentievideo'sTel de duur van alle referentievideo's bij elkaar op en rond het totaal af naar boven op de hele seconde. Dit noemen we T. De kosten zijn (T + T) × het tarief met video: de ene T staat voor de geschatte uitvoerduur, de andere voor de duur van de invoervideo.720p met een referentievideo van 5 seconden: (5 + 5) × 12 = 120 credits.
Zonder referentievideo's (alleen afbeeldingen of audio)Er wordt uitgegaan van een geschatte uitvoerduur van 30 seconden. De kosten zijn 30 × het tarief zonder video.720p zonder referentievideo's: 30 × 20 = 600 credits.

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

Dien dit minimale request in, sla de geretourneerde taskId op en gebruik vervolgens het onderstaande voorbeeld om de taak op te vragen. De creditwaarde in de response bij aanmaken is het gereserveerde aantal.

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 maken

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

Stuur een JSON-object met daarin model en input, plus een optionele callback_url. Geef altijd de model-ID op die op deze pagina wordt getoond; als je model weglaat, wordt automatisch seedance-2-0 geselecteerd.

Request body

VeldTypeVereistBeschrijving & beperkingen
model
stringJa

Model-id. Stel dit veld in op seedance-2-5 om Seedance 2.5 te gebruiken.

callback_url
stringNee

Openbaar HTTPS-eindpunt voor POST-callbacks bij voltooiing en fouten. Privénetwerken en localhost zijn niet toegestaan.

Voorbeeld: https://example.com/webhooks/seevio
input
objectJa

Generatie-instellingen. Moet een niet-lege prompt bevatten.

Input-parameters

image_urls is vereist bij image-to-video. reference-to-video vereist ten minste één referentie via image_urls, video_urls of audio_urls.
Wanneer draft_task_id is opgegeven, laat dan prompt, generation_type, image_urls, video_urls, audio_urls, duration, aspect_ratio, seed, generate_audio, web_search en omni_reference_task_type weg, zelfs als de waarden overeenkomen met de Draft. Deze instellingen worden automatisch overgenomen. Combineer draft=true nooit met draft_task_id.

Geef image_urls, video_urls en audio_urls op als arrays van URL-strings (string[]). Elke opgegeven URL moet publiekelijk toegankelijk zijn via HTTPS, inclusief media die door de geselecteerde modus worden genegeerd.

VeldTypeVereistStandaardBeschrijving & beperkingen
input.draft
booleanNeefalse

Maak een concept-preview in 480p. Alleen beschikbaar voor Seedance 2.5. Sluit het gebruik van draft_task_id uit.

Ondersteunde waarden
true | false
input.draft_task_id
stringNee—

Genereer een definitieve video in 1080p op basis van een eigen, voltooide API-Draft die minder dan 7 dagen geleden is aangemaakt. Geef de door deze API geretourneerde taskId op en laat de overgenomen generatievelden weg.

Voorbeeld: 3f2aK9mR7xQp4TnZ8bLc6YwH
input.output_format
stringNeemp4

Video-containerformaat. Ondersteunt mp4 en mov, zowel voor Drafts als definitieve video's.

Ondersteunde waarden
mp4 | mov
input.prompt
stringVoorwaardelijk—

Vereist voor normale generatie en voor het maken van een Draft. Stuur deze niet mee bij het genereren van een definitieve video met draft_task_id; de prompt van de Draft wordt automatisch overgenomen.

Voorbeeld: A cat surfing at sunset
input.generation_type
stringNeetext-to-video

text-to-video gebruikt alleen de prompt; image-to-video gebruikt 1–2 afbeeldingen; reference-to-video gebruikt afbeelding-, video- en/of audioreferenties.

Ondersteunde waarden
text-to-video | image-to-video | reference-to-video
input.image_urls
string[]Voorwaardelijk[]

image-to-video: 1 afbeelding voor het eerste frame, of 2 geordende afbeeldingen voor het eerste en laatste frame. reference-to-video: maximaal 30 afbeeldingen. Wordt genegeerd bij text-to-video.

Voorbeeld: ["https://example.com/first-frame.jpg"]
input.video_urls
string[]Voorwaardelijk[]

Alleen doorgestuurd bij reference-to-video; maximaal 10 video's en 30 seconden gecombineerd. Wordt in andere modi genegeerd.

Voorbeeld: ["https://example.com/source.mp4"]
input.audio_urls
string[]Voorwaardelijk[]

Alleen doorgestuurd bij reference-to-video; maximaal 10 audiobestanden en 30 seconden gecombineerd. Wordt in andere modi genegeerd.

Voorbeeld: ["https://example.com/music.mp3"]
input.duration
integerNee5

Outputduur: 4–30 seconden, standaard 5. duration=-1 is toegestaan voor Drafts en reference-to-video. Laat duration weg bij een definitieve video; deze wordt overgenomen van de Draft.

Ondersteunde waarden
-1 | 4–30
Voorbeeld: 5
input.aspect_ratio
stringNeeadaptive

Beeldverhouding van de output. Met adaptive kan het model zelf de verhouding bepalen. image-to-video accepteert alleen adaptive; laat dit veld weg of stel het in op adaptive.

Ondersteunde waarden
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Voorbeeld: adaptive
input.resolution
stringNee720p

Normale generatie is standaard 720p. Drafts ondersteunen uitsluitend 480p (de Draft-standaard). Definitieve video's ondersteunen uitsluitend 1080p (de definitieve standaard).

Ondersteunde waarden
480p | 720p | 1080p
Voorbeeld: 720p
input.generate_audio
booleanNeetrue

Vraag om de generatie van gesynchroniseerde audio.

Ondersteunde waarden
true | false
Voorbeeld: true
input.watermark
booleanNeefalse

Vraag om een AI-watermerk op de gegenereerde video.

Ondersteunde waarden
true | false
Voorbeeld: false
input.web_search
booleanNeefalse

Sta webzoekopdrachten toe wanneer dit door het model wordt ondersteund.

Ondersteunde waarden
true | false
Voorbeeld: false
input.return_last_frame
booleanNeefalse

Vraag het laatste frame op. Het queryresultaat bevat data.last_frame_url zodra het frame beschikbaar is; anders is dit null.

Ondersteunde waarden
true | false
Voorbeeld: true

Booleaanse velden moeten de JSON-waarde true of false hebben, geen strings of getallen.

Response bij aanmaken

HTTP 200 retourneert taskId (string) en credits (getal). Dit bevestigt het aanmaken van de taak, niet de voltooiing. De onderstaande waarde komt overeen met de snelstart van 5 seconden in 720p.

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

Preview van een Draft → definitieve video in 1080p

Seedance 2.5 ondersteunt een workflow in twee stappen: genereer eerst een Draft in 480p om de beelden en beweging te beoordelen, en gebruik deze vervolgens om de definitieve video in 1080p te genereren. Beide stappen gebruiken POST /v1/videos/generations en maken afzonderlijke, factureerbare taken aan.

De Draft-modus helpt om de kosten te drukken bij het uitproberen van verschillende ideeën. In plaats van elke poging direct in 1080p te genereren, kun je meerdere goedkopere Drafts in 480p maken. Kies vervolgens de beste uit om daarvan de definitieve versie in 1080p te genereren. Zo kun je voordelig experimenteren voordat je betaalt voor de uiteindelijke versie in hoge resolutie.

Gebruik een voltooide Draft binnen 7 dagen na aanmaak om de definitieve video te genereren. De Draft moet bij hetzelfde API-account horen. Gebruik de taskId die door deze API is geretourneerd.

1. Genereer een Draft in 480p

Stel input.draft=true in en geef de gebruikelijke prompt, referenties en instellingen op. De resolutie is standaard 480p in de Draft-modus; andere resoluties worden geweigerd. Je kunt return_last_frame inschakelen voor de Draft, zoals hieronder getoond.

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. Wacht tot de Draft is voltooid

Sla de taskId uit de aanmaakresponse op en poll GET /v1/tasks/TASK_ID totdat status de waarde completed heeft. De response bevat is_draft=true; bekijk de preview in data.results. Het aangevraagde laatste frame staat in data.last_frame_url wanneer het beschikbaar is.

Je kunt ook een webhook ontvangen zodra de Draft gereed is. Stel hiervoor callback_url in op het hoogste niveau van de Draft-aanvraag. Zodra de Draft is voltooid, wordt er een melding naar die URL gestuurd. Je applicatie kan deze callback verwerken om het resultaat op te slaan, de status bij te werken of vervolgacties te starten. Zie de sectie Webhooks op deze pagina voor de structuur van 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. Genereer de definitieve video in 1080p

Vervang draft_task_id in dit voorbeeld door de taskId van je voltooide Draft. De definitieve video neemt de inhoud en duur van de Draft over. De resolutie is standaard 1080p; andere resoluties zijn niet toegestaan. Parameters zoals output_format, watermark en return_last_frame kunnen voor de definitieve video apart worden ingesteld; de callback_url blijft op het hoogste niveau van de aanvraag staan.

Wanneer draft_task_id is opgegeven, laat dan prompt, generation_type, image_urls, video_urls, audio_urls, duration, aspect_ratio, seed, generate_audio, web_search en omni_reference_task_type weg, zelfs als de waarden overeenkomen met de Draft. Deze instellingen worden automatisch overgenomen. Combineer draft=true nooit met 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
  }
}'

De response bevat een nieuwe taskId voor de definitieve video. Poll deze nieuwe ID of wacht op de bijbehorende webhook. De response van de definitieve video bevat is_draft=false en draft_task_id is gelijk aan het taak-ID van de oorspronkelijke Draft. De oorspronkelijke Draft blijft beschikbaar. Elke geaccepteerde definitieve aanvraag maakt een nieuwe, apart gefactureerde taak aan.

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

Facturering van Drafts en definitieve video's

Drafts worden afgerekend tegen de hierboven vermelde 480p-tarieven, inclusief eventuele referentievideo-input. Definitieve video's gebruiken het 1080p-tarief (alleen output) van 30 credits/seconde; de referentievideo wordt niet opnieuw in rekening gebracht. Een Draft van 5 seconden zonder referentievideo kost bijvoorbeeld 50 credits, en de definitieve video van 5 seconden kost nog eens 150 credits extra.

Bij duration=-1 reserveren de Draft en de definitieve video elk credits voor maximaal 30 seconden output, plus referentievideo-input voor alleen de Draft. Na voltooiing worden de kosten aangepast aan de werkelijke outputduur, als die kan worden vastgesteld, en worden ongebruikte gereserveerde credits teruggestort. Een definitieve video reserveert maximaal 900 credits.

Een onvoltooide, verlopen, niet-Draft of niet-toegankelijke bronvideo wordt geweigerd met HTTP 400 (invalid_request). Een ongeldige resolutie, overbodige overgenomen velden of conflicterende Draft-parameters resulteren eveneens in HTTP 400. Bij onvoldoende credits volgt een HTTP 402.

Generatiemodi & voorbeelden

Vervang de voorbeeld-URL's van example.com door je eigen openbaar toegankelijke HTTPS-bestanden. De voorbeeld-URL's dienen om de structuur van het request te tonen en zijn geen downloadbare voorbeeldbestanden.

Tekst naar video

Genereer op basis van een tekstprompt. Media-URL's worden in deze modus niet doorgestuurd.

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

Eerste frame

Geef één afbeelding op als het eerste frame en beschrijf de beweging in je 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"
  }
}'

Eerste en laatste frame

Geef twee afbeelding-URL's op in volgorde: eerst het beginframe, daarna het eindframe. Dit voorbeeld vraagt ook om het laatste frame van de gegenereerde video.

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

Multimodale referentie

Combineer afbeelding-, video- en audioreferenties. De prompt blijft vereist. Input van een referentievideo verandert de formule voor de facturering.

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

Audio-referentie

Gebruik audio als het enige referentietype, met een vereiste tekstprompt die de gewenste video beschrijft.

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

Videobewerking

Voor videobewerking in Seedance 2.5 moet de duur op -1 worden ingesteld en de aspect_ratio op adaptive. Beide instellingen zijn vereist, anders mislukt het genereren.

Beschrijf de bewerking en lever de bronvideo aan. Stel duration=-1 in en gebruik de beeldverhouding adaptive. Gebruik voor deze workflow een bronclip van minimaal 4 seconden. De factureringsregel voor duration=-1 staat hierboven beschreven.

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

Video-extensie

Voor de video-extensie van Seedance 2.5 moet aspect_ratio op adaptive worden ingesteld, anders kan het genereren mislukken. Stel de duur normaal in op de gewenste lengte van de video binnen het ondersteunde bereik; het is niet nodig om -1 te gebruiken.

Beschrijf hoe de bronvideo moet doorlopen. Gebruik de beeldverhouding adaptive en stel een normale outputduur in binnen het bereik van het 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"
  }
}'

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.
is_draftboolean
True voor een 480p Draft; false voor een definitieve of normale video.
draft_task_idstring | null
Het API-taak-ID van de bron-Draft bij een definitieve video; null voor Drafts en normale video's.
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",
  "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
  }
}

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",
  "is_draft": false,
  "draft_task_id": null,
  "status": "failed",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}

Webhooks

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

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.

created_at is de aanmaaktijd van de gebeurtenis; task_created_at die van de taak, in Unix-seconden. Voorbeelden tonen de aanbevolen velden; antwoorden kunnen extra velden bevatten.

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

Taak mislukt: payload voor mislukte callback

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

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

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;
    // 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.

Mediavereisten & beperkingen

  • Alle media- en callback-URL's moeten openbare HTTPS-URL's zijn. Vermijd localhost, privé-IP-adressen en bestanden die cookies of een login vereisen. Referentievideo-/-audio-URL's moeten rechtstreeks naar leesbare media verwijzen.
  • Geef bij reference-to-video ten minste één referentie op, met niet meer dan 30 afbeeldingen, 10 video's, 10 audiobestanden en 50 materialen in totaal. De totale videoduur en totale audioduur mogen elk maximaal 30 seconden bedragen.
  • text-to-video negeert alle mediareferenties. image-to-video stuurt alleen de afbeeldingen voor het eerste/laatste frame door en negeert video- en audioreferenties. Gebruik reference-to-video om media te combineren.
  • Elke referentievideo en elk audiobestand moet tussen de 2 en 30 seconden duren. Gebruik voor voorbeelden van videobewerking bronclips van minimaal 4 seconden.

Afbeeldingseisen

  • Elke afbeelding mag maximaal 30 MB groot zijn.
  • Ondersteunde indelingen: jpeg, png, webp, bmp, tiff, gif.
  • Beeldverhouding (breedte ÷ hoogte): tussen 0,4 en 2,5 (inclusief).
  • Zowel de breedte als de hoogte moeten tussen de 300 en 6.000 pixels liggen.

Video-eisen

  • Ondersteunde indelingen: mp4, mov.
  • Elke video mag maximaal 100 MB groot zijn.
  • Beeldsnelheid: 24 tot 60 fps (inclusief).
  • Beeldverhouding (breedte ÷ hoogte): tussen 0,4 en 2,5 (inclusief).
  • Totaal aantal pixels (breedte × hoogte): tussen 407.696 en 8.295.044 (inclusief). Bijvoorbeeld: 614 × 664 = 407.696 en 3.326 × 2.494 = 8.295.044. Dit zijn voorbeelden van het aantal pixels, geen vaste eisen voor de breedte en hoogte.

Audio-eisen

  • Ondersteunde indelingen: wav, mp3.
  • Elk audiobestand mag maximaal 15 MB groot zijn.

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.

Rate limits

Taken aanmaken: elke API-sleutel staat standaard maximaal 100 verzoeken per minuut toe. Aangepaste limieten zijn momenteel niet beschikbaar.

Taken opvragen: elke API-sleutel staat standaard maximaal 120 verzoeken per minuut toe. Zoekopdrachten en verzoeken voor het aanmaken van taken worden apart geteld.

HTTP 429 bevat Retry-After: 60 voor het aanmaken en Retry-After: 5 voor queries. Bouw een vertraging in en vermijd vaker pollen dan nodig is.