API

Wan 3.0 Prime API

Vidéo

L’API Wan 3.0 Prime génère des vidéos de 2 à 30 secondes en 480p / 720p / 1080p, à partir de texte, d’images de début/fin ou de références multimodales. Le mode référence accepte jusqu’à 10 images, 5 vidéos et 5 fichiers audio. Chaque image est limitée à 30 Mo.

Autorisations

Bearerstringheaderrequis

Clé API pour autoriser les requêtes

Corps

application/json
modelstringrequis
wan-3-0-prime
input.promptstringrequis

Décrivez le sujet, l’action, la scène, la lumière, les mouvements de caméra et le déroulement. Les espaces en début et fin sont supprimés.

input.frames_imagesstring[]facultatif

Liste d’une ou deux URL d’images HTTPS publiques : image initiale puis image finale facultative. Ce mode ne peut pas être combiné avec reference_images, reference_videos ou reference_audios.

Nombre maximal d’URL : 2.

Taille maximale par image : 30 Mo.

Exemple: ["https://example.com/first-frame.png","https://example.com/last-frame.png"]

input.reference_imagesstring[]facultatif

Liste d’URL d’images de référence HTTPS publiques. Compatible avec reference_videos et reference_audios, mais pas avec frames_images. Envoyez des chaînes URL, pas des fichiers ni du base64.

Nombre maximal d’URL : 10.

Taille maximale par image : 30 Mo.

Exemple: ["https://example.com/your-image.png"]

input.reference_videosstring[]facultatif

Liste d’URL de vidéos de référence HTTPS publiques. Incompatible avec frames_images. Les vidéos modifient la consommation de crédits ; consultez la ligne et la formule correspondantes.

Nombre maximal d’URL : 5.

Exemple: ["https://example.com/your-video.mp4"]

input.reference_audiosstring[]facultatif

Liste d’URL de références audio HTTPS publiques. Compatible avec les autres listes reference_*, mais pas avec frames_images.

Nombre maximal d’URL : 5.

Exemple: ["https://example.com/your-audio.mp3"]

input.reference_video_durationnumberfacultatif

Durée totale en secondes des vidéos de référence. Obligatoire avec reference_videos. La facturation arrondit ce total à la seconde supérieure, avec un maximum de 15 secondes supplémentaires. Omettez sans vidéo de référence.

input.durationintegerfacultatif

Durée de la vidéo en secondes entières, de 2 à 30. Valeur par défaut : 5. La consommation de crédits dépend de cette durée.

Par défaut: 5

2–30
input.resolutionstringfacultatif

Résolution vidéo. Utilisez une valeur en minuscules parmi celles ci-dessous. La résolution modifie le tarif en crédits.

Par défaut: 720p

480p720p1080p
input.aspect_ratiostringfacultatif

Rapport largeur/hauteur. Valeur par défaut : 16:9. Les images fournies peuvent guider la composition finale.

Par défaut: 16:9

16:99:161:13:44:3
input.soundbooleanfacultatif

Générer ou non de l’audio avec la vidéo. Valeur par défaut : false. Envoyez un booléen JSON, pas une chaîne.

Par défaut: false

Exemples de requête

Choisissez un mode : aucun média pour le texte vers vidéo ; frames_images pour les images de début et de fin ; ou combinez reference_images, reference_videos et reference_audios pour les références. frames_images ne peut pas être combiné avec une liste de médias reference_*. Les ressources sont des listes d’URL HTTPS publiques, pas des fichiers ni du base64. Remplacez les URL example.com. Enregistrez data.task_id et interrogez POST /api/v1/check jusqu’à completed ou failed.

POST /api/v1/create
curl -X POST https://nanobanana.io/api/v1/create \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "wan-3-0-prime",
  "input": {
    "prompt": "Une voiture ancienne rouge roule sur une route côtière au coucher du soleil. La caméra suit doucement le côté du véhicule tandis que la lumière chaude se reflète sur la mer.",
    "duration": 5,
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "sound": false
  }
}'
POST /api/v1/create · HTTP 201
{
  "data": {
    "task_id": "task_example",
    "model": "wan-3-0-prime",
    "status": "processing",
    "credits": 900
  }
}

Interrogez cet endpoint avec l’ID de tâche renvoyé jusqu’à ce que la tâche soit terminée ou échoue. Nous recommandons un polling toutes les 5 secondes pour vérifier le dernier état de la tâche.

POST /api/v1/check
{
  "task_id": "task_example"
}

Réponse

Statut de la tâche renvoyé par POST /api/v1/check. Les identifiants, URLs et horodatages ci-dessous sont des exemples.

idstringrequis

Identifiant de la tâche dans data.id, identique au task_id envoyé dans la requête de consultation.

statusstringrequis
completed indique que la génération a réussi et que data.data contient les résultats. Pour les autres statuts, data.data vaut null.
failed_reasonstringfacultatif

Renvoyé uniquement lorsque status vaut failed, pour expliquer l’échec. Ce champ est absent pour completed et processing.

Terminée · completed

Les URLs de téléchargement figurent dans data.data.results.

POST /api/v1/check · HTTP 200
{
  "data": {
    "id": "task_example",
    "created_at": 1791244800,
    "model": "wan-3-0-prime",
    "status": "completed",
    "data": {
      "results": [
        "https://example.com/generated.mp4"
      ],
      "processing_time": 120
    }
  }
}

Autres statuts

Pour processing ou failed, data.data vaut null. Cet exemple montre failed : seul failed inclut failed_reason. Continuez les consultations pour processing ; arrêtez-les pour failed.

POST /api/v1/check · HTTP 200
{
  "data": {
    "id": "task_example",
    "created_at": 1791244800,
    "model": "wan-3-0-prime",
    "status": "failed",
    "data": null,
    "failed_reason": "Generation failed."
  }
}

Consommation de crédits

Crédits par seconde facturable selon la résolution et le mode de référence vidéo.

Crédits par seconde facturable selon la résolution et le mode de référence vidéo.
Génération480P720P1080P
Sans vidéo de référence90180360
Avec vidéo de référence90180360

Chaque requête génère une vidéo. Sans durée ou résolution, les valeurs par défaut ci-dessus s’appliquent. Les références vidéo peuvent consommer davantage de crédits ; utilisez la ligne et la formule adaptées.

Sans vidéo de référence : secondes générées × tarif. Avec vidéo : (secondes générées + min(15, ceil(reference_video_duration))) × tarif. Le tarif par seconde reste identique ; la durée de référence ajoute des secondes facturables.

Le champ credits renvoyé par POST /api/v1/create indique les crédits débités pour la tâche.