hubris

GET /v1/models

Список доступных моделей с актуальными ценами в рублях.

Возвращает список всех активных моделей с актуальными ценами в ₽. Стандартный OpenAI-формат с расширениями Hubris: display_name, description, context_window, input_modalities, output_modalities, supported_parameters, pricing.

Полный каталог в UI — там удобнее сравнивать цены и фильтровать.

Эндпоинт

GEThttps://api.hubris.pw/v1/models

Заголовки:

HeaderЗначение
AuthorizationBearer sk-gw-... (необязательно: без ключа отдаётся публичный каталог, с ключом — плюс ваши цепочки резервных моделей route/<slug>)

Тело запроса не передаётся. Единственный параметр query-string — output_modalities:

ПараметрЗначение
output_modalitiesФильтр по выходной модальности, через запятую. Без параметра видео-модели скрыты; ?output_modalities=video — только они. Остальную фильтрацию делайте на стороне клиента.

Пример

curl -s https://api.hubris.pw/v1/models \-H "Authorization: Bearer sk-gw-..."
from openai import OpenAIclient = OpenAI(  base_url="https://api.hubris.pw/v1",  api_key="sk-gw-...",)models = client.models.list()for m in models.data[:5]:  print(m.id)
import OpenAI from "openai";const client = new OpenAI({baseURL: "https://api.hubris.pw/v1",apiKey: "sk-gw-...",});const { data } = await client.models.list();data.slice(0, 5).forEach(m => console.log(m.id));

Ответ

{
  "object": "list",
  "data": [
    {
      "id": "anthropic/claude-haiku-4.5",
      "object": "model",
      "created": 1714000000,
      "owned_by": "anthropic",
      "display_name": "Claude Haiku 4.5",
      "description": "Быстрая и дешёвая модель Anthropic. Подходит для большинства задач.",
      "context_window": 200000,
      "context_length": 200000,
      "modalities": ["text"],
      "input_modalities": ["text", "image"],
      "output_modalities": ["text"],
      "supported_parameters": ["tools", "tool_choice", "reasoning", "response_format", "structured_outputs", "max_tokens", "stop"],
      "pricing": {
        "unit": "token",
        "input_rub_per_million": 96.50,
        "output_rub_per_million": 482.50,
        "currency": "RUB",
        "is_free": false
      }
    }
  ]
}

Поля ответа

ПолеТипОписание
object"list"Тип контейнера.
data[]array<Model>Массив моделей.
data[].idstringИдентификатор для использования в model запроса (формат <provider>/<model>).
data[].object"model"Тип элемента.
data[].createdintegerUnix-timestamp последнего обновления записи в каталоге Hubris.
data[].owned_bystringПровайдер модели (anthropic, openai, google, ...).
data[].display_namestringЧеловеко-читаемое имя для UI.
data[].descriptionstring | nullКраткое описание модели на русском; null, если перевода нет.
data[].context_windowintegerРазмер контекста в токенах.
data[].context_lengthintegerТо же число под именем, которое читают многие OpenAI-совместимые клиенты (например, RAGFlow).
data[].modalitiesstring[]Устаревшее поле, равно output_modalities. Для фильтров используйте два поля ниже.
data[].input_modalitiesstring[]Что модель принимает: text, image, audio, video, file.
data[].output_modalitiesstring[]Что возвращает: text, image, audio, speech, transcription, embeddings, video.
data[].supported_parametersstring[]Параметры запроса, которые модель поддерживает: tools, tool_choice, reasoning, include_reasoning, response_format, structured_outputs, temperature, top_p, seed, stop и другие. По этому списку клиент решает, предлагать ли для модели инструменты и размышление. Пустой массив — список неизвестен.
data[].supported_voicesstring[]Только у моделей озвучки (output_modalities: ["speech"]): допустимые значения поля voice для POST /v1/audio/speech.
data[].pricing.unit"token" | "unit" | "unknown"Единица тарификации. token — цены за 1М токенов в двух полях ниже. unit — оплата в других единицах (изображение, секунда видео, минута аудио): реальная цена в per_unit, токенные поля равны нулю. unknown — тариф не публикуется, списывается фактическая стоимость. Не умножайте токенную цену на токены, не проверив это поле.
data[].pricing.input_rub_per_millionnumberЦена 1М входных токенов в ₽. Осмысленна только при unit: "token".
data[].pricing.output_rub_per_millionnumberЦена 1М выходных токенов в ₽. Осмысленна только при unit: "token".
data[].pricing.currency"RUB"Валюта всех цен.
data[].pricing.per_unitarrayТолько у моделей с unit: "unit": элементы { sku, price_rub, unit }, например { "sku": "Output Image", "price_rub": 3.6, "unit": "per megapixel" }.
data[].pricing.is_freebooleanБесплатна ли модель. Определяет сервер, ориентируйтесь на этот флаг, а не на нулевую цену: у моделей с оплатой за изображение токенная цена нулевая, а запрос платный. Подробности — Бесплатные модели.

Цены пересчитываются автоматически вслед за курсом доллара. Точная формула — Цены.

Фильтрация

Кроме output_modalities, API не фильтрует список. Остальное — локально. Расширенные поля Hubris в SDK OpenAI доступны как обычные атрибуты объекта модели:

models = client.models.list().data

# Только embedding-модели
embed_models = [m for m in models if 'embeddings' in m.output_modalities]

# Модели с инструментами и размышлением
agent_models = [
  m for m in models
  if 'tools' in m.supported_parameters and 'reasoning' in m.supported_parameters
]

# Vision-модели Anthropic дешевле 100 ₽ за 1М входных токенов
cheap_vision = [
  m for m in models
  if m.owned_by == 'anthropic'
  and 'image' in m.input_modalities
  and m.pricing['unit'] == 'token'
  and m.pricing['input_rub_per_million'] < 100
]

HTTP-коды

КодКогда
200Успешный ответ.
401Передан отозванный или невалидный ключ. Без заголовка Authorization каталог отдаётся публично.
429Превышен лимит расхода ключа.
503Курс ЦБ временно недоступен — каталог не отдаёт цены. Повторите через минуту.

Что дальше

  • Модели — обзор каталога и как выбрать модель.
  • Цены — формула расчёта стоимости.
  • Каталог в UI — удобнее искать и сравнивать.

Обновлено: