Генерация изображений через API
Один POST-запрос тем же ключом, что и чат: описание на вход, ссылка на картинку на выход. Здесь параметры, примеры и правила списания.
Эндпоинты и авторизация
Картинки живут на OpenAI-совместимом входе и работают тем же ключом, что и текстовые модели: меняется только путь.
| Метод | Путь | Назначение |
|---|---|---|
| POST | https://api.tokenator.top/v1/images/generations | Генерация картинки по текстовому описанию. |
| POST | /v1/images/edits | Редактирование и апскейл готовой картинки. Принимает multipart и JSON с base64. |
Ключ передаётся заголовком Authorization: Bearer sk-your-tokenator-key. Отдельного ключа для картинок нет — генерации списываются с того же ключа, что и токены.
Первый запрос
curl https://api.tokenator.top/v1/images/generations \ -H "Authorization: Bearer sk-your-tokenator-key" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-image-2", "prompt": "белый сиамский кот на подоконнике", "n": 1, "size": "1024x1024" }'
{
"created": 1755600000,
"data": [
{ "url": "https://generated-static.tokenator.top/static/8f1c2a9b.png" }
]
}В ответе ровно два поля: created — время в unix-секундах, и data — массив по числу заказанных картинок. У элемента либо url, либо b64_json — файл целиком в base64, если модель отдала картинку инлайном. Ничего другого прокси в ответ не добавляет.
Ссылка ведёт на отдельный домен для файлов — generated-static.tokenator.top, путь /static/. Это не адрес API и не временная ссылка провайдера: файл скачан и перевыложен на нашей стороне, отдаётся с Cache-Control: immutable и живёт, пока лежит на диске сервиса.
Какие модели рисуют
| Модель | API ID | Списание | Редактирование |
|---|---|---|---|
| GPT Image 2 | gpt-image-2 | 1× – 2× | да |
| Nano Banana 2 | nano-banana-2 | 1× – 2× | нет |
| Nano Banana Pro | nano-banana-pro | 2× | нет |
| Seedream 5.0 Pro | seedream-5.0-pro | 3× | да |
| Seedream 5.0 Lite | seedream-5.0-lite | 2× | да |
| Grok Imagine Image 2.0 | grok-imagine-image-2.0 | 3× | да |
Параметры запроса
| Поле | Тип | Что делает |
|---|---|---|
model | string | API ID модели из каталога. |
prompt | string, обязательное | Что нарисовать. Пустая строка отклоняется с кодом 400. |
n | integer | Сколько картинок за запрос: от 1 до 10. Каждая списывается отдельно. |
size | string | Размер кадра: 1024x1024, 1024x1536, 1536x1024, 2048x2048. Другое значение отклоняется до обращения к провайдеру. |
Редактирование и апскейл
Готовую картинку можно отправить на /v1/images/edits — увеличить, отретушировать или поменять фрагмент. Поле image — исходный файл, prompt описывает правку, необязательный mask ограничивает область. Результат списывается из той же квоты, что и обычная генерация.
curl https://api.tokenator.top/v1/images/edits \ -H "Authorization: Bearer sk-your-tokenator-key" \ -F model="gpt-image-2" \ -F image="@input.png" \ -F prompt="увеличить до 4k, добавить резкости" \ -F n=1 \ -F size="2048x2048"
SDK и готовые примеры
Эндпоинт совместим с OpenAI SDK: меняются только базовый адрес и ключ.
from openai import OpenAI client = OpenAI( api_key="sk-your-tokenator-key", base_url="https://api.tokenator.top/v1", ) result = client.images.generate( model="gpt-image-2", prompt="белый сиамский кот", n=1, size="1024x1024", ) print(result.data[0].url)
import OpenAI from "openai" const client = new OpenAI({ apiKey: "sk-your-tokenator-key", baseURL: "https://api.tokenator.top/v1", }) const result = await client.images.generate({ model: "gpt-image-2", prompt: "белый сиамский кот", n: 1, size: "1024x1024", }) console.log(result.data[0].url)
Готовые фрагменты под ваш ключ и адрес есть в дашборде ключа, во вкладке SDK / API.
Как списываются картинки
Картинки не тратят токены. У ключа есть отдельный счётчик генераций, и одна генерация — это одна картинка обычного размера. Размер 2048x2048 у части моделей стоит дороже: множитель задаёт оператор, и он указан на странице модели. Итоговое списание — число картинок × множитель модели, округлённое вверх.
Генерации резервируются до обращения к провайдеру и возвращаются, если картинка не приехала. Ключ с token_limit: -1 — это ключ только под генерацию, текстовые модели ему недоступны.
curl https://api.tokenator.top/v1/tokens \ -H "Authorization: Bearer sk-your-tokenator-key"
{
"name": "my-key",
"image_limit": 100,
"image_used": 12,
"image_remaining": 88
}Ограничения
- До 10 картинок за один запрос (
n). - Размеры: 1024x1024, 1024x1536, 1536x1024, 2048x2048.
- Одновременных генераций на ключ: 1; сверх того —
429с полемbusy_for_seconds. - Готовые файлы отдаются с нашего адреса и не зависят от временных ссылок провайдера.
Ошибки
| Симптом | Причина | Что сделать |
|---|---|---|
400 prompt required | В теле нет описания картинки или тело не JSON. | Проверьте Content-Type: application/json и непустой prompt. |
400 Invalid size | Размер вне списка поддерживаемых. | Возьмите один из: 1024x1024, 1024x1536, 1536x1024, 2048x2048. |
429 с полем image_gen_limit | Генерации изображений на ключе закончились. | Пополните пакет в личном кабинете; остаток виден в /v1/tokens. |
429 с полем img_concurrent_limit | На ключе уже идёт генерация: параллельные запросы ограничены. | Поле busy_for_seconds показывает, сколько идёт текущая. Ставьте запросы в очередь. |
502 Request error | Ошибка на стороне провайдера. Её текст клиенту не пересылается. | Повторите запрос — Tokenator сам переключается на следующего провайдера. Если ошибка стабильна, напишите в поддержку. |
Попробовать без кода
В дашборде ключа есть «Студия»: описание, размер и модель выбираются в интерфейсе, готовые картинки складываются в галерею. Это тот же эндпоинт и тот же счётчик генераций.
Частые вопросы
Нужен ли отдельный ключ для картинок?
Нет, работает тот же ключ, что и для чата. Отдельно покупается только пакет генераций.
Какие размеры поддерживаются?
1024x1024, 1024x1536, 1536x1024, 2048x2048. Значение вне списка отклоняется до обращения к провайдеру, поэтому опечатка ничего не стоит.
Сколько стоит картинка 2048×2048?
Столько, сколько указано на странице модели: у части моделей крупный размер идёт с отдельным множителем, у остальных цена та же.
Списываются ли генерации, если картинка не пришла?
Нет. Резерв возвращается на ключ — ошибка провайдера ничего не стоит.
Сколько живёт ссылка на картинку?
Файл перевыкладывается на стороне сервиса и отдаётся с нашего адреса. Скачайте его, если картинка нужна надолго.
Можно ли редактировать готовую картинку?
Да, через /v1/images/edits — multipart с файлом или JSON с base64. Модель должна поддерживать редактирование; в каталоге это указано.