Для AI-агентов: markdown этой страницы — /docs-content/entities/activities/owner-create.md индекс документации — /llms.txt
Создать дело у карточки CRM
POST /v1/deals/{id}/activities
POST /v1/leads/{id}/activities
POST /v1/contacts/{id}/activities
POST /v1/companies/{id}/activities
Адрес выбирает одного владельца: сделку (deals, тип владельца 2), лид (leads, 1), контакт (contacts, 3) или компанию (companies, 4). Скоуп: crm. Поддерживаются личные ключи и ключи OAuth-приложений.
Когда использовать
Этот маршрут создаёт дело с владельцем, выбранным в адресе. Обработчик заменяет camelCase-поля тела ownerTypeId и ownerId владельцем из адреса. Не передавайте поля владельца в теле. Локально тело необязательно. Итоговые поля проверяет Битрикс24.
Для полного контракта дела в camelCase используйте POST /v1/activities: он принимает typeId, communications и поля владельца в теле и возвращает дело. Вложенный метод использует type для PROVIDER_TYPE_ID, исходные TYPE_ID и COMMUNICATIONS для соответствующих полей и возвращает только data.id. Для фильтров и сортировки используйте GET /v1/activities.
Параметры
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
id (путь) |
string | Да | ID владельца из списка сделок, лидов, контактов или компаний. |
subject, description |
string | Нет местной проверки | Преобразуются в SUBJECT и DESCRIPTION. Обязательность полей проверяет Битрикс24. |
type |
string | Нет | email, call, meeting, task → PROVIDER_TYPE_ID. Это не числовой TYPE_ID. |
completed |
boolean / string | Нет | true/false → Y/N. Остальные значения передаются без изменений. |
responsibleId |
number / string | Нет | Ответственный сотрудник из списка пользователей. |
priority, direction |
number / string | Нет | Передаются в PRIORITY и DIRECTION. |
deadline, startTime, endTime |
string | Нет | Передаются в DEADLINE, START_TIME, END_TIME. Указывайте смещение часового пояса явно. |
id, createdAt, updatedAt (тело) |
number / string | Нет | Преобразуются в ID, CREATED, LAST_UPDATED, если переданы. Допустимость решает Битрикс24. Обычно эти служебные поля следует опустить. |
TYPE_ID |
integer | Нет местной проверки | Исходный числовой тип дела, например 2 для звонка. typeId не преобразуется. |
COMMUNICATIONS |
array | Нет местной проверки | Исходные объекты коммуникаций: VALUE, ENTITY_TYPE_ID, ENTITY_ID. ID контакта возьмите из списка контактов. communications и вложенные ключи не преобразуются. |
| Остальные ключи | any | Нет | Передаются без изменений. Используйте названия полей Битрикс24. |
Примеры
curl — личный ключ
curl -X POST "https://vibecode.bitrix24.tech/v1/deals/575/activities" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": "Позвонить клиенту",
"type": "call",
"TYPE_ID": 2,
"completed": false,
"responsibleId": 1,
"COMMUNICATIONS": [
{
"VALUE": "+12025550123",
"ENTITY_TYPE_ID": 3,
"ENTITY_ID": 17
}
]
}'
curl — OAuth-приложение
curl -X POST "https://vibecode.bitrix24.tech/v1/deals/575/activities" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subject": "Позвонить клиенту",
"type": "call",
"TYPE_ID": 2,
"completed": false,
"responsibleId": 1,
"COMMUNICATIONS": [
{
"VALUE": "+12025550123",
"ENTITY_TYPE_ID": 3,
"ENTITY_ID": 17
}
]
}'
JavaScript — личный ключ
const response = await fetch('https://vibecode.bitrix24.tech/v1/deals/575/activities', {
method: 'POST',
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"subject": "Позвонить клиенту",
"type": "call",
"TYPE_ID": 2,
"completed": false,
"responsibleId": 1,
"COMMUNICATIONS": [
{
"VALUE": "+12025550123",
"ENTITY_TYPE_ID": 3,
"ENTITY_ID": 17
}
]
}),
})
const result = await response.json()
if (!response.ok || !result.success) throw new Error(JSON.stringify(result.error))
console.log(result.data)
JavaScript — OAuth-приложение
const response = await fetch('https://vibecode.bitrix24.tech/v1/deals/575/activities', {
method: 'POST',
headers: {
"X-Api-Key": "YOUR_APP_KEY",
"Authorization": "Bearer USER_SESSION_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"subject": "Позвонить клиенту",
"type": "call",
"TYPE_ID": 2,
"completed": false,
"responsibleId": 1,
"COMMUNICATIONS": [
{
"VALUE": "+12025550123",
"ENTITY_TYPE_ID": 3,
"ENTITY_ID": 17
}
]
}),
})
const result = await response.json()
if (!response.ok || !result.success) throw new Error(JSON.stringify(result.error))
console.log(result.data)
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | true при успехе, HTTP 201. |
data.id |
number / string | ID созданного дела из Битрикс24 без преобразования. Само дело дополнительно не запрашивается. |
Пример ответа
Пример структуры ответа:
{
"success": true,
"data": {
"id": 3894
}
}
Пример ответа при ошибке
400 — неподдерживаемый тип дела:
{
"success": false,
"error": {
"code": "INVALID_ACTIVITY_TYPE",
"message": "Invalid activity type 'sms'. Available: email, call, meeting, task"
}
}
Ошибки
| HTTP | Код | Условие |
|---|---|---|
| 400 | INVALID_PARAMS |
Битрикс24 отклонил параметр. |
| 401 | TOKEN_MISSING |
Не настроены учётные данные Битрикс24. |
| 403 | SCOPE_DENIED |
У ключа нет скоупа crm. |
| 404 | ENTITY_NOT_FOUND |
Битрикс24 сообщил об отсутствии сущности. Отдельной проверки существования владельца нет. |
| 422 | BITRIX_ERROR |
Отказ Битрикс24 без более точного сопоставления. |
| 403 | WRITE_BLOCKED_READONLY_KEY |
Ключ READONLY не может создавать дела. |
| 400 | INVALID_ACTIVITY_TYPE |
Непустой type не входит в четыре поддерживаемых значения. |