#Список ключей
GET /v1/ai/credentials
Возвращает все BYOK-ключи, подключённые текущим пользователем (USER scope), вместе со статистикой использования за последние 30 дней. Ключи на уровне портала (PORTAL) не попадают в этот список — они управляются администратором через интерфейс портала.
#Параметры
Параметров запроса нет.
#Примеры
#curl — личный ключ
curl https://vibecode.bitrix24.tech/v1/ai/credentials \
-H "X-Api-Key: YOUR_API_KEY"
#curl — OAuth-приложение
curl https://vibecode.bitrix24.tech/v1/ai/credentials \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
#JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/ai/credentials', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data } = await res.json()
data.forEach((cred) => {
console.log(`${cred.name} (${cred.provider.name}) — ${cred.usage.requests} запросов за 30 дней`)
})
#JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/ai/credentials', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data } = await res.json()
console.log('Подключено провайдеров:', data.length)
#Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data |
array | Массив подключённых ключей |
data[].id |
string | Уникальный ID ключа |
data[].providerId |
string | ID провайдера. Список: `GET /v1/ai/providers` |
data[].provider.slug |
string | Системное имя провайдера: openai, anthropic, custom-openai-compat и т. п. |
data[].provider.name |
string | Отображаемое название провайдера |
data[].name |
string | Имя ключа, заданное пользователем |
data[].isDefault |
boolean | Флаг ключа по умолчанию для провайдера |
data[].lastError |
string | null | Последняя ошибка верификации (null, если ошибок не было) |
data[].lastErrorAt |
string | null | Время последней ошибки в ISO 8601 |
data[].usage.requests |
number | Количество запросов за последние 30 дней |
data[].usage.promptTokens |
number | Токены входа за 30 дней |
data[].usage.completionTokens |
number | Токены ответа за 30 дней |
data[].createdAt |
string | Время создания в ISO 8601 |
data[].updatedAt |
string | Время последнего обновления в ISO 8601 |
#Пример ответа
{
"success": true,
"data": [
{
"id": "cred_abc123def456",
"providerId": "openai",
"provider": {
"slug": "openai",
"name": "OpenAI"
},
"name": "Мой личный OpenAI",
"isDefault": true,
"lastError": null,
"lastErrorAt": null,
"usage": {
"requests": 142,
"promptTokens": 45200,
"completionTokens": 18300
},
"createdAt": "2026-04-15T10:00:00.000Z",
"updatedAt": "2026-04-20T14:30:00.000Z"
}
]
}
Если ключи не подключены — data будет пустым массивом:
{
"success": true,
"data": []
}
#Пример ответа при ошибке
403 scope_missing — у API-ключа нет скоупа vibe:ai:
{
"success": false,
"error": {
"code": "scope_missing",
"message": "API key does not have the vibe:ai scope"
}
}
#Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 403 | scope_missing |
API-ключу не хватает скоупа vibe:ai |
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
Полный список общих ошибок API — Ошибки.
#Известные особенности
Видны только USER-ключи. Эндпоинт показывает ключи, которые подключили лично вы. Ключи на уровне портала (PORTAL scope), которые администратор настроил для всех участников — здесь не отображаются, они управляются через интерфейс портала.
lastError показывает последнюю проблему. Если у ключа lastError отличен от null — провайдер вернул ошибку при последней проверке (через POST /v1/ai/credentials/:id/test или при использовании в чат-комплишене). Поле сбрасывается при успешном PATCH с обновлением credentials или при успешной проверке.
Статистика за фиксированные 30 дней. Поле usage содержит цифры за последние 30 дней без возможности задать период. Для произвольного периода — `GET /v1/ai/credentials/:id/usage?days=N`.
#Смотрите также
- Подключить ключ — добавление нового BYOK
- Список провайдеров — справочник провайдеров и формат
credentials - Свои ключи (BYOK) — обзор подраздела