Каталог моделей
В каталоге есть текстовые модели, эмбеддинги, модели для генерации изображений и видео, распознавания и синтеза речи, реранкинга. Выбирать модель удобнее на сайте, в каталоге: там описания, цены и поддерживаемые параметры. Из кода тот же список можно получить через API.
Идентификаторы
У каждой модели идентификатор вида автор/модель, например anthropic/claude-sonnet-4.6. Его передают в поле model запроса — всегда целиком, со слешем. Скопировать идентификатор можно на странице модели в каталоге.
Список моделей
GET/api/v1/models возвращает текстовые модели, которые работают в Chat Completions, Responses API, Anthropic Messages и API для Cursor, и модели для эмбеддингов. Запрос бесплатный, но нужен API-ключ; без него придёт 401.
curl https://infergate.ru/api/v1/models \
-H "Authorization: Bearer $INFERGATE_API_KEY"Ответ в формате OpenAI: object: "list" и массив моделей в data. Цены в примере условные:
{
"object": "list",
"data": [
{
"id": "openai/gpt-4o-mini",
"object": "model",
"created": 1721260800,
"owned_by": "openai",
"kind": "generative",
"context_length": 128000,
"pricing": { "currency": "RUB", "prompt": "15.96", "completion": "63.85" },
"capabilities": { "vision": true, "tools": true, "json": true, "reasoning": false }
}
]
}kind—generativeдля текстовых моделей,embeddingдля эмбеддингов.context_length— размер контекста в токенах.pricing— цены в рублях за 1M токенов, строками:prompt— вход,completion— выход. Если цена зависит от длины запроса, у модели естьtiered: trueи ступени вtiers. У каждой ступениup_to_tokens— верхняя граница входа в токенах, у последней границы нет; на первой ступени действуют ценыpromptиcompletion.capabilities— что умеет модель:vision— принимает изображения,tools— вызывает инструменты,json— отвечает в формате JSON (response_format),reasoning— рассуждает перед ответом.
Цены кэша, рассуждений и плагинов в этом списке не передаются — они указаны на странице модели. Как считается стоимость, описано на странице «Цены».
Модели других типов
У медиамоделей и других специальных моделей свои списки, в том же формате:
- GET
/api/v1/images/models— изображения; - GET
/api/v1/videos/models— видео; - GET
/api/v1/audio/transcriptions/models— распознавание речи; - GET
/api/v1/audio/speech/models— синтез речи; - GET
/api/v1/rerank/models— реранкинг; - GET
/api/v1/systemone/models— решения.
Кроме полей основного списка, у каждой модели есть input_modalities, output_modalities и supported_parameters, а у некоторых — ещё parameters и media_price:
input_modalitiesиoutput_modalities— что модель принимает и что выдаёт, например["text", "image"]и["video"];supported_parameters— параметры запроса, которые модель понимает;parameters— допустимые значения этих параметров, если они известны (у моделей изображений и видео, подробнее — на их страницах);media_price— цена за единицу результата, если модель тарифицируется не за токены и цена известна:{"currency": "RUB", "unit": "second", "per_unit": "…"}. Это ориентир: списывается фактическая стоимость запроса.
Для Cursor есть GET/api/v1/cursor/models — это тот же список, что и GET/api/v1/models.
Как отфильтровать список
Параметров фильтрации у этих эндпоинтов нет: они всегда возвращают весь список, а нужные модели вы отбираете у себя. Например, с помощью jq:
# модели, которые принимают изображения и вызывают инструменты
curl -s https://infergate.ru/api/v1/models -H "Authorization: Bearer $INFERGATE_API_KEY" \
| jq -r '.data[] | select(.capabilities.vision and .capabilities.tools) | .id'
# только эмбеддинги
curl -s https://infergate.ru/api/v1/models -H "Authorization: Bearer $INFERGATE_API_KEY" \
| jq -r '.data[] | select(.kind == "embedding") | .id'
# модели изображений, которые принимают seed
curl -s https://infergate.ru/api/v1/images/models -H "Authorization: Bearer $INFERGATE_API_KEY" \
| jq -r '.data[] | select(.supported_parameters | index("seed")) | .id'Цены и состав каталога меняются, поэтому не храните список у себя надолго — запрашивайте его заново, например раз в день.
Снятие с обслуживания
Модели, которые скоро перестанут работать, помечены в каталоге как устаревшие, а на странице модели указана дата отключения. В ответах API такой пометки нет. Переключитесь на другую модель заранее: формат запросов тот же, достаточно сменить идентификатор.