Nano Banana API в России: Pro, 2 и базовая

Картинки Google по описанию и правка ваших фото по одному ключу. Фиксированная цена за картинку в рублях, оплата картой РФ и СБП, без VPN.

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

curl -X POST https://mixmedia.tech/api/v1/jobs/createTask \
  -H "Authorization: Bearer $MIXMEDIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"nano-banana-pro","input":{"prompt":"Кадр раскадровки: курьер на самокате, утро, мягкий свет","image_input":["https://example.com/character.png"],"resolution":"2K","aspect_ratio":"16:9"}}'

# статус (или передайте callBackUrl — пришлём результат сами)
curl "https://mixmedia.tech/api/v1/jobs/recordInfo?taskId=TASK_ID" \
  -H "Authorization: Bearer $MIXMEDIA_API_KEY"
import os, time, requests

API = "https://mixmedia.tech/api/v1"
H = {"Authorization": f"Bearer {os.environ['MIXMEDIA_API_KEY']}"}

task = requests.post(f"{API}/jobs/createTask", headers=H, json={
  "model": "nano-banana-pro",
  "input": {
    "prompt": "Кадр раскадровки: курьер на самокате, утро, мягкий свет",
    "image_input": [
      "https://example.com/character.png"
    ],
    "resolution": "2K",
    "aspect_ratio": "16:9"
  }
}).json()
task_id = task["data"]["taskId"]

while True:
    info = requests.get(f"{API}/jobs/recordInfo", headers=H, params={"taskId": task_id}).json()["data"]
    if info["state"] in ("success", "fail"):
        break
    time.sleep(5)
print(info["state"], info.get("resultJson"))
const API = "https://mixmedia.tech/api/v1";
const H = { Authorization: `Bearer ${process.env.MIXMEDIA_API_KEY}`, "Content-Type": "application/json" };

const { data } = await (await fetch(`${API}/jobs/createTask`, {
  method: "POST", headers: H,
  body: JSON.stringify({
    "model": "nano-banana-pro",
    "input": {
      "prompt": "Кадр раскадровки: курьер на самокате, утро, мягкий свет",
      "image_input": [
        "https://example.com/character.png"
      ],
      "resolution": "2K",
      "aspect_ratio": "16:9"
    }
  }),
})).json();

let info;
do {
  await new Promise((r) => setTimeout(r, 5000));
  info = (await (await fetch(`${API}/jobs/recordInfo?taskId=${data.taskId}`, { headers: H })).json()).data;
} while (!["success", "fail"].includes(info.state));
console.log(info.state, info.resultJson);

Цены за картинку

Модель (ID)Качествоза картинку
google/nano-banana1K1,81 ₽
google/nano-banana2K1,81 ₽
google/nano-banana-edit1K1,81 ₽
google/nano-banana-edit2K1,81 ₽
nano-banana-20.5K2,27 ₽
nano-banana-21K2,27 ₽
nano-banana-22K3,17 ₽
nano-banana-24K3,63 ₽
nano-banana-pro1K4,53 ₽
nano-banana-pro2K4,53 ₽
nano-banana-pro4K5,89 ₽

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

Куда писать с вопросами?

В Telegram @mixmedia_robot — ответим по API, оплате и интеграции. Для обращений с историей есть раздел «Поддержка» в кабинете.

Как оплатить API из России?

Пополните баланс в кабинете картой любого российского банка или через СБП. Баланс общий для сайта и API, списание — за каждый запуск, без подписки и минимального платежа.

Нужен ли VPN?

Нет. API и сайт работают из России напрямую: запросы идут на mixmedia.tech/api/v1, ссылки на результаты — на наш домен.

Что будет, если генерация не удалась?

Цена списывается при создании задачи и автоматически возвращается на баланс, если задача завершилась ошибкой (state = fail).

Какие лимиты?

Лимиты на число одновременных задач и запросов в минуту зависят от модели и указаны в документации. Если нужен больший поток — напишите в поддержку.

Как работают вебхуки?

Передайте callBackUrl в createTask — когда задача станет success или fail, мы отправим POST с тем же JSON, что у recordInfo. Подпись X-Signature = HMAC-SHA256 от сырого тела с вашим секретом whsec_…; до 4 попыток доставки. Подробнее.

Есть ли MCP-сервер?

Да: https://api.mixmedia.tech/mcp. Подключите его в Cursor, Claude или другом MCP-клиенте с вашим ключом — ассистент сможет генерировать картинки и видео сам.

Начать

Войдите, создайте ключ в кабинете, пополните баланс картой РФ или СБП — и отправьте первый запрос.

Вопросы? Напишите в Telegram @mixmedia_robot.