Vidéos de 30 s, 50+ références. Essayer maintenant

SeeGen AI API

Bienvenue sur l'API SeeGen AI — une seule API pour générer des vidéos cinématographiques et des images haute fidélité avec plusieurs modèles de pointe.

Aperçu

SeeGen AI est une API de génération unifiée : un ensemble cohérent de points de terminaison pour exécuter plusieurs des principaux modèles d'IA vidéo et image. Choisissez un modèle avec le paramètre model — l'authentification, la soumission des tâches, l'interrogation du statut et les webhooks fonctionnent de la même façon pour tous.

Modèles actuellement disponibles :

  • Vidéo — Seedance 2.0 Pro (sd2), Seedance 2.0 Fast (sd2-fast), Seedance 2.0 Mini (sd2-mini), Seedance 2.5 (sd2.5), HappyHorse 1.1 (happyhorse)
  • Image — GPT Image 2 (gpt-image-2), Nano Banana 2 (nano-banana-2), Nano Banana Pro (nano-banana-pro), Seedream 5.0 Lite (seedream-v5.0-lite), Seedream 5.0 Pro (seedream-v5.0-pro)

URL de base : https://seegen.ai/api/v1

Modèle : passez l'un des alias ci-dessus dans le champ model (par ex. sd2, gpt-image-2).

Pourquoi SeeGen AI ?

D'autres raisons de choisir SeeGen AI :

  • Plus que Seedance 2.0 : HappyHorse 1.1, Nano Banana, ChatGPT Image, et plus encore.
  • Aucun abonnement requis — payez à l'usage
  • Accès rapide aux derniers modèles
  • Assistance client 24/7
  • Assistance pour les questions officielles liées aux modèles
  • Accès à la console pour les développeurs
  • Ouvert aux entreprises comme aux particuliers

Tarifs

40% OFF

API Pack

$500$833

125,000 crédits ($0.004/crédit)

~781 vidéos de 5s

40% OFF

API-XL Pack

$2,000$3,332

500,000 crédits ($0.004/crédit)

~3,125 vidéos de 5s

Seedance 2.0 / Fast / Mini / 2.5 : calcul du coût

Soit out = output_seconds et in = la somme des ⌈duration⌉ de chaque vidéo d'entrée (chacune arrondie au supérieur, minimum out × 2/3). Seedance 2.5 suit le même calcul que Seedance 2.0. Le tarif de base de chaque modèle correspondant est multiplié par 1.5 puis arrondi avant l'application de la formule de la tâche (1080P est natif sur sd2.5, soit 2,5× son tarif 720P) ; les suppléments d'upscale indépendants du modèle restent à +30 / +40 crédits par seconde de sortie pour 2K / 4K (+20 pour 1080P uniquement sur sd2-fast / sd2-mini).

Sans entrée vidéoAvec entrée vidéo
sd2.5: 480P30 × out23 × (out + in)
sd2.5: 720P60 × out45 × (out + in)
sd2.5: 1080P (natif)150 × out113 × (out + in)
sd2.5: 2K(60 + 30) × out45 × (out + in) + 30 × out
sd2.5: 4K(60 + 40) × out45 × (out + in) + 40 × out
sd2-pro: 480P20 × out15 × (out + in)
sd2-pro: 720P40 × out30 × (out + in)
sd2-pro: 1080P (natif)100 × out75 × (out + in)
sd2-pro: 2K(40 + 30) × out30 × (out + in) + 30 × out
sd2-pro: 4K (natif)200 × out150 × (out + in)
sd2-fast: 480P16 × out12 × (out + in)
sd2-fast: 720P32 × out24 × (out + in)
sd2-fast: 1080P(32 + 20) × out24 × (out + in) + 20 × out
sd2-fast: 2K(32 + 30) × out24 × (out + in) + 30 × out
sd2-fast: 4K(32 + 40) × out24 × (out + in) + 40 × out
sd2-mini: 480P10 × out7.5 × (out + in)
sd2-mini: 720P20 × out15 × (out + in)
sd2-mini: 1080P(20 + 20) × out15 × (out + in) + 20 × out
sd2-mini: 2K(20 + 30) × out15 × (out + in) + 30 × out
sd2-mini: 4K(20 + 40) × out15 × (out + in) + 40 × out

Remarque : sd2-pro en 1080P et 4K est une sortie native officielle (4K = 5× le tarif 720P) ; sd2-pro en 2K et l'ensemble de sd2-fast / sd2-mini en 1080P/2K/4K sont upscalés par SeeGen AI. sd2.5 génère nativement en 480P/720P/1080P (1080P = 2,5× le tarif 720P, sans supplément d'upscale) et utilise l'upscale automatique pour 2K/4K. Demandez n'importe quel niveau via outputResolution: "4k" (par ex. "2k" / "4k" ; la passerelle choisit automatiquement entre natif et upscale — seuls le prix et le libellé Native diffèrent). sd2-mini est facturé à 50 % du prix de sd2-pro, le niveau le moins cher. Seedance 2.5 reprend l'arrondi de durée par vidéo, le plancher de durée d'entrée minimale et le calcul d'upscale de Seedance 2.0. Le tarif de base de chaque modèle correspondant est multiplié par 1.5 puis arrondi avant le calcul de la tâche (par ex. 1080P avec vidéo : 75 × 1.5 → 113). Les suppléments d'upscale 2K / 4K, indépendants du modèle, restent à +30 / +40 crédits par seconde de sortie. En cas d'échec de l'upscale, la tâche terminée renvoie le résultat de repli en 720P sans remboursement partiel de crédits.

  • sd2.5 480P, sortie de 4 secondes sans vidéo d'entrée : 120 crédits
  • sd2.5 720P, sortie de 5 secondes sans vidéo d'entrée : 300 crédits
  • sd2.5 720P, sortie de 5 secondes + vidéo d'entrée de 3 secondes (minimum d'entrée de 4 secondes) : 405 crédits
  • sd2.5 1080P natif, sortie de 5 secondes sans vidéo d'entrée : 750 crédits
  • sd2.5 1080P natif, sortie de 5 secondes + vidéo d'entrée de 5 secondes : 1,130 crédits

happyhorse : crédits par seconde

SortieCrédits/sExemple 5s
720P32160
1080P60300
2K32 + 30310
4K32 + 40360

Remarque : l'upscale 2K / 4K s'ajoute à la base 720P (il ne se cumule pas avec le 1080P natif). t2v / i2v / r2v partagent le même tarif par seconde — les images de référence ne sont pas facturées.

🎉 Offre à durée limitée : 33% de réduction sur toute la génération d'images — tous les prix des images ci-dessous sont déjà réduits.

gpt-image-2 : crédits par image

RésolutionQualité moyenneQualité élevée
1k10154770
2k (par défaut)233584125
4k4060154230

Chaque tâche produit 1 image. Soumettez N tâches pour obtenir N variantes. Les tâches échouées remboursent automatiquement les crédits.

nano-banana-2 et nano-banana-pro : crédits par image

Résolutionnano-banana-2nano-banana-pro
1k20304060
2k (par défaut)30454060
4k477074110

Chaque tâche produit 1 image. Soumettez N tâches pour obtenir N variantes. Les tâches échouées remboursent automatiquement les crédits.

Seedream 5.0 : crédits par image

Modèle / niveauCrédits
Lite 2k / 4k (tarif forfaitaire)710
Pro 1k (par défaut)1015
Pro 2k2030

Chaque tâche produit 1 image. Soumettez N tâches pour obtenir N variantes. Les tâches échouées remboursent automatiquement les crédits. Les images de référence ne sont pas facturées séparément.

Consultez votre solde : GET /api/v1/account/credits

Authentification

Toutes les requêtes API nécessitent un jeton Bearer dans l'en-tête Authorization. Vous pouvez créer et gérer vos clés API depuis les Paramètres du compte.

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

Important : votre clé API n'est affichée qu'une seule fois, au moment de sa création. Conservez-la en lieu sûr. Vous pouvez créer jusqu'à 10 clés API par compte.

Démarrage rapide

Générez une vidéo en deux étapes : créez une tâche, puis interrogez le résultat.

# 1. Create a text-to-video task
TASK_ID=$(curl -s -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "prompt": "A golden retriever running on the beach at sunset",
      "duration": "5s",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask | jq -r '.taskId')

echo "Task created: $TASK_ID"

# 2. Poll for result
while true; do
  RESULT=$(curl -s -H "Authorization: Bearer $API_KEY" \
    "https://seegen.ai/api/v1/jobs/queryTask?taskId=$TASK_ID")
  STATUS=$(echo $RESULT | jq -r '.status')
  echo "Status: $STATUS"
  if [ "$STATUS" = "COMPLETED" ] || [ "$STATUS" = "FAILED" ]; then
    echo $RESULT | jq .
    break
  fi
  sleep 5
done

Points de terminaison

POST/api/v1/jobs/createTask

Créer une nouvelle tâche de génération vidéo

GET/api/v1/jobs/queryTask

Interroger le statut et le résultat d'une tâche

GET/api/v1/account/credits

Consulter votre solde de crédits

POST/api/v1/assets/upload

Importer une ressource (image/vidéo/audio) pour vérification

GET/api/v1/assets/status

Interroger le statut de vérification d'une ressource

GET/api/v1/assets/list

Lister vos ressources importées

POST/api/v1/upscale/create

Soumettre une tâche d'upscale vidéo autonome (720p / 1080p / 2K / 4K)

GET/api/v1/upscale/query

Interroger le statut et le résultat d'une tâche d'upscale autonome

Choisir un modèle (vidéo)

Deux familles de modèles génèrent des vidéos. Choisissez selon le mode et le prix ; combinez avec la section Tarifs pour estimer le coût.

ModèleT2VI2VFirst–LastMulti-RefR2V1080p natif4K natifAudio720p / 5s
sd2.5upscale300 crédits
sd2200 crédits
sd2-fastupscaleupscale160 crédits
sd2-miniupscaleupscale100 crédits
happyhorseupscale160 crédits

T2V = Texte vers vidéo · I2V = Image vers vidéo (première image) · First–Last = première + dernière image clé · Multi-Ref = références mixtes image / vidéo / audio · R2V = 1 à 9 images de référence avec marqueurs de personnage

Seedance 2.0 / 2.0 Fast / 2.0 Mini / Seedance 2.5

Texte vers vidéo

Génère une vidéo à partir d'un prompt textuel. Aucune image requise.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "prompt": "A futuristic city with flying cars at night, neon lights reflecting on wet streets",
      "duration": "5s",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ParamètreTypeObligatoireDescription
promptstringOuiDescription textuelle de la vidéo à générer. 20000 caractères max.
durationstringNonDurée de la vidéo : de "4s" à "15s" ; sd2.5 prend en charge jusqu'à "30s" (par défaut : "5s")
resolutionstringNonFormat d'image via resolution. Options : auto (par défaut), 720x720, 720x960, 960x720, 1280x720, 720x1280, 1280x540
outputResolutionstringNonNiveau de résolution de sortie : "480p", "720p" (par défaut), "1080p", "2k" ou "4k". Les résolutions natives varient selon le modèle : Seedance 2.0 Pro : 480p/720p/1080p/4k ; Seedance 2.0 Fast et Mini : 480p/720p ; Seedance 2.5 : 480p/720p/1080p. Les niveaux supérieurs sont automatiquement upscalés.
seedintNonGraine de reproductibilité : -1 ou à omettre pour un résultat aléatoire ; 0–2147483647 pour une valeur fixe.
generateAudiobooleanNonIndique si une piste audio synchronisée doit être synthétisée. Par défaut true ; passez false pour une vidéo muette.

Image vers vidéo

Anime une image statique pour en faire une vidéo. Fournissez une URL d'image comme image de départ.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": ["https://example.com/photo.jpg"],  // or "asset://asset-20260326-abc123"
      "prompt": "The woman slowly turns her head and smiles",
      "duration": "5s"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ParamètreTypeObligatoireDescription
urlsstring[]OuiTableau avec une URL d'image (l'image source). Prend en charge les URL HTTP et les références de ressource (par ex. "asset://asset-20260326-abc123")
promptstringNonDescription textuelle du mouvement souhaité
durationstringNonDurée de la vidéo : de "4s" à "15s" ; sd2.5 prend en charge jusqu'à "30s" (par défaut : "5s")
outputResolutionstringNonNiveau de résolution de sortie : "480p", "720p" (par défaut), "1080p", "2k" ou "4k". Les résolutions natives varient selon le modèle : Seedance 2.0 Pro : 480p/720p/1080p/4k ; Seedance 2.0 Fast et Mini : 480p/720p ; Seedance 2.5 : 480p/720p/1080p. Les niveaux supérieurs sont automatiquement upscalés.
seedintNonGraine de reproductibilité : -1 ou à omettre pour un résultat aléatoire ; 0–2147483647 pour une valeur fixe.
generateAudiobooleanNonIndique si une piste audio synchronisée doit être synthétisée. Par défaut true ; passez false pour une vidéo muette.

Première et dernière image

Définissez l'image de départ et l'image finale ; le modèle génère la transition entre les deux. Utilise videoInputMode: "keyframe".

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": [
        "https://example.com/first-frame.jpg",
        "https://example.com/last-frame.jpg"
      ],
      "prompt": "Smooth camera transition from day to night",
      "duration": "5s",
      "videoInputMode": "keyframe"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ParamètreTypeObligatoireDescription
urlsstring[]OuiTableau avec exactement 2 URL d'image : [first_frame, last_frame]. Prend en charge les URL HTTP et les références de ressource (par ex. "asset://asset-20260326-abc123")
videoInputModestringOuiDoit être "keyframe"
promptstringNonDescription textuelle guidant la transition
durationstringNonDurée de la vidéo : de "4s" à "15s" ; sd2.5 prend en charge jusqu'à "30s" (par défaut : "5s")
outputResolutionstringNonNiveau de résolution de sortie : "480p", "720p" (par défaut), "1080p", "2k" ou "4k". Les résolutions natives varient selon le modèle : Seedance 2.0 Pro : 480p/720p/1080p/4k ; Seedance 2.0 Fast et Mini : 480p/720p ; Seedance 2.5 : 480p/720p/1080p. Les niveaux supérieurs sont automatiquement upscalés.
seedintNonGraine de reproductibilité : -1 ou à omettre pour un résultat aléatoire ; 0–2147483647 pour une valeur fixe.
generateAudiobooleanNonIndique si une piste audio synchronisée doit être synthétisée. Par défaut true ; passez false pour une vidéo muette.

Multi-Référence

Utilisez plusieurs images, vidéos et fichiers audio de référence pour guider la génération. Utilise videoInputMode: "reference". Pour sd2.5, il s'agit de la sous-tâche de référence par défaut ; voir Édition et extension vidéo ci-dessous pour éditer ou poursuivre une vidéo existante.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": [
        "https://example.com/ref1.jpg",
        "https://example.com/ref2.jpg"
      ],
      "videoUrls": ["asset://asset-motion-video"],
      "audioUrls": ["https://example.com/audio.mp3"],
      "prompt": "Character walks through a garden",
      "duration": "5s",
      "videoInputMode": "reference",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ParamètreTypeObligatoireDescription
urlsstring[]NonURL d'images de référence (max 9). Prend en charge les URL HTTP et les références de ressource (par ex. "asset://asset-20260326-abc123")
videoUrlsstring[]NonURI asset:// des vidéos de référence — à importer d'abord via /api/v1/assets/upload ; les URL externes sont refusées. sd2 : 3 vidéos max, chacune ≤15s. sd2.5 : jusqu'à 10 vidéos, chacune de 2–30s et ≤200MB, durée totale de référence ≤30s, entrées de 480p à 4K prises en charge.
audioUrlsstring[]NonEntrées audio de référence. sd2 / sd2-fast / sd2-mini : jusqu'à 3 fichiers audio, chacun de 2–15s, total ≤15s — l'audio ne peut pas être l'unique référence sur ces modèles (ajoutez au moins une image ou une vidéo). sd2.5 : jusqu'à 10 fichiers, ≤15MB et 2–30s chacun, total ≤30s, et l'entrée audio seule est prise en charge.
videoInputModestringOuiDoit être "reference"
promptstringNonDescription textuelle
durationstringNonDurée de la vidéo : de "4s" à "15s" ; sd2.5 prend en charge jusqu'à "30s" (par défaut : "5s")
resolutionstringOuiObligatoire en mode référence. Options : 720x720, 720x960, 960x720, 1280x720, 720x1280, 1280x540
outputResolutionstringNonNiveau de résolution de sortie : "480p", "720p" (par défaut), "1080p", "2k" ou "4k". Les résolutions natives varient selon le modèle : Seedance 2.0 Pro : 480p/720p/1080p/4k ; Seedance 2.0 Fast et Mini : 480p/720p ; Seedance 2.5 : 480p/720p/1080p. Les niveaux supérieurs sont automatiquement upscalés.
seedintNonGraine de reproductibilité : -1 ou à omettre pour un résultat aléatoire ; 0–2147483647 pour une valeur fixe.
generateAudiobooleanNonIndique si une piste audio synchronisée doit être synthétisée. Par défaut true ; passez false pour une vidéo muette.

Contraintes de référence

  • Max 9 images, 3 vidéos, 3 fichiers audio
  • Max 12 fichiers au total, tous types confondus
  • Chaque vidéo/audio doit durer ≤ 15 secondes
  • Les images doivent mesurer au moins 400px sur le côté le plus court
  • sd2.5 : max 30 images, 10 vidéos, 10 fichiers audio, et 50 au total ; les totaux vidéo et audio sont chacun ≤ 30 secondes

Édition et extension vidéo

sd2.5 divise la génération basée sur des références en trois sous-tâches. Omettez mode pour une génération de référence classique, définissez mode: "edit" pour éditer une vidéo existante, ou mode: "extend" pour la prolonger. Les deux nécessitent au moins une vidéo dans videoUrls et produisent toujours une sortie au format d'image de la vidéo source.

Placez la vidéo que vous souhaitez modifier en premier dans videoUrls et désignez-la comme « Video 1 » dans votre prompt. edit force la durée de sortie à correspondre à cette première vidéo (source), qui doit durer entre 4 et 30s ; tout duration envoyé est donc ignoré. La facturation utilise la durée de la vidéo source comme durée de sortie, plus toutes les vidéos de référence en tant qu'entrée. extend accepte 1 à 3 clips assemblés dans l'ordre, et le duration demandé correspond à la durée de sortie de cette génération (sans rapport avec la durée source) — facturé comme une génération de référence classique.

Les modèles de la famille 2.0 (sd2 / sd2-fast / sd2-mini) acceptent aussi mode: "edit" et mode: "extend" : ils déduisent l'opération de votre prompt (décrivez explicitement l'édition ou la poursuite), le format d'image suit la vidéo source, et duration reste sous votre contrôle avec une facturation classique.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2.5",
    "inputs": {
      "mode": "edit",
      "videoUrls": ["asset://asset-source-video"],
      "urls": ["https://example.com/annotation-at-1.2s.png"],
      "source_frame_timestamps_ms": [1200],
      "prompt": "Replace the marked object with a red umbrella",
      "outputResolution": "720p"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ParamètreTypeObligatoireDescription
modestringNon"edit" ou "extend". À omettre pour une génération de référence classique.
videoUrlsstring[]OuiAu moins une vidéo ; la première est la source (« Video 1 ») — la durée de sortie et la facturation de l'édition en dépendent. Les vidéos suivantes sont des références supplémentaires (edit) ou des clips additionnels assemblés dans l'ordre (extend, max 3).
urlsstring[]NonImages d'annotation/référence facultatives.
source_frame_timestamps_msnumber[]NonUniquement avec mode "edit". Un horodatage non négatif de la vidéo source, en millisecondes, par image dans urls.
outputResolutionstringNonNiveau de résolution de sortie : "480p", "720p" (par défaut), "1080p", "2k" ou "4k". Les résolutions natives varient selon le modèle : Seedance 2.0 Pro : 480p/720p/1080p/4k ; Seedance 2.0 Fast et Mini : 480p/720p ; Seedance 2.5 : 480p/720p/1080p. Les niveaux supérieurs sont automatiquement upscalés.

Référence des paramètres Seedance

Référence complète de tous les paramètres inputs pour les modèles sd2 / sd2-fast / sd2-mini / sd2.5.

ParamètreTypeObligatoireDescription
promptstringNonDescription textuelle (obligatoire pour texte vers vidéo, facultative pour les autres modes). 20000 caractères max.
urlsstring[]NonURL d'images. Prend en charge les URL HTTP et les références de ressource (par ex. "asset://asset-20260326-abc123"). Correspond en interne à uploadedUrls.
videoUrlsstring[]NonURI asset:// de vidéos de référence (mode référence uniquement). Doivent être importées au préalable via /api/v1/assets/upload — les URL externes sont refusées.
audioUrlsstring[]NonURL audio de référence (mode référence uniquement). L'entrée audio seule est prise en charge sur sd2.5 ; sd2 / sd2-fast / sd2-mini exigent au moins une image ou une vidéo en plus de l'audio.
durationstringNonDe "4s" à "15s" normalement ; sd2.5 prend en charge jusqu'à "30s". Par défaut : "5s"
resolutionstringNonFormat d'image : auto (par défaut) | 720x720 | 720x960 | 960x720 | 1280x720 | 720x1280 | 1280x540
outputResolutionstringNonNiveau de résolution de sortie : "480p", "720p" (par défaut), "1080p", "2k" ou "4k". Les résolutions natives varient selon le modèle : Seedance 2.0 Pro : 480p/720p/1080p/4k ; Seedance 2.0 Fast et Mini : 480p/720p ; Seedance 2.5 : 480p/720p/1080p. Les niveaux supérieurs sont automatiquement upscalés.
videoInputModestringNon"keyframe" (par défaut) ou "reference"
modestringNonSous-tâche du mode référence (tous modèles Seedance) : à omettre pour une génération de référence classique, "edit" pour éditer la première vidéo de videoUrls, "extend" pour prolonger 1 à 3 clips. Voir Édition et extension vidéo.
source_frame_timestamps_msnumber[]NonÉdition vidéo sd2.5 uniquement : un horodatage en millisecondes, non négatif, par image d'annotation.
seedintNonGraine aléatoire pour la reproductibilité. -1 ou à omettre pour un tirage aléatoire côté serveur. Une même graine + mêmes entrées produit un résultat très proche (non identique au bit près, en raison du non-déterminisme du GPU). Plage : -1 à 2147483647.
generateAudiobooleanNonIndique si une piste audio (voix, effets sonores, musique de fond) synchronisée avec la vidéo doit être synthétisée. Par défaut true. Réglez sur false pour produire une vidéo muette — légèrement plus rapide, utile si vous prévoyez un doublage séparé.
bitrateModestringNonNiveau de bitrate de sortie à résolution égale : "standard" (par défaut) ou "high". "high" préserve davantage de détails et réduit le banding/le blocking, pour une taille de fichier ~3-5× plus importante — sans changer la résolution ni le prix.
upscaleResolutionstringNon(Obsolète) Champ scindé hérité, toujours accepté pour la compatibilité ascendante. Les nouvelles intégrations doivent utiliser outputResolution, qui accepte désormais directement "2k" / "4k". Si les deux sont envoyés, upscaleResolution est prioritaire — sauf sur les modèles avec 1080p natif (Seedance2 Pro / Seedance 2.5), où upscaleResolution:"1080p" est résolu en 1080p natif (facturé au tarif natif).

Champs de niveau supérieur de la requête : model (obligatoire), inputs (obligatoire), callBackUrl (URL de webhook facultative).

Ressources

Les ressources sont des fichiers image, vidéo et audio qui passent par un processus de vérification avant de pouvoir être utilisés dans des tâches de génération vidéo. Importez une ressource, attendez qu'elle passe à ACTIVE, puis utilisez son URL asset:// dans vos tâches.

Remarque : les ressources image et vidéo représentant de vraies personnes nécessitent une vérification officielle, généralement effectuée en quelques secondes. Une fois approuvées, elles peuvent être utilisées directement comme références. Sans vérification, la génération peut échouer.

Importer une ressource

Deux méthodes d'import : envoyer directement un fichier local (multipart/form-data), ou soumettre une URL HTTPS accessible publiquement. Dans les deux cas, la ressource est traitée et vérifiée automatiquement.

Méthode A — import de fichier direct (multipart/form-data)

Envoyez un fichier local sans besoin d'hébergeur d'images. Le type de média est détecté à partir des octets du fichier (l'extension du nom de fichier n'est pas fiable). Autorisés : images (jpg/png/webp/gif/bmp/tiff/heic), vidéos (mp4/mov), audio (wav/mp3). Max 50MB par fichier (image ≤30MB, vidéo ≤50MB, audio ≤15MB).

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@/path/to/photo.jpg" \
  -F "name=my-photo" \
  https://seegen.ai/api/v1/assets/upload
ParamètreTypeObligatoireDescription
filefileOuiLe fichier local (champ de formulaire multipart). Le type de média est détecté à partir du contenu.
namestringNonNom de la ressource (64 caractères max)

Méthode B — par URL (application/json)

Si le fichier est déjà hébergé à une URL HTTPS publique.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/photo.jpg",
    "type": "IMAGE",
    "name": "my-photo"
  }' \
  https://seegen.ai/api/v1/assets/upload
ParamètreTypeObligatoireDescription
urlstringOuiURL HTTPS accessible publiquement du fichier à importer
typestringOui"IMAGE", "AUDIO" ou "VIDEO"
namestringNonNom de la ressource (64 caractères max)

Réponse d'import

{
  "assetId": 123,
  "volcAssetId": "asset-20260326-abc123",
  "type": "IMAGE",
  "status": "PROCESSING",
  "failReason": null,
  "url": "https://example.com/photo.jpg",
  "name": "my-photo",
  "createdAt": 1711234567890
}

Interroger le statut d'une ressource

Interroge le statut de vérification d'une ressource. Lorsque le statut est PROCESSING, l'endpoint vérifie automatiquement les mises à jour du système de vérification.

# Query by asset ID (numeric)
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/status?assetId=123"

# Query by volcAssetId (string)
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/status?assetId=asset-20260326-abc123"

Valeurs de statut de ressource

  • PROCESSINGen cours de vérification, pas encore utilisable
  • ACTIVEvérification réussie, prête à être utilisée dans des tâches
  • FAILEDvérification échouée, consultez failReason

Lister les ressources

Liste vos ressources importées, avec filtrage facultatif par type et par statut. Prend en charge la pagination par curseur.

# List all assets
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list"

# Filter by type and status
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list?type=IMAGE&status=ACTIVE&limit=10"

# Paginate with cursor
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list?cursor=100&limit=20"
ParamètreTypeObligatoireDescription
typestringNonFiltrer par type : "IMAGE", "AUDIO" ou "VIDEO"
statusstringNonFiltrer par statut : "NONE", "PROCESSING", "ACTIVE" ou "FAILED"
cursornumberNonCurseur de pagination (utilisez nextCursor de la réponse précédente)
limitnumberNonÉléments par page, 1-50 (par défaut : 20)

Réponse de liste

{
  "items": [
    {
      "assetId": 123,
      "volcAssetId": "asset-20260326-abc123",
      "type": "IMAGE",
      "status": "ACTIVE",
      "failReason": null,
      "url": "https://example.com/photo.jpg",
      "name": "my-photo",
      "width": 1920,
      "height": 1080,
      "size": 245000,
      "duration": null,
      "createdAt": 1711234567890
    }
  ],
  "nextCursor": 122
}

Utiliser des ressources dans les tâches

Une fois qu'une ressource est ACTIVE, utilisez son volcAssetId avec le protocole asset:// dans les URL de votre tâche :

{
  "model": "sd2",
  "inputs": {
    "urls": ["asset://asset-20260326-abc123"],
    "prompt": "The person slowly looks up and smiles",
    "duration": "5s"
  }
}

HappyHorse 1.1 (Alibaba)

Un modèle alternatif de génération vidéo d'Alibaba DashScope. Prend en charge trois modes : texte vers vidéo, image vers vidéo avec première image, et référence vers vidéo (1 à 9 images de référence fusionnées par prompt ; référencez les sujets avec character1, character2, … dans le prompt). HappyHorse 1.1 ne prend pas en charge la dernière image, la vidéo de référence ni l'audio de référence. Nom du modèle : happyhorse.

Aucune vérification de ressource requise — vous pouvez utiliser directement des URL d'images HTTPS publiques, ou passer des références asset:// de la bibliothèque de ressources (résolues automatiquement vers l'URL R2 d'origine).

Texte vers vidéo

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "prompt": "A panda DJ at a beach party, smoky sunset",
      "duration": "5s",
      "outputResolution": "720p",
      "ratio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Image vers vidéo (première image)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "urls": ["https://example.com/panda.jpg"],
      "prompt": "The panda blinks and smiles",
      "duration": "5s",
      "outputResolution": "1080p"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Référence vers vidéo (1 à 9 images de référence)

Passez videoWorkflowTab: "multi-reference" avec 1 à 9 URL d'images de référence pour fusionner plusieurs sujets en une seule sortie. Référencez chaque image dans le prompt avec character1, character2, … (dans l'ordre de urls). Le format d'image est contrôlé par le champ ratio (il n'y a pas de première image pour le déduire).

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "videoWorkflowTab": "multi-reference",
      "urls": [
        "https://example.com/character.jpg",
        "https://example.com/folding-fan.jpg",
        "https://example.com/earrings.jpg"
      ],
      "prompt": "A woman in red character1 opening folding fan character2, with tassel earrings character3 swinging",
      "duration": "5s",
      "outputResolution": "720p",
      "ratio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Référence des paramètres HappyHorse

Référence complète de tous les paramètres inputs pour le modèle happyhorse.

ParamètreTypeObligatoireDescription
promptstringNonDescription textuelle. Obligatoire pour texte vers vidéo et référence vers vidéo ; facultative pour image vers vidéo. 5000 caractères non-CJK max ou 2500 caractères CJK (l'excédent est automatiquement tronqué en amont). En r2v, utilisez character1/character2/… pour désigner la N-ième image de référence.
urlsstring[]Nont2v : à omettre. i2v : exactement 1 URL (utilisée comme première image). r2v : 1 à 9 URL. Prend en charge les URL HTTPS publiques et les références de ressource (par ex. "asset://asset-20260326-abc123").
videoWorkflowTabstringNonDéfinissez "multi-reference" pour activer le mode référence vers vidéo (doit être combiné avec 1 ou plusieurs urls). À omettre pour texte vers vidéo / image vers vidéo.
durationstringNonDe "3s" à "15s" (par défaut "5s").
outputResolutionstringNon"720p" (par défaut) ou "1080p".
ratiostringNon"16:9" / "9:16" / "1:1" / "4:3" / "3:4". Utilisé pour texte vers vidéo et référence vers vidéo — le format d'image vers vidéo est déduit de la première image.
seedintNonDe 0 à 2147483647. Laissez vide pour une graine aléatoire.

Exigences relatives aux images (i2v / r2v)

  • Côté le plus court ≥ 300px
  • Format d'image entre 1:2.5 et 2.5:1
  • Formats : JPEG, JPG, PNG, BMP, WEBP
  • Taille de fichier max 10MB par image (r2v : pour chacune des 1 à 9 entrées)

Choisir un modèle (image)

Les modèles d'image prennent un prompt (et éventuellement des images de référence) et renvoient une image par tâche. Chaque requête est facturée par image selon le niveau du modèle sélectionné (ou un tarif forfaitaire pour Seedream Lite). Les tâches échouées sont remboursées automatiquement. Il n'y a pas de paramètre de lot — pour générer plusieurs variantes, appelez createTask une fois par image.

ModèleT2II2I (Édition)Multi-RefRésolution max2k / medium
gpt-image-2jusqu'à 104kvoir Tarifs
nano-banana-2jusqu'à 104kvoir Tarifs
nano-banana-projusqu'à 104kvoir Tarifs
seedream-v5.0-litejusqu'à 104ktarif forfaitaire
seedream-v5.0-projusqu'à 102kvoir Tarifs

GPT Image 2

Le modèle GPT Image 2 d'OpenAI pour l'édition texte vers image et image vers image de haute qualité. Un seul workflow gère les deux modes — passez urls pour basculer automatiquement en mode édition. La sortie est livrée via R2 dans le format demandé (PNG / JPEG / WEBP). Nom du modèle : gpt-image-2.

Texte vers image

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "quality": "medium",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Image vers image (édition)

Passez de 1 à 10 images de référence via urls. Le modèle les utilisera comme contexte visuel pour l'édition décrite dans prompt.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "quality": "medium",
      "resolution": "1k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Référence des paramètres GPT Image 2

Référence complète de tous les paramètres inputs pour le modèle gpt-image-2.

ParamètreTypeObligatoireDescription
promptstringOuiDescription textuelle de l'image à générer, ou de l'édition à appliquer lorsque urls est fourni.
urlsstring[]NonURL d'images de référence pour le mode image vers image (édition) (1 à 10 images). À omettre pour texte vers image. Les URL HTTPS publiques sont acceptées.
qualitystringNon"medium" / "high". Par défaut : "medium". Les crédits varient selon le niveau (voir Tarifs).
resolutionstringNon"1k" / "2k" / "4k". Par défaut : "2k". Les crédits varient selon le niveau (voir Tarifs).
aspectRatiostringNon"1:1" / "16:9" / "9:16" / "4:3" / "3:4". Par défaut : "1:1".
outputFormatstringNon"png" / "jpeg" / "webp". Par défaut : "png".

Exigences relatives à l'image d'entrée (mode image vers image)

  • Jusqu'à 10 images de référence par tâche
  • Taille de fichier max 50 Mo par image
  • Côté le plus court ≥ 256px
  • Format d'image entre 1:3 et 3:1
  • Formats : JPEG, JPG, PNG, WEBP

Les crédits par image varient selon la résolution et la qualité — consultez le tableau complet dans la section Tarifs.

Nano Banana 2

Nano Banana 2 est un modèle d'image haute fidélité offrant une couverture de formats plus large que gpt-image-2 — il ajoute des préréglages portrait/paysage (3:2, 2:3, 4:5, 5:4) et le format cinématographique 21:9. Un seul workflow gère les deux modes — passez urls pour basculer automatiquement en mode édition. Nom du modèle : nano-banana-2.

Texte vers image

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Image vers image (édition)

Passez de 1 à 10 images de référence via urls. Le modèle les utilisera comme contexte visuel pour l'édition décrite dans prompt.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Référence des paramètres Nano Banana 2

Référence complète de tous les paramètres inputs pour le modèle nano-banana-2.

ParamètreTypeObligatoireDescription
promptstringOuiDescription textuelle de l'image à générer, ou de l'édition à appliquer lorsque urls est fourni.
urlsstring[]NonURL d'images de référence pour le mode image vers image (édition) (1 à 10 images). À omettre pour texte vers image. Les URL HTTPS publiques sont acceptées.
resolutionstringNon"1k" / "2k" / "4k". Par défaut : "2k". Les crédits varient selon le niveau (voir Tarifs).
aspectRatiostringNon"1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9". Par défaut : "1:1".

Exigences relatives à l'image d'entrée (mode image vers image)

  • Jusqu'à 10 images de référence par tâche
  • Taille de fichier max 50 Mo par image
  • Côté le plus court ≥ 256px
  • Format d'image entre 1:3 et 3:1
  • Formats : JPEG, JPG, PNG, WEBP

Les crédits par image varient selon la résolution — consultez le tableau complet dans la section Tarifs.

Nano Banana Pro

Nano Banana Pro est un modèle d'image haute fidélité offrant une couverture de formats plus large que gpt-image-2 — il ajoute des préréglages portrait/paysage (3:2, 2:3, 4:5, 5:4) et le format cinématographique 21:9. Un seul workflow gère les deux modes — passez urls pour basculer automatiquement en mode édition. Nom du modèle : nano-banana-pro.

Texte vers image

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Image vers image (édition)

Passez de 1 à 10 images de référence via urls. Le modèle les utilisera comme contexte visuel pour l'édition décrite dans prompt.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Référence des paramètres Nano Banana Pro

Référence complète de tous les paramètres inputs pour le modèle nano-banana-pro.

ParamètreTypeObligatoireDescription
promptstringOuiDescription textuelle de l'image à générer, ou de l'édition à appliquer lorsque urls est fourni.
urlsstring[]NonURL d'images de référence pour le mode image vers image (édition) (1 à 10 images). À omettre pour texte vers image. Les URL HTTPS publiques sont acceptées.
resolutionstringNon"1k" / "2k" / "4k". Par défaut : "2k". Les crédits varient selon le niveau (voir Tarifs).
aspectRatiostringNon"1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9". Par défaut : "1:1".

Exigences relatives à l'image d'entrée (mode image vers image)

  • Jusqu'à 10 images de référence par tâche
  • Taille de fichier max 50 Mo par image
  • Côté le plus court ≥ 256px
  • Format d'image entre 1:3 et 3:1
  • Formats : JPEG, JPG, PNG, WEBP

Les crédits par image varient selon la résolution — consultez le tableau complet dans la section Tarifs.

Seedream 5.0 Lite

Génération rapide texte vers image et image vers image en 2K ou 4K avec 15 formats d'image. Nom du modèle : seedream-v5.0-lite.

Texte vers image

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-lite",
    "inputs": {
      "prompt": "A cinematic product photograph, soft studio light",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Image vers image (édition)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-lite",
    "inputs": {
      "prompt": "Restyle the references as a premium fashion campaign",
      "urls": ["https://example.com/reference.png"],
      "resolution": "4k",
      "aspectRatio": "3:4"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Paramètres Seedream 5.0 Lite

ParamètreTypeObligatoireDescription
promptstringOuiDescription de l'image ou instruction d'édition.
urlsstring[]Non1 à 10 URL d'images de référence HTTPS publiques. À omettre pour texte vers image.
resolutionstringNon"2k" ou "4k". Par défaut : "2k".
aspectRatiostringNon"1:1", "1:2", "2:1", "1:3", "3:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "9:21", ou "21:9".

Seedream 5.0 Pro

Génération et édition haute fidélité en 1K ou 2K. Nom du modèle : seedream-v5.0-pro.

Texte vers image

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-pro",
    "inputs": {
      "prompt": "Editorial portrait with dramatic rim lighting",
      "resolution": "2k",
      "aspectRatio": "3:4"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Image vers image (édition)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-pro",
    "inputs": {
      "prompt": "Turn the reference into a cinematic poster",
      "urls": ["https://example.com/reference.png"],
      "resolution": "2k",
      "aspectRatio": "1:2"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Paramètres Seedream 5.0 Pro

ParamètreTypeObligatoireDescription
promptstringOuiDescription de l'image ou instruction d'édition.
urlsstring[]Non1 à 10 URL d'images de référence HTTPS publiques. À omettre pour texte vers image.
resolutionstringNon"1k" ou "2k". Par défaut : "1k". Le 4k n'est pas pris en charge.
aspectRatiostringNon"1:1", "1:2", "2:1", "1:3", "3:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "9:21", ou "21:9".

Upscaler vidéo

Créer une tâche

POST /api/v1/upscale/create

# source.url accepts ANY https video URL — your own CDN, OR a file you first
# uploaded to us via /api/v1/assets/upload (pass the r2Url it returns). No need
# to declare which: we detect it. External URLs are validated; our own are trusted.
curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source": { "type": "url", "url": "https://your-cdn.com/video.mp4" },
    "targetResolution": "2k",
    "callBackUrl": "https://your-server.com/webhook"
  }' \
  https://seegen.ai/api/v1/upscale/create
ParamètreTypeObligatoireDescription
source.typestringOuiUtilisez "url" pour toute source. ("uploadId" est un alias hérité conservé pour la compatibilité ascendante.)
source.urlstringNonAvec type="url". N'importe quelle URL vidéo https — votre propre CDN, ou le r2Url renvoyé par /api/v1/assets/upload. Pour les URL externes, http ainsi que les IP privées/internes sont refusées (protection SSRF) ; les URL sur notre propre hébergeur de ressources ignorent cette vérification.
source.r2UrlstringNonHérité — uniquement avec type="uploadId" (compatibilité ascendante). Les nouvelles intégrations doivent utiliser type="url".
targetResolutionstringOui"720p", "1080p", "2k" ou "4k". Doit être supérieure à la résolution source.
callBackUrlstringNonURL de webhook appelée une fois à l'état final (terminé ou échoué).

Réponse de création

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "orderId": "ord_2026...",
  "status": "validating"
}

Interroger le statut

GET /api/v1/upscale/query?taskId=...

Le statut progresse validatingprocessingcompleted / failed.

curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/upscale/query?taskId=n770mo4sh6rpi690ff3gwymx"

Réponse en cas de succès

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "status": "completed",
  "targetResolution": "2k",
  "creditsConsumed": 900,
  "result": {
    "url": "https://static.seegen.ai/standalone-upscale/results/...mp4",
    "probedDurationSeconds": 30,
    "probedSourceResolution": "1280x720"
  },
  "error": null,
  "createdAt": "2026-04-29T01:23:45.000Z",
  "finishedAt": "2026-04-29T01:35:01.000Z"
}

Réponse en cas d'échec

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "status": "failed",
  "creditsConsumed": null,
  "result": null,
  "error": {
    "code": "SOURCE_RESOLUTION_TOO_HIGH",
    "message": "Source 3840x2160 is not below target 4k"
  }
}

Limites

  • Source : URL https ou votre URL R2 précédemment importée
  • Durée jusqu'à 600 s (les clips de moins de 5 s sont facturés comme 5 s)
  • Taille de fichier ≤ 200 Mo
  • Format : MP4 / MOV / WebM
  • La résolution source doit être inférieure à la cible

Tarifs

  • 720P : 17 crédits/s (5s = 85, 30s = 510)
  • 1080P : 25 crédits/s (5s = 125, 30s = 750)
  • 2K : 38 crédits/s (5s = 190, 30s = 1140)
  • 4K : 50 crédits/s (5s = 250, 30s = 1500)
  • Minimum 5 secondes ; les échecs remboursent automatiquement les crédits

Codes d'erreur

Erreurs courantes sur lesquelles vous pouvez agir. Les autres échecs renvoient un champ message explicite — lisez-le avant de supposer que le code en fait partie.

CodeSignification
INVALID_URLL'URL est mal formée ou n'est pas en https
URL_NOT_REACHABLEImpossible de récupérer l'URL — vérifiez qu'elle est publique et accessible
UNSUPPORTED_MEDIA_TYPELe fichier n'est pas une vidéo, ou n'est pas au format MP4 / MOV / WebM
FILE_TOO_LARGELa source dépasse 200 Mo
DURATION_EXCEEDS_LIMITLa source dépasse 600 s
SOURCE_RESOLUTION_TOO_HIGHLa source est déjà à la résolution cible ou au-delà — choisissez une cible plus élevée
INSUFFICIENT_CREDITSCrédits insuffisants — rechargez et réessayez

Callback webhook

Au lieu d'interroger l'API, vous pouvez fournir une callBackUrl pour recevoir automatiquement les résultats lorsqu'une tâche se termine ou échoue.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "callBackUrl": "https://your-server.com/webhook/callback",
    "inputs": {
      "prompt": "A cat playing piano",
      "duration": "5s"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Payload du callback

Une fois la tâche terminée, nous envoyons une requête POST à votre URL avec le même format que la réponse de queryTask :

// POST to your callBackUrl
{
  "taskId": "task_abc123",
  "model": "sd2",
  "status": "COMPLETED",
  "creditsUsed": 200,
  "output": [
    {
      "url": "https://static.seegen.ai/videos/result.mp4",
      "width": 1280,
      "height": 720
    }
  ],
  "error": null,
  "createTime": 1711234567890,
  "completeTime": 1711234612345
}

Politique de réessai : si votre endpoint renvoie un statut autre que 2xx, nous réessayons jusqu'à 3 fois avec des délais croissants (1s, 5s, 30s).

Format de réponse

Réponse de createTask

// 200 OK
{ "taskId": "task_abc123" }

Réponse de queryTask

{
  "taskId": "task_abc123",
  "model": "sd2",
  "status": "COMPLETED",     // "PENDING" | "PROCESSING" | "COMPLETED" | "FAILED"
  "creditsUsed": 200,
  "output": [                // null when status is not "COMPLETED"
    {
      "url": "https://static.seegen.ai/videos/result.mp4",
      "width": 1280,
      "height": 720
    }
  ],
  "error": null,             // error message when status is "FAILED"
  "createTime": 1711234567890,
  "completeTime": 1711234612345
}

Réponse de credits

{
  "credits": 5000,
  "availableCredits": 4800
}

Gestion des erreurs

Code de statutSignificationAction
400Paramètres invalidesVérifiez le message d'erreur et corrigez votre requête
401Clé API invalide ou manquanteVérifiez le format de votre en-tête Authorization
402Crédits insuffisantsAchetez des crédits supplémentaires sur seegen.ai
403Accès refuséVous ne pouvez interroger que vos propres tâches
404Tâche introuvableVérifiez que le taskId est correct
429Limite de concurrence (3 tâches)Attendez que les tâches existantes se terminent
500Erreur interne du serveurRéessayez après quelques secondes

Validation avant soumission (400 avec un code)

Les requêtes Seedance sont vérifiées par rapport au contrat en amont avant que le moindre crédit ne soit facturé. Lorsqu'une vérification échoue, createTask renvoie { "message": "...", "code": "..." } avec un statut HTTP 400, et aucune tâche n'est créée. Le message indique précisément quelle limite a été dépassée et comment la corriger.

ParamètreTypeObligatoireDescription
EMPTY_CONTENTcodeNonAucun prompt et aucune image/vidéo/audio de référence.
AUDIO_ONLY_NOT_SUPPORTEDcodeNonL'audio est l'unique référence sur sd2 / sd2-fast / sd2-mini. Ajoutez une image ou une vidéo, ou utilisez sd2.5 (audio seul pris en charge).
DURATION_OUT_OF_RANGEcodeNonduration n'est pas un entier compris dans la plage du modèle (famille sd2 "4s"–"15s", sd2.5 "4s"–"30s").
EDIT_SOURCE_VIDEO_REQUIRED / EXTEND_SOURCE_VIDEO_REQUIREDcodeNonmode "edit" / "extend" a été demandé sans vidéo dans videoUrls.
EDIT_SOURCE_DURATION_INVALIDcodeNonÉdition vidéo sd2.5 : une vidéo de la requête dure moins de 4s ou plus de 30s (ARK applique 4–30s à chaque vidéo d'une tâche d'édition).
TOO_MANY_REFERENCEScodeNonPlus d'images/vidéos/clips audio de référence que ce que le modèle accepte (famille sd2 9 / 3 / 3, sd2.5 30 / 10 / 10 ; extend ≤3 vidéos).
REFERENCE_VIDEO_DURATION_INVALIDcodeNonUne vidéo de référence dépasse le maximum par clip (famille sd2 15s, sd2.5 30s) ou la durée totale de référence dépasse le plafond (15s / 30s).
ASSET_NOT_FOUND / EXTERNAL_URL / READ_TIMEOUT / READ_FAILEDcodeNonUne entrée de videoUrls n'a pas pu être résolue vers l'une de vos ressources importées, ou sa durée n'a pas pu être lue.

Exemples complets

Workflow complet : importez une ressource, attendez la vérification, créez une tâche avec la ressource approuvée, puis interrogez le résultat.

const API_KEY = process.env.API_KEY;
const BASE = "https://seegen.ai/api/v1";
const headers = {
  "Authorization": `Bearer ${API_KEY}`,
  "Content-Type": "application/json",
};

// 1. Upload asset and wait for review
// (To upload a LOCAL file instead of a URL, POST multipart/form-data with a "file"
//  field — no Content-Type header, no "type" — see the Upload Asset section above.)
async function uploadAndWaitForAsset(url, type = "IMAGE") {
  const res = await fetch(`${BASE}/assets/upload`, {
    method: "POST",
    headers,
    body: JSON.stringify({ url, type }),
  });
  if (!res.ok) throw new Error(`Upload failed: ${(await res.json()).message}`);
  const asset = await res.json();
  console.log(`Asset uploaded: ${asset.assetId}, status: ${asset.status}`);

  // Poll until review completes
  while (true) {
    const statusRes = await fetch(
      `${BASE}/assets/status?assetId=${asset.assetId}`,
      { headers }
    );
    const status = await statusRes.json();
    if (status.status === "ACTIVE") {
      console.log(`Asset approved: asset://${status.volcAssetId}`);
      return status.volcAssetId;
    }
    if (status.status === "FAILED") {
      throw new Error(`Asset review failed: ${status.failReason}`);
    }
    await new Promise((r) => setTimeout(r, 3000));
  }
}

// 2. Create a task
async function createTask(inputs, callBackUrl) {
  const res = await fetch(`${BASE}/jobs/createTask`, {
    method: "POST",
    headers,
    body: JSON.stringify({
      model: "sd2",
      inputs,
      ...(callBackUrl && { callBackUrl }),
    }),
  });
  if (!res.ok) throw new Error(`[${res.status}] ${(await res.json()).message}`);
  return res.json();
}

// 3. Poll until done
async function waitForResult(taskId, timeoutMs = 300000) {
  const start = Date.now();
  while (Date.now() - start < timeoutMs) {
    const res = await fetch(
      `${BASE}/jobs/queryTask?taskId=${taskId}`,
      { headers }
    );
    const result = await res.json();
    if (result.status === "COMPLETED") return result;
    if (result.status === "FAILED") throw new Error(result.error);
    await new Promise((r) => setTimeout(r, 5000));
  }
  throw new Error("Timeout waiting for task");
}

// Full workflow: upload → review → generate → result
async function main() {
  // Upload image and wait for review
  const volcAssetId = await uploadAndWaitForAsset(
    "https://example.com/photo.jpg", "IMAGE"
  );

  // Create task with approved asset
  const { taskId } = await createTask({
    urls: [`asset://${volcAssetId}`],
    prompt: "The person slowly looks up and smiles",
    duration: "5s",
  });
  console.log(`Task: ${taskId}`);

  // Wait for video
  const result = await waitForResult(taskId);
  console.log(`Video: ${result.output[0].url}`);
}

main().catch(console.error);

Besoin d'aide ? Rejoignez notre Discord ou contactez-nous