[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-ai\u002Fembeddings":3,"docs-tabs-ai\u002Fembeddings":6},{"content":4,"lastmod":5},"\n## Создать эмбеддинги\n\n`POST \u002Fv1\u002Fembeddings`\n\nПреобразует текст в векторное представление. Векторы нужны для семантического поиска, кластеризации, поиска дублей и подбора похожих карточек CRM. Формат запроса и ответа совместим с OpenAI API, потоковой передачи нет.\n\nЭмбеддинги умеют только модели, у которых в [`GET \u002Fv1\u002Fmodels`](\u002Fdocs\u002Fai\u002Fmodels\u002Flist) поле `capabilities.embeddings` равно `true`.\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | По умолч. | Описание |\n|------|-----|:-----:|-----------|---------|\n| `model` | string | да | — | Идентификатор модели с поддержкой эмбеддингов. Список: [`GET \u002Fv1\u002Fmodels`](\u002Fdocs\u002Fai\u002Fmodels\u002Flist) |\n| `input` | string \\| string[] | да | — | Текст для векторизации: одна строка или массив строк. На каждую строку возвращается один вектор. Пустая строка и пустой массив отклоняются с `400` |\n| `encoding_format` | string | нет | `float` | Формат значений вектора: `float` или `base64` |\n| `dimensions` | integer | нет | — | Желаемая размерность вектора. Применяется только к моделям, которые это поддерживают |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fembeddings \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"bitrix\u002Fembeddings\",\n    \"input\": \"Хотим CRM на 50 пользователей\"\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fembeddings \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"bitrix\u002Fembeddings\",\n    \"input\": \"Хотим CRM на 50 пользователей\"\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fembeddings', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    model: 'bitrix\u002Fembeddings',\n    input: ['Первый текст', 'Второй текст'],\n  }),\n})\n\nconst result = await res.json()\nconsole.log(result.data.length)        \u002F\u002F 2 — по вектору на строку\nconsole.log(result.data[0].embedding)  \u002F\u002F [0.0203, 0.0034, ...]\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fembeddings', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    model: 'bitrix\u002Fembeddings',\n    input: ['Первый текст', 'Второй текст'],\n  }),\n})\n\nconst result = await res.json()\n```\n\n## Поля ответа\n\nОтвет приходит в сыром OpenAI-формате, без обёртки `success` и `data`.\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `object` | string | Всегда `list` |\n| `data` | array | Массив векторов, по одному на каждую строку `input` |\n| `data[].object` | string | Всегда `embedding` |\n| `data[].embedding` | number[] | Значения вектора |\n| `data[].index` | number | Позиция строки в исходном `input` |\n| `model` | string | Модель, обработавшая запрос |\n| `usage.prompt_tokens` | number | Токены входного текста. По ним считается расход |\n| `usage.completion_tokens` | number | Всегда `0` — эмбеддинги не порождают ответных токенов |\n| `usage.total_tokens` | number | Совпадает с `prompt_tokens` |\n\n## Пример ответа\n\nПоказаны первые три значения вектора. Полная размерность зависит от модели — у `bitrix\u002Fembeddings` это 4096 значений.\n\n```json\n{\n  \"object\": \"list\",\n  \"model\": \"bitrix\u002Fembeddings\",\n  \"data\": [\n    {\n      \"object\": \"embedding\",\n      \"index\": 0,\n      \"embedding\": [0.0203, 0.0034, -0.0156]\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 12,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 12\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n`501 embeddings_unsupported` — у модели нет поддержки эмбеддингов:\n\n```json\n{\n  \"error\": {\n    \"message\": \"Model \\\"bitrix\u002Fbitrixgpt-5.5\\\" does not support embeddings.\",\n    \"type\": \"server_error\",\n    \"code\": \"embeddings_unsupported\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `invalid_request` | Некорректные параметры — пустой `input`, неверное тело запроса |\n| 404 | `ai_model_not_found` | Модель не найдена или отключена |\n| 501 | `embeddings_unsupported` | Модель или провайдер не поддерживает эмбеддинги |\n| 402 | `ai_credentials_not_configured` | Для модели нет учётных данных провайдера — подключите свой ключ |\n| 402 | `insufficient_balance` | Недостаточно средств для платной модели |\n| 402 | `ai_quota_exhausted` | Месячная AI-квота портала исчерпана. Поле `reason` различает случай: `breaker` — сработал часовой предохранитель расходов сверх квоты, `wallet_empty` — квота исчерпана и на балансе портала нет средств, `wallet_off` — расход сверх квоты для портала недоступен. `resetAt` — момент, когда запросы снова начнут проходить, может отсутствовать для `wallet_off` |\n| 403 | `scope_missing` | API-ключу не хватает скоупа `vibe:ai` |\n| 429 | `ai_congested` | Пул AI-кластера перегружен. Запрос не выполнялся, списания нет, повторите его по заголовку `Retry-After`. Ответ несёт заголовок `X-AI-Admission: shed`, а не `X-RateLimit-Scope` |\n| 502 | `ai_provider_unavailable` | Внешний провайдер вернул не-2xx или сетевую ошибку |\n| 429 | `ai_pacing_limited` | Превышено суточное или недельное окно равномерного расходования квоты. Это не исчерпание квоты — повторите запрос по заголовку `Retry-After`. Подробнее — [«Равномерное расходование»](\u002Fdocs\u002Fai\u002Fconsumption\u002Fquota#равномерное-расходование-pacing) |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Коды ошибок приходят в нижнем регистре.** Тело ошибки — сырой OpenAI-формат `{ \"error\": { \"message\", \"type\", \"code\" } }`, без поля `success`. Это отличает эндпоинт от остальных маршрутов Вайбкод.\n\n**Массив `input` сохраняет порядок.** Вектор `data[i]` соответствует строке `input[i]`, а поле `data[].index` дублирует эту позицию — по нему можно сопоставить результат после параллельной обработки.\n\n**Расход считается только по входным токенам.** Поле `usage.completion_tokens` всегда `0`, поэтому платится только вход. Для модели `bitrix\u002Fembeddings` цена входа нулевая.\n\n## Смотрите также\n\n- [Список моделей](\u002Fdocs\u002Fai\u002Fmodels\u002Flist)\n- [Создать чат-комплишен](\u002Fdocs\u002Fai\u002Fchat\u002Fcompletions)\n- [AI-квота компании](\u002Fdocs\u002Fai\u002Fconsumption\u002Fquota)\n- [AI Router](\u002Fdocs\u002Fai)\n","2026-07-10",{}]