Grok Imagine Image 2.0 API

model: grok-imagine/image-2-0-text-to-image

Принимает текстовое описание и возвращает изображение. 5 соотношений сторон, от 1:1 до 9:16, описание до 5 000 символов. Модель xAI.

Цена: 7 кр. ($0.035).

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

Песочница

Input

Столько стоит этот запуск: цена выбранного варианта. Столько и спишется, когда работа закончится. Считаем по полям формы: берём самый дорогой вариант, который эти поля ещё могут выбрать. Спишется фактический расход, лишнее вернётся на баланс.

Войдите и получите 50 кредитов на тесты и любое использование сервиса. Без регистрации доступна одна генерация в 1K.

{
  "model": "grok-imagine/image-2-0-text-to-image",
  "input": {
    "prompt": "Рыжий кот в скафандре на фоне Земли, мягкий свет",
    "aspect_ratio": "1:1"
  }
}
Столько стоит этот запуск: цена выбранного варианта. Столько и спишется, когда работа закончится. Считаем по полям формы: берём самый дорогой вариант, который эти поля ещё могут выбрать. Спишется фактический расход, лишнее вернётся на баланс.
Output

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

{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "cm8r4t0vk0001s60p2xq7f9ab",
    "model": "grok-imagine/image-2-0-text-to-image",
    "state": "success",
    "resultJson": "{\"resultUrls\":[\"https://file.example/result.jpg\"]}",
    "failCode": "",
    "failMsg": "",
    "creditsConsumed": 7
  }
}

Цена Grok Imagine Image 2.0

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

Вариант Наша цена Скидка Официальная
1 7 кр. · $0.0353,5 ₽ −12,5% $0.04

В среднем на 12,5% ниже официальной цены поставщика. кр. — кредиты, покупаются за рубли.

Вызов через 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 текст обязательное grok-imagine/image-2-0-text-to-image
input объект обязательное Параметры генерации — поля из таблицы ниже

Поля input

ПолеТипОбяз.Допустимые значения
prompt текст обязательное от 1 до 5 000 символов
aspect_ratio значение из списка обязательное 1:1 · 2:3 · 3:2 · 16:9 · 9:16

Ответ

Оба запроса отвечают одним конвертом: {"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.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, удержанные кредиты возвращены целиком.

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

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

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

Отказы

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

КодАдресКогда
400 /api/v1/jobs/createTask Тело запроса — не разбираемый JSON.
401 /api/v1/jobs/createTask Ключа нет в заголовке Authorization, либо он неверный или отключён.
402 /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 — не объект, поле не из списка модели либо значение вне её перечисления. В сообщении перечислено, что принимается.
429 /api/v1/jobs/createTask Больше 30 запросов в минуту на один ключ либо больше 50 незавершённых задач на аккаунте.
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": "grok-imagine/image-2-0-text-to-image",
    "input": {
      "prompt": "Рыжий кот в скафандре на фоне Земли, мягкий свет",
      "aspect_ratio": "1:1"
    }
  }' | 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": "grok-imagine/image-2-0-text-to-image",
      "input": {
        "prompt": "Рыжий кот в скафандре на фоне Земли, мягкий свет",
        "aspect_ratio": "1:1"
      }
    },
).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.

Чем Grok Imagine Image 2.0 отличается от Nano Banana 2, Nano Banana Pro и GPT Image 2

Модель Цена от Разрешение Изображений на вход Описание, символов Выпущена
Nano Banana 2 $0.077 ₽ 1K · 2K · 4K 14 20 000 26 февраля 2026
Nano Banana Pro $0.1212 ₽ 1K · 2K · 4K 8 10 000 20 ноября 2025
GPT Image 2 $0.077 ₽ 1K · 2K · 4K 16 20 000 21 апреля 2026
Grok Imagine Image 2.0 $0.0353,5 ₽ 5 000

Генерацию и правку у Nano Banana 2, Nano Banana Pro и Grok Imagine Image 2.0 делает один идентификатор, а у GPT Image 2 для каждой задачи свой.

Формы кадра 1:4, 1:8, 4:1, 8:1 есть только у Nano Banana 2. Формы кадра 2:1, 1:2, 3:1, 1:3, 9:21 есть только у GPT Image 2.

Отдельная страница сравнения — Nano Banana 2 или GPT Image 2.

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

Что модель принимает

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

Размер картинки отдельным полем не выбирается: его задаёт форма кадра. Ни поставщик, ни xAI размеров нигде не называют, поэтому мы прогнали все пять форм своими вызовами 2 сентября 2026 года и померили, что пришло.

Форма кадраРазмер картинки
1:11408 × 1408
2:31152 × 1728
3:21728 × 1152
16:91792 × 1008
9:161008 × 1792

Выходит около двух мегапикселей в любой форме: от 1,81 у широких кадров до 1,99 у квадрата и вертикали.

Чего у этой записи нет

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

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

Если нужна правка присланного файла, её делают Nano Banana 2 и GPT Image 2.

Как купить доступ к Grok Imagine Image 2.0 API в России, чем платить и как выпустить ключ, подробно написано на странице Grok Imagine API — порядок один для всех моделей витрины.

Grok Imagine Image 2.0 API из России

Работать из России можно без VPN, а платить — рублями с карты российского банка. Прямой доступ идёт через биллинг поставщика, и счёт он выставляет в долларах. GEN202 стоит между вами и поставщиком: расчёты с ним наши, вы платите российскому продавцу.

Частые вопросы

Как вызвать Grok Imagine Image 2.0 через API из России?
Обычным запросом на api.gen202.com. Это адрес GEN202, а не адрес xAI, и VPN для обращения к нему не нужен. Поле model принимает идентификатор grok-imagine/image-2-0-text-to-image. Порядок из двух запросов с примерами кода разобран в документации.
Сколько стоит Grok Imagine Image 2.0
Цена за генерацию Grok Imagine Image 2.0 — 3,5 ₽. Счёт идёт по фактическому расходу, о котором поставщик сообщил после генерации, а задача, завершившаяся ошибкой, не тарифицируется.
Нужны ли VPN и иностранная карта для Grok Imagine Image 2.0
Нет, не нужны ни то, ни другое: запрос к Grok Imagine Image 2.0 уходит на наш адрес, а не на адрес xAI, и договариваться с поставщиком клиенту не о чем. Оплата рублями с карты российского банка.
Что Grok Imagine Image 2.0 принимает на вход
Обязательные поля запроса: prompt — от 1 до 5 000 символов; aspect_ratio — 1:1 · 2:3 · 3:2 · 16:9 · 9:16. Остальные поля необязательны.
Как подключить Grok Imagine Image 2.0 API и сделать первый вызов
Войти на сайт и выпустить ключ в кабинете: при первом входе начисляется 50 кредитов, а сам ключ открывает и Grok Imagine Image 2.0, и остальной каталог. Ни договора с xAI, ни его собственного ключа клиенту не нужно. Дальше идут два запроса: первый ставит задачу с идентификатором grok-imagine-image-2-0/text-to-image в поле model и отвечает её номером, второй по этому номеру отдаёт состояние задачи и ссылку на результат.