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

Список своих ключей

GET /v1/search/credentials

Возвращает все BYOK-ключи текущего пользователя со скрытым телом ключа. Сервер хранит ключи в зашифрованном виде — вернуть исходное значение нельзя, в выдаче только маска.

Параметры

Параметров нет.

Примеры

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

Terminal
curl -H "X-Api-Key: YOUR_API_KEY" \
  https://vibecode.bitrix24.tech/v1/search/credentials

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

Terminal
curl \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  https://vibecode.bitrix24.tech/v1/search/credentials

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/search/credentials', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})

const { credentials } = await res.json()
credentials.forEach((c) => {
  console.log(`${c.provider} · ${c.maskedKey} · ${c.isDefault ? 'дефолтный' : 'обычный'}`)
})

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/search/credentials', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { credentials } = await res.json()

Поля ответа

Поле Тип Описание
Полеcredentials Типarray ОписаниеМассив BYOK-ключей пользователя. Может быть пустым
Полеcredentials[].id Типstring ОписаниеИдентификатор ключа. Передаётся в DELETE /v1/search/credentials/:id и POST /v1/search/credentials/:id/test
Полеcredentials[].provider Типstring ОписаниеИдентификатор провайдера: один из восьми BYOK (tavily, brave, exa, you-com, linkup, perplexity, jina, z-ai)
Полеcredentials[].scope Типstring ОписаниеУровень видимости ключа. Через v1 возвращается только USER
Полеcredentials[].name Типstring ОписаниеПроизвольная подпись ключа
Полеcredentials[].maskedKey Типstring ОписаниеМаска <первые 5>********<последние 4>. Полный ключ через API получить нельзя
Полеcredentials[].isDefault Типboolean ОписаниеСчитается дефолтным для провайдера. Берётся, когда в POST /v1/search поле provider опущено
Полеcredentials[].lastVerifiedAt Типstring | null ОписаниеДата последней успешной проверки через POST /v1/search/credentials/:id/test в формате ISO 8601
Полеcredentials[].lastError Типstring | null ОписаниеТекст последней ошибки проверки. null, если последняя проверка прошла успешно или проверок не было
Полеcredentials[].createdAt Типstring ОписаниеДата добавления ключа в формате ISO 8601

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

JSON
{
  "credentials": [
    {
      "id": "cmol3pnk5001fo70zefbwb6dl",
      "provider": "tavily",
      "scope": "USER",
      "name": "Мой Tavily",
      "maskedKey": "tvly-********a1b2",
      "isDefault": true,
      "lastVerifiedAt": "2026-04-30T06:30:00.000Z",
      "lastError": null,
      "createdAt": "2026-04-30T06:26:51.653Z"
    }
  ]
}

Пустой список:

JSON
{ "credentials": [] }

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

401 — для OAuth-ключа не передан Authorization: Bearer:

JSON
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "No user context."
  }
}

Ошибки

HTTP Код Описание
HTTP401 КодMISSING_API_KEY ОписаниеОтсутствует заголовок X-Api-Key
HTTP401 КодINVALID_API_KEY ОписаниеКлюч не опознан: такой строки на платформе нет
HTTP401 КодUNAUTHORIZED ОписаниеЗапрос идёт через ключ vibe_app_… без Authorization: Bearer <session_token>
HTTP403 КодSCOPE_DENIED ОписаниеКлючу не хватает скоупа vibe:search
HTTP429 КодRATE_LIMITED ОписаниеПревышен общий лимит запросов
HTTP500 КодINTERNAL_ERROR ОписаниеВнутренняя ошибка сервера

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

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

Восстановление утерянного ключа. Получить исходное значение из системы нельзя — единственный путь после потери токена удалить запись через DELETE /v1/search/credentials/:id и добавить ключ заново.

lastVerifiedAt обновляется только через test. Обычные поисковые запросы через POST /v1/search дату не двигают — даже если фактическое использование ключа прошло успешно. Для свежей метки вызывайте POST /v1/search/credentials/:id/test.

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