API
Wan 3.0 API
ВидеоAPI Wan 3.0 создаёт видео длительностью 2–30 секунд в 480p / 720p / 1080p из текста, первого/последнего кадров или мультимодальных референсов. Режим референсов принимает до 10 изображений, 5 видео и 5 аудиофайлов. Каждое изображение должно быть не больше 30 МБ.
Тело
application/jsonmodelstringобязательноwan-3-0input.promptstringобязательноОпишите объект, действие, сцену, освещение, движение камеры и последовательность событий. Пробелы в начале и конце удаляются.
input.frames_imagesstring[]необязательноСписок из одного или двух общедоступных HTTPS-адресов изображений: первый кадр и необязательный последний. Этот режим нельзя сочетать с reference_images, reference_videos или reference_audios.
Максимум URL: 2.
Максимальный размер изображения: 30 МБ.
Пример: ["https://example.com/first-frame.png","https://example.com/last-frame.png"]
input.reference_imagesstring[]необязательноСписок общедоступных HTTPS-адресов референсных изображений. Можно сочетать с reference_videos и reference_audios, но не с frames_images. Передавайте строки URL, не файлы или base64.
Максимум URL: 10.
Максимальный размер изображения: 30 МБ.
Пример: ["https://example.com/your-image.png"]
input.reference_videosstring[]необязательноСписок общедоступных HTTPS-адресов референсных видео. Не сочетайте с frames_images. Видео меняют расход кредитов; см. соответствующую строку и формулу ниже.
Максимум URL: 5.
Пример: ["https://example.com/your-video.mp4"]
input.reference_audiosstring[]необязательноСписок общедоступных HTTPS-адресов референсного аудио. Можно сочетать с другими списками reference_*, но не с frames_images.
Максимум URL: 5.
Пример: ["https://example.com/your-audio.mp3"]
input.reference_video_durationnumberнеобязательноСуммарная длительность всех референсных видео в секундах. Обязательна при reference_videos. При расчёте округляется вверх до целых секунд, максимум 15 дополнительных секунд. Без референсных видео поле нужно пропустить.
input.durationintegerнеобязательноДлительность видео в целых секундах от 2 до 30. По умолчанию 5. Расход кредитов зависит от длительности.
По умолчанию: 5
input.resolutionstringнеобязательноРазрешение видео. Используйте одно из значений в нижнем регистре ниже. Разрешение определяет ставку в кредитах.
По умолчанию: 720p
input.aspect_ratiostringнеобязательноСоотношение ширины и высоты. По умолчанию 16:9. Входные кадры могут влиять на итоговую композицию.
По умолчанию: 16:9
input.soundbooleanнеобязательноНужно ли генерировать звук вместе с видео. По умолчанию false. Передавайте логическое значение JSON, не строку.
По умолчанию: false
Примеры запросов
Выберите один режим: без медиа для генерации из текста; frames_images для первого и последнего кадров; либо сочетайте reference_images, reference_videos и reference_audios для референсов. Нельзя сочетать frames_images со списками медиа reference_*. Все ресурсы передаются списками общедоступных HTTPS-адресов, не файлами или base64. Замените адреса example.com. Сохраните data.task_id и опрашивайте POST /api/v1/check до completed или 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": "Красный ретроавтомобиль едет по прибрежной дороге на закате. Камера плавно следует сбоку, а тёплый свет отражается в океане.",
"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
}
}Опрашивайте этот endpoint с возвращённым ID задачи до её завершения или ошибки. Рекомендуем выполнять polling каждые 5 секунд для получения актуального статуса.
POST /api/v1/check{
"task_id": "task_example"
}Ответ
Статус задачи, возвращаемый POST /api/v1/check. ID, URL и временные метки ниже приведены для примера.
idstringобязательноИдентификатор задачи в data.id совпадает с task_id в запросе проверки.
statusstringобязательноfailed_reasonstringнеобязательноВозвращается только при status failed и объясняет причину ошибки. Для completed и processing это поле отсутствует.
Завершено · completed
Ссылки для скачивания находятся в 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
}
}
}Другие статусы
При processing или failed значение data.data равно null. Этот пример показывает failed: только failed содержит failed_reason. При processing продолжайте проверку, при 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."
}
}Расход кредитов
Кредиты за оплачиваемую секунду по разрешению и режиму референсного видео.
| Генерация | 480P | 720P | 1080P |
|---|---|---|---|
| Без референсных видео | 60 | 120 | 240 |
| С референсными видео | 60 | 120 | 240 |
Один запрос создаёт одно видео. Без длительности или разрешения используются значения по умолчанию выше. Референсные видео могут увеличить расход; используйте нужную строку и формулу.
Без референсного видео: созданные секунды × ставка. С видео: (созданные секунды + min(15, ceil(reference_video_duration))) × ставка. Ставка за секунду не меняется; длительность референса добавляет оплачиваемые секунды.
Поле credits в ответе POST /api/v1/create показывает число кредитов, списанных за задачу.
