GET /v1/models
Список доступных моделей с актуальными ценами в рублях.
Возвращает список всех активных моделей с актуальными ценами в ₽. Стандартный OpenAI-формат с расширениями Hubris: display_name, description, context_window, input_modalities, output_modalities, supported_parameters, pricing.
Полный каталог в UI — там удобнее сравнивать цены и фильтровать.
Эндпоинт
GET
https://api.hubris.pw/v1/modelsЗаголовки:
| Header | Значение |
|---|---|
Authorization | Bearer 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[].id | string | Идентификатор для использования в model запроса (формат <provider>/<model>). |
data[].object | "model" | Тип элемента. |
data[].created | integer | Unix-timestamp последнего обновления записи в каталоге Hubris. |
data[].owned_by | string | Провайдер модели (anthropic, openai, google, ...). |
data[].display_name | string | Человеко-читаемое имя для UI. |
data[].description | string | null | Краткое описание модели на русском; null, если перевода нет. |
data[].context_window | integer | Размер контекста в токенах. |
data[].context_length | integer | То же число под именем, которое читают многие OpenAI-совместимые клиенты (например, RAGFlow). |
data[].modalities | string[] | Устаревшее поле, равно output_modalities. Для фильтров используйте два поля ниже. |
data[].input_modalities | string[] | Что модель принимает: text, image, audio, video, file. |
data[].output_modalities | string[] | Что возвращает: text, image, audio, speech, transcription, embeddings, video. |
data[].supported_parameters | string[] | Параметры запроса, которые модель поддерживает: tools, tool_choice, reasoning, include_reasoning, response_format, structured_outputs, temperature, top_p, seed, stop и другие. По этому списку клиент решает, предлагать ли для модели инструменты и размышление. Пустой массив — список неизвестен. |
data[].supported_voices | string[] | Только у моделей озвучки (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_million | number | Цена 1М входных токенов в ₽. Осмысленна только при unit: "token". |
data[].pricing.output_rub_per_million | number | Цена 1М выходных токенов в ₽. Осмысленна только при unit: "token". |
data[].pricing.currency | "RUB" | Валюта всех цен. |
data[].pricing.per_unit | array | Только у моделей с unit: "unit": элементы { sku, price_rub, unit }, например { "sku": "Output Image", "price_rub": 3.6, "unit": "per megapixel" }. |
data[].pricing.is_free | boolean | Бесплатна ли модель. Определяет сервер, ориентируйтесь на этот флаг, а не на нулевую цену: у моделей с оплатой за изображение токенная цена нулевая, а запрос платный. Подробности — Бесплатные модели. |
Цены пересчитываются автоматически вслед за курсом доллара. Точная формула — Цены.
Фильтрация
Кроме 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 — удобнее искать и сравнивать.
Обновлено: