Skip to main content
Один нативный интерфейс Gemini подходит для генерации по тексту, редактирования по референсу и последующих правок. В примерах используется nano-banana-2.1; для другой модели замените её ID в URL или вызове SDK.
BetterToken API не поддерживает генерацию с поиском, включая Google Web Search и Image Search grounding. Не добавляйте поисковые инструменты.

Параметры подключения

Создать BetterToken API Key · каталог моделей · Обзор моделей Nano Banana
Эти три модели Nano Banana не поддерживают POST /v1/images/generations и POST /v1/images/edits: запрос вернёт 400 unsupported_endpoint. Не переносите примеры GPT Image с multipart, image[] или data[].b64_json.

Создайте первое изображение

Задайте BETTERTOKEN_API_KEY в терминале и выполните запрос. Он дождётся генерации и сохранит полный JSON-ответ в response.json.
Для большего разрешения замените imageSize на 2K или 4K. Начните с 1K, 1:1 и одного изображения. Не включайте автоматический повтор генерации через --retry.

Основные параметры

Для предметной съёмки опишите объект, материал, свет и фон. Для постера укажите точный текст и расположение элементов. При редактировании перечислите, что изменить и что сохранить. В нативном HTTP-запросе используйте поля ниже; Python SDK использует snake_case. Настройки изображения размещайте внутри generationConfig.imageConfig.

Пропорции, поддерживаемые Google

Nano Banana 2 и 2.1 поддерживают 14 пропорций, Pro — 10. Для первого запроса выберите 1:1. Пропорции и размеры изображений Google Этот максимум не гарантирует число изображений. Даже по запросу нескольких модель может вернуть одно. Для фиксированного количества отправляйте отдельные запросы.

Прочитайте и сохраните изображение

Изображения находятся в candidates[].content.parts[].inlineData. Ниже показана структура; BASE64_IMAGE_DATA — заглушка. Обрабатывайте все итоговые части с изображениями и пропускайте промежуточные части с thought: true.
Этот код Python сохраняет результат curl. Выбирайте расширение по mimeType: ответ может содержать JPEG, поэтому не сохраняйте всё как .png.

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

Используйте Python 3.10 или новее. Пример рассчитан на google-genai==2.30.1. Установите пакет в виртуальное окружение проекта: старые версии SDK могут не передавать image_size.
Base URL SDK — корень домена без /v1 и /v1beta. timeout задаётся в миллисекундах; attempts=1 отключает автоматические повторы. Функция save_images сохраняет все итоговые изображения.

Передайте референс

Выполните код после полного примера Python: он отправит новый запрос на редактирование. Замените reference.jpg локальным файлом. Для PNG укажите mime_type="image/png". Дополнительные референсы добавляйте в parts того же сообщения пользователя.
В нативном JSON используется inlineData: {"mimeType": "image/jpeg", "data": "BASE64_IMAGE_DATA"}. Кодируйте исходные байты без префикса data:image/...;base64,. Здесь не используются multipart, загрузка Files или fileData.

Продолжите редактирование

Выполните код после успешной генерации или правки по референсу. Сохраните весь content ответа модели, порядок частей и thoughtSignature. Не собирайте историю только из изображения, не придумывайте и не изменяйте подписи.
Каждая правка — новый запрос генерации. Для продолжения сохраняйте полный history, добавляйте новую инструкцию пользователя, затем полученный content модели. Поле Interactions previous_interaction_id здесь не используется.

Поддержка API

  • Используйте нестриминговый generateContent. Files / fileData, Batch, Interactions и стриминг в этом подключении не поддерживаются.
  • responseMimeType, responseSchema и выбор формата сжатия изображений не поддерживаются. В imageConfig используйте только два поля, перечисленные выше.
  • Не добавляйте cachedContent, вызов функций, выполнение кода, поиск файлов, Maps, URL context и настройки входного или выходного аудио.

Если уже есть клиент OpenAI Chat

Можно вызвать POST /v1/chat/completions с Base URL https://bettertoken.ai/v1. Для нового подключения, референсов и последовательных правок используйте нативный интерфейс Gemini выше. В запросе Chat пропустите n или задайте целое 1. В HTTP-запросе google.image_config находится в корне JSON. В Python OpenAI SDK передайте его через extra_body: SDK объединит поля с корнем. Не используйте здесь generationConfig.
Для примера Python OpenAI SDK установите в том же виртуальном окружении openai==1.66.2, затем выполните:
Chat возвращает изображения как Markdown Data URL в choices[0].message.content, а не в data[] Images API. Не восстанавливайте из этого текста историю с подписями; для дальнейших правок используйте нативный пример.

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

Изображения возвращаются в текущем ответе. Здесь нет фонового получения файла или опроса задачи. Сохраняйте успешные результаты сразу, задавайте достаточное время ожидания в SDK и прокси и отключайте автоматические повторы.

Официальные источники