CloseRouter API

Документация CloseRouter API

Короткая документация по публичному inference API: модели, запросы, ключи, баланс и ошибки.

Base URL
https://api.closerouter.dev/v1
Авторизация
Authorization: Bearer closerouter_...
Каталог
GET /models

Images API

Генерация и редактирование изображений для моделей с image endpoint-ами.

Операции, цена и восстановление

  • GET /media/models возвращает только включённые операции, input_schema, имена полей исходников, provider_option_id и наши ставки с единицами и условиями.
  • POST /media/quote принимает model, operation, input и provider.option_id. Он не запускает модель и не списывает деньги. reserved_usd — максимальный резерв; pending означает неопределённость итоговой суммы.
  • Отправьте те же поля на endpoint из метаданных и добавьте max_cost_usd из quote. Если необходимый резерв вырос, сервер вернёт 409 до запуска.
  • Для multipart передавайте input как JSON-строку, а файлы — под именами input_image_fields; повторяйте имя с [] для массивов. Один файл — до 20 МБ (20 000 000 байт), не более 16 исходников; схема операции может задавать меньший предел. Общий JSON ограничен 20 МиБ, для больших исходников используйте multipart.
  • Публичный HTTPS URL скачивается и проверяется до запуска. Предыдущий результат доступен только владельцу. Для операций без обязательного prompt текст не нужен.
  • Резерв применяется только к этим image-операциям. Списание происходит после сохранения всех результатов у нас; остаток резерва освобождается. Все применимые позиции, включая дополнительные входы, входят в итог.
  • Ответ 202 с object=image.request означает незавершённую доставку. Читайте GET /media/requests/{id}; повторный POST создаст новую генерацию. При outcome_unknown автоматического повтора нет. Безвозвратно недоставленный результат не оплачивается клиентом.
  • Результаты сохраняют порядок и метки слоёв/масок. Для операций предел одного выходного файла — 64 МиБ, общий предел результатов — 256 МиБ. URL указывает только на наш ресурс; response_format=b64_json возвращает сохранённые байты.

GPT Image generation

curl
curl https://api.closerouter.dev/v1/images/generations \
  -H "Authorization: Bearer $CLOSEROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-image-2",
    "prompt": "A minimal product photo on a white background",
    "n": 1,
    "size": "1024x1024",
    "quality": "medium"
  }'

Gemini image generation

curl
curl https://api.closerouter.dev/v1/chat/completions \
  -H "Authorization: Bearer $CLOSEROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemini-3-pro-image",
    "messages": [
      { "role": "user", "content": "A minimal product photo on a white background" }
    ],
    "modalities": ["image", "text"],
    "image_config": {
      "aspect_ratio": "1:1",
      "image_size": "4K"
    }
  }'

Image edits

multipart/form-data
curl https://api.closerouter.dev/v1/images/edits \
  -H "Authorization: Bearer $CLOSEROUTER_API_KEY" \
  -F "model=openai/gpt-image-2" \
  -F "image[]=@input.png" \
  -F "prompt=Replace the background with a clean studio backdrop"

Форматы ввода

  • GPT Image использует /images/generations; quality выбирает качество, а size задаёт размеры изображения.
  • Gemini image использует /chat/completions; размер задаётся через image_config.image_size (1K, 2K или 4K, если модель поддерживает).
  • google/gemini-3.1-flash-lite-image поддерживает только 1K.
  • Для edits используйте multipart image[] uploads или JSON images как inline data: URL.
  • Для обычных inference inputs отправляйте файлы как data URL или multipart. Объявленные ниже image-операции также принимают публичные HTTPS URL и ссылки на ваши предыдущие результаты.

Выдача и хранение

  • Внешние результаты изображений CloseRouter перезаливает перед ответом. Ссылка контролируется CloseRouter и никогда не перенаправляет на провайдера.
  • Такая ссылка доступна ровно 30 дней с момента создания; в момент истечения она становится недоступной.
  • У обычных image-маршрутов b64_json остаётся inline. Новые image-операции сначала сохраняют результат, а затем при необходимости возвращают его байты в b64_json.