API
Wan 3.0 API
VídeoLa API de Wan 3.0 genera vídeos de 2–30 segundos en 480p / 720p / 1080p a partir de texto, fotogramas o referencias multimodales. Admite hasta 10 imágenes, 5 vídeos y 5 archivos de audio en modo de referencia. Cada imagen debe ocupar como máximo 30 MB.
Cuerpo
application/jsonmodelstringobligatoriowan-3-0input.promptstringobligatorioDescribe el sujeto, la acción, la escena, la iluminación, el movimiento de cámara y los tiempos. Se eliminan los espacios al inicio y al final.
input.frames_imagesstring[]opcionalLista de una o dos URL HTTPS públicas de imágenes: fotograma inicial y final opcional. Este modo no se puede combinar con reference_images, reference_videos ni reference_audios.
Máximo de URL: 2.
Tamaño máximo por imagen: 30 MB.
Ejemplo: ["https://example.com/first-frame.png","https://example.com/last-frame.png"]
input.reference_imagesstring[]opcionalLista de URL HTTPS públicas de imágenes de referencia. Se puede combinar con reference_videos y reference_audios, pero no con frames_images. Envía cadenas URL, no archivos ni base64.
Máximo de URL: 10.
Tamaño máximo por imagen: 30 MB.
Ejemplo: ["https://example.com/your-image.png"]
input.reference_videosstring[]opcionalLista de URL HTTPS públicas de vídeos de referencia. No se puede combinar con frames_images. Los vídeos cambian el consumo de créditos; consulta la fila y la fórmula correspondientes.
Máximo de URL: 5.
Ejemplo: ["https://example.com/your-video.mp4"]
input.reference_audiosstring[]opcionalLista de URL HTTPS públicas de audio de referencia. Se puede combinar con otras listas reference_*, pero no con frames_images.
Máximo de URL: 5.
Ejemplo: ["https://example.com/your-audio.mp3"]
input.reference_video_durationnumberopcionalDuración total en segundos de los vídeos de referencia. Obligatoria con reference_videos. Para facturar, el total se redondea hacia arriba y se limita a 15 segundos adicionales. Omite este campo si no hay vídeos de referencia.
input.durationintegeropcionalDuración del vídeo en segundos enteros, de 2 a 30. El valor predeterminado es 5. El consumo de créditos depende de la duración.
Predeterminado: 5
input.resolutionstringopcionalResolución del vídeo. Usa uno de los valores en minúsculas indicados abajo. La resolución modifica la tarifa de créditos.
Predeterminado: 720p
input.aspect_ratiostringopcionalRelación entre ancho y alto. El valor predeterminado es 16:9. Los fotogramas pueden guiar la composición final.
Predeterminado: 16:9
input.soundbooleanopcionalIndica si se genera audio junto al vídeo. Por defecto, false. Envía un booleano JSON, no una cadena.
Predeterminado: false
Ejemplos de solicitud
Elige un modo: sin medios para texto a vídeo; frames_images para fotogramas inicial y final; o combina reference_images, reference_videos y reference_audios para generación con referencias. frames_images no se puede combinar con ninguna lista de medios reference_*. Todos los recursos son listas de URL HTTPS públicas, no archivos ni base64. Sustituye las URL example.com. Guarda data.task_id y consulta POST /api/v1/check hasta completed o failed.
POST /api/v1/createcurl -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",
"input": {
"prompt": "Un coche clásico rojo recorre una carretera costera al atardecer. La cámara sigue suavemente el lateral del coche mientras la luz cálida se refleja en el océano.",
"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",
"status": "processing",
"credits": 600
}
}Consulta este endpoint con el ID de tarea devuelto hasta que la tarea se complete o falle. Recomendamos consultar cada 5 segundos para comprobar el estado más reciente.
POST /api/v1/check{
"task_id": "task_example"
}Respuesta
Estado de la tarea devuelto por POST /api/v1/check. Los ID, URLs y marcas de tiempo siguientes son ilustrativos.
idstringobligatorioIdentificador de la tarea en data.id, igual al task_id enviado en la consulta.
statusstringobligatoriofailed_reasonstringopcionalSolo se devuelve cuando status es failed, para explicar el fallo. Se omite en completed y processing.
Completada · completed
Las URLs de descarga están en data.data.results.
POST /api/v1/check · HTTP 200{
"data": {
"id": "task_example",
"created_at": 1791244800,
"model": "wan-3-0",
"status": "completed",
"data": {
"results": [
"https://example.com/generated.mp4"
],
"processing_time": 120
}
}
}Otros estados
Con processing o failed, data.data es null. Este ejemplo muestra failed: solo failed incluye failed_reason. Continúa consultando con processing; detente con failed.
POST /api/v1/check · HTTP 200{
"data": {
"id": "task_example",
"created_at": 1791244800,
"model": "wan-3-0",
"status": "failed",
"data": null,
"failed_reason": "Generation failed."
}
}Consumo de créditos
Créditos por segundo facturable según la resolución y el uso de vídeos de referencia.
| Generación | 480P | 720P | 1080P |
|---|---|---|---|
| Sin vídeos de referencia | 60 | 120 | 240 |
| Con vídeos de referencia | 60 | 120 | 240 |
Cada solicitud genera un vídeo. Si omites la duración o la resolución, se aplican los valores predeterminados. Los vídeos de referencia pueden aumentar el consumo; usa la fila y la fórmula correspondientes.
Sin vídeo de referencia: segundos generados × tarifa. Con vídeo: (segundos generados + min(15, ceil(reference_video_duration))) × tarifa. La tarifa por segundo no cambia; se añaden segundos facturables por el vídeo de referencia.
El campo credits de la respuesta de POST /api/v1/create muestra los créditos cobrados por la tarea.
