Перейти к навигации

Gemini Omni 1.1 Flash

Создавайте видео со звуком длительностью 3–10 секунд в 720p, 1080p или 4K по тексту, первому кадру, первому и последнему кадрам или по 10 референсным изображениям и 3 референсным видео.

  • Асинхронная обработка: запрос создания возвращает ID задачи. Видео будет доступно после её успешного завершения.
  • Четыре варианта входных данных под одним ID модели: только текст, один первый кадр, первый и последний кадры в images или до 10 reference_images и до 3 необязательных reference_videos. Кадры и референсы сочетать нельзя.
  • Ролики длительностью от 3 до 10 секунд в формате 16:9 или 9:16; duration — целое число секунд.
  • Каждое видео создаётся со звуковой дорожкой. Выключить звук нельзя, референсное аудио не принимается.
  • Цена зависит от разрешения и запрошенного числа секунд. Задача, завершившаяся ошибкой, не оплачивается.
POST/v1/videos/tasksПопробовать

Открывает модель в API Explorer. Введите свой API-ключ BeatAPI, чтобы создать задачу. Это настоящий запрос: его стоимость спишется с вашего баланса.

Адрес API и авторизация

POST https://api.beatapi.io/v1/videos/tasks

Authorization string Обязательно

Передавайте API-ключ BeatAPI как Bearer <BEATAPI_API_KEY>. Создать ключ можно в панели управления. Храните ключи на сервере, а не в коде браузерного или мобильного приложения.

Передавайте тело запроса в JSON с заголовком Content-Type: application/json. Idempotency-Key необязателен. Для каждого логического запроса используйте уникальное значение длиной не более 255 символов и повторно используйте его только для отправки точно такого же тела. В течение 24 часов повтор с тем же ключом и телом возвращает первый ответ с заголовком Idempotent-Replayed: true. Тот же ключ с другим телом возвращает 409 idempotency_conflict. Ответы, отличные от 2xx, не сохраняются, поэтому повтор после 400 или 402 выполняется заново.

Как выполняется запрос

1

Создайте задачу

Отправьте перечисленные ниже параметры методом POST на указанный адрес. Ответ 201 означает, что задача принята, а её стоимость зарезервирована на балансе. Обработка идёт в фоновом режиме. Сохраните data.id.

2

Дождитесь завершения

Вызывайте GET /v1/tasks/{task_id}, выдерживая между вызовами data.poll_after_seconds (5 с для изображений, 8 с для видео), пока status не станет succeeded или failed. Можно также настроить вебхук для событий task.succeeded и task.failed. Сохраняйте опрос как резервный способ проверки: задача, остановленная по тайм-ауту обработки, не отправляет событие.

3

Сохраните результат

При succeeded скачайте файлы по всем ссылкам data.output.media[].url и сохраните нужные результаты у себя. BeatAPI не гарантирует срок доступности этих ссылок. При failed прочитайте data.error_code и data.error_message: зарезервированная сумма возвращена на баланс, а data.retryable показывает, может ли повтор того же запроса завершиться успешно.

Режимы ввода

РежимОбязательные данныеПримечания
Видео по текстуmodel, promptНе передавайте images, reference_images и reference_videos.
Первый кадрmodel, prompt, images (1 ссылка)Видео начинается с этого изображения.
Первый и последний кадрыmodel, prompt, images (2 ссылки)Первая ссылка открывает видео, вторая завершает его, именно в этом порядке.
Референсные изображения и видеоmodel, prompt, reference_images (от 1 до 10 ссылок)При желании добавьте до 3 reference_videos; для референсного видео нужно хотя бы одно референсное изображение. Нельзя сочетать с images.

Параметры запроса

model string Обязательно

Модель, которую нужно вызвать.

Значение: gemini-omni-1.1-flash

Если значение неверно

  • Поле отсутствует: "model" is required
  • На этот адрес API отправлена модель изображений: "model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint

prompt string Обязательно

Что происходит в видео: действие, камера, обстановка, а также нужная речь или звуки.

Длина: 1–5000 символов

  • Длина измеряется в символах. Иероглиф CJK считается одним символом.
  • С референсами укажите в промпте, что взять из каждого, например «женщина с первого референсного изображения» или «движение камеры из референсного видео».

Если значение неверно

  • Поле отсутствует: "prompt" is required
  • Пустое значение или превышена допустимая длина: "prompt" has an unsupported length
  • Значение не является строкой: "prompt" must be a string

images string[] Необязательно

Кадры: одна ссылка задаёт первый кадр, две ссылки — первый и последний кадры в этом порядке. Необязательно: не передавайте поле для генерации по тексту или при отправке референсов.

Число элементов: 1–2
Каждый элемент — общедоступная ссылка https://. Если файл находится на вашем устройстве, сначала загрузите его через POST /v1/files, затем передайте полученный data.url.

  • Каждая ссылка должна быть общедоступным URL https://.
  • Изображения, на которые видео должно опираться, но не начинаться или заканчиваться ими, передавайте в reference_images.

Если значение неверно

  • Больше 2 ссылок: "images" accepts at most 2 items
  • Пустой массив: "images" requires at least 1 item
  • Значение не является массивом: "images" must be an array
  • Ссылка не начинается с https://: "images[0]" must be a public HTTPS URL
  • Отправлено вместе с reference_images или reference_videos: Cannot combine "images" with reference inputs in one task

reference_images string[] Необязательно

От одного до десяти изображений людей, товаров, стилей или мест, которые должно использовать видео.

Число элементов: 1–10
Каждый элемент — общедоступная ссылка https://. Если файл находится на вашем устройстве, сначала загрузите его через POST /v1/files, затем передайте полученный data.url.

  • Каждая ссылка должна быть общедоступным URL https://.
  • Обязательно, если вы передаёте reference_videos.

Если значение неверно

  • Больше 10 ссылок: "reference_images" accepts at most 10 items
  • Пустой массив: "reference_images" requires at least 1 item
  • Значение не является массивом: "reference_images" must be an array
  • Передано вместе с images: Cannot combine "images" with reference inputs in one task

reference_videos string[] Необязательно

От одного до трёх видеороликов, движение, работу камеры или объект которых должно повторить новое видео.

Число элементов: 1–3
Каждый элемент — общедоступная ссылка https://. Если файл находится на вашем устройстве, сначала загрузите его через POST /v1/files, затем передайте полученный data.url.

  • Каждая ссылка должна быть общедоступным URL https:// на файл MP4, MOV или WebM.
  • Только вместе как минимум с одной ссылкой в reference_images.
  • Референсные видео не меняют цену: оплачиваются секунды нового видео.

Если значение неверно

  • Отправлено без reference_images: Gemini Omni 1.1 Flash "reference_videos" need at least one image in "reference_images"
  • Больше 3 ссылок: "reference_videos" accepts at most 3 items
  • Передано вместе с images: Cannot combine "images" with reference inputs in one task

duration integer НеобязательноПо умолчанию: 5

Длительность видео в секундах, целое число.

По умолчанию: 5
Диапазон: 3–10

  • Если параметр не указан, используется и оплачивается 5.
  • Секунды оплачиваются (см. раздел об оплате), поэтому это основной параметр управления стоимостью.

Если значение неверно

  • Вне диапазона 3–10, не целое число или передано строкой: "duration" is outside its supported range

aspect_ratio string НеобязательноПо умолчанию: 16:9

Формат видео: горизонтальный 16:9 или вертикальный 9:16.

Допустимые значения: 16:9, 9:16
По умолчанию: 16:9

  • Если параметр не указан, используется 16:9.
  • Применяется и к кадрам: выберите формат первого кадра.

Если значение неверно

  • Значение отсутствует в списке допустимых: "aspect_ratio" must be one of: [16:9 9:16]

resolution string НеобязательноПо умолчанию: 720p

Выходное разрешение. Каждая следующая ступень дороже за секунду.

Допустимые значения: 720p, 1080p, 4k
По умолчанию: 720p

  • Если не указать, используется 720p.
  • 4k и 4K — один и тот же класс.

Если значение неверно

  • Недопустимое значение, например 480p или 720P: "resolution" must be one of: [720p 1080p 4k 4K]

Перед созданием задачи шлюз также проверяет следующие сочетания параметров:

  • images нельзя сочетать с полями референсных материалов.
  • images — это кадры: одно изображение задаёт первый кадр, два — первый и последний кадры в этом порядке.
  • Для reference_videos нужно хотя бы одно изображение в reference_images.
  • Переключателя звука нет; референсное аудио не поддерживается.

Ограничения входных материалов

До создания задачи шлюз проверяет каждый входной материал. Если ограничение нарушено, возвращается 400 bad_request с указанием материала. Средства не списываются.

МатериалОграничения, проверяемые до создания задачи
Изображениякаждый файл не более 20 MB
Видеокаждый файл не более 64 MB
  • Перед созданием задачи шлюз проверяет размер каждого файла по ссылке. Файл больше лимита отклоняется с ошибкой 400, в которой он назван, например images[0] is 25.0 MB; this model takes images up to 20 MB., и ничего не списывается.
  • Ссылка, хост которой отвечает ошибкой 4xx или которая ведёт на пустой файл, отклоняется так же: <field>[<n>] could not be downloaded: <reason>.
  • Если после создания задачи модель не может использовать ссылку, задача завершается ошибкой, обычно bad_request, и её стоимость возвращается полностью.
  • Файл находится на вашем устройстве? Загрузите его через POST /v1/files и передайте полученный data.url.

Параметры, которые модель не принимает

Если отправить одно из этих полей, запрос будет отклонён до списания средств, а не проигнорирован:

  • reference_audios, generate_audio, seed, quality, sound, task_type, output_format, watermark и другие поля других видеомоделей → field "generate_audio" is not supported by model gemini-omni-1.1-flash (с полем, которое вы отправили). Звуковая дорожка создаётся всегда, переключать нечего.
  • Любое поле, которое видеоэндпоинт вообще не знает → unknown field: <name>.

Примеры запросов

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-omni-1.1-flash",
"prompt": "A dramatic product reveal of a glass water bottle, slow orbiting camera, soft studio reflections",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p"
}'

Видео по тексту

Горизонтальный ролик на 5 секунд в 720p, созданный только по тексту.

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-omni-1.1-flash",
"prompt": "A dramatic product reveal of a glass water bottle, slow orbiting camera, soft studio reflections",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p"
}'

Первый кадр

Ролик 5 секунд в 720p, начинающийся с одного изображения.

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-omni-1.1-flash",
"prompt": "The singer turns toward the camera and smiles, hair moving in the breeze, warm spotlights",
"images": [
"https://cdn.beatapi.io/samples/neon-singer.png"
],
"duration": 5,
"resolution": "720p"
}'

Первый и последний кадры

Ролик 8 секунд в 1080p с переходом от первого изображения ко второму.

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-omni-1.1-flash",
"prompt": "The camera pulls away from the singer and glides across the stage to the bottle on a table",
"images": [
"https://cdn.beatapi.io/samples/neon-singer.png",
"https://cdn.beatapi.io/samples/smart-bottle.png"
],
"duration": 8,
"aspect_ratio": "16:9",
"resolution": "1080p"
}'

Референсные изображения и одно референсное видео

Два референсных изображения и одно референсное видео: вертикальный ролик 8 секунд в 720p.

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-omni-1.1-flash",
"prompt": "The singer from the first reference image lifts the bottle from the second toward the camera, following the camera move of the reference video",
"reference_images": [
"https://cdn.beatapi.io/samples/neon-singer.png",
"https://cdn.beatapi.io/samples/smart-bottle.png"
],
"reference_videos": [
"https://your-cdn.example.com/clips/source.mp4"
],
"duration": 8,
"aspect_ratio": "9:16",
"resolution": "720p"
}'

Ответы

Создание задачи (201)

Объект задачи. Поле output равно null, пока задача не завершится успешно. Поля с пометкой «во время выполнения» исчезают после завершения задачи.

{
"data": {
"id": "task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ",
"object": "task",
"task_kind": "video",
"capability_id": "gemini-omni-1.1-flash",
"capability_version": 1,
"media_type": "video",
"model": "gemini-omni-1.1-flash",
"status": "queued",
"stage": "queued",
"created_at": 1791993600,
"updated_at": 1791993600,
"completed_at": null,
"poll_after_seconds": 8,
"output": null,
"usage": {
"credits_reserved": 0.3,
"credits_settled": 0,
"credits_refunded": 0,
"credits_charged": 0.3,
"billable_duration_seconds": 5
},
"request_id": "req_5f0c2a9e4b7d4e31",
"error_code": null,
"error_message": null
}
}
ПолеТипОписание
data.idstringID задачи: префикс task_ и 32 буквы или цифры. Используется для опроса и сопоставления событий вебхука.
data.objectstringВсегда task.
data.task_kindstringimage или video.
data.capability_idstringID модели из вашего запроса.
data.capability_versionintegerВерсия контракта модели, сейчас 1.
data.media_typestringimage или video.
data.modelstringID модели из запроса, совпадает с capability_id.
data.statusstringqueued, processing, succeeded или failed. Только последние два состояния являются конечными.
data.stagestringПовторяет status; сохранено для совместимости со старыми клиентами.
data.created_atintegerВремя создания задачи, в секундах Unix.
data.updated_atintegerВремя последнего изменения, в секундах Unix.
data.completed_atinteger | nullВремя завершения, в секундах Unix. Во время выполнения равно null.
data.poll_after_secondsintegerВо время выполнения: сколько секунд ждать перед следующей проверкой (5 для изображений, 8 для видео).
data.typical_secondsobjectВо время выполнения, при достаточном числе недавних задач: время завершения p50 и p90 в секундах за последний период window, рассчитанное по samples задачам.
data.outputobject | nullРезультат. Равно null, пока status не станет succeeded. Поля результата описаны ниже.
data.usage.credits_reservednumberСумма USD, зарезервированная на балансе при создании задачи.
data.usage.credits_chargednumberСтоимость задачи в USD; 0, если задача завершилась ошибкой.
data.usage.credits_settlednumberОкончательно списанная сумма USD. Устанавливается после успешного завершения, иначе 0.
data.usage.credits_refundednumberСумма USD, возвращённая на баланс. После регистрации возврата по неудачной задаче равна зарезервированной сумме.
data.usage.billable_duration_secondsintegerТолько для видео: длительность в секундах, по которой рассчитана цена. Отсутствует, если модель не сообщает длительность.
data.request_idstringID запроса. Укажите его при обращении в поддержку.
data.error_codestring | nullКод ошибки; null, если задача не завершилась ошибкой.
data.error_messagestring | nullОписание проблемы и способа её исправить; null, если задача не завершилась ошибкой.

Успешно завершённая задача

GET /v1/tasks/{task_id} возвращает HTTP 200 со status: "succeeded" и результатом в data.output.

{
"data": {
"id": "task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ",
"object": "task",
"task_kind": "video",
"capability_id": "gemini-omni-1.1-flash",
"capability_version": 1,
"media_type": "video",
"model": "gemini-omni-1.1-flash",
"status": "succeeded",
"stage": "succeeded",
"created_at": 1791993600,
"updated_at": 1791993690,
"completed_at": 1791993690,
"output": {
"media": [
{
"type": "video",
"url": "https://media.beatapi.io/outputs/task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ/0.mp4",
"mime_type": "video/mp4"
}
],
"r2_url": "https://media.beatapi.io/outputs/task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ/0.mp4"
},
"usage": {
"credits_reserved": 0.3,
"credits_settled": 0.3,
"credits_refunded": 0,
"credits_charged": 0.3,
"billable_duration_seconds": 5
},
"request_id": "req_5f0c2a9e4b7d4e31",
"error_code": null,
"error_message": null
}
}

Поля результата

ПолеТипОписание
output.mediaobject[]Сгенерированные файлы; для этой модели — одно видео со звуковой дорожкой.
output.media[].typestringВсегда video.
output.media[].urlstringHTTPS-ссылка на сохранённое видео. Скачайте его и храните у себя: срок доступности ссылки не гарантируется.
output.media[].mime_typestringvideo/mp4.
output.r2_urlstringПовтор ссылки на видео для старых клиентов. Вместо этого используйте media.

Задача, завершившаяся ошибкой

Если задача завершилась ошибкой, GET /v1/tasks/{task_id} всё равно возвращает HTTP 200: сведения об ошибке находятся в теле ответа. Зарезервированная сумма возвращается полностью, поэтому списания нет.

{
"data": {
"id": "task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ",
"object": "task",
"task_kind": "video",
"capability_id": "gemini-omni-1.1-flash",
"capability_version": 1,
"media_type": "video",
"model": "gemini-omni-1.1-flash",
"status": "failed",
"stage": "failed",
"created_at": 1791993600,
"updated_at": 1791993690,
"completed_at": 1791993690,
"output": null,
"usage": {
"credits_reserved": 0.3,
"credits_settled": 0,
"credits_refunded": 0.3,
"credits_charged": 0,
"billable_duration_seconds": 5
},
"retryable": true,
"request_id": "req_5f0c2a9e4b7d4e31",
"error_code": "processing_failed",
"error_message": "The task failed during processing on our side. Retry; a failed task is refunded."
}
}
ПолеТипОписание
data.error_codestringbad_request или content_policy_violation означают, что запрос нужно изменить. При processing_unavailable, processing_timeout, processing_failed или result_transfer_failed можно повторить позже. См. ошибки.
data.error_messagestringСообщение с причиной ошибки и рекомендацией по исправлению.
data.retryablebooleanПрисутствует только у неудачной задачи. Значение true означает, что повтор того же запроса может завершиться успешно.
data.usageobjectПосле регистрации возврата (обычно сразу при ошибке): credits_charged и credits_settled равны 0, а credits_refunded равно credits_reserved.

Полный пример

Создайте задачу, дождитесь её завершения с интервалом опроса, указанным сервером, и выведите ссылки на результаты. Задайте BEATAPI_API_KEY в переменной окружения и установите requests.

import os
import time
import uuid
import requests
API = "https://api.beatapi.io"
HEADERS = {"Authorization": f"Bearer {os.environ['BEATAPI_API_KEY']}"}
def create_task(body: dict) -> dict:
# One Idempotency-Key per logical request: a retry with the same key cannot create a second task.
headers = {**HEADERS, "Idempotency-Key": str(uuid.uuid4())}
for attempt in range(3):
response = requests.post(f"{API}/v1/videos/tasks", headers=headers, json=body, timeout=60)
if response.status_code in (429, 503) and attempt < 2:
time.sleep(int(response.headers.get("Retry-After", 10)))
continue
break
try:
payload = response.json()
except ValueError: # an edge error page is not JSON
response.raise_for_status()
raise
if not response.ok:
error = payload["error"]
raise RuntimeError(f"{response.status_code} {error['code']}: {error['message']} (request_id={error.get('request_id')})")
return payload["data"]
def wait_for_task(task_id: str, timeout_seconds: int = 1800) -> dict:
deadline = time.monotonic() + timeout_seconds
while time.monotonic() < deadline:
response = requests.get(f"{API}/v1/tasks/{task_id}", headers=HEADERS, timeout=30)
if response.status_code == 429 or response.status_code >= 500:
time.sleep(int(response.headers.get("Retry-After", 10)))
continue
response.raise_for_status()
task = response.json()["data"]
if task["status"] in ("succeeded", "failed"):
return task
time.sleep(task.get("poll_after_seconds", 5))
raise TimeoutError(f"task {task_id} is still running; keep polling later")
task = create_task({
"model": "gemini-omni-1.1-flash",
"prompt": "A dramatic product reveal of a glass water bottle, slow orbiting camera, soft studio reflections",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p"
})
print("created", task["id"])
task = wait_for_task(task["id"])
if task["status"] == "failed":
raise SystemExit(f"{task['error_code']}: {task['error_message']}")
for item in task["output"]["media"]:
print(item["url"])

Оплата

  • Цена зависит от разрешения и запрошенного числа секунд (duration, 5, если не указано). 1080p дороже за секунду, чем 720p, а 4K дороже, чем 1080p. Способ ввода, aspect_ratio и количество кадров или референсов на цену не влияют.
  • В таблице ниже указана цена 8-секундных роликов. Другая длительность оплачивается посекундно по тому же тарифу выбранного разрешения.
  • Цена резервируется при создании задачи. Поле data.usage.billable_duration_seconds показывает длительность, по которой она рассчитана.
  • Если задача завершилась ошибкой, в том числе из-за модерации после отправки, средства возвращаются полностью.

Текущие базовые цены совпадают с указанными на странице цен. Если для аккаунта согласована скидка, стоимость будет ниже. Фактически списанная сумма всегда указана в data.usage задачи.

ВариантБазовая цена (USD)
8 с · 720p$0.48
8 с · 1080p$0.72
8 с · 4K$1.44

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

Ошибка или признак проблемыПричинаЧто делать
400 Cannot combine "images" with reference inputs in one taskКадры в images и референсы в reference_images или reference_videos в одном запросе.Передайте кадры в images или референсы, но не то и другое.
400 Gemini Omni 1.1 Flash "reference_videos" need at least one image in "reference_images"Референсные видео без единого референсного изображения.Добавьте хотя бы одну ссылку в reference_images.
400 "images" accepts at most 2 itemsБольше двух кадров.Передайте первый кадр или первый и последний кадры; остальные изображения поместите в reference_images.
400 "reference_images" accepts at most 10 itemsБольше 10 референсных изображений.Передайте не более 10.
400 "duration" is outside its supported rangeМеньше 3, больше 10, дробное число или строка.Передайте целое число от 3 до 10, например 8.
400 "resolution" must be one of: [720p 1080p 4k 4K]480p или верхний регистр, например 720P.Передайте 720p, 1080p или 4k.
400 "aspect_ratio" must be one of: [16:9 9:16]1:1, 21:9 или другое соотношение, которого нет у этой модели.Передайте 16:9 или 9:16.
400 field "reference_audios" is not supported by model gemini-omni-1.1-flashРеференсное аудио, generate_audio и поля других видеомоделей отклоняются.Удалите поле. Звуковая дорожка создаётся для каждого видео.
Задача failed с bad_requestСсылка, которую модель не смогла получить или использовать (закрытая или устаревшая ссылка, файл не того типа).Используйте общедоступную HTTPS-ссылку на настоящее изображение или видео либо загрузите файл через POST /v1/files. Стоимость неудачной задачи возвращена.
Задача failed с content_policy_violationПромпт, входной материал или результат отклонены модерацией.Измените промпт или входной материал. Повтор без изменений снова завершится ошибкой; средства не списаны.
402 insufficient_creditsБаланс меньше суммы, резервируемой для запроса; дороже всего длинные ролики в 4K.Пополните баланс, уменьшите duration либо выберите меньшее resolution.

Краткий справочник HTTP-ошибок

Ошибки до создания задачи возвращаются с HTTP-статусом, отличным от 2xx, без списания средств. Обрабатывайте error.code или error.retryable; причина указана в message. Полный список и правила повторов приведены в разделе ошибок.

{
"error": {
"code": "bad_request",
"message": "\"prompt\" is required",
"retryable": false,
"request_id": "req_5f0c2a9e4b7d4e31"
}
}
HTTP-статусerror.codeЧто делать
400bad_request, content_policy_violationИсправьте запрос: поле указано в сообщении. Не повторяйте запрос без изменений.
401missing_api_key, invalid_api_key (старые клиенты могут показывать unauthorized)Передайте действующий ключ в Authorization: Bearer <key>.
402insufficient_creditsПополните баланс или увеличьте лимит ключа, затем повторите запрос.
403forbiddenМодель недоступна для ключа или аккаунта; например, бонус можно использовать только с некоторыми моделями. Не повторяйте запрос без изменений.
404not_foundДля GET /v1/tasks/{task_id}: у аккаунта этого ключа нет такой задачи. Проверьте ID.
409idempotency_conflictИспользуйте новый Idempotency-Key или дождитесь завершения первого запроса с этим ключом.
429rate_limit_exceededПодождите число секунд из Retry-After (оно также указано в error.retry_after_seconds), затем повторите запрос.
500internal_errorПовторите запрос с увеличивающейся задержкой. Если ошибка сохраняется, обратитесь в поддержку и укажите request_id.
503processing_unavailable, processing_timeout, processing_failed, result_transfer_failedСредства не списаны. Повторите запрос с экспоненциальным увеличением задержки.

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

AuthorizationBearer

Передавайте API-ключ в виде Authorization: Bearer <BEATAPI_API_KEY>.

Заголовки

Idempotency-KeystringОпциональный<=255 characters

Передавайте тело запроса в JSON с заголовком Content-Type: application/json. Idempotency-Key необязателен. Для каждого логического запроса используйте уникальное значение длиной не более 255 символов и повторно используйте его только для отправки точно такого же тела. В течение 24 часов повтор с тем же ключом и телом возвращает первый ответ с заголовком Idempotent-Replayed: true. Тот же ключ с другим телом возвращает 409 idempotency_conflict. Ответы, отличные от 2xx, не сохраняются, поэтому повтор после 400 или 402 выполняется заново.

Запрос

This endpoint expects an object.
modelenumОбязательный

Модель, которую нужно вызвать.

Значение: gemini-omni-1.1-flash

Если значение неверно

  • Поле отсутствует: "model" is required
  • На этот адрес API отправлена модель изображений: "model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint
Допустимые значения:
promptstringОбязательный1-5000 characters

Что происходит в видео: действие, камера, обстановка, а также нужная речь или звуки.

Длина: 1–5000 символов

  • Длина измеряется в символах. Иероглиф CJK считается одним символом.
  • С референсами укажите в промпте, что взять из каждого, например «женщина с первого референсного изображения» или «движение камеры из референсного видео».

Если значение неверно

  • Поле отсутствует: "prompt" is required
  • Пустое значение или превышена допустимая длина: "prompt" has an unsupported length
  • Значение не является строкой: "prompt" must be a string
aspect_ratioenumОпциональныйПо умолчанию 16:9

Формат видео: горизонтальный 16:9 или вертикальный 9:16.

Допустимые значения: 16:9, 9:16

По умолчанию: 16:9

  • Если параметр не указан, используется 16:9.
  • Применяется и к кадрам: выберите формат первого кадра.

Если значение неверно

  • Значение отсутствует в списке допустимых: "aspect_ratio" must be one of: [16:9 9:16]
Допустимые значения:
durationintegerОпциональный3-10По умолчанию 5

Длительность видео в секундах, целое число.

По умолчанию: 5

Диапазон: 3–10

  • Если параметр не указан, используется и оплачивается 5.
  • Секунды оплачиваются (см. раздел об оплате), поэтому это основной параметр управления стоимостью.

Если значение неверно

  • Вне диапазона 3–10, не целое число или передано строкой: "duration" is outside its supported range
imageslist of stringsОпциональный

Кадры: одна ссылка задаёт первый кадр, две ссылки — первый и последний кадры в этом порядке. Необязательно: не передавайте поле для генерации по тексту или при отправке референсов.

Число элементов: 1–2

Каждый элемент — общедоступная ссылка https://. Если файл находится на вашем устройстве, сначала загрузите его через POST /v1/files, затем передайте полученный data.url.

  • Каждая ссылка должна быть общедоступным URL https://.
  • Изображения, на которые видео должно опираться, но не начинаться или заканчиваться ими, передавайте в reference_images.

Если значение неверно

  • Больше 2 ссылок: "images" accepts at most 2 items
  • Пустой массив: "images" requires at least 1 item
  • Значение не является массивом: "images" must be an array
  • Ссылка не начинается с https://: "images[0]" must be a public HTTPS URL
  • Отправлено вместе с reference_images или reference_videos: Cannot combine "images" with reference inputs in one task
reference_imageslist of stringsОпциональный

От одного до десяти изображений людей, товаров, стилей или мест, которые должно использовать видео.

Число элементов: 1–10

Каждый элемент — общедоступная ссылка https://. Если файл находится на вашем устройстве, сначала загрузите его через POST /v1/files, затем передайте полученный data.url.

  • Каждая ссылка должна быть общедоступным URL https://.
  • Обязательно, если вы передаёте reference_videos.

Если значение неверно

  • Больше 10 ссылок: "reference_images" accepts at most 10 items
  • Пустой массив: "reference_images" requires at least 1 item
  • Значение не является массивом: "reference_images" must be an array
  • Передано вместе с images: Cannot combine "images" with reference inputs in one task
reference_videoslist of stringsОпциональный

От одного до трёх видеороликов, движение, работу камеры или объект которых должно повторить новое видео.

Число элементов: 1–3

Каждый элемент — общедоступная ссылка https://. Если файл находится на вашем устройстве, сначала загрузите его через POST /v1/files, затем передайте полученный data.url.

  • Каждая ссылка должна быть общедоступным URL https:// на файл MP4, MOV или WebM.
  • Только вместе как минимум с одной ссылкой в reference_images.
  • Референсные видео не меняют цену: оплачиваются секунды нового видео.

Если значение неверно

  • Отправлено без reference_images: Gemini Omni 1.1 Flash "reference_videos" need at least one image in "reference_images"
  • Больше 3 ссылок: "reference_videos" accepts at most 3 items
  • Передано вместе с images: Cannot combine "images" with reference inputs in one task
resolutionenumОпциональныйПо умолчанию 720p

Выходное разрешение. Каждая следующая ступень дороже за секунду.

Допустимые значения: 720p, 1080p, 4k

По умолчанию: 720p

  • Если не указать, используется 720p.
  • 4k и 4K — один и тот же класс.

Если значение неверно

  • Недопустимое значение, например 480p или 720P: "resolution" must be one of: [720p 1080p 4k 4K]
Допустимые значения:

Ответ

Объект задачи. Поле output равно null, пока задача не завершится успешно. Поля с пометкой «во время выполнения» исчезают после завершения задачи.

Ошибки

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
409
Conflict Error
429
Too Many Requests Error
500
Internal Server Error
503
Service Unavailable Error