GPT Image 2: первый запрос к Image API
Как отправить первый запрос к GPT Image 2 через BetterToken, сохранить изображение из b64_json и быстро разобрать ошибки ключа, модели и баланса.
Содержание
Первое изображение через BetterToken можно получить одним синхронным HTTP-запросом. Нужен собственный API Key и POST на https://www.bettertoken.ai/v1/images/generations. Для проверяемого старта укажите gpt-image-2, n=1, размер, response_format=b64_json и output_format=png. Ответ содержит изображение в data[0].b64_json: его нужно декодировать и сохранить как файл.
BetterToken предоставляет OpenAI-compatible Image API, но является независимым сервисом: ключ, баланс и история запросов находятся в аккаунте BetterToken, а не в OpenAI. Перед запуском откройте текущую Image API Docs и страницу моделей и цен. Статья объясняет первый цикл и сохранение файла; полную изменяемую спецификацию параметров не дублирует.
Что понадобится
curlдля отправки запроса;- собственный BetterToken API Key;
- точный Base URL
https://www.bettertoken.ai/v1; - модель
gpt-image-2для этого Image API; - утилита для декодирования Base64 или короткий скрипт на Python.
Не вставляйте настоящий ключ в исходный код, скриншоты или команду, которая попадёт в историю shell. Сохраните его в переменной окружения:
export BETTERTOKEN_API_KEY="your_api_key_here"
Значение выше — только заполнитель. Используйте свой ключ и не публикуйте его.
Первый запрос к GPT Image 2
Готовы выполнить запрос своим ключом? Создайте аккаунт BetterToken, получите API Key и сохраните его вне исходного кода. Создать аккаунт BetterToken
Отправьте запрос на endpoint генерации изображений:
curl https://www.bettertoken.ai/v1/images/generations \
-H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A clean editorial illustration of a coding desk at night, green and graphite palette",
"n": 1,
"size": "1024x1024",
"response_format": "b64_json",
"output_format": "png"
}' \
-o image-response.json
Если запрос выполнен успешно, файл image-response.json будет содержать объект data. Изображение находится в поле data[0].b64_json. Это синхронный контракт: для показанного первого запроса не нужен отдельный task ID, polling или callback. Строку можно сохранить в объектное хранилище, передать следующему шагу обработки или сразу декодировать в локальный файл.
Как сохранить изображение
Следующий пример читает JSON, декодирует Base64 и создаёт bettertoken-image.png. Он использует только стандартную библиотеку Python:
import base64
import json
with open("image-response.json", "r", encoding="utf-8") as source:
payload = json.load(source)
image_base64 = payload["data"][0]["b64_json"]
with open("bettertoken-image.png", "wb") as target:
target.write(base64.b64decode(image_base64))
print("Saved: bettertoken-image.png")
Откройте файл и убедитесь, что он соответствует prompt. Сам факт HTTP 200 подтверждает работу запроса, но не заменяет визуальную проверку результата.
Как улучшить второй запрос
Для первой проверки лучше использовать короткий prompt с четырьмя понятными частями:
- объект или сцена;
- визуальный стиль;
- композиция;
- палитра или освещение.
Например:
Editorial illustration of a developer reviewing an API response,
clean geometric style, centered composition, dark graphite background
with restrained green accents, no text, no logos
Не начинайте с длинного списка противоречивых требований. Сначала проверьте базовую композицию, затем меняйте один параметр за раз. Так легче понять, какая формулировка повлияла на результат.
Размеры, качество и форматы относятся к изменяемой спецификации. Перед вторым запросом выберите поддерживаемое значение в текущей Image API Docs, а не переносите параметр из чужого provider или старого примера. Текущий BetterToken контракт не подтверждает асинхронные task/callback, пакетную обработку, шаблоны для продавцов или гарантированное качество результата.
Типичные ошибки
401: ключ не принят
Проверьте, что переменная BETTERTOKEN_API_KEY задана в текущем терминале и в заголовке есть префикс Bearer. Не выводите ключ командой echo и не отправляйте его в поддержку целиком.
402 или ошибка баланса
Откройте кабинет BetterToken и проверьте доступный баланс. Оплаченный баланс BetterToken не обнуляется автоматически в конце месяца, но каждый запрос требует достаточного остатка.
404: неверный путь
Для генерации используется полный путь:
https://www.bettertoken.ai/v1/images/generations
Не заменяйте его на Chat Completions endpoint и не используйте адрес api.openai.com: ключ BetterToken работает с endpoint BetterToken.
400: неверная модель или параметры
Вернитесь к минимальному примеру выше и проверьте типы значений. Для этой инструкции используется точный Model ID gpt-image-2. Если API сообщает, что модель или параметр недоступны, сверяйте их с документацией Image API.
429 или 5xx
Не запускайте бесконечный цикл повторов. Сохраните HTTP-код, время запроса и безопасную часть ответа, затем повторите с задержкой. В BetterToken Dashboard можно сопоставить запрос по времени и увидеть модель, статус и фактическое списание — без публикации полного prompt.
Проверка перед интеграцией в приложение
Перед тем как переносить запрос в backend или автоматизацию, убедитесь, что:
- ключ хранится в переменной окружения или менеджере секретов;
- запрос уходит на BetterToken, а не на endpoint другого провайдера;
- модель и параметры взяты из актуальной документации;
- Base64 декодируется без ошибок;
- приложение ограничивает повторы и обрабатывает не-2xx ответы;
- стоимость проверена на текущей странице цен, а не по старому обзору.
После этого можно перенести тот же контракт в SDK или HTTP-клиент вашего приложения. Начните с минимального запроса, сохраните один результат и только затем добавляйте поддерживаемые текущей Docs параметры, собственное хранение и ограниченную retry-логику.
Короткий вывод
Первый рабочий цикл состоит из трёх шагов: отправить POST на BetterToken Image API, взять синхронный data[0].b64_json и декодировать его в PNG. Перед запуском проверьте актуальные параметры и цену выбранной модели.