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

Текстовые модели

Один запрос, ответ приходит сразу — задачу ставить и опрашивать не нужно, в отличие от изображений и видео. Формат запроса и ответа как у OpenAI Chat Completions: готовый клиент OpenAI подключается заменой адреса, ключа и имени модели. Проверенных живым вызовом моделей сейчас 10, они разложены по семействам ниже.

Семейства

СемействоЧто внутриСтраница
GPT gpt/5-6-luna, gpt/5-6-terra, gpt/5-6-sol Открыть
Gemini gemini/3-6-flash, gemini/3-7-flash Открыть
Grok grok/4-5, grok/4-6 Открыть
Claude claude/opus-5, claude/sonnet-5, claude/fable-5 Открыть

Как вызывать

POST https://api.gen202.com/v1/chat/completions

Поля запроса

Все три лежат в корне тела запроса — вложенного input у текста нет. Остальные поля формата OpenAI — temperature, top_p, stop, seed, response_format, reasoning_effort и прочие — шлюз передаёт поставщику, проверив значение: temperature от 0 до 2 (у Claude до 1), top_p от 0 до 1, штрафы от −2 до 2, reasoning_effort — minimal, low, medium или high, стоп-слов не больше четырёх. Негодное значение возвращается отказом 400 с именем поля и не стоит ничего: поставщик на такое отвечает своей пятисоткой, из которой не видно, что дело в значении. Набор у каждого семейства свой, потому что форматы вызова разные: что именно принимает выбранная модель, названо на её странице.

stream работает: ответ приходит событиями, как это принято у Chat Completions, и заканчивается строкой data: [DONE]. У поставщика ответ при этом запрашивается целиком — иначе неоткуда взять объём токенов, по которому считается цена вызова, — поэтому весь текст приходит одним событием, а не словом за словом. Расход и объём стоят на последнем событии, рядом с признаком конца.

tools передаётся всем моделям каталога. n и best_of не передаются: несколько вариантов ответа умножают расход, а перед вызовом проверено, что денег хватает на один.

ПолеТипОбяз.Допустимые значения
model текст обязательное gpt/5-6-luna либо другое имя из каталога текстовых моделей
messages массив обязательное Непустой список сообщений с ролями system, user, assistant. Пустой список или не массив — отказ 400
max_tokens целое опц. От 1 до 128000; вне границ — отказ 400. Синоним — max_completion_tokens · без него шлюз подставит 1024

Вызов

Запрос показан целиком, с именем этой модели: подставить остаётся только свой ключ. Ответ приходит сразу — задачу ставить и опрашивать не нужно.

chat.sh
curl https://api.gen202.com/v1/chat/completions \
  -H "Authorization: Bearer sk-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt/5-6-luna",
    "messages": [{"role": "user", "content": "Привет"}],
    "max_tokens": 200
  }'
chat.py
from openai import OpenAI

client = OpenAI(api_key="sk-ваш-ключ", base_url="https://api.gen202.com/v1")

answer = client.chat.completions.create(
    model="gpt/5-6-luna",
    messages=[{"role": "user", "content": "Привет"}],
    max_tokens=200,
)
print(answer.choices[0].message.content)
print(answer.usage)  # по нему выставлен счёт

Ответ

Форма ответа — OpenAI Chat Completions. Многоточия стоят там, где значение зависит от самого запроса: текст ответа и три числа расхода. Выдумывать их вместо примера нельзя — счёт выставляется по этим самым числам.

chat-response.txt
{
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "…" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": …, "completion_tokens": …, "total_tokens": … }
}

Текст лежит в choices[0].message.content, причина остановки — в finish_reason (stop или length). По usage выставляется счёт, так что сверить списание можно прямо из ответа. Служебных полей ответа OpenAI (id, created, object) шлюз не добавляет.

Что учесть

  • Счёт по токенам. Вход и выход считаются раздельно, итог берётся из usage, а не из потолка ответа. Ставки — в каталоге.
  • Системное сообщение. Передаётся обычной ролью system в списке сообщений — шлюз сам переложит его в тот вид, который ждёт поставщик модели.
  • Потолок ответа соблюдает не всякая модель. В замере на запрошенные 16 токенов пришёл ответ в 1752 токена. Поэтому счёт считается по факту из usage, а не по потолку.
  • Деньги списываются после ответа, по факту. Заранее ничего не удерживается: перед вызовом проверяется только то, что на балансе есть деньги. Сколько списано, приходит в самом ответе полем credits_consumed.
  • Поток событий есть на всех трёх входах. Поле stream меняет форму ответа на события, как у поставщика модели. Сам ответ шлюз получает целиком: цена вызова считается из объёма токенов, а он известен только у полного ответа. Поэтому текст приходит сразу, а не слово за словом.
  • Модель, недоступная у поставщика. Такой вызов отвечает кодом 503 и не тарифицируется. Чаще прочих так отвечает семейство Claude: маршрут поставщика у него нестабилен.

Другие форматы вызова

Один и тот же каталог доступен через три входа. Формат выбирается тем, что уже умеет ваш клиент, — модель в любом из них называется одинаково.

АдресФорматКомуПотокИнструменты
/v1/chat/completions OpenAI Chat Completions библиотеке OpenAI, n8n, большинству готовых клиентов есть есть
/v1/messages Anthropic Messages Claude Code и всему, написанному под Anthropic есть есть
/v1/responses OpenAI Responses Codex и новым клиентам OpenAI есть есть
GET /v1/models OpenAI клиентам, которые сначала спрашивают список моделей

Инструменты (function calling) работают на любом входе с любой моделью каталога. Описание функций, вызов функции в ответе и результат её работы в следующем запросе переводятся вместе с разговором: у каждого формата эти три вещи называются по-своему, а смысл один. Клиенту при этом отвечают его же формой — клиент Anthropic получает блок tool_use, клиент OpenAI — tool_calls, клиент Responses — элемент function_call.

Картинку принимают все восемь моделей на любом входе — частью содержимого сообщения, ссылкой на файл. Документ PDF прикладывается так же, ссылкой: байтами внутри запроса он до модели не доходит. Разбирают документ модели Claude. Положить файл и получить ссылку можно у нас, в разделе о загрузке файлов.

Claude Code подключается переменными окружения: ANTHROPIC_BASE_URL=https://api.gen202.com и ANTHROPIC_AUTH_TOKEN=sk-ваш-ключ. Клиенты OpenAI — базовым адресом https://api.gen202.com/v1 и тем же ключом. Anthropic про сторонние шлюзы говорит прямо: работает любой, кто выставляет поддерживаемый формат, но сами они такие шлюзы не одобряют и не проверяют.