[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-entities\u002Fleads\u002Ffields":3,"docs-tabs-entities\u002Fleads\u002Ffields":6},{"content":4,"lastmod":5},"\n## Поля лида\n\n`GET \u002Fv1\u002Fleads\u002Ffields`\n\nВозвращает полный список доступных полей, включая пользовательские (`ufCrm_*`).\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fleads\u002Ffields\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fleads\u002Ffields\" \\\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\u002Fleads\u002Ffields', {\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data } = await res.json()\nconsole.log('Полей:', Object.keys(data).length)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fleads\u002Ffields', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | RO | Описание |\n|------|-----|:--:|---------|\n| `id` | number | да | ID лида |\n| `title` | string | | Название лида |\n| `name` | string | | Имя |\n| `lastName` | string | | Фамилия |\n| `secondName` | string | | Отчество |\n| `stageId` | string | | Статус (стадия) лида — каноническое имя в ответах: `NEW`, `IN_PROCESS`, … Список: `GET \u002Fv1\u002Fstatuses?filter[entityId]=STATUS` |\n| `statusId` | string | | Алиас `stageId` на запись, в фильтрах и сортировке. ⚠ В ответах list\u002Fget\u002Fsearch значение приходит в поле `stageId`, ключ `statusId` в ответе не возвращается — читайте `stageId`. Не передавайте алиас и каноническое имя одновременно в одном запросе |\n| `companyTitle` | string | | Название компании |\n| `companyId` | number | | ID компании. Поиск: `GET \u002Fv1\u002Fcompanies` |\n| `contactId` | number | | ID контакта. Поиск: `GET \u002Fv1\u002Fcontacts` |\n| `opportunity` | number | | Сумма — каноническое имя в ответах. ⚠ Чтобы записанное значение сохранилось, передайте `isManualOpportunity: true` в том же запросе |\n| `amount` | number | | Алиас `opportunity` на запись\u002Fв фильтрах. В ответах значение приходит в поле `opportunity` |\n| `isManualOpportunity` | boolean | | Ручной режим суммы. Без `true` сумма пересчитывается по товарным позициям и записанное значение затирается |\n| `currency` | string | | Алиас `currencyId` на запись\u002Fв фильтрах. Валюта. Список: `GET \u002Fv1\u002Fcurrencies` |\n| `currencyId` | string | | Валюта — каноническое имя в ответах |\n| `sourceId` | string | | Источник. Список: `GET \u002Fv1\u002Fstatuses?filter[entityId]=SOURCE` |\n| `sourceDescription` | string | | Описание источника |\n| `assignedById` | number | | Ответственный. Список: `GET \u002Fv1\u002Fusers` |\n| `createdBy` | number | да | Создатель. Поиск: `GET \u002Fv1\u002Fusers` |\n| `opened` | boolean | | Доступен для всех |\n| `comments` | string | | Комментарий |\n| `post` | string | | Должность |\n| `phone` | multifield | | Телефон. На вход (POST\u002FPATCH) принимает `string \\| string[] \\| object[]`. На выходе `phone` — строка с первичным значением, значения по типам — в полях `phoneWork`\u002F`phoneMobile`, полный перечень с типами — в массиве `fm[]` (формат `{ id, typeId, valueType, value }`). ⚠ PATCH **только добавляет** новые записи — старые `phone` не удаляются. См. [Обновить лид](\u002Fdocs\u002Fentities\u002Fleads\u002Fupdate). ⚠ UPPER-форма `[{ \"VALUE\": \"...\", \"VALUE_TYPE\": \"WORK\" }]` **не принимается** — вернёт `400 INVALID_MULTIFIELD_SHAPE`. Используйте camelCase: `[{ \"value\": \"...\", \"typeId\": \"WORK\" }]`. |\n| `email` | multifield | | Email. На вход принимает `string \\| string[] \\| object[]`. На выходе `email` — строка с первичным значением, значения по типам — в полях `emailWork`\u002F`emailHome`\u002F`emailMailing`, полный перечень — в массиве `fm[]`. ⚠ PATCH **только добавляет** новые записи — старые `email` не удаляются. ⚠ UPPER-форма `[{ \"VALUE\": \"...\", \"VALUE_TYPE\": \"WORK\" }]` **не принимается** — вернёт `400 INVALID_MULTIFIELD_SHAPE`. Используйте camelCase: `[{ \"value\": \"...\", \"typeId\": \"WORK\" }]`. |\n| `birthdate` | datetime | | Дата рождения |\n| `hasPhone` | boolean | да | Указан ли телефон |\n| `hasEmail` | boolean | да | Указан ли email |\n| `hasImol` | boolean | да | Есть ли контакт в открытой линии |\n| `isReturnCustomer` | boolean | да | Повторное обращение |\n| `createdTime` | datetime | да | Дата создания |\n| `updatedTime` | datetime | да | Дата изменения |\n| `originatorId` | string | | Внешний источник — идентификатор внешней системы, из которой импортирован лид; `null` для лидов, созданных в Bitrix24 |\n| `dateClosed` | datetime | да | Дата закрытия лида; `null`, пока лид не закрыт |\n| `lastCommunicationTime` | string | да | Дата последней коммуникации с лидом; `null`, если её не было |\n| `utmSource` | string | | Метка `utm_source` источника трафика; `null`, если не задана |\n| `utmMedium` | string | | Метка `utm_medium` источника трафика; `null`, если не задана |\n| `utmCampaign` | string | | Метка `utm_campaign` источника трафика; `null`, если не задана |\n| `utmContent` | string | | Метка `utm_content` источника трафика; `null`, если не задана |\n| `utmTerm` | string | | Метка `utm_term` источника трафика; `null`, если не задана |\n\n**Пользовательские поля** (`ufCrm_*`) также возвращаются в ответах и принимаются при создании\u002Fобновлении.\n\n\n\n## Доступные include\n\nЭндпоинт `GET \u002Fv1\u002Fleads\u002Ffields` возвращает список доступных include: `contact`, `company`.\n\nПример использования: [Получить leads](\u002Fdocs\u002Fentities\u002Fleads\u002Fget#связанные-данные).\n\nПодробнее об include: [Связанные данные](\u002Fdocs\u002Fincludes).\n\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"fields\": {\n      \"id\": { \"type\": \"number\", \"readonly\": true },\n      \"title\": { \"type\": \"string\", \"readonly\": false },\n      \"assignedById\": { \"type\": \"number\", \"readonly\": false }\n    },\n    \"batch\": [\"create\", \"update\", \"delete\"]\n  }\n}\n```\n\nПоказаны 3 из множества полей. Полный список в таблице выше.\n\n## Пример ответа при ошибке\n\n404 — не найден:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"ENTITY_NOT_FOUND\",\n    \"message\": \"Элемент не найден\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Смотрите также\n\n- [Обновить лид](\u002Fdocs\u002Fentities\u002Fleads\u002Fupdate)\n- [Сделки](\u002Fdocs\u002Fentities\u002Fdeals)\n- [Пользовательские поля](\u002Fdocs\u002Fuserfields)\n- [Entity API](\u002Fdocs\u002Fentity-api)\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization)\n","2026-07-10",{}]