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

Поля сделки

GET /v1/deals/fields

Возвращает полный список доступных полей, включая пользовательские (ufCrm*).

Примеры

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

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

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

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

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

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

const { success, data } = await res.json()
console.log('Полей:', Object.keys(data.fields).length)

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

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

const { success, data } = await res.json()

Поля ответа

Подписи полей label и description приходят на русском языке, а те, что платформа берёт напрямую с портала, — на языке портала. Заголовками запроса язык не переключается. У значений enum подпись label английская, русская — в labelRu.

Поле Битрикс24 Тип RO Описание
id id number да ID сделки
title title string Название
amount opportunity number Сумма
currency currencyId string Валюта. Список: GET /v1/currencies
stageId stageId string Стадия воронки. Набор стадий и их идентификаторы настраиваются на стороне портала и отличаются между воронками. Актуальный список — GET /v1/statuses?filter[entityId]=DEAL_STAGE для основной воронки, GET /v1/statuses?filter[entityId]=DEAL_STAGE_{N} для воронки с categoryId={N} (значение categoryId берётся из GET /v1/deal-categories)
categoryId categoryId number ID воронки (0 = основная). Список: GET /v1/deal-categories
stageSemanticId stageSemanticId string да Смысловая категория текущей стадии: P — в работе, S — успех, F — провал
companyId companyId number ID компании. Поиск: GET /v1/companies
contactId contactId number ID основного контакта. Поиск: GET /v1/contacts
contactIds contactIds number[] да Все привязанные контакты. Поиск: GET /v1/contacts
assignedById assignedById number Ответственный. Список: GET /v1/users
createdBy createdBy number да Создатель. Поиск: GET /v1/users
updatedBy updatedBy number да Кто изменил. Поиск: GET /v1/users
createdAt createdTime datetime да Дата создания
updatedAt updatedTime datetime да Дата изменения
closedAt closedate datetime Дата закрытия
closed closed boolean да Закрыта ли сделка
isWon isWon boolean да Находится ли сделка на выигранной стадии (stageSemanticId = S). Вычисляет Битрикс24; приходит только в списке или поиске с явным select (см. ниже). В фильтре не принимается — 400 UNKNOWN_FILTER_FIELD, фильтруйте по stageSemanticId; сортировка работает
isLose isLose boolean да Находится ли сделка на проигранной стадии (stageSemanticId = F). Как isWon: только в явном select, в фильтре не принимается, сортировка работает
isWork isWork boolean да Находится ли сделка на стадии в работе (stageSemanticId = P). Как isWon: только в явном select, в фильтре не принимается, сортировка работает
hasProducts hasProducts boolean да Есть ли у сделки хотя бы одна товарная позиция (GET /v1/deals/{id}/products). Только в явном select, как isWon. В фильтре не принимается (400 UNKNOWN_FILTER_FIELD): Битрикс24 сравнивает флаг только с булевым значением, форма Y/N не совпадает ни с одной записью, а замены в фильтре нет — читайте select=hasProducts или товарные позиции; сортировка работает
receivedAmount receivedAmount number да Сумма, засчитанная как полученная, в учётной валюте портала: пока сделка на выигранной стадии, равна amount, пересчитанной по курсу портала (совпадает с amount, если currency — учётная валюта), иначе 0. Вычисляет Битрикс24; приходит только в явном select (см. ниже). Фильтр (в том числе $gt/$lt) и сортировка работают
lostAmount lostAmount number да Сумма, засчитанная как потерянная, в учётной валюте портала: пока сделка на проигранной стадии, равна amount, пересчитанной по курсу портала, иначе 0. Как receivedAmount: только в явном select, фильтр и сортировка работают
sourceId sourceId string Источник. Список: GET /v1/statuses?filter[entityId]=SOURCE
sourceDescription sourceDescription string Описание источника
probability probability number Вероятность успеха (%)
opened opened boolean Доступна для всех
comments comments string Комментарий
observers observers number[] Наблюдатели. Список: GET /v1/users
typeId typeId string Тип записи. Список: GET /v1/statuses?filter[entityId]=DEAL_TYPE
isReturning isReturnCustomer boolean Повторная сделка
leadId leadId number Лид, из которого создана сделка. Приходит null, если сделка не создавалась конвертацией лида. Поиск: GET /v1/leads
quoteId quoteId number Предложение, из которого создана сделка. Приходит null, если сделка создана не из предложения. Поиск: GET /v1/quotes
taxValue taxValue number да Сумма налога по сделке, в валюте сделки. Приходит 0, если налога нет. Считается Битрикс24 по товарным позициям и не принимается ни на одной двери записи. Замерено 2026-09-11 на живых порталах обеих платформ: создание и изменение в обоих режимах суммы, импорт в обоих режимах — чтение назад даёт 0 всегда. Поэтому объявлено только для чтения: попытка записи отклоняется, а не отвечает успехом с потерей значения. Налог задаётся через товарные позиции
originId originId string Идентификатор этой сделки во внешней системе, из которой она импортирована. Приходит null у сделок, созданных в Битрикс24
originatorId originatorId string Внешняя система, из которой импортирована сделка. Приходит null у сделок, созданных в Битрикс24
additionalInfo additionalInfo string Произвольная дополнительная информация по сделке. Приходит null, если не заполнено
lastActivityBy lastActivityBy number Пользователь, совершивший последнюю активность в таймлайне сделки. Приходит 0, если активности не было. Поиск: GET /v1/users

Семь полей выше — leadId, quoteId, taxValue, originId, originatorId, additionalInfo и lastActivityBy — принимаются в filter и в сортировке, в том числе в GET /v1/deals, POST /v1/deals/search и POST /v1/deals/aggregate. У пяти из них (leadId, quoteId, originId, originatorId, additionalInfo) значение может прийти null, и у трёх строковых пустая строка от Битрикс24 приводится к null — сравнивайте с пустым значением, а не с "".

Шесть вычисляемых полей — isWon, isLose, isWork, hasProducts, receivedAmount, lostAmount — Битрикс24 считает только для списка, поиска или действия list общего пакета POST /v1/batch, где поле названо в select явно и без * (GET /v1/deals?select=id,isWon,receivedAmount, POST /v1/deals/search с select). Одиночный GET /v1/deals/{id}, список без select и действие list пакета сущности (его select — проекция, на портал не уходит) отдают по ним null — это не «пусто», а «не запрошено». Все шесть только для чтения: присланное значение отклоняется (создание и изменение — 400 READONLY_FIELD, импорт — 400 IMPORT_ITEM_VALIDATION, пакет сущности — 400 BATCH_ITEM_VALIDATION, общий пакет — READONLY_FIELD под вызовом). Четыре флага в filter не принимаются (400 UNKNOWN_FILTER_FIELD): булев фильтр уходит в Битрикс24 в форме Y/N, а эти флаги портал сравнивает только с булевым значением — по трём флагам стадии строка Y даёт обратный набор, по hasProducts не совпадает ни с одной записью; для стадии фильтруйте по stageSemanticId, для товаров замены нет. Сортировка по всем шести работает; receivedAmount и lostAmount принимаются и в sum/avg/min/max POST /v1/deals/aggregate — итог в учётной валюте портала, в отличие от sum(amount), который складывает суммы в валютах сделок как есть.

UTM-поля (utmSource, utmMedium, utmCampaign, utmContent, utmTerm) возвращаются при чтении, но ни в фильтре, ни в сортировке не принимаются. Запрос отклоняется кодом 400 UNKNOWN_FILTER_FIELD или 400 UNKNOWN_SORT_FIELD до обращения к Битрикс24, а причина по каждому полю приходит в его description в ответе этого же эндпоинта. Для контактов фильтруйте по contactId (основной контакт) или по contactIds (любой из привязанных).

Пользовательские поля (ufCrm*) также возвращаются в ответах и принимаются при создании/обновлении. У поля типа enumeration в ответе этого эндпоинта по пути data.fields.<имя поля>.items приходит массив вариантов вида { "ID": "3983", "VALUE": "warm" }. Это не ключ enum объявленных полей с элементами value и label: для записи в пользовательское поле берётся ID, а VALUE — подпись варианта для показа. Подпись, отправленная вместо идентификатора, теряется без ошибки. Подробнее — Формат значения по типам.

Доступные include

Эндпоинт GET /v1/deals/fields возвращает список доступных include: contact, company.

Пример использования: Получить deals.

Подробнее об include: Связанные данные.

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

JSON
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true, "label": "ID сделки", "description": "Уникальный числовой идентификатор сделки." },
      "title": { "type": "string", "readonly": false, "label": "Название", "description": "Название сделки." },
      "assignedById": { "type": "number", "readonly": false, "label": "Ответственный", "description": "ID ответственного пользователя. Список: GET /v1/users." },
      "stageSemanticId": { "type": "string", "readonly": true, "label": "Семантика стадии", "description": "Смысловая категория текущей стадии — коды расшифрованы в enum.", "enum": [{ "value": "P", "label": "In progress", "labelRu": "В работе" }, { "value": "S", "label": "Success", "labelRu": "Успех" }, { "value": "F", "label": "Failure", "labelRu": "Провал" }] }
    },
    "batch": ["create", "update", "delete"]
  }
}

Показаны 3 из множества полей. Полный список в таблице выше.

Ошибки

HTTP Код Описание
403 SCOPE_DENIED API-ключ не имеет скоупа crm
401 TOKEN_MISSING API-ключ не имеет настроенных токенов
429 RATE_LIMITED Превышен лимит запросов: 300 в минуту на портал, все API-ключи портала делят один лимит. Точное значение — в заголовке x-ratelimit-limit (потолок делится на реплики). Повторите после срока из заголовка Retry-After

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

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