Назад к документации

API генерации видео

Создавайте задачи Veo 3.1 «текст в видео» и «изображение в видео» с вашим API-ключом, а результат получайте через тот же эндпоинт /api/status, что и для изображений.

Nano AI API Базовый URL: https://nanobnana.com

Аутентификация

Передавайте API-ключ как Bearer-токен в каждом запросе. Для создания задачи и проверки её статуса используйте один и тот же ключ. Ключи создаются на странице API Keys в личном кабинете.

http
Authorization: Bearer YOUR_API_KEY

Модели и кредиты

В поле model укажите одно из значений ниже. Любое другое значение отклоняется с HTTP 400, и кредиты не списываются.

значение modelМодельТекст в видео (кредиты)Изображение в видео (кредиты)
veo3_fastVeo 3.1 Fast (по умолчанию)2535
veo3Veo 3.1 Quality180180

veo3-fast принимается как синоним veo3_fast. Если model не указан, используется veo3_fast. Цена «изображение в видео» применяется, когда в image_urls есть хотя бы один URL.

Создание задачи на видео

Проверяет запрос, списывает кредиты и возвращает task_id. Видео генерируется асинхронно: опрашивайте /api/status или укажите callback_url, чтобы получить результат.

Тело запросаJSON
prompt:string

Текстовое описание видео, которое нужно сгенерировать.

model:необязательныйstring

veo3_fast (синоним veo3-fast) или veo3. Любое другое значение возвращает HTTP 400. По умолчанию veo3_fast.

image_urls:необязательныйstring[]

Публичные URL изображений для режима «изображение в видео». С 1 изображением видео строится вокруг него. С 2 изображениями они становятся первым и последним кадром. Также принимается синоним imageUrls (camelCase). Если переданы оба поля, используется image_urls.

aspect_ratio:необязательныйstring

16:9, 9:16 или Auto. Auto обрезает видео под загруженное изображение. По умолчанию 16:9.

translation:необязательныйboolean

Если true, промпт перед генерацией переводится на английский. По умолчанию true.

watermark:необязательныйstring

Текст водяного знака на видео.

callback_url:необязательныйstring

Публичный URL, на который после завершения задачи придёт POST-запрос с итоговым результатом.

Неподдерживаемые поля

duration, resolution и image_url (в единственном числе) не входят в этот API и игнорируются. Длительность видео определяет модель. Изображения передавайте массивом image_urls.

bash
curl -X POST "https://nanobnana.com/api/video/generate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "The camera slowly pushes in as the city lights turn on at dusk",
    "model": "veo3_fast",
    "image_urls": ["https://example.com/first-frame.jpg"],
    "aspect_ratio": "16:9"
  }'
{
  "code": 200,
  "message": "success",
  "data": {
    "task_id": "veo24223f74e4f445ec9c4403b532cc328fbksv"
  }
}

Проверка статуса задачи

ID видеозадач начинаются с veo и заканчиваются на bksv. /api/status распознаёт их автоматически и возвращает URL видео, когда задача завершена.

Параметры запроса
task_id:string

task_id, который вернул POST /api/video/generate.

model:необязательныйstring

Укажите veo3, чтобы принудительно искать видеозадачу, если task_id не соответствует формату veo…bksv.

bash
curl "https://nanobnana.com/api/status?task_id=veo24223f74e4f445ec9c4403b532cc328fbksv" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "code": 200,
  "message": "success",
  "data": {
    "task_id": "veo24223f74e4f445ec9c4403b532cc328fbksv",
    "request": {
      "prompt": "The camera slowly pushes in as the city lights turn on at dusk",
      "model": "veo3_fast",
      "image_urls": [
        "https://example.com/first-frame.jpg"
      ],
      "aspect_ratio": "16:9"
    },
    "response": null,
    "status": "IN_PROGRESS",
    "status_code": 3,
    "status_text": "IN_PROGRESS",
    "consumed_credits": 35,
    "created_at": "2026-10-04 17:05:12",
    "model": "veo3"
  },
  "model": "veo3"
}

Значения статуса

  • IN_PROGRESS · status_code: 3 — видео ещё генерируется. Продолжайте опрос.
  • COMPLETED · status_code: 1 — видео готово. В response находится URL видео.
  • FAILED · status_code: 2 — генерация не удалась. error_message объясняет причину, а кредиты возвращаются автоматически.

Оплата и возвраты

  • Кредиты списываются при создании задачи, до начала генерации.
  • Если запрос на создание не вернул HTTP 200, задача не создана, и списанные кредиты сразу возвращаются. В ответе указано, сколько кредитов возвращено.
  • Если созданная задача затем завершается со статусом FAILED, её кредиты возвращаются автоматически, а consumed_credits в ответе статуса становится 0.

Пример опроса

Генерация видео обычно занимает несколько минут. Опрашивайте каждые 10 секунд, пока status_code равен 3, и остановитесь при 1 или 2.

javascript
async function waitForVideo(taskId) {
  while (true) {
    const res = await fetch(`https://nanobnana.com/api/status?task_id=${taskId}`, {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    const payload = await res.json();
    if (!res.ok) throw new Error(payload.message);

    const task = payload.data;
    if (task.status_code === 1) return task.response[0];
    if (task.status_code === 2) throw new Error(task.error_message || 'Video generation failed');

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

Колбэк

Если указан callback_url, при завершении или ошибке задачи мы отправим на него POST-запрос с таким JSON. URL должен быть доступен из интернета.

{
  "code": 200,
  "message": "success",
  "data": {
    "request": {
      "prompt": "The camera slowly pushes in as the city lights turn on at dusk",
      "model": "veo3_fast",
      "image_urls": [
        "https://example.com/first-frame.jpg"
      ],
      "aspect_ratio": "16:9"
    },
    "response": [
      "https://example.com/generated-video.mp4"
    ],
    "status": "COMPLETED",
    "created_at": "2026-10-04 17:05:12"
  }
}

Частые ошибки

{
  "code": 400,
  "message": "prompt is required",
  "data": null
}