Каталог моделей

В каталоге есть текстовые модели, эмбеддинги, модели для генерации изображений и видео, распознавания и синтеза речи, реранкинга. Выбирать модель удобнее на сайте, в каталоге: там описания, цены и поддерживаемые параметры. Из кода тот же список можно получить через 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 — рассуждает перед ответом.

Цены кэша, рассуждений и плагинов в этом списке не передаются — они указаны на странице модели. Как считается стоимость, описано на странице «Цены».

Модели других типов

У медиамоделей и других специальных моделей свои списки, в том же формате:

Кроме полей основного списка, у каждой модели есть 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 такой пометки нет. Переключитесь на другую модель заранее: формат запросов тот же, достаточно сменить идентификатор.