[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-ai\u002Fcredentials\u002Fproviders":3,"docs-tabs-ai\u002Fcredentials\u002Fproviders":6},{"content":4,"lastmod":5},"\n## Список провайдеров\n\n`GET \u002Fv1\u002Fai\u002Fproviders`\n\nВозвращает справочник провайдеров, доступных для подключения BYOK-ключа. Используйте перед [`POST \u002Fv1\u002Fai\u002Fcredentials`](\u002Fdocs\u002Fai\u002Fcredentials\u002Fcreate), чтобы получить корректный `providerId` и узнать, какие поля провайдер ожидает в `credentials`.\n\n## Параметры\n\nПараметров запроса нет.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fai\u002Fproviders \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fai\u002Fproviders \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fai\u002Fproviders', {\n  headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n})\n\nconst { data } = await res.json()\ndata.forEach((p) => {\n  const fields = Object.keys(p.credentialFields).join(', ')\n  console.log(`${p.name} (${p.slug}) — нужны поля: ${fields}`)\n})\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fai\u002Fproviders', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { data } = await res.json()\nconst openai = data.find((p) => p.slug === 'openai')\nconsole.log('ID OpenAI:', openai.id)\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|----------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив провайдеров, отсортирован по `name` |\n| `data[].id` | string | ID провайдера — используйте в `providerId` запроса к [`POST \u002Fv1\u002Fai\u002Fcredentials`](\u002Fdocs\u002Fai\u002Fcredentials\u002Fcreate) |\n| `data[].name` | string | Отображаемое название |\n| `data[].slug` | string | Системное имя провайдера: `openai`, `anthropic`, `custom-openai-compat` и т. п. |\n| `data[].credentialFields` | object | Описание полей, которые нужно передать в `credentials` при создании ключа |\n| `data[].credentialFields.\u003Cfield>.type` | string | Тип ввода: `password`, `url`, `text` |\n| `data[].credentialFields.\u003Cfield>.label` | string | Метка поля |\n| `data[].credentialFields.\u003Cfield>.required` | boolean | Обязательность |\n| `data[].credentialFields.\u003Cfield>.placeholder` | string | Подсказка для пустого поля |\n| `data[].credentialFields.\u003Cfield>.hint` | string | Подсказка для пользователя. У большинства провайдеров — домен страницы, где выпускается ключ |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": \"anthropic\",\n      \"name\": \"Anthropic\",\n      \"slug\": \"anthropic\",\n      \"credentialFields\": {\n        \"apiKey\": {\n          \"type\": \"password\",\n          \"label\": \"API Key\",\n          \"required\": true\n        }\n      }\n    },\n    {\n      \"id\": \"cprv_custom_seed\",\n      \"name\": \"Custom OpenAI-Compatible\",\n      \"slug\": \"custom-openai-compat\",\n      \"credentialFields\": {\n        \"apiKey\": {\n          \"type\": \"password\",\n          \"label\": \"API Key\",\n          \"required\": true\n        },\n        \"baseUrl\": {\n          \"type\": \"url\",\n          \"label\": \"Base URL\",\n          \"required\": true,\n          \"placeholder\": \"https:\u002F\u002Fapi.example.com\u002Fv1\",\n          \"help\": \"OpenAI-compatible endpoint.\"\n        }\n      }\n    },\n    {\n      \"id\": \"openai\",\n      \"name\": \"OpenAI\",\n      \"slug\": \"openai\",\n      \"credentialFields\": {\n        \"apiKey\": {\n          \"type\": \"password\",\n          \"label\": \"API Key\",\n          \"required\": true\n        }\n      }\n    }\n  ]\n}\n```\n\n## Пример ответа при ошибке\n\n`403 scope_missing` — у API-ключа нет скоупа `vibe:ai`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"scope_missing\",\n    \"message\": \"API key does not have the vibe:ai scope\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 403 | `scope_missing` | API-ключу не хватает скоупа `vibe:ai` |\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Провайдер `bitrix` исключён.** Список не содержит платформенного провайдера `bitrix` — его модели (BitrixGPT 5.5, GPT-OSS, Whisper и др.) доступны всем без подключения BYOK.\n\n**Большинство провайдеров требует только `apiKey`.** Поле `baseUrl` обязательно только для `custom-openai-compat`. Для всех остальных провайдеров `baseUrl` фиксирован платформой и в `credentials` не передаётся.\n\n**Системное имя `custom-openai-compat` — для произвольных сервисов.** Используйте, чтобы подключить любой OpenAI-совместимый сервис: Minimax, Cerebras, Cohere, корпоративный `vLLM`\u002F`Ollama`, локальный inference-сервер. После подключения модели либо загружаются автоматически через [`fetch-models`](\u002Fdocs\u002Fai\u002Fcredentials\u002Ffetch-models), либо регистрируются вручную через [`models-add`](\u002Fdocs\u002Fai\u002Fcredentials\u002Fmodels-add).\n\n**Подсказки `hint`.** У части провайдеров поле `hint` содержит домен страницы получения ключа: `platform.deepseek.com`, `console.groq.com`, `aistudio.google.com`. Показывайте его пользователю рядом с полем ввода ключа.\n\n## Смотрите также\n\n- [Подключить ключ](\u002Fdocs\u002Fai\u002Fcredentials\u002Fcreate)\n- [Свои ключи (BYOK)](\u002Fdocs\u002Fai\u002Fcredentials)\n- [AI Router](\u002Fdocs\u002Fai)\n","2026-07-10",{}]