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

Добавить модель вручную

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

Регистрирует одну модель, привязанную к Custom-ключу. Используется для провайдеров, которые не отдают каталог через GET /v1/models (Minimax, корпоративный vLLM/Ollama, Cohere). Эндпоинт работает только с провайдером custom-openai-compat.

Параметры

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

Поля запроса (body)

Поле Тип Обяз. По умолч. Описание
modelId string да ID модели у провайдера. Будет использоваться в model запроса к /v1/chat/completions
name string нет значение modelId Отображаемое название модели
contextLength number нет 8192 Максимальный размер контекста в токенах
maxOutputTokens number нет 4096 Максимум токенов в ответе

Примеры

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/ai/credentials/cred_custom_xyz/models \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "modelId": "abab6.5-chat",
    "name": "MiniMax abab6.5-chat",
    "contextLength": 32768,
    "maxOutputTokens": 8192
  }'

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/ai/credentials/cred_custom_xyz/models \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "modelId": "abab6.5-chat",
    "name": "MiniMax abab6.5-chat",
    "contextLength": 32768,
    "maxOutputTokens": 8192
  }'

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

javascript
const id = 'cred_custom_xyz'
const res = await fetch(`https://vibecode.bitrix24.tech/v1/ai/credentials/${id}/models`, {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    modelId: 'abab6.5-chat',
    name: 'MiniMax abab6.5-chat',
    contextLength: 32768,
    maxOutputTokens: 8192,
  }),
})

const { data } = await res.json()
console.log('Зарегистрирована модель с id:', data.id)

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

javascript
const id = 'cred_custom_xyz'
const res = await fetch(`https://vibecode.bitrix24.tech/v1/ai/credentials/${id}/models`, {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ modelId: 'abab6.5-chat' }),
})

const { data } = await res.json()
console.log('Готово:', data.modelId)

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data.id string Уникальный ID записи AiModel (нужен для удаления)
data.modelId string Зарегистрированный modelId
data.name string Имя модели
data.contextLength number Сохранённый размер контекста

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

HTTP-статус 201 Created:

JSON
{
  "success": true,
  "data": {
    "id": "aimodel_xyz789",
    "modelId": "abab6.5-chat",
    "name": "MiniMax abab6.5-chat",
    "contextLength": 32768
  }
}

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

400 not_custom_provider — ключ не относится к Custom-провайдеру:

JSON
{
  "success": false,
  "error": {
    "code": "not_custom_provider",
    "message": "Manual model registration is only available for custom-openai-compat provider"
  }
}

Ошибки

HTTP Код Описание
400 invalid_request Поле modelId не передано или нарушена схема
400 not_custom_provider Эндпоинт работает только с провайдером custom-openai-compat
404 not_found Ключ с таким id не найден или не принадлежит вам
403 scope_missing API-ключу не хватает скоупа vibe:ai

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

Лимит регистрации моделей: 30 запросов в минуту.

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

Идемпотентно. Повторный вызов с тем же modelId обновит существующую запись (поля name, contextLength, maxOutputTokens) вместо создания дубликата.

modelId совпадает с провайдерским. Передавайте именно тот идентификатор, который провайдер ожидает в model запроса. Например, для Minimax — abab6.5-chat, для корпоративного vLLM — то имя, под которым модель загружена.

Цена — нулевая. Модели Custom-провайдера всегда регистрируются с нулевой ценой (inputPrice = 0, outputPrice = 0). Платформенный биллинг такие записи пропускает — вы платите провайдеру напрямую.

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