Verkennen
Afbeelding
Video
Avatar
Audio
Bewerk
Tools
Fashion StudioAppsWorkflows
Bronnen
Prijzen-25%
Arteza

De studio voor alles wat je maakt. Één werkplek, elk model.

Lees onze recensies op Trustpilot

Maken

  • Afbeelding
  • Video
  • Avatar
  • Audio
  • Bewerk
  • Fashion Studio

Verkennen

  • Bibliotheek
  • Apps
  • Modellen
  • Tools
  • Looks
  • Voorbeelden
  • Modellen vergelijken
  • Toolalternatieven
  • AI-woordenlijst
  • Workflows
  • AI Pipeline-editor
  • Wat is nieuw

Bedrijf

  • Over
  • Blog
  • Prijzen
  • Contact
  • Status
  • Uitgelicht en beoordeeld
  • Multi-model AI-chat

Juridisch

  • Privacy
  • Voorwaarden
  • Licenties
  • Onbeperkt beleid
Modellen vanByteDanceGoogleOpenAIBlack Forest LabsMiniMaxKuaishouAlibabaStability AI
© 2026 Arteza, Inc.
Beschikbaar in 31 talen
enEnglishesEspañolfrFrançaisdeDeutschitItalianoptPortuguêsnlNederlandsplPolskisvSvenskadaDansknoNorskfiSuomija日本語ko한국어zh中文thไทยviTiếng ViệtidBahasa IndonesiamsBahasa MelayutlFilipinoarالعربيةheעבריתfaفارسیurاردوhiहिन्दीbnবাংলাtrTürkçeruРусскийukУкраїнськаroRomânăcsČeština
arteza.ai
StartpaginaAfbeeldingVideoBibliotheekAccount
Startpagina/Blog/Seedance 2.0 API: hoe je programmatisch AI-video's genereert
Technical10 april 2026Arteza Team14 min lezen

Seedance 2.0 API: hoe je programmatisch AI-video's genereert

Een ontwikkelaarsgids voor de Seedance 2.0 API: authenticatie, endpoints, aanvraagformaten, codevoorbeelden in Python en JavaScript, foutafhandeling en best practices.

Seedance 2.0 API: hoe je programmatisch AI-video's genereert

Genereer een cinematische AI-video met één HTTP-verzoek. De Seedance 2.0 API is dezelfde generatiepijplijn als het webplatform, beschikbaar als een overzichtelijke REST-interface met Bearer-authenticatie, webhooks en batch-eindpunten. Als je een POST-verzoek kunt maken, kun je een videogeneratiepijplijn bouwen.

Deze gids behandelt alles wat je nodig hebt om Seedance 2.0 in je eigen applicaties te integreren: authenticatie, eindpunten, parameters, foutafhandeling en productieklare codevoorbeelden in Python en JavaScript.

TL;DR - API in één oogopslag

  • Basis-URL: https://api.arteza.ai/v1
  • Authenticatie: Bearer-token in de Authorization-header
  • Generatie: Asynchroon - dien een taak in, poll of gebruik webhooks voor voltooiing
  • Snelheidslimieten: 60 verzoeken per minuut, 5 gelijktijdige generaties
  • Modellen: Seedance 2.0, 1.0 Pro, 1.0 Lite, Seedream v3/v4.5/v5 allemaal in één API
  • Creditkosten: Dezelfde dynamische prijs per seconde als de webinterface (19-351 credits voor 2.0)
Probeer het zelf- typ een prompt en genereer

5 gratis generaties · Geen creditcard nodig

Wat de API daadwerkelijk kan doen

Alles wat de webinterface doet, doet de API ook. Tekst-naar-video, afbeelding-naar-video, modelkeuze, duurregeling, beeldverhouding, audioschakelaar en toegang tot elk model op het platform. Batch-eindpunten voor het tegelijk genereren van meerdere clips. Webhook-meldingen zodat je niet hoeft te pollen. Aangepaste metadata die in de resultaten wordt teruggestuurd voor het bijhouden van A/B-tests of campagnevarianten.

Ondersteunde modellen

Alle modellen gebruiken dezelfde API-interface, maar met verschillende identificatoren.

ModelAPI-identificatorTypische credits
Seedance 2.0seedance-2.0243-910
Seedance 1.0 Proseedance-1.0-pro48-288
Seedance 1.0 Liteseedance-1.0-lite14-84
Seedream v5seedream-v58
Seedream v4.5seedream-v4.57
Seedream v3seedream-v36
⚡

Haal in 30 seconden een API-sleutel op

Maak een account aan, ga naar Instellingen → API-sleutels en je bent klaar om je eerste POST-verzoek te doen. Gratis credits inbegrepen.

Haal je API-sleutel op

Authenticatie in 30 seconden

Genereer een API-sleutel vanuit het dashboard onder Instellingen > API-sleutels. Stuur deze als Bearer-token:

curl -H "Authorization: Bearer YOUR_API_KEY" \
     https://api.arteza.ai/v1/account/credits

Antwoord:

{
  "credits": 2750,
  "tier": "popular"
}

Beveiligingsregels die ertoe doen:

  • Zet je API-sleutel nooit in client-side code of openbare repositories
  • Bewaar hem in omgevingsvariabelen (SEEDANCE_API_KEY)
  • Vernieuw sleutels regelmatig vanuit het dashboard
  • Elke sleutel erft het creditsaldo van het bovenliggende account

Het tekst-naar-video-eindpunt

Dit is het eindpunt dat je het vaakst zult gebruiken.

POST /v1/generate/text-to-video
{
  "model": "seedance-2.0",
  "prompt": "Aerial shot of a coastal city at sunset, golden light reflecting off glass skyscrapers, cinematic drone footage",
  "duration": 10,
  "aspect_ratio": "16:9",
  "audio": true
}

Parameterreferentie

ParameterTypeVerplichtOmschrijving
modelstringJaModelidentificator (bijv. seedance-2.0)
promptstringJaScènebeschrijving, max. 500 tekens
durationintegerNeeVideolengte in seconden (4-15 voor 2.0, standaard 8)
aspect_ratiostringNee16:9, 9:16 of 1:1 (standaard 16:9)
audiobooleanNeeGesynchroniseerde audio toevoegen (standaard true, alleen 2.0)
webhook_urlstringNeeURL voor voltooiingsmelding
metadataobjectNeeAangepaste sleutel-waardeparen die in resultaten worden teruggestuurd

Succesvol antwoord

{
  "task_id": "task_abc123def456",
  "status": "queued",
  "model": "seedance-2.0",
  "credits_charged": 607,
  "estimated_time": 120,
  "created_at": "2026-04-10T14:30:00Z"
}

De generatie is asynchroon. Je ontvangt direct een task_id en peilt naar voltooiing (of gebruik webhooks).

Het afbeelding-naar-video-eindpunt

Animeer een bronafbeelding met een bewegingsprompt.

POST /v1/generate/image-to-video
Content-Type: multipart/form-data
VeldTypeVerplichtOmschrijving
modelstringJaModelidentificator
imagebestandJaBronafbeelding (JPEG, PNG, WebP; max. 10 MB)
promptstringJaBewegingsbeschrijving
durationintegerNeeVideolengte in seconden
aspect_ratiostringNeeUitvoerbeeldverhouding
audiobooleanNeeAudio toevoegen (alleen Seedance 2.0)
webhook_urlstringNeeWebhook-URL bij voltooiing

Liever geen bestand uploaden? Geef in plaats daarvan een image_url mee:

{
  "model": "seedance-2.0",
  "image_url": "https://example.com/photo.jpg",
  "prompt": "The woman turns her head slowly and smiles, wind gently blowing her hair",
  "duration": 8,
  "aspect_ratio": "16:9"
}

Generatiestatus controleren

Poll het taakaindpunt om de voortgang te bekijken.

GET /v1/tasks/{task_id}

Antwoord bij verwerking

{
  "task_id": "task_abc123def456",
  "status": "processing",
  "progress": 65,
  "model": "seedance-2.0",
  "created_at": "2026-04-10T14:30:00Z",
  "estimated_completion": "2026-04-10T14:31:30Z"
}

Antwoord bij voltooiing

{
  "task_id": "task_abc123def456",
  "status": "completed",
  "model": "seedance-2.0",
  "result": {
    "video_url": "https://cdn.arteza.ai/outputs/task_abc123def456.mp4",
    "duration": 10,
    "resolution": "1280x720",
    "has_audio": true,
    "file_size": 8542310
  },
  "credits_charged": 607,
  "created_at": "2026-04-10T14:30:00Z",
  "completed_at": "2026-04-10T14:31:28Z"
}

Statuswaarden

StatusBetekenis
queuedTaak ontvangen, wacht op start
processingGeneratie bezig
completedVideo klaar op result.video_url
failedGeneratie mislukt - zie het veld error
cancelledTaak geannuleerd door gebruiker

Video-URL's verlopen na 24 uur. Download en sla ze snel op in je eigen infrastructuur.

Een cinematisch stilstaand beeld uit Seedance 2.0 met door de API gegenereerde uitvoer

Wil je dit soort uitvoer programmatisch genereren? Je bent 30 seconden verwijderd van je eerste API-aanroep. Ontvang je gratis API-sleutel →

Productieklaar Python-voorbeeld

Hier is een compleet script dat een generatie indient, op voltooiing peilt en het resultaat downloadt.

import os
import time
import requests

API_KEY = os.environ["SEEDANCE_API_KEY"]
BASE_URL = "https://api.arteza.ai/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}


def generate_video(prompt, duration=8, aspect_ratio="16:9"):
    """Dien een tekst-naar-video-taak in. Geeft task_id terug."""
    response = requests.post(
        f"{BASE_URL}/generate/text-to-video",
        headers=HEADERS,
        json={
            "model": "seedance-2.0",
            "prompt": prompt,
            "duration": duration,
            "aspect_ratio": aspect_ratio,
            "audio": True,
        },
    )
    response.raise_for_status()
    return response.json()["task_id"]


def wait_for_completion(task_id, poll_interval=5, timeout=300):
    """Poll totdat de taak klaar is. Geeft resultaat-dict terug."""
    elapsed = 0
    while elapsed < timeout:
        response = requests.get(f"{BASE_URL}/tasks/{task_id}", headers=HEADERS)
        response.raise_for_status()
        data = response.json()

        if data["status"] == "completed":
            return data["result"]
        if data["status"] == "failed":
            raise RuntimeError(f"Generation failed: {data.get('error')}")

        time.sleep(poll_interval)
        elapsed += poll_interval

    raise TimeoutError(f"Task {task_id} did not complete within {timeout}s")


def download_video(video_url, output_path):
    """Stream de video naar schijf."""
    response = requests.get(video_url, stream=True)
    response.raise_for_status()
    with open(output_path, "wb") as f:
        for chunk in response.iter_content(chunk_size=8192):
            f.write(chunk)


if __name__ == "__main__":
    task_id = generate_video(
        prompt="A cat sitting on a windowsill watching rain fall outside, cozy indoor lighting, shallow depth of field",
        duration=10,
    )
    print(f"Task submitted: {task_id}")

    result = wait_for_completion(task_id)
    print(f"Video ready: {result['video_url']}")

    download_video(result["video_url"], "output.mp4")
    print("Downloaded to output.mp4")

JavaScript (Node.js)-voorbeeld

Dezelfde werkwijze in modern Node.js met native fetch.

const API_KEY = process.env.SEEDANCE_API_KEY;
const BASE_URL = "https://api.arteza.ai/v1";

async function generateVideo(prompt, duration = 8, aspectRatio = "16:9") {
  const response = await fetch(`${BASE_URL}/generate/text-to-video`, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "seedance-2.0",
      prompt,
      duration,
      aspect_ratio: aspectRatio,
      audio: true,
    }),
  });

  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  return data.task_id;
}

async function waitForCompletion(taskId, pollMs = 5000, timeoutMs = 300000) {
  const start = Date.now();

  while (Date.now() - start < timeoutMs) {
    const response = await fetch(`${BASE_URL}/tasks/${taskId}`, {
      headers: { Authorization: `Bearer ${API_KEY}` },
    });
    const data = await response.json();

    if (data.status === "completed") return data.result;
    if (data.status === "failed") {
      throw new Error(`Generation failed: ${data.error}`);
    }

    await new Promise((resolve) => setTimeout(resolve, pollMs));
  }

  throw new Error(`Task ${taskId} timed out`);
}

// Gebruik
const taskId = await generateVideo(
  "Timelapse of a flower blooming, macro lens, soft natural lighting",
  12
);
console.log(`Task submitted: ${taskId}`);

const result = await waitForCompletion(taskId);
console.log(`Video ready: ${result.video_url}`);

Afbeelding-naar-video in Python

Wanneer je een bronafbeelding moet uploaden, gebruik je multipart/form-data:

def generate_from_image(image_path, prompt, model="seedance-2.0", duration=8):
    """Genereer video vanuit een lokaal afbeeldingsbestand."""
    with open(image_path, "rb") as img_file:
        response = requests.post(
            f"{BASE_URL}/generate/image-to-video",
            headers={"Authorization": f"Bearer {API_KEY}"},
            files={"image": img_file},
            data={
                "model": model,
                "prompt": prompt,
                "duration": duration,
                "aspect_ratio": "16:9",
                "audio": "true",
            },
        )
    response.raise_for_status()
    return response.json()["task_id"]

Foutafhandeling die niet omvalt

De API gebruikt standaard HTTP-statuscodes met gestructureerde foutberichten.

StatusBetekenisVeelvoorkomende oorzaak
400Ongeldig verzoekOngeldige parameters, prompt te lang
401Niet geautoriseerdOntbrekende of ongeldige API-sleutel
402Betaling vereistOnvoldoende credits
404Niet gevondenOngeldige taak-ID
429Te veel verzoekenSnelheidslimiet overschreden
500Interne serverfoutProbleem aan serverzijde - opnieuw proberen met backoff

Foutantwoordstructuur

{
  "error": {
    "code": "insufficient_credits",
    "message": "Your account has 8 credits but this generation requires 24 credits.",
    "required_credits": 24,
    "available_credits": 8
  }
}

Aanbevolen patroon

try:
    task_id = generate_video(prompt)
except requests.exceptions.HTTPError as e:
    status = e.response.status_code
    if status == 402:
        error = e.response.json()["error"]
        print(f"Need {error['required_credits']} credits, have {error['available_credits']}")
        # Stuur de gebruiker door naar /pricing
    elif status == 429:
        retry_after = int(e.response.headers.get("Retry-After", 60))
        print(f"Rate limited. Retry after {retry_after}s.")
    else:
        raise

Snelheidslimieten en best practices voor productie

De limieten

LimietWaarde
Verzoeken per minuut60
Gelijktijdige generaties5
Maximale promptlengte500 tekens
Maximale afbeeldingsupload10 MB

Vijf praktijken die in productie ertoe doen

  1. Gebruik webhooks, geen polling, op schaal. Polling verspilt API-aanroepen. Webhooks worden precies één keer geactiveerd.
  2. Implementeer exponentiële backoff bij 429-antwoorden. Probeer niet direct opnieuw.
  3. Download video-URL's snel. Ze verlopen na 24 uur. Sla ze op in je eigen CDN.
  4. Valideer invoer aan de clientzijde. Vang problemen met promptlengte en bestandsgrootte op voordat je de API aanroept.
  5. Controleer het creditsaldo vóór batchtaken. Een 402 halverwege een batch is vervelend. Raadpleeg eerst /account/credits.

Webhook-integratie

Voeg webhook_url toe aan je generatieverzoek en Arteza stuurt een POST-verzoek zodra de taak voltooid is.

{
  "model": "seedance-2.0",
  "prompt": "...",
  "webhook_url": "https://yourapp.com/api/seedance/webhook"
}

Webhook-payload

{
  "event": "task.completed",
  "task_id": "task_abc123def456",
  "status": "completed",
  "result": {
    "video_url": "https://cdn.arteza.ai/outputs/task_abc123def456.mp4",
    "duration": 10,
    "resolution": "1280x720",
    "has_audio": true
  },
  "metadata": {
    "campaign_id": "summer-2026",
    "variant": "A"
  },
  "timestamp": "2026-04-10T14:31:28Z"
}

Webhook-verzoeken bevatten een X-Seedance-Signature-header: een HMAC-SHA256-handtekening van de body, ondertekend met je webhookgeheim. Verifieer altijd de handtekening voordat je gebeurtenissen verwerkt.

Batchgeneratie

Wanneer je meerdere clips nodig hebt, dien je ze als batch in en ontvang je één webhook wanneer alles klaar is.

POST /v1/generate/batch
{
  "tasks": [
    {
      "type": "text-to-video",
      "model": "seedance-2.0",
      "prompt": "Scene 1 description...",
      "duration": 8
    },
    {
      "type": "text-to-video",
      "model": "seedance-2.0",
      "prompt": "Scene 2 description...",
      "duration": 10
    },
    {
      "type": "image-to-video",
      "model": "seedance-1.0-pro",
      "image_url": "https://example.com/product.jpg",
      "prompt": "Slow rotation revealing product details",
      "duration": 6
    }
  ],
  "webhook_url": "https://yourapp.com/api/seedance/batch-complete"
}

Taken in een batch worden gelijktijdig verwerkt tot aan je gelijktijdigheidslimiet.

🚀

Stop met lezen. Begin met bouwen.

Elke minuut die je aan documentatie besteedt, is een video die je pijplijn al had kunnen genereren. Gratis credits, geen creditcard vereist.

Begin nu met bouwen

Vier gebruiksscenario's die de moeite waard zijn om te bouwen

1. E-commerce productvideo's op schaal

Automatiseer productanimatie voor je hele catalogus. Loop door je productdatabase, stuur per item een afbeelding-naar-video-aanroep en sla de resulterende URL's op naast het productrecord.

products = get_products_from_database()

for product in products:
    task_id = generate_from_image(
        image_path=product["hero_image"],
        prompt=f"Slow 360 rotation of {product['name']}, studio lighting, white background",
        model="seedance-1.0-pro",
        duration=6,
    )
    save_task_mapping(product["id"], task_id)

Combineer dit met de gids voor e-commercevideo's voor tips over de werkwijze.

2. Geautomatiseerde sociale-mediapijplijnen

Voer trending onderwerpen in prompt-generators en genereer dagelijks verticale video's voor een beoordelingswachtrij:

for topic in get_trending_topics():
    prompt = build_prompt(topic)
    task_id = generate_video(prompt, duration=6, aspect_ratio="9:16")
    queue_for_review(task_id, topic)

3. Marketing-A/B-testen

Genereer meerdere creatieve varianten met metadatatracering:

variants = [
    "Product hero shot with warm lighting, luxury feel",
    "Product hero shot with bright lighting, energetic feel",
    "Product hero shot with moody lighting, premium feel",
]

for i, variant in enumerate(variants):
    generate_video(
        prompt=variant,
        duration=6,
        metadata={"variant": chr(65 + i), "campaign": "spring-launch"},
    )

Het veld metadata wordt teruggestuurd in de voltooiingspayload, zodat je resultaten automatisch naar het juiste campagnesegment kunt routeren.

4. Interactieve applicaties

Verwerk videogeneratie rechtstreeks in je eigen app. Een gebruiker typt een prompt, je backend roept de API aan en de webhook levert de afgewerkte clip. De hele cyclus duurt ongeveer 90 seconden.

De conclusie

De Arteza API is eenvoudig te integreren en productieklaar. Eenvoudige authenticatie, duidelijke REST-semantiek, webhooks voor asynchroon werk en batch-eindpunten voor schaal. Als je Stripe of een andere moderne REST API hebt gebruikt, voel je je binnen tien minuten thuis.

Voor prijzen en creditoptimalisatie, zie de prijzengids. Voor een breder productoverzicht, lees de complete Seedance 2.0-gids.

Klaar om te beginnen met bouwen? Maak je gratis account aan →

Lees verder: Complete Seedance 2.0-gids • Prijzengids • Seedance 2.0 vs Seedance 1.0 • Seedance 2.0 vs Runway Gen-4

Seedance 2.0 uitproberen - Nu!

5 gratis generaties · Geen creditcard nodig

Open de Seedance 2.0 app

Gerelateerde tools

AI-videogeneratorAI VideostudioAI Voice-over- en muziekgeneratorAI-afbeeldingsgenerator

Gerelateerde posts

Technical

Kwaliteit van AI-videogeneratie: resolutie, FPS en duur uitgelegd

Technical

ByteDance Seed AI-modellen uitgelegd: Seedance, Seedream, OmniHuman

Technical

De toekomst van AI-video: voorspellingen voor 2026-2027

Technical

Wat is AI-videogeneratie? Hoe tekst-naar-video-AI werkt in 2026

Vorige: Seedance 2.0: complete gids voor ByteDance's krachtigste AI-videogeneratorVolgende: Seedance 1.0 Pro voor huwelijksvideografen: AI-verbetering