Генерация изображений через API

Один POST-запрос тем же ключом, что и чат: описание на вход, ссылка на картинку на выход. Здесь параметры, примеры и правила списания.

Эндпоинты и авторизация

Картинки живут на OpenAI-совместимом входе и работают тем же ключом, что и текстовые модели: меняется только путь.

МетодПутьНазначение
POSThttps://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 2gpt-image-21× – 2×да
Nano Banana 2nano-banana-21× – 2×нет
Nano Banana Pronano-banana-proнет
Seedream 5.0 Proseedream-5.0-proда
Seedream 5.0 Liteseedream-5.0-liteда
Grok Imagine Image 2.0grok-imagine-image-2.0да

Параметры запроса

ПолеТипЧто делает
modelstringAPI ID модели из каталога.
promptstring, обязательноеЧто нарисовать. Пустая строка отклоняется с кодом 400.
nintegerСколько картинок за запрос: от 1 до 10. Каждая списывается отдельно.
sizestringРазмер кадра: 1024x1024, 1024x1536, 1536x1024, 2048x2048. Другое значение отклоняется до обращения к провайдеру.

Редактирование и апскейл

Готовую картинку можно отправить на /v1/images/edits — увеличить, отретушировать или поменять фрагмент. Поле image — исходный файл, prompt описывает правку, необязательный mask ограничивает область. Результат списывается из той же квоты, что и обычная генерация.

Апскейл через multipart
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: меняются только базовый адрес и ключ.

Python — openai
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)
Node.js — openai
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. Модель должна поддерживать редактирование; в каталоге это указано.