Для AI-агентов: markdown этой страницы — /docs-content/ai/credentials/fetch-models.md индекс документации — /llms.txt

Загрузить каталог моделей

POST /v1/ai/credentials/:id/fetch-models

Загружает список моделей у провайдера через его адаптер и сохраняет каждую как AiModel, привязанную к этому ключу, — у любого провайдера, и стандартного, и Custom. Загруженные модели видны и вызываются только с этим ключом и в общий каталог платформы не попадают. Если провайдер не поддерживает загрузку каталога — операция возвращает успешный ответ с подсказкой добавить модели вручную. Ручное подключение доступно для ключей любого провайдера.

Эндпоинт доступен для ваших USER-ключей любого провайдера, включая custom-openai-compat.

Параметры

Параметр Тип Обяз. Описание
Параметрid (path) Типstring Обяз.да ОписаниеID вашего USER-ключа из GET /v1/ai/credentials

Тело запроса не передаётся.

Примеры

curl — личный ключ

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/ai/credentials/cred_custom_xyz/fetch-models \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth-приложение

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/ai/credentials/cred_custom_xyz/fetch-models \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — личный ключ

javascript
const id = 'cred_custom_xyz'
const res = await fetch(`https://vibecode.bitrix24.tech/v1/ai/credentials/${id}/fetch-models`, {
  method: 'POST',
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})

const { data } = await res.json()
console.log(`Добавлено: ${data.added}, обновлено: ${data.updated}, помечено устаревшими: ${data.deprecated}`)

JavaScript — OAuth-приложение

javascript
const id = 'cred_custom_xyz'
const res = await fetch(`https://vibecode.bitrix24.tech/v1/ai/credentials/${id}/fetch-models`, {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { data } = await res.json()
if (data.error === 'PROVIDER_LIST_MODELS_UNAVAILABLE') {
  console.log('Не удалось загрузить каталог. Проверьте ключ и доступность провайдера:', data.message)
}

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean ОписаниеВсегда true
Полеdata Типobject ОписаниеИтог загрузки каталога: счётчики моделей и, если провайдер не отдал каталог, поля error, hint, message
Полеdata.added Типnumber ОписаниеКоличество новых AiModel-записей
Полеdata.updated Типnumber ОписаниеКоличество моделей ключа, которые уже были загружены и пришли от провайдера снова
Полеdata.deprecated Типnumber ОписаниеКоличество моделей ключа, которые больше не возвращаются провайдером — их статус автоматически меняется на DEPRECATED
Полеdata.truncated Типboolean Описаниеtrue, если провайдер вернул больше новых моделей, чем помещается у ключа: у одного ключа не больше 1000 моделей. Не поместившиеся модели не сохранены
Полеdata.error Типstring ОписаниеПри сбое создания адаптера или загрузки каталога: PROVIDER_LIST_MODELS_UNAVAILABLE (кроме HTTP-редиректа)
Полеdata.hint Типstring ОписаниеПодсказка по дальнейшим действиям при ошибке
Полеdata.message Типstring ОписаниеДиагностическое сообщение о сбое создания адаптера или загрузки каталога

Пример ответа

Успешная загрузка каталога:

JSON
{
  "success": true,
  "data": {
    "added": 5,
    "updated": 12,
    "deprecated": 0,
    "truncated": false
  }
}

Провайдер не поддерживает GET /v1/models (например, Minimax):

JSON
{
  "success": true,
  "data": {
    "added": 0,
    "updated": 0,
    "deprecated": 0,
    "truncated": false,
    "error": "PROVIDER_LIST_MODELS_UNAVAILABLE",
    "hint": "add models manually: POST /v1/ai/credentials/cred_custom_xyz/models",
    "message": "OpenAI API 404: page not found"
  }
}

Пример ответа при ошибке

400 no_key — в сохранённых данных ключа нет API-ключа:

JSON
{
  "success": false,
  "error": {
    "code": "no_key",
    "message": "No API key in credentials"
  }
}

Ошибки

HTTP Код Описание
HTTP400 Кодno_key ОписаниеВ сохранённых данных нет apiKey или api_key
HTTP400 Кодbase_url_redirect ОписаниеПровайдер ответил HTTP-редиректом. Для Custom-ключа укажите конечный адрес API в baseUrl
HTTP404 Кодnot_found ОписаниеКлюч с таким id не найден или не принадлежит вам
HTTP403 Кодscope_missing ОписаниеAPI-ключу не хватает скоупа vibe:ai

Полный список общих ошибок API — Ошибки.

Лимит загрузки каталога: 10 запросов в минуту (единая корзина на портал). Действующее значение — в заголовке x-ratelimit-limit.

Известные особенности

Идемпотентно. Повторный запуск не создаёт дубликатов: существующие модели ключа обновляются (поля name, contextLength, maxOutputTokens), новые добавляются. Модели ключа, исчезнувшие из каталога провайдера, получают статус DEPRECATED (история использования сохраняется). Модель, которая вернулась в каталог провайдера, снова получает статус ACTIVE.

Каталог платформы загрузка не меняет. Модели загружаются только в каталог вашего ключа: другие пользователи и порталы их не видят, а модели каталога платформы операция не создаёт, не включает и не меняет. Если модель с тем же modelId есть и в каталоге платформы, ваши запросы к ней идут через ваш ключ.

Не больше 1000 моделей на ключ. Если провайдер возвращает больше новых моделей, чем осталось места у ключа, сохраняются первые по порядку каталога, а в ответе приходит truncated: true. Модели, которые не поместились, не считаются исчезнувшими: статус DEPRECATED получают только модели, которых нет в каталоге провайдера. Освободить место можно, удалив ненужные модели через DELETE /v1/ai/credentials/:credId/models/:modelRowId.

Возможности модели берутся из каталога платформы. Если модель с тем же modelId есть в каталоге платформы, новая модель ключа получает её возможности (capabilities) и настройки рассуждений: вызовы со response_format, эмбеддинги и рассуждения работают так же, как с моделью платформы. Цена не копируется.

Цены — нулевые. Загруженные модели по умолчанию имеют inputPrice = 0, outputPrice = 0 — BYOK означает, что вы платите провайдеру напрямую. Платформенный биллинг такие записи пропускает.

Сбой загрузки PROVIDER_LIST_MODELS_UNAVAILABLE. Код означает сбой создания адаптера или загрузки каталога (кроме HTTP-редиректа), а не подтверждает отсутствие поддержки каталога. Проверьте data.message, ключ и доступность провайдера. Если подтверждено, что провайдер не поддерживает каталог моделей, добавьте каждую модель вручную через POST /v1/ai/credentials/:id/models.

Сохраняются все перечисленные модели. Запрос списка моделей использует весь список провайдера, включая идентификаторы OpenAI без префикса gpt-.

Пределы запроса списка моделей. Они общие для available-models, fetch-models и подключения: 20 секунд на все повторы и страницы, до 5 МиБ на ответ до разбора JSON, до 1000 моделей и 10 страниц. Повтор курсора останавливает обход. На один портал одновременно выполняется один такой запрос, частота — 10 в минуту. При неполном списке отсутствующие модели не переводятся в DEPRECATED.

При обрыве обхода по пределу ответ содержит truncated: true. Предварительный просмотр без сохранения: available-models.

Смотрите также