Seedance 2.0 Mini
Generera videor med Seedance 2.0 Mini med hjälp av text, första och sista bildrutan eller multimodala referenser. Den här sidan täcker hela arbetsflödet från anrop till resultat för denna modell.
Modell-ID för API: seedance-2-0-mini
Genereringen sker asynkront. Spara det taskId som returneras när du skapar en uppgift, och fråga sedan efter dess status eller ta emot en webhook.
Funktioner
| Funktion | Tillåtna värden |
|---|---|
| Upplösning | 480p · 720p |
| Längd | 4–15 sekunder |
| Bildformat | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive |
| Referensbilder | Upp till 9 bilder |
| Referensvideor | Upp till 3 videor |
| Referensljudfiler | Upp till 3 ljudfiler |
| Alla referenser totalt | Upp till totalt 12 referensfiler |
| Total längd per video-/ljudgrupp | 15 sekunder |
| seed | -1 till 4294967295 |
Priser och krediter
Videogenerering debiteras i krediter baserat på den fakturerbara längden i sekunder. Utan videoinmatning är den fakturerbara längden lika med utgandets längd. Med videoinmatning inkluderas även referensvideons längd.
Tabellen nedan visar antalet krediter som debiteras per sekund, inte den totala kostnaden för en uppgift. Tariffen beror på modell, utgångsupplösning och om referensvideor används i referens-till-video-läget. Se formlerna och exemplen under tabellen för hur den totala kostnaden beräknas.
| Upplösning | Utan video som indata | Med video som indata |
|---|---|---|
480p | 3 krediter/sekund | 2 krediter/sekund |
720p | 6 krediter/sekund | 4 krediter/sekund |
- Utan video som indata: antal sekunder utdata × pris utan video.
- Med video som indata: (antal sekunder utdata + uppmätta sekunder för referensvideo) × pris med video. Servern mäter den totala längden på referensvideon och avrundar uppåt till hela sekunder innan debitering sker.
- Bilder eller enbart ljudreferenser använder priset utan video. Priset med video tillämpas endast i referens-till-video-läge när videoreferenser skickas med.
Exempel på kostnadsberäkning
5 sekunders text-till-video i 720p: 5 × 6 = 30 krediter.
5 sekunders utdata i 720p med en 5 sekunder lång referensvideo: (5 + 5) × 4 = 40 krediter.
Krediter reserveras när anropet skickas och dras när uppgiften lyckas. Uppgifter som misslyckas eller gör timeout återbetalas automatiskt. Betalningsstatusen refund_failed innebär att återbetalningen inte kunde slutföras; kontrollera API-loggarna eller kontakta support.
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.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonSä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
Skicka detta minimala anrop, spara det returnerade taskId-värdet och använd sedan exemplet för statuskontroll nedan. Kreditvärdet i svaret är det belopp som reserveras.
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-0-mini",
"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": 30
}Skapa en uppgift
POST https://api.seevio.ai/v1/videos/generationsSkicka ett JSON-objekt som innehåller model och input, samt en valfri callback_url. Ange alltid det exakta modell-ID som visas på denna sida; om model utelämnas väljs seedance-2-0.
Anropskropp
| Fält | Typ | Obligatorisk | Beskrivning och begränsningar |
|---|---|---|---|
model | string | Ja | Modell-ID. För att använda Seedance 2.0 Mini, ange seedance-2-0-mini i detta fält. |
callback_url | string | Nej | Offentlig HTTPS-slutpunkt för POST-callbacks vid slutförda eller misslyckade uppgifter. Privata nätverk och localhost är inte tillåtna. Exempel: https://example.com/webhooks/seevio |
input | object | Ja | Genereringsinställningar. Måste innehålla en prompt som inte är tom. |
Indataparametrar
Ange image_urls, video_urls och audio_urls som matriser av URL-strängar (string[]). Alla angivna webbadresser måste vara offentligt tillgängliga via HTTPS, inklusive media som ignoreras av det valda läget.
| Fält | Typ | Obligatorisk | Standard | Beskrivning och begränsningar |
|---|---|---|---|---|
input.prompt | string | Ja | — | En prompt krävs i alla lägen. Den kan innehålla högst 10 000 tecken före beskärning och får inte bestå av enbart blanksteg. Exempel: A cat surfing at sunset |
input.generation_type | string | Nej | text-to-video | text-to-video använder endast prompten; image-to-video använder 1–2 bilder; reference-to-video använder bild-, video- och/eller ljudreferenser. Tillåtna värden text-to-video | image-to-video | reference-to-video |
input.image_urls | string[] | Villkorlig | [] | image-to-video: 1 bild för den första rutan, eller 2 sorterade bilder för den första och sista rutan. reference-to-video: upp till 9 bilder. Ignoreras i text-to-video. Exempel: ["https://example.com/first-frame.jpg"] |
input.video_urls | string[] | Villkorlig | [] | Skickas endast vidare i reference-to-video; upp till 3 videor och totalt 15 sekunder. Ignoreras i andra lägen. Exempel: ["https://example.com/source.mp4"] |
input.audio_urls | string[] | Villkorlig | [] | Skickas endast vidare i reference-to-video; upp till 3 ljudfiler och totalt 15 sekunder. Ignoreras i andra lägen. Ljud kan inte användas som det enda referensmaterialet för den här modellen. Om du anger audio_urls måste du även ange minst en referensbild i image_urls eller en referensvideo i video_urls. Exempel: ["https://example.com/music.mp3"] |
input.duration | integer | Nej | 5 | Längd på utdata i hela sekunder, från 4 till 15 sekunder. Tillåtna värden 4–15Exempel: 5 |
input.aspect_ratio | string | Nej | adaptive | Bildformat för utdata. Genom att ange adaptive låter du modellen bestämma formatet. Tillåtna värden 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptiveExempel: adaptive |
input.resolution | string | Nej | 720p | Använd en av de utdataupplösningar som stöds och listas här. Tillåtna värden 480p | 720pExempel: 720p |
input.generate_audio | boolean | Nej | true | Begär generering av synkroniserat ljud. Tillåtna värden true | falseExempel: true |
input.watermark | boolean | Nej | false | Begär en AI-vattenstämpel på den genererade videon. Tillåtna värden true | falseExempel: false |
input.web_search | boolean | Nej | false | Tillåt webbsökning om modellen stöder det. Tillåtna värden true | falseExempel: false |
input.return_last_frame | boolean | Nej | false | Begär den sista bildrutan. Svaret på statusfrågan innehåller data.last_frame_url när rutan är tillgänglig; annars är värdet null. Tillåtna värden true | falseExempel: true |
input.seed | integer | Nej | -1 | Heltal från -1 till 4294967295. Värdet -1 väljer ett slumpmässigt seed. Tillåtna värden -1 till 4294967295Exempel: 42 |
Booleska fält måste vara JSON-värdena true eller false, inte strängar eller siffror.
Svar vid skapande
HTTP 200 returnerar taskId (sträng) och credits (nummer). Detta bekräftar att uppgiften har skapats, inte att den är färdig. Beloppet nedan motsvarar snabbstarten på 5 sekunder i 720p.
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 30
}Genereringslägen och exempel
Text till video
Generera från en textprompt. Medie-URL:er skickas inte vidare i detta läge.
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-0-mini",
"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
}
}'Första bildrutan
Ange en bild som första bildruta och beskriv sedan rörelsen i din 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-0-mini",
"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"
}
}'Första och sista bildrutan
Ange två bild-URL:er i ordning: först den första bildrutan, sedan den sista. Det här exemplet begär även den sista bildrutan från den genererade videon.
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-0-mini",
"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
}
}'Multimodal referens
Kombinera bild-, video- och ljudreferenser. Prompten är fortfarande obligatorisk. Video som indata ändrar debiteringsformeln.
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-0-mini",
"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"
}
}'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"| Status | Beskrivning och begränsningar |
|---|---|
queued | Mottagen och väntar på att köras. |
generating | Generering pågår. |
completed | Lyckades. Ladda ner data.results innan giltighetstiden går ut. |
failed | Misslyckades. Kontrollera failed_reason och billing_status. |
| Fält | Typ | Beskrivning och begränsningar |
|---|---|---|
id | string | Unikt ID för uppgiften. Detta är samma taskId som i svaret vid skapandet. |
created_at | number | Tidpunkt då uppgiften skapades, i Unix-sekunder. |
model | string | Det publika modell-ID som användes för uppgiften. |
billing_status | string | reserved, charged, refunded eller refund_failed. |
credits | number | 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_reason | string | null | Felorsak för misslyckade uppgifter; annars null. Misslyckade anrop utelämnar data-objektet. |
data | object | Finns med när uppgiften inte har misslyckats. Innehåller resultat och bearbetningsdetaljer. |
data.results | string[] | En array med video-URL:er. Tom fram till att videon är klar, eller efter att videon har löpt ut. |
data.video_expires_at | string | 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_url | string | null | URL till den sista bildrutan om det begärts och är tillgängligt, annars null. |
data.processing_time | number | 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-0-mini",
"status": "completed",
"billing_status": "charged",
"credits": 30,
"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-0-mini",
"status": "failed",
"billing_status": "refunded",
"credits": 30,
"failed_reason": "provider_failed"
}Webhooks
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-0-mini",
"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-0-mini",
"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-0-mini",
"status": "failed",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 30
}
}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.
Mediekrav och begränsningar
- Alla medie- och callback-URL:er måste vara offentliga HTTPS-länkar. Undvik localhost, privata IP-adresser och filer som kräver cookies eller inloggning. URL:er till referensvideo och referensljud måste leda till direkt läsbara mediefiler.
- I referens-till-video måste du ange minst en referens, och max 9 bilder, 3 videor, 3 ljudfiler och totalt 12 filer. Total videolängd och total ljudlängd får inte överstiga 15 sekunder vardera.
- text-to-video ignorerar alla mediereferenser. image-to-video skickar endast vidare bilderna för första/sista bildrutan och ignorerar video- och ljudreferenser. Använd reference-to-video för att kombinera olika typer av medier.
- För Seedance 2.0-modeller bör du använda ljud tillsammans med minst en bild eller video för modellkompatibilitet. Exempel med enbart ljud finns på sidan för Seedance 2.5.
- Fast och Mini stöder 480p och 720p. Förutsätt inte att högre upplösningar accepteras vid valideringen; de stöds inte för denna modell.
Bildkrav
- Varje bild får inte vara större än 30 MB.
- Format som stöds: jpeg, png, webp, bmp, tiff, gif.
- Bildförhållande (bredd ÷ höjd): 0,4 till 2,5.
- Både bredd och höjd måste vara mellan 300 och 6 000 pixlar.
Videokrav
- Format som stöds: mp4, mov.
- Varje video får inte överstiga 100 MB.
- Bildhastighet: 24 till 60 FPS.
- Bildförhållande (bredd ÷ höjd): 0,4 till 2,5.
- Totalt antal pixlar (bredd × höjd): 407 696 till 8 295 044. Till exempel 614 × 664 = 407 696 och 3 326 × 2 494 = 8 295 044. Detta är exempel på antal pixlar, inte fasta krav på bredd och höjd.
Ljudkrav
- Format som stöds: wav, mp3.
- Varje ljudfil får inte överstiga 15 MB.
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."
}
}| HTTP | Fält | Åtgärd |
|---|---|---|
| 400 | invalid_request | Korrigera din JSON, saknad prompt, felaktiga parametervärden eller medie-URL:er innan du försöker igen. |
| 401 | invalid_api_key | Kontrollera din Bearer-token och att API-nyckeln är aktiv. |
| 402 | insufficient_credits | Fyll på krediter eller minska uppgiftens kostnad. Svaret kan innehålla information om saldo som krävs samt ditt nuvarande saldo. |
| 403 | forbidden | Kontrollera kontobegränsningen som beskrivs i felmeddelandet. |
| 404 | not_found | Kontrollera uppgiftens ID och att API-nyckeln tillhör samma användare som skapade uppgiften. |
| 429 | rate_limited | Vänta den tid som anges i Retry-After innan du försöker igen. |
| 500 | internal_error | Kontrollera felmeddelandet och API-loggarna. Försök igen med försiktighet; att skicka om ett anrop kan skapa ytterligare en debiterbar uppgift. |
Anropsbegränsningar
Skapa uppgifter: Varje API-nyckel tillåter som standard upp till 100 anrop per minut. Anpassade anropsgränser är inte tillgängliga för närvarande.
Söka uppgifter: Varje API-nyckel tillåter som standard upp till 120 anrop per minut. Sökanrop och anrop för att skapa uppgifter räknas separat.