Gemini Omni Flash API

Одной моделью делает ролик по описанию, из присланного изображения и по изображениям-образцам. Разрешение 360p, 720p, 1080p, 4K, соотношение сторон 16:9, 9:16, на вход до 6 изображений, описание до 20 000 символов. Модель Google, выпущена 5 ноября 2026 года.

Принимает готовый ролик и переделывает его по текстовому указанию. Разрешение 360p, 720p, 1080p, 4K, на вход до 6 изображений, описание до 20 000 символов. Модель Google, выпущена 5 ноября 2026 года.

Продлевает готовый ролик, продолжая его тем же движением. Разрешение 360p, 720p, 1080p, 4K, на вход до 6 изображений, описание до 20 000 символов. Модель Google, выпущена 5 ноября 2026 года.

Gemini Omni 1.2 Flash API работает в России без VPN: один API ключ GEN202, оплата рублями с российской карты.

Цена: за секунду, от 6.9 кр. (3,45 ₽ · $0.0314) до 61.7 кр. (30,85 ₽ · $0.2805).

Цена: за секунду, от 6.9 кр. (3,45 ₽ · $0.0314) до 61.7 кр. (30,85 ₽ · $0.2805).

Цена: за секунду, от 6.9 кр. (3,45 ₽ · $0.0314) до 61.7 кр. (30,85 ₽ · $0.2805).

кр. — кредиты, покупаются за рубли.

Model

Статус

работает

Статус

работает

Статус

работает

Песочница

Input

Чтобы создать видео — войдите и получите 50 кредитов на тесты и любое использование сервиса.

{
  "model": "gemini-omni/flash-1-2",
  "input": {
    "prompt": "Ginger cat in a white spacesuit floats in zero gravity above Earth. It slowly turns its head toward the camera, front paws drifting; sunlight glints across the helmet visor, the blue planet reflected in the glass. The camera eases backwards, revealing a solar panel at the edge of frame. Cinematic, soft rim light, shallow depth of field.",
    "duration": 3,
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "image_urls": [
      "https://gen202.com/assets/sample-nano-banana-pro.jpg"
    ]
  }
}
Output
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "cm8r4t0vk0001s60p2xq7f9ab",
    "model": "gemini-omni/flash-1-2",
    "state": "success",
    "resultJson": "{\"resultUrls\":[\"https://file.example/result.mp4\"]}",
    "failCode": "",
    "failMsg": "",
    "creditsConsumed": 61.5
  }
}
Input

Чтобы создать видео — войдите и получите 50 кредитов на тесты и любое использование сервиса.

{
  "model": "gemini-omni/flash-1-2-edit",
  "input": {
    "prompt": "Заменить фон на вечернюю городскую улицу, свет тёплый",
    "video_urls": [
      "https://example.com/input.mp4"
    ],
    "resolution": "720p"
  }
}
Output

Нажмите «Запустить» — готовое видео появится здесь

{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "cm8r4t0vk0001s60p2xq7f9ab",
    "model": "gemini-omni/flash-1-2-edit",
    "state": "success",
    "resultJson": "{\"resultUrls\":[\"https://file.example/result.mp4\"]}",
    "failCode": "",
    "failMsg": "",
    "creditsConsumed": 6.9
  }
}
Input

Чтобы создать видео — войдите и получите 50 кредитов на тесты и любое использование сервиса.

{
  "model": "gemini-omni/flash-1-2-extend",
  "input": {
    "prompt": "Сцена продолжается: камера медленно отъезжает назад",
    "video_urls": [
      "https://example.com/input.mp4"
    ],
    "duration": 3,
    "resolution": "720p"
  }
}
Output

Нажмите «Запустить» — готовое видео появится здесь

{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "cm8r4t0vk0001s60p2xq7f9ab",
    "model": "gemini-omni/flash-1-2-extend",
    "state": "success",
    "resultJson": "{\"resultUrls\":[\"https://file.example/result.mp4\"]}",
    "failCode": "",
    "failMsg": "",
    "creditsConsumed": 61.5
  }
}

Цена Gemini Omni 1.2 Flash

Цена за секунду. Списывается фактический расход, о котором сообщил поставщик.

Вариант Наша цена
360p 6.9 кр. $0.03143,45 ₽
720p 20.5 кр. $0.093210,25 ₽
1080p 30.9 кр. $0.140515,45 ₽
4K 61.7 кр. $0.280530,85 ₽

кр. — кредиты, покупаются за рубли.

Цена за секунду. Списывается фактический расход, о котором сообщил поставщик.

Вариант Наша цена
360p 6.9 кр. $0.03143,45 ₽
720p 20.5 кр. $0.093210,25 ₽
1080p 30.9 кр. $0.140515,45 ₽
4K 61.7 кр. $0.280530,85 ₽

кр. — кредиты, покупаются за рубли.

Цена за секунду. Списывается фактический расход, о котором сообщил поставщик.

Вариант Наша цена
360p 6.9 кр. $0.03143,45 ₽
720p 20.5 кр. $0.093210,25 ₽
1080p 30.9 кр. $0.140515,45 ₽
4K 61.7 кр. $0.280530,85 ₽

кр. — кредиты, покупаются за рубли.

Вызов через API

POST https://api.gen202.com/api/v1/jobs/createTask
GET https://api.gen202.com/api/v1/jobs/recordInfo?taskId=…

Ролик делается минуты, поэтому файл не приходит в ответ на запрос. Первый вызов ставит задачу и сразу отвечает её номером, второй по этому номеру отдаёт состояние задачи, а когда она готова — ссылку на результат. Ключ передаётся в обоих запросах заголовком Authorization: Bearer sk-… и выпускается в кабинете. На один ключ шлюз пропускает 30 постановок задачи и 300 запросов состояния в минуту.

Поля запроса

Значения проверяются до обращения к поставщику: поле не из списка модели или значение вне перечисления возвращают 422 и кредитов не тратят.

ПолеТипОбяз.Допустимые значения
model текст обязательное gemini-omni/flash-1-2
input объект обязательное Параметры генерации — поля из таблицы ниже

Поля input

ПолеТипОбяз.Допустимые значения
prompt текст обязательное от 1 до 20 000 символов
duration целое число обязательное целое от 3 до 15
image_urls список ссылок опц. до 6 ссылок на изображение
first_frame_url ссылка опц. одна ссылка на изображение
last_frame_url ссылка опц. одна ссылка на изображение
aspect_ratio значение из списка опц. 16:9 · 9:16
resolution значение из списка опц. 360p · 720p · 1080p · 4k · без него шлюз подставит 720p

Ссылка на изображение принимается только полным адресом на http или https: не длиннее 2048 символов, на общедоступном сайте, без имени и пароля перед адресом и без порта, кроме 80 и 443. Относительный путь, а также адреса внутри сети — localhost, 127.0.0.1, 10.0.0.5, 192.168.1.2 — и имена без точки шлюз отклоняет ответом 422, к поставщику не обращаясь.

Ответ

Оба запроса отвечают одним конвертом: {"code":…,"msg":…,"data":…}, где code повторяет HTTP-статус, а полезное лежит в data. Тот же конверт приходит и при отказе — разбирать две формы ответа не нужно.

/api/v1/jobs/createTask

ПолеТипЧто в нём
data.taskId строка Номер задачи. Больше в ответе ничего нет и быть не может — работа только началась.

/api/v1/jobs/recordInfo

ПолеТипЧто в нём
data.taskId строка Номер задачи — тот же, что вернул createTask.
data.model строка Имя модели в том виде, в каком его прислал клиент.
data.state строка Состояние задачи: waiting, queuing, generating, success или fail.
data.param строка Параметры, с которыми задача создана, — строкой JSON внутри JSON.
data.resultJson строка Результат строкой JSON внутри JSON: {"resultUrls":["https://…"]} — разбирается вторым разбором. До завершения задачи — пустая строка.
data.failCode строка Код неудачи из таблицы ниже. У остальных задач — пустая строка.
data.failMsg строка Причина неудачи словами модели. Иначе пустая строка.
data.failComment строка Наш комментарий к словам модели, по-русски: что произошло. Есть не у всякой неудачи; иначе пустая строка.
data.costTime число Сколько задача заняла, миллисекунды. Пока не завершилась — null.
data.completeTime число Когда завершилась, миллисекунды эпохи Unix. Пока не завершилась — null.
data.createTime число Когда создана, миллисекунды эпохи Unix.
data.updateTime число Когда состояние менялось в последний раз, миллисекунды эпохи Unix.
data.creditsConsumed число Сколько кредитов списано. Ноль, пока задача не завершилась, и ноль у неудачной.

Состояния задачи

Состояние лежит в поле state ответа /api/v1/jobs/recordInfo. Первые три означают, что работа идёт: запрос надо повторить примерно через 3 секунды — чаще спрашивать нечего, столько же ждёт между опросами сам шлюз. Два последних состояния окончательные: после них задача не меняется.

stateЧто происходит
waiting Задача принята и стоит в очереди шлюза; поставщику она ещё не отправлена.
queuing Поставщик задачу принял и поставил в свою очередь.
generating Генерация идёт.
success Готово: ссылки на результат лежат в resultJson, в creditsConsumed — сколько списано.
fail Задача не удалась: причина в failCode и failMsg, удержанные кредиты возвращены целиком.

Задача идёт, пока модель не пришлёт результат или отказ. Причина неудачи приходит двумя полями: failCode из таблицы ниже и failMsg словами.

failCodeЧто произошло
501 Поставщик вернул отказ: генерация не удалась.
408 Модель не приняла задачу за 60 минут или не отвечала сутки.
404 Поставщик не знает такой задачи.
429 Поставщик отбил создание задачи по своему лимиту.
500 Поломка на нашей стороне; подробности остаются в журнале шлюза.

Слова модели в failMsg бывают непонятны, поэтому к части неудач шлюз добавляет поле failComment — наш комментарий по-русски о том, что произошло. У остальных неудач это поле пустое.

failMsg, примерfailComment
Image fetch failed. Модель не смогла скачать файл из нашего хранилища. Вероятно, это разовый сбой, повторите запрос. Если ошибка повторится — напишите в поддержку: hi@gen202.com
File type not supported По ссылке открывается страница сайта, а не файл. Загрузите сам файл или дайте прямую ссылку на него.
image #2: width and height must be between 300px and 6000px (got 262x377) (invalid_asset_material) Одна из картинок слишком маленькая. Seedance принимает картинки от 300 до 6000 пикселей по каждой стороне.
Seedance identified your task as video editing based on your prompt. Seedance понял запрос как редактирование присланного видео. В песочнице и чате выберите режим «Редактирование видео», в API поставьте пропорции adaptive и длительность −1.
Seedance identified your task as video extension based on your prompt. Seedance решил, что присланное видео нужно продлить. Для этого поставьте пропорции adaptive, а если продлевать не нужно — уберите эту просьбу из промта.
generate task timeout. Модель не успела создать результат и сама остановила задачу.
Internal Error Модель остановилась и не назвала причину. Возможно, она перегружена или временно недоступна. Или запрос отклонён из-за чувствительной темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The request failed because the input image may contain sensitive information. Модель отклонила загруженную картинку из-за чувствительной темы. Такие темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The generated content was filtered by the safety system. Модель отклонила запрос из-за чувствительной темы. Такие темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The model provider rejected or dropped the task creation request. Модель остановилась и не назвала причину. Возможно, она перегружена или временно недоступна. Или запрос отклонён из-за чувствительной темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
No result from the provider within the task deadline. Модель либо не приняла задачу за 15 минут (у видео — за 60), либо не ответила за сутки.

Ссылка на готовый файл живёт 14 дней — столько его хранит поставщик. Файл, который нужен дольше, скачивайте к себе сразу после того, как задача пришла в состояние success.

Отказы

Тело отказа одно на все случаи: {"code":…,"msg":…,"data":null}. Задача, не дошедшая до результата, не тарифицируется — удержанные кредиты возвращаются целиком.

КодАдресКогда
400 /api/v1/jobs/createTask Тело запроса — не разбираемый JSON.
401 /api/v1/jobs/createTask Ключа нет в заголовке Authorization, либо он неверный или отключён.
402 /api/v1/jobs/createTask Свободных кредитов меньше, чем удерживается под задачу.
403 /api/v1/jobs/createTask Аккаунт заблокирован: вызовы модели, пополнение и загрузка файлов ему закрыты. Ключи при этом не отключены — запрет лежит на аккаунте.
413 /api/v1/jobs/createTask Тело запроса больше 512 КиБ.
415 /api/v1/jobs/createTask Тело отправлено не как application/json или заголовок Content-Type не передан.
422 /api/v1/jobs/createTask Поле model пустое или его имени нет в каталоге, input — не объект, поле не из списка модели либо значение вне её перечисления. В сообщении перечислено, что принимается. Тот же код — если во входе наша ссылка на готовый результат старше 14 дней: файла уже нет, его нужно загрузить заново. И если модель не может выполнить именно это сочетание полей: в сообщении сказано, что поменять, — например, другие файлы-образцы.
429 /api/v1/jobs/createTask Больше 30 запросов в минуту на один ключ, больше 50 незавершённых задач на аккаунте либо таймаут: за час 5 запросов к моделям этого вида отклонены из-за чувствительной темы, и запуск всех моделей этого вида приостановлен. У такого отказа в теле есть поле timeout с временем окончания паузы, а в заголовке Retry-After — секунды до него.
500 /api/v1/jobs/createTask Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят.
401 /api/v1/jobs/recordInfo Ключа нет в заголовке Authorization, либо он неверный или отключён.
404 /api/v1/jobs/recordInfo Задачи с таким номером нет или она создана другим аккаунтом.
422 /api/v1/jobs/recordInfo Параметр taskId не передан.
429 /api/v1/jobs/recordInfo Больше 300 запросов в минуту на один ключ.
500 /api/v1/jobs/recordInfo Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят.

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

task.sh
# 1. Поставить задачу — в ответе придёт её номер
TASK=$(curl -s https://api.gen202.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer sk-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-omni/flash-1-2",
    "input": {
      "prompt": "Ginger cat in a white spacesuit floats in zero gravity above Earth. It slowly turns its head toward the camera, front paws drifting; sunlight glints across the helmet visor, the blue planet reflected in the glass. The camera eases backwards, revealing a solar panel at the edge of frame. Cinematic, soft rim light, shallow depth of field.",
      "duration": 3,
      "aspect_ratio": "16:9",
      "resolution": "720p",
      "image_urls": [
        "https://gen202.com/assets/sample-nano-banana-pro.jpg"
      ]
    }
  }' | jq -r '.data.taskId')

# 2. Спрашивать состояние, пока задача не закончится: waiting, queuing и
#    generating означают «работа идёт», success и fail — окончательные
while true; do
  RECORD=$(curl -s "https://api.gen202.com/api/v1/jobs/recordInfo?taskId=$TASK" \
    -H "Authorization: Bearer sk-ваш-ключ")
  STATE=$(echo "$RECORD" | jq -r '.data.state')
  case "$STATE" in success|fail) break;; esac
  sleep 3
done

# 3. Забрать результат. Ссылка на файл лежит в resultJson — это строка JSON
#    внутри JSON, поэтому её разбирают вторым разбором (fromjson)
echo "$RECORD" | jq -r '.data |
  if .state == "fail"
  then "отказ \(.failCode): \(.failMsg)"
  else .resultJson | fromjson | .resultUrls[0]
  end'
task.py
import json
import time

import requests

headers = {"Authorization": "Bearer sk-ваш-ключ"}

# 1. Поставить задачу — в ответе придёт её номер
created = requests.post(
    "https://api.gen202.com/api/v1/jobs/createTask",
    headers=headers,
    json={
      "model": "gemini-omni/flash-1-2",
      "input": {
        "prompt": "Ginger cat in a white spacesuit floats in zero gravity above Earth. It slowly turns its head toward the camera, front paws drifting; sunlight glints across the helmet visor, the blue planet reflected in the glass. The camera eases backwards, revealing a solar panel at the edge of frame. Cinematic, soft rim light, shallow depth of field.",
        "duration": 3,
        "aspect_ratio": "16:9",
        "resolution": "720p",
        "image_urls": [
          "https://gen202.com/assets/sample-nano-banana-pro.jpg"
        ]
      }
    },
).json()
task_id = created["data"]["taskId"]

# 2. Спрашивать состояние, пока задача не закончится: waiting, queuing и
#    generating означают «работа идёт», success и fail — окончательные
while True:
    task = requests.get(
        "https://api.gen202.com/api/v1/jobs/recordInfo",
        headers=headers,
        params={"taskId": task_id},
    ).json()["data"]
    if task["state"] in ("success", "fail"):
        break
    time.sleep(3)

# 3. Разобрать итог. У неудачи причина в failCode и failMsg
if task["state"] == "fail":
    raise SystemExit("отказ " + task["failCode"] + ": " + task["failMsg"])

# resultJson — строка JSON внутри JSON, поэтому разбор второй
result = json.loads(task["resultJson"])
print(result["resultUrls"][0])
print("списано кредитов:", task["creditsConsumed"])

Пример проходит весь путь: ставит задачу, повторяет запрос состояния раз в 3 секунды, пока задача не закончится, и разбирает ответ до ссылки на файл. Разборов два, потому что поле resultJson — строка JSON внутри JSON. В теле первого запроса стоят обязательные поля модели и значения из её перечислений, поэтому он проходит проверку шлюза как есть. Подставить остаётся только свой ключ. Пример на оболочке разбирает ответ через jq; на Python своего ничего не нужно, кроме requests.

POST https://api.gen202.com/api/v1/jobs/createTask
GET https://api.gen202.com/api/v1/jobs/recordInfo?taskId=…

Ролик делается минуты, поэтому файл не приходит в ответ на запрос. Первый вызов ставит задачу и сразу отвечает её номером, второй по этому номеру отдаёт состояние задачи, а когда она готова — ссылку на результат. Ключ передаётся в обоих запросах заголовком Authorization: Bearer sk-… и выпускается в кабинете. На один ключ шлюз пропускает 30 постановок задачи и 300 запросов состояния в минуту.

Поля запроса

Значения проверяются до обращения к поставщику: поле не из списка модели или значение вне перечисления возвращают 422 и кредитов не тратят.

ПолеТипОбяз.Допустимые значения
model текст обязательное gemini-omni/flash-1-2-edit
input объект обязательное Параметры генерации — поля из таблицы ниже

Поля input

ПолеТипОбяз.Допустимые значения
prompt текст обязательное от 1 до 20 000 символов
video_urls список ссылок обязательное одна ссылка на видео
image_urls список ссылок опц. до 6 ссылок на изображение
resolution значение из списка опц. 360p · 720p · 1080p · 4k · без него шлюз подставит 720p

Ссылка на исходный файл принимается только полным адресом на http или https: не длиннее 2048 символов, на общедоступном сайте, без имени и пароля перед адресом и без порта, кроме 80 и 443. Относительный путь, а также адреса внутри сети — localhost, 127.0.0.1, 10.0.0.5, 192.168.1.2 — и имена без точки шлюз отклоняет ответом 422, к поставщику не обращаясь.

Ответ

Оба запроса отвечают одним конвертом: {"code":…,"msg":…,"data":…}, где code повторяет HTTP-статус, а полезное лежит в data. Тот же конверт приходит и при отказе — разбирать две формы ответа не нужно.

/api/v1/jobs/createTask

ПолеТипЧто в нём
data.taskId строка Номер задачи. Больше в ответе ничего нет и быть не может — работа только началась.

/api/v1/jobs/recordInfo

ПолеТипЧто в нём
data.taskId строка Номер задачи — тот же, что вернул createTask.
data.model строка Имя модели в том виде, в каком его прислал клиент.
data.state строка Состояние задачи: waiting, queuing, generating, success или fail.
data.param строка Параметры, с которыми задача создана, — строкой JSON внутри JSON.
data.resultJson строка Результат строкой JSON внутри JSON: {"resultUrls":["https://…"]} — разбирается вторым разбором. До завершения задачи — пустая строка.
data.failCode строка Код неудачи из таблицы ниже. У остальных задач — пустая строка.
data.failMsg строка Причина неудачи словами модели. Иначе пустая строка.
data.failComment строка Наш комментарий к словам модели, по-русски: что произошло. Есть не у всякой неудачи; иначе пустая строка.
data.costTime число Сколько задача заняла, миллисекунды. Пока не завершилась — null.
data.completeTime число Когда завершилась, миллисекунды эпохи Unix. Пока не завершилась — null.
data.createTime число Когда создана, миллисекунды эпохи Unix.
data.updateTime число Когда состояние менялось в последний раз, миллисекунды эпохи Unix.
data.creditsConsumed число Сколько кредитов списано. Ноль, пока задача не завершилась, и ноль у неудачной.

Состояния задачи

Состояние лежит в поле state ответа /api/v1/jobs/recordInfo. Первые три означают, что работа идёт: запрос надо повторить примерно через 3 секунды — чаще спрашивать нечего, столько же ждёт между опросами сам шлюз. Два последних состояния окончательные: после них задача не меняется.

stateЧто происходит
waiting Задача принята и стоит в очереди шлюза; поставщику она ещё не отправлена.
queuing Поставщик задачу принял и поставил в свою очередь.
generating Генерация идёт.
success Готово: ссылки на результат лежат в resultJson, в creditsConsumed — сколько списано.
fail Задача не удалась: причина в failCode и failMsg, удержанные кредиты возвращены целиком.

Задача идёт, пока модель не пришлёт результат или отказ. Причина неудачи приходит двумя полями: failCode из таблицы ниже и failMsg словами.

failCodeЧто произошло
501 Поставщик вернул отказ: генерация не удалась.
408 Модель не приняла задачу за 60 минут или не отвечала сутки.
404 Поставщик не знает такой задачи.
429 Поставщик отбил создание задачи по своему лимиту.
500 Поломка на нашей стороне; подробности остаются в журнале шлюза.

Слова модели в failMsg бывают непонятны, поэтому к части неудач шлюз добавляет поле failComment — наш комментарий по-русски о том, что произошло. У остальных неудач это поле пустое.

failMsg, примерfailComment
Image fetch failed. Модель не смогла скачать файл из нашего хранилища. Вероятно, это разовый сбой, повторите запрос. Если ошибка повторится — напишите в поддержку: hi@gen202.com
File type not supported По ссылке открывается страница сайта, а не файл. Загрузите сам файл или дайте прямую ссылку на него.
image #2: width and height must be between 300px and 6000px (got 262x377) (invalid_asset_material) Одна из картинок слишком маленькая. Seedance принимает картинки от 300 до 6000 пикселей по каждой стороне.
Seedance identified your task as video editing based on your prompt. Seedance понял запрос как редактирование присланного видео. В песочнице и чате выберите режим «Редактирование видео», в API поставьте пропорции adaptive и длительность −1.
Seedance identified your task as video extension based on your prompt. Seedance решил, что присланное видео нужно продлить. Для этого поставьте пропорции adaptive, а если продлевать не нужно — уберите эту просьбу из промта.
generate task timeout. Модель не успела создать результат и сама остановила задачу.
Internal Error Модель остановилась и не назвала причину. Возможно, она перегружена или временно недоступна. Или запрос отклонён из-за чувствительной темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The request failed because the input image may contain sensitive information. Модель отклонила загруженную картинку из-за чувствительной темы. Такие темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The generated content was filtered by the safety system. Модель отклонила запрос из-за чувствительной темы. Такие темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The model provider rejected or dropped the task creation request. Модель остановилась и не назвала причину. Возможно, она перегружена или временно недоступна. Или запрос отклонён из-за чувствительной темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
No result from the provider within the task deadline. Модель либо не приняла задачу за 15 минут (у видео — за 60), либо не ответила за сутки.

Ссылка на готовый файл живёт 14 дней — столько его хранит поставщик. Файл, который нужен дольше, скачивайте к себе сразу после того, как задача пришла в состояние success.

Отказы

Тело отказа одно на все случаи: {"code":…,"msg":…,"data":null}. Задача, не дошедшая до результата, не тарифицируется — удержанные кредиты возвращаются целиком.

КодАдресКогда
400 /api/v1/jobs/createTask Тело запроса — не разбираемый JSON.
401 /api/v1/jobs/createTask Ключа нет в заголовке Authorization, либо он неверный или отключён.
402 /api/v1/jobs/createTask Свободных кредитов меньше, чем удерживается под задачу.
403 /api/v1/jobs/createTask Аккаунт заблокирован: вызовы модели, пополнение и загрузка файлов ему закрыты. Ключи при этом не отключены — запрет лежит на аккаунте.
413 /api/v1/jobs/createTask Тело запроса больше 512 КиБ.
415 /api/v1/jobs/createTask Тело отправлено не как application/json или заголовок Content-Type не передан.
422 /api/v1/jobs/createTask Поле model пустое или его имени нет в каталоге, input — не объект, поле не из списка модели либо значение вне её перечисления. В сообщении перечислено, что принимается. Тот же код — если во входе наша ссылка на готовый результат старше 14 дней: файла уже нет, его нужно загрузить заново. И если модель не может выполнить именно это сочетание полей: в сообщении сказано, что поменять, — например, другие файлы-образцы.
429 /api/v1/jobs/createTask Больше 30 запросов в минуту на один ключ, больше 50 незавершённых задач на аккаунте либо таймаут: за час 5 запросов к моделям этого вида отклонены из-за чувствительной темы, и запуск всех моделей этого вида приостановлен. У такого отказа в теле есть поле timeout с временем окончания паузы, а в заголовке Retry-After — секунды до него.
500 /api/v1/jobs/createTask Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят.
401 /api/v1/jobs/recordInfo Ключа нет в заголовке Authorization, либо он неверный или отключён.
404 /api/v1/jobs/recordInfo Задачи с таким номером нет или она создана другим аккаунтом.
422 /api/v1/jobs/recordInfo Параметр taskId не передан.
429 /api/v1/jobs/recordInfo Больше 300 запросов в минуту на один ключ.
500 /api/v1/jobs/recordInfo Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят.

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

task.sh
# 1. Поставить задачу — в ответе придёт её номер
TASK=$(curl -s https://api.gen202.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer sk-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-omni/flash-1-2-edit",
    "input": {
      "prompt": "Заменить фон на вечернюю городскую улицу, свет тёплый",
      "video_urls": [
        "https://example.com/input.mp4"
      ],
      "resolution": "720p"
    }
  }' | jq -r '.data.taskId')

# 2. Спрашивать состояние, пока задача не закончится: waiting, queuing и
#    generating означают «работа идёт», success и fail — окончательные
while true; do
  RECORD=$(curl -s "https://api.gen202.com/api/v1/jobs/recordInfo?taskId=$TASK" \
    -H "Authorization: Bearer sk-ваш-ключ")
  STATE=$(echo "$RECORD" | jq -r '.data.state')
  case "$STATE" in success|fail) break;; esac
  sleep 3
done

# 3. Забрать результат. Ссылка на файл лежит в resultJson — это строка JSON
#    внутри JSON, поэтому её разбирают вторым разбором (fromjson)
echo "$RECORD" | jq -r '.data |
  if .state == "fail"
  then "отказ \(.failCode): \(.failMsg)"
  else .resultJson | fromjson | .resultUrls[0]
  end'
task.py
import json
import time

import requests

headers = {"Authorization": "Bearer sk-ваш-ключ"}

# 1. Поставить задачу — в ответе придёт её номер
created = requests.post(
    "https://api.gen202.com/api/v1/jobs/createTask",
    headers=headers,
    json={
      "model": "gemini-omni/flash-1-2-edit",
      "input": {
        "prompt": "Заменить фон на вечернюю городскую улицу, свет тёплый",
        "video_urls": [
          "https://example.com/input.mp4"
        ],
        "resolution": "720p"
      }
    },
).json()
task_id = created["data"]["taskId"]

# 2. Спрашивать состояние, пока задача не закончится: waiting, queuing и
#    generating означают «работа идёт», success и fail — окончательные
while True:
    task = requests.get(
        "https://api.gen202.com/api/v1/jobs/recordInfo",
        headers=headers,
        params={"taskId": task_id},
    ).json()["data"]
    if task["state"] in ("success", "fail"):
        break
    time.sleep(3)

# 3. Разобрать итог. У неудачи причина в failCode и failMsg
if task["state"] == "fail":
    raise SystemExit("отказ " + task["failCode"] + ": " + task["failMsg"])

# resultJson — строка JSON внутри JSON, поэтому разбор второй
result = json.loads(task["resultJson"])
print(result["resultUrls"][0])
print("списано кредитов:", task["creditsConsumed"])

Пример проходит весь путь: ставит задачу, повторяет запрос состояния раз в 3 секунды, пока задача не закончится, и разбирает ответ до ссылки на файл. Разборов два, потому что поле resultJson — строка JSON внутри JSON. В теле первого запроса стоят обязательные поля модели и значения из её перечислений, поэтому он проходит проверку шлюза как есть. Заменить в нём нужно два значения: свой ключ и ссылки на исходные файлы — адреса example.com стоят заполнителями, файлов по ним нет. Пример на оболочке разбирает ответ через jq; на Python своего ничего не нужно, кроме requests.

POST https://api.gen202.com/api/v1/jobs/createTask
GET https://api.gen202.com/api/v1/jobs/recordInfo?taskId=…

Ролик делается минуты, поэтому файл не приходит в ответ на запрос. Первый вызов ставит задачу и сразу отвечает её номером, второй по этому номеру отдаёт состояние задачи, а когда она готова — ссылку на результат. Ключ передаётся в обоих запросах заголовком Authorization: Bearer sk-… и выпускается в кабинете. На один ключ шлюз пропускает 30 постановок задачи и 300 запросов состояния в минуту.

Поля запроса

Значения проверяются до обращения к поставщику: поле не из списка модели или значение вне перечисления возвращают 422 и кредитов не тратят.

ПолеТипОбяз.Допустимые значения
model текст обязательное gemini-omni/flash-1-2-extend
input объект обязательное Параметры генерации — поля из таблицы ниже

Поля input

ПолеТипОбяз.Допустимые значения
prompt текст обязательное от 1 до 20 000 символов
video_urls список ссылок обязательное одна ссылка на видео
duration целое число обязательное целое от 3 до 10
image_urls список ссылок опц. до 6 ссылок на изображение
resolution значение из списка опц. 360p · 720p · 1080p · 4k · без него шлюз подставит 720p

Ссылка на исходный файл принимается только полным адресом на http или https: не длиннее 2048 символов, на общедоступном сайте, без имени и пароля перед адресом и без порта, кроме 80 и 443. Относительный путь, а также адреса внутри сети — localhost, 127.0.0.1, 10.0.0.5, 192.168.1.2 — и имена без точки шлюз отклоняет ответом 422, к поставщику не обращаясь.

Ответ

Оба запроса отвечают одним конвертом: {"code":…,"msg":…,"data":…}, где code повторяет HTTP-статус, а полезное лежит в data. Тот же конверт приходит и при отказе — разбирать две формы ответа не нужно.

/api/v1/jobs/createTask

ПолеТипЧто в нём
data.taskId строка Номер задачи. Больше в ответе ничего нет и быть не может — работа только началась.

/api/v1/jobs/recordInfo

ПолеТипЧто в нём
data.taskId строка Номер задачи — тот же, что вернул createTask.
data.model строка Имя модели в том виде, в каком его прислал клиент.
data.state строка Состояние задачи: waiting, queuing, generating, success или fail.
data.param строка Параметры, с которыми задача создана, — строкой JSON внутри JSON.
data.resultJson строка Результат строкой JSON внутри JSON: {"resultUrls":["https://…"]} — разбирается вторым разбором. До завершения задачи — пустая строка.
data.failCode строка Код неудачи из таблицы ниже. У остальных задач — пустая строка.
data.failMsg строка Причина неудачи словами модели. Иначе пустая строка.
data.failComment строка Наш комментарий к словам модели, по-русски: что произошло. Есть не у всякой неудачи; иначе пустая строка.
data.costTime число Сколько задача заняла, миллисекунды. Пока не завершилась — null.
data.completeTime число Когда завершилась, миллисекунды эпохи Unix. Пока не завершилась — null.
data.createTime число Когда создана, миллисекунды эпохи Unix.
data.updateTime число Когда состояние менялось в последний раз, миллисекунды эпохи Unix.
data.creditsConsumed число Сколько кредитов списано. Ноль, пока задача не завершилась, и ноль у неудачной.

Состояния задачи

Состояние лежит в поле state ответа /api/v1/jobs/recordInfo. Первые три означают, что работа идёт: запрос надо повторить примерно через 3 секунды — чаще спрашивать нечего, столько же ждёт между опросами сам шлюз. Два последних состояния окончательные: после них задача не меняется.

stateЧто происходит
waiting Задача принята и стоит в очереди шлюза; поставщику она ещё не отправлена.
queuing Поставщик задачу принял и поставил в свою очередь.
generating Генерация идёт.
success Готово: ссылки на результат лежат в resultJson, в creditsConsumed — сколько списано.
fail Задача не удалась: причина в failCode и failMsg, удержанные кредиты возвращены целиком.

Задача идёт, пока модель не пришлёт результат или отказ. Причина неудачи приходит двумя полями: failCode из таблицы ниже и failMsg словами.

failCodeЧто произошло
501 Поставщик вернул отказ: генерация не удалась.
408 Модель не приняла задачу за 60 минут или не отвечала сутки.
404 Поставщик не знает такой задачи.
429 Поставщик отбил создание задачи по своему лимиту.
500 Поломка на нашей стороне; подробности остаются в журнале шлюза.

Слова модели в failMsg бывают непонятны, поэтому к части неудач шлюз добавляет поле failComment — наш комментарий по-русски о том, что произошло. У остальных неудач это поле пустое.

failMsg, примерfailComment
Image fetch failed. Модель не смогла скачать файл из нашего хранилища. Вероятно, это разовый сбой, повторите запрос. Если ошибка повторится — напишите в поддержку: hi@gen202.com
File type not supported По ссылке открывается страница сайта, а не файл. Загрузите сам файл или дайте прямую ссылку на него.
image #2: width and height must be between 300px and 6000px (got 262x377) (invalid_asset_material) Одна из картинок слишком маленькая. Seedance принимает картинки от 300 до 6000 пикселей по каждой стороне.
Seedance identified your task as video editing based on your prompt. Seedance понял запрос как редактирование присланного видео. В песочнице и чате выберите режим «Редактирование видео», в API поставьте пропорции adaptive и длительность −1.
Seedance identified your task as video extension based on your prompt. Seedance решил, что присланное видео нужно продлить. Для этого поставьте пропорции adaptive, а если продлевать не нужно — уберите эту просьбу из промта.
generate task timeout. Модель не успела создать результат и сама остановила задачу.
Internal Error Модель остановилась и не назвала причину. Возможно, она перегружена или временно недоступна. Или запрос отклонён из-за чувствительной темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The request failed because the input image may contain sensitive information. Модель отклонила загруженную картинку из-за чувствительной темы. Такие темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The generated content was filtered by the safety system. Модель отклонила запрос из-за чувствительной темы. Такие темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
The model provider rejected or dropped the task creation request. Модель остановилась и не назвала причину. Возможно, она перегружена или временно недоступна. Или запрос отклонён из-за чувствительной темы: нагота и откровенные сцены, дети, известные люди, насилие, чужие персонажи и бренды.
No result from the provider within the task deadline. Модель либо не приняла задачу за 15 минут (у видео — за 60), либо не ответила за сутки.

Ссылка на готовый файл живёт 14 дней — столько его хранит поставщик. Файл, который нужен дольше, скачивайте к себе сразу после того, как задача пришла в состояние success.

Отказы

Тело отказа одно на все случаи: {"code":…,"msg":…,"data":null}. Задача, не дошедшая до результата, не тарифицируется — удержанные кредиты возвращаются целиком.

КодАдресКогда
400 /api/v1/jobs/createTask Тело запроса — не разбираемый JSON.
401 /api/v1/jobs/createTask Ключа нет в заголовке Authorization, либо он неверный или отключён.
402 /api/v1/jobs/createTask Свободных кредитов меньше, чем удерживается под задачу.
403 /api/v1/jobs/createTask Аккаунт заблокирован: вызовы модели, пополнение и загрузка файлов ему закрыты. Ключи при этом не отключены — запрет лежит на аккаунте.
413 /api/v1/jobs/createTask Тело запроса больше 512 КиБ.
415 /api/v1/jobs/createTask Тело отправлено не как application/json или заголовок Content-Type не передан.
422 /api/v1/jobs/createTask Поле model пустое или его имени нет в каталоге, input — не объект, поле не из списка модели либо значение вне её перечисления. В сообщении перечислено, что принимается. Тот же код — если во входе наша ссылка на готовый результат старше 14 дней: файла уже нет, его нужно загрузить заново. И если модель не может выполнить именно это сочетание полей: в сообщении сказано, что поменять, — например, другие файлы-образцы.
429 /api/v1/jobs/createTask Больше 30 запросов в минуту на один ключ, больше 50 незавершённых задач на аккаунте либо таймаут: за час 5 запросов к моделям этого вида отклонены из-за чувствительной темы, и запуск всех моделей этого вида приостановлен. У такого отказа в теле есть поле timeout с временем окончания паузы, а в заголовке Retry-After — секунды до него.
500 /api/v1/jobs/createTask Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят.
401 /api/v1/jobs/recordInfo Ключа нет в заголовке Authorization, либо он неверный или отключён.
404 /api/v1/jobs/recordInfo Задачи с таким номером нет или она создана другим аккаунтом.
422 /api/v1/jobs/recordInfo Параметр taskId не передан.
429 /api/v1/jobs/recordInfo Больше 300 запросов в минуту на один ключ.
500 /api/v1/jobs/recordInfo Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят.

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

task.sh
# 1. Поставить задачу — в ответе придёт её номер
TASK=$(curl -s https://api.gen202.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer sk-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-omni/flash-1-2-extend",
    "input": {
      "prompt": "Сцена продолжается: камера медленно отъезжает назад",
      "video_urls": [
        "https://example.com/input.mp4"
      ],
      "duration": 3,
      "resolution": "720p"
    }
  }' | jq -r '.data.taskId')

# 2. Спрашивать состояние, пока задача не закончится: waiting, queuing и
#    generating означают «работа идёт», success и fail — окончательные
while true; do
  RECORD=$(curl -s "https://api.gen202.com/api/v1/jobs/recordInfo?taskId=$TASK" \
    -H "Authorization: Bearer sk-ваш-ключ")
  STATE=$(echo "$RECORD" | jq -r '.data.state')
  case "$STATE" in success|fail) break;; esac
  sleep 3
done

# 3. Забрать результат. Ссылка на файл лежит в resultJson — это строка JSON
#    внутри JSON, поэтому её разбирают вторым разбором (fromjson)
echo "$RECORD" | jq -r '.data |
  if .state == "fail"
  then "отказ \(.failCode): \(.failMsg)"
  else .resultJson | fromjson | .resultUrls[0]
  end'
task.py
import json
import time

import requests

headers = {"Authorization": "Bearer sk-ваш-ключ"}

# 1. Поставить задачу — в ответе придёт её номер
created = requests.post(
    "https://api.gen202.com/api/v1/jobs/createTask",
    headers=headers,
    json={
      "model": "gemini-omni/flash-1-2-extend",
      "input": {
        "prompt": "Сцена продолжается: камера медленно отъезжает назад",
        "video_urls": [
          "https://example.com/input.mp4"
        ],
        "duration": 3,
        "resolution": "720p"
      }
    },
).json()
task_id = created["data"]["taskId"]

# 2. Спрашивать состояние, пока задача не закончится: waiting, queuing и
#    generating означают «работа идёт», success и fail — окончательные
while True:
    task = requests.get(
        "https://api.gen202.com/api/v1/jobs/recordInfo",
        headers=headers,
        params={"taskId": task_id},
    ).json()["data"]
    if task["state"] in ("success", "fail"):
        break
    time.sleep(3)

# 3. Разобрать итог. У неудачи причина в failCode и failMsg
if task["state"] == "fail":
    raise SystemExit("отказ " + task["failCode"] + ": " + task["failMsg"])

# resultJson — строка JSON внутри JSON, поэтому разбор второй
result = json.loads(task["resultJson"])
print(result["resultUrls"][0])
print("списано кредитов:", task["creditsConsumed"])

Пример проходит весь путь: ставит задачу, повторяет запрос состояния раз в 3 секунды, пока задача не закончится, и разбирает ответ до ссылки на файл. Разборов два, потому что поле resultJson — строка JSON внутри JSON. В теле первого запроса стоят обязательные поля модели и значения из её перечислений, поэтому он проходит проверку шлюза как есть. Заменить в нём нужно два значения: свой ключ и ссылки на исходные файлы — адреса example.com стоят заполнителями, файлов по ним нет. Пример на оболочке разбирает ответ через jq; на Python своего ничего не нужно, кроме requests.

Остальные модели этого семейства и их поля — в разделе документации Видео.

Что делает нейросеть Gemini Omni 1.2 Flash

Gemini Omni 1.2 Flash — видеомодель Google, выпущенная в общий доступ 5 ноября 2026 года. Цена у GEN202 — от 3,45 ₽ до 30,85 ₽ за секунду готового видео, и ставку назначает разрешение. Видео со звуком модель делает по описанию, по изображениям-референсам, по первому кадру или паре кадров, а ещё правит и продлевает присланное видео. Длина — от 3 до 15 секунд.

У Google модель называется gemini-omni-1.2-flash. В поле model уходит gemini-omni/flash-1-2, для правки видео — gemini-omni/flash-1-2-edit, для продления — gemini-omni/flash-1-2-extend.

Это следующий выпуск после Gemini Omni 1.1 Flash. С 3 декабря 2026 года запросы к выпуску 1.1 в Gemini API Google будет сам отправлять на 1.2.

Счёт идёт за секунды: ставка разрешения умножается на длину видео. Поля запроса по одному разобраны в разделе «Gemini Omni».

Как заказать видео в Gemini Omni 1.2 Flash

Поля заполняют в песочнице: на вкладке «Генерация» режим выбирают переключателем — «Референсы» или «Кадры», а правка и продление присланного видео стоят соседними вкладками.

Сумма видна до запуска, кроме правки видео: там она зависит от длины присланного видео. Все ставки собраны в таблице цен выше.

Изображения и видео модель забирает по открытым ссылкам http или https.

  1. Опишите сцену. Под описание отведено до 20 000 знаков: что происходит, как движется камера и что слышно. Звук модель пишет сама, и задают его тем же описанием.
  2. Выберите режим. «Референсы» — до 6 изображений героя, предмета или сцены. «Кадры» — первый кадр или пара кадров. Без файлов видео делается по одному описанию.
  3. Задайте длину. Целое число секунд от 3 до 15, с первым и последним кадром — до 10. При правке длина как у присланного видео.
  4. Выберите разрешение. Значений 4 — от 360p до 4K. От разрешения зависит ставка за секунду.
  5. Поправьте или продлите готовое видео. На вкладке «Правка видео» модель меняет присланное видео до 15 секунд по описанию. На вкладке «Продление видео» к нему дописывают от 3 до 10 секунд, и оплачиваются только они.

Чем режимы Gemini Omni 1.2 Flash отличаются друг от друга

Модель одна, а работ у неё пять. В таблице для каждой — что прикладывают, какой длины выходит видео и за какие секунды идёт счёт.

РаботаЧто прикладываютДлина видеоСчёт за
По описаниюничего, только описание3–15 секундзаказанные секунды
Референсыдо 6 изображений в image_urls3–15 секундзаказанные секунды
Кадрыfirst_frame_url и, по желанию, last_frame_urlдо 15 секунд, с двумя кадрами — до 10заказанные секунды
Правка видеоодно видео в video_urls у gemini-omni/flash-1-2-edit, до 15 секундкак у присланногосекунды готового видео
Продление видеоодно видео в video_urls у gemini-omni/flash-1-2-extendисходное плюс 3–10 секундтолько добавленные секунды

Ставка во всех пяти работах одна и зависит только от разрешения. При правке до запуска откладывается сумма за 15 секунд, а после готового видео лишнее возвращается на баланс.

Выпуски Gemini Omni Flash по датам: от первого до 1.2

Выпусков у Gemini Omni Flash три, и у каждого своё имя в Gemini API. В таблице — имя, дата, главное изменение и имя для поля model у GEN202.

Имя у GoogleДатаЧто изменилосьИмя для поля model
gemini-omni-1.2-flash5 ноября 2026Видео до 15 секунд, продление присланного видео на 3–10 секунд, до 6 изображений-референсовgemini-omni/flash-1-2, gemini-omni/flash-1-2-edit, gemini-omni/flash-1-2-extend
gemini-omni-1.1-flash27 августа 2026Общий доступ, кадры и выбор разрешенияgemini-omni/flash-1-1
gemini-omni-flash-preview30 июня 2026Тестовый выпуск для разработчиков: видео 3–10 секунд в 720p—

Выход 1.2 в заметках о выпусках записан так: «Gemini Omni 1.2 Flash generally available (GA): Released Gemini Omni 1.2 Flash (gemini-omni-1.2-flash), featuring up to 15-second video generation and conversational editing». Перевод наш: «Gemini Omni 1.2 Flash в общем доступе: вышла Gemini Omni 1.2 Flash (gemini-omni-1.2-flash) — видео до 15 секунд и правка разговором». Страница — раздел «November 5, 2026» в заметках о выпусках.

Там же про прежний выпуск: «Effective December 3, 2026, API requests to gemini-omni-1.1-flash will automatically route to gemini-omni-1.2-flash at Gemini Omni 1.2 Flash rates». Перевод наш: «С 3 декабря 2026 года запросы к gemini-omni-1.1-flash в API будут сами уходить на gemini-omni-1.2-flash по ценам 1.2». Страница выпуска 1.1 у GEN202 — Gemini Omni 1.1 Flash.

Какой длины выходит видео Gemini Omni 1.2 Flash и в каком разрешении

Длину задают целым числом секунд — от 3 до 15. С первым и последним кадром предел ниже, 10 секунд, а при правке длина берётся у присланного видео.

Разрешение выбирают из 4 значений: 360p, 720p, 1080p и 4K. Частота — 24 кадра в секунду, 1080p и 4K модель получает увеличением.

Форм кадра 2: 16:9, 9:16. Без поля aspect_ratio видео выходит широким, 16:9.

События по времени задают прямо в описании. Справочник Google: «You can prompt for things to happen at specific times in the video, there is no precise syntax needed and you can use natural language». Перевод наш: «Можно попросить, чтобы что-то произошло в заданный момент видео; особого синтаксиса не нужно, хватает обычного языка». Страница — раздел справочника Google о событиях по времени.

Что кладут в запрос Gemini Omni 1.2 Flash кроме описания

Обязательных полей 2: prompt и duration. Разрешение без поля — 720p.

Изображения-референсы кладут списком image_urls — до 6 ссылок. По словам Google, на одного героя — до 3 изображений, героев — до 2.

Первый кадр приходит полем first_frame_url, последний — полем last_frame_url. Последний кадр ставят только вместе с первым, а референсы и кадры в одном запросе не смешивают.

Правку вызывают именем gemini-omni/flash-1-2-edit: видео кладут в video_urls — одну ссылку на видео до 15 секунд, — а поля длины там нет. Продление вызывают именем gemini-omni/flash-1-2-extend: там тоже video_urls, а duration — длина добавленного куска.

Имена всех полей и их пределы стоят в таблице полей выше.

Что Google говорит о модели Gemini Omni 1.2 Flash

Справочник Google открывается так: «Gemini Omni 1.2 Flash (gemini-omni-1.2-flash) is a multimodal model built for fast video generation, conversational editing, and cinematic control». Перевод наш: «Gemini Omni 1.2 Flash — многомодальная модель для быстрого создания видео, правки разговором и управления съёмкой». Страница — справочник Google по Gemini Omni 1.2 Flash.

В карточке модели сказано: «Gemini Omni 1.2 Flash is our next step towards models that can create and edit anything from any input—starting with video». Перевод наш: «Gemini Omni 1.2 Flash — наш следующий шаг к моделям, которые создают и правят что угодно из чего угодно, начиная с видео». Страница — карточка модели Gemini Omni 1.2 Flash на сайте Google DeepMind.

Про референсы в справочнике: «Omni combines an understanding of physics and world knowledge with reference-to-video consistency, using up to 6 reference images to keep characters and objects consistent across shots». Перевод наш: «Omni сочетает понимание физики и устройства мира с верностью референсам: до 6 изображений держат героев и предметы одинаковыми от плана к плану».

Про правку там же: «Simple prompts work best for video editing. Overly descriptive prompts can lead to unintended changes». Перевод наш: «Для правки видео лучше всего работают простые описания. Слишком подробные приводят к нежданным переменам». Для правки одной вещи Google советует дописывать «Keep everything else the same» — «всё остальное оставь как есть».

Свою цену Google считает по токенам и в сноске к таблице переводит её в секунды: «Under Standard pricing ($12.00 per 1M tokens), this equates to an effective price of approximately $0.07 per second (~$0.70 for a 10s clip, ~$1.04 for a 15s clip; $0.023/s for 360p at 1,931 tokens/s; $0.104/s for 1080p with upsampling at 8,688 tokens/s; and $0.209/s for 4K with upsampling at 17,376 tokens/s)». Страница — цены Gemini API, раздел Omni 1.2.

Слова Google о Gemini Omni 1.2 Flash приведены по его страницам на 6 ноября 2026 года.

Где Google сам очерчивает границу Gemini Omni 1.2 Flash

Продление дописывает только конец: «Video extension is limited to appending to the end of a video; prepending or extending the middle of a clip is not supported». Перевод наш: «Продление только дописывает видео в конец; дописать в начало или в середину нельзя».

Новую реплику к присланному видео с речью не добавить: «You cannot extend an uploaded video where someone is talking to add additional dialogue». Перевод наш: «Нельзя продлить загруженное видео, где кто-то говорит, чтобы добавить новый разговор».

Звук на входе модель не берёт: «Uploading audio inputs or audio references is unsupported in the current version of the API». Перевод наш: «Загрузка звука и звуковых образцов в нынешней версии API не поддерживается».

Запреты пишут в самом описании: отдельного поля под них, системной подсказки и temperature у модели нет. Все границы перечислены в разделе Limitations справочника Google.

Официальный канал Google — видео «Introducing Gemini Omni: Create Anything from Anything» от 19 мая 2026 года. Оно вышло раньше Gemini Omni 1.2 Flash и представляет семейство Gemini Omni в целом. Длится меньше минуты.

Вопросы и ответы

Как вызвать Gemini Omni 1.2 Flash через API из России?
Запрос уходит на api.gen202.com, и это адрес GEN202, а не адрес Google: обращения за границу в вызове Gemini Omni 1.2 Flash нет, поэтому VPN не требуется. В поле model уходит идентификатор выбранного варианта: генерация (gemini-omni/flash-1-2), правка видео (gemini-omni/flash-1-2-edit), продление видео (gemini-omni/flash-1-2-extend). Порядок вызова Gemini Omni 1.2 Flash с примерами кода разобран в документации.
Сколько стоит Gemini Omni 1.2 Flash
Цена за секунду Gemini Omni 1.2 Flash — от 6.9 кр. (3,45 ₽ · $0.0314) до 61.7 кр. (30,85 ₽ · $0.2805). У Gemini Omni 1.2 Flash списывается фактический расход, а задача, завершившаяся ошибкой, не тарифицируется вовсе.
Нужны ли VPN и иностранная карта для Gemini Omni 1.2 Flash
Ни то, ни другое: обращение к Gemini Omni 1.2 Flash идёт на наш адрес, а расчёты с Google ведём мы, поэтому договариваться с ним клиенту не о чем. Оплата рублями с карты российского банка.
Что Gemini Omni 1.2 Flash принимает на вход
Обязательные поля запроса к Gemini Omni 1.2 Flash: Генерация — prompt — от 1 до 20 000 символов; duration — целое от 3 до 15. Правка видео — prompt — от 1 до 20 000 символов; video_urls — одна ссылка на видео. Продление видео — prompt — от 1 до 20 000 символов; video_urls — одна ссылка на видео; duration — целое от 3 до 10. Остальные поля необязательны.
Как подключить Gemini Omni 1.2 Flash API и сделать первый вызов
Войти на сайт и выпустить ключ в кабинете: при первом входе начисляется 50 кредитов, и этот же ключ открывает Gemini Omni 1.2 Flash вместе с остальным каталогом. Собственного ключа Google и договора с ним для вызова Gemini Omni 1.2 Flash не нужно.
Какая компания разработала Gemini Omni 1.2 Flash
Gemini Omni 1.2 Flash разработала Google и открыла в Gemini API 5 ноября 2026 года. Это видеомодель со звуком: видео по описанию, по изображениям-референсам и кадрам, правка и продление присланного видео.
Чем Gemini Omni 1.2 Flash отличается от 1.1
Видео у 1.2 длиной от 3 до 15 секунд, и длину задают любым целым числом, а у Gemini Omni 1.1 Flash — 4, 6, 8 или 10 секунд. В GEN202 у выпуска 1.2 есть правка и продление присланного видео, счёт за секунду, а у 1.1 — за видео целиком. С 3 декабря 2026 года запросы к 1.1 Google будет сам отправлять на 1.2.
Есть ли у Gemini Omni 1.2 Flash официальный сайт
Модель Google описывает в справочнике Gemini API по Omni и в карточке модели на сайте Google DeepMind. Здесь Gemini Omni 1.2 Flash вызывают по API ключу GEN202 и оплачивают рублями.