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

Задачи

Управление задачами портала: создание, чтение, обновление, удаление, фильтрация, агрегация. Задача — единица работы с ответственным, постановщиком, сроком и статусом. У одной задачи могут быть комментарии и записи учёта времени — это отдельные вложенные ресурсы.

Битрикс24 API: tasks.task.* Скоуп: tasks

Создать задачу

POST /v1/tasks

Создаёт новую задачу. Минимум — название и ответственный.

Поля запроса (body)

Поле Тип Обяз. Описание
title string ★ Название задачи
responsibleId number ★ Ответственный. Список сотрудников: GET /v1/users
description string Описание задачи. Поддерживает BB-код ([USER=ID]Имя[/USER], [B]...[/B], [QUOTE]...[/QUOTE])
priority number Приоритет: 0 — низкий, 1 — обычный (по умолчанию), 2 — высокий
status number Статус. По умолчанию 2 (ждёт выполнения). Полный список значений: GET /v1/tasks/fields → fields.status.enum
deadline datetime Крайний срок (ISO 8601)
startDatePlan datetime Плановая дата начала
endDatePlan datetime Плановая дата окончания
timeEstimate number Оценка трудозатрат в секундах
groupId number Рабочая группа. Список: GET /v1/workgroups
parentId number Родительская задача. Список: GET /v1/tasks
accomplices number[] Соисполнители. Список сотрудников: GET /v1/users
auditors number[] Наблюдатели. Список сотрудников: GET /v1/users
tags string[] Метки задачи (массив строк-имён, принимаются прямо при создании)
xmlId string Внешний код для сопоставления задачи с записью в вашей системе, до 50 символов — см. предупреждение под таблицей. Поиск по нему: GET /v1/tasks?filter[xmlId]=<значение>
ufTaskWebdavFiles string[] Файлы задачи. Массив строк вида n<id>, где id — идентификатор файла из ответа POST /v1/files/upload. Пример — ["n9759"]. Полное правило для полей-файлов — Поля задачи
createdBy number Постановщик. По умолчанию — пользователь ключа, переопределение применяется в пределах прав вызывающего пользователя. Только существующий сотрудник — см. предупреждение под таблицей. Список сотрудников: GET /v1/users
changedBy number Служебное поле: кто последним изменил задачу. Принимается на записи — см. раздел под таблицей. Список сотрудников: GET /v1/users
closedBy number Служебное поле: кто закрыл задачу. Принимается на записи — см. раздел под таблицей. Список сотрудников: GET /v1/users
statusChangedBy number Служебное поле: кто последним сменил статус. Принимается на записи — см. раздел под таблицей. Список сотрудников: GET /v1/users
createdDate datetime Служебное поле: дата создания задачи, ISO 8601. Принимается на записи — см. раздел под таблицей
changedDate datetime Служебное поле: дата последнего изменения, ISO 8601. Переданное значение сохраняется вместо текущего времени — см. раздел под таблицей
closedDate datetime Служебное поле: дата закрытия, ISO 8601. Принимается на записи даже у незакрытой задачи — см. раздел под таблицей

Полный список полей — GET /v1/tasks/fields. Поля id, dateStart, activityDate, realStatus заполняются системой и в body не передаются.

Служебные поля задачи можно задавать

Кроме createdBy, при создании принимаются changedBy, closedBy, statusChangedBy, createdDate, changedDate, closedDate. Битрикс24 сохраняет переданные значения, а Вайбкод — обёртка над ним и не запрещает того, что разрешает платформа. Принимаются оба написания — и createdBy, и CREATED_BY. Передавайте одно из двух, а не оба сразу: при обоих в одном теле применится то, которое встретится позже. Те же поля принимаются и при обновлении — там же разобрано, что остаётся в журнале задачи и как ведёт себя дата без часового пояса.

Передавайте только существующего сотрудника. Битрикс24 не проверяет идентификатор пользователя на существование ни в createdBy, ни в changedBy, closedBy, statusChangedBy — он запишет любое число. Задача с несуществующим постановщиком перестаёт управляться через API: отказ приходит и на дальнейшее обновление, и на удаление, причём даже ключу администратора и напрямую в Битрикс24, минуя нас. Отменить это через API нельзя. Список сотрудников: GET /v1/users.

Важно: название длиннее 250 символов Битрикс24 не отклоняет — он молча обрезает его до 250. Эмодзи перед обрезкой заменяются служебной последовательностью, поэтому название с эмодзи обрезается раньше. Проверяйте title в ответе, если длина названия важна.

Важно: xmlId длиннее 50 символов не отклоняется — сохраняются только первые 50. Фильтр filter[xmlId] ищет по точному совпадению, поэтому по исходному длинному значению задача не найдётся. Чтобы найти задачу, когда ответ на создание потерян, передавайте xmlId не длиннее 50 символов, например UUID из 36 символов, и ищите её через GET /v1/tasks?filter[xmlId]=<значение>.

Примеры

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/tasks" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Подготовить отчёт за квартал",
    "responsibleId": 1,
    "priority": 2,
    "deadline": "2026-05-19T18:00:00+03:00"
  }'

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/tasks" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Подготовить отчёт за квартал",
    "responsibleId": 1,
    "priority": 2,
    "deadline": "2026-05-19T18:00:00+03:00"
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/tasks', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'Подготовить отчёт за квартал',
    responsibleId: 1,
    priority: 2,
    deadline: '2026-05-19T18:00:00+03:00',
  }),
})

const { success, data } = await res.json()
console.log('ID новой задачи:', data.id)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/tasks', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'Подготовить отчёт за квартал',
    responsibleId: 1,
    priority: 2,
    deadline: '2026-05-19T18:00:00+03:00',
  }),
})

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

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data object Полный объект созданной задачи (как у GET /v1/tasks/:id) — см. Поля задачи

URL карточки задачи в Битрикс24 строится из id и ID сотрудника:

https://<portal>.bitrix24.ru/company/personal/user/<responsibleId>/tasks/task/view/<id>/

<responsibleId> — ID ответственного (поле responsibleId в ответе): задача откроется в его личном кабинете. Сегмент user/<...> задаёт, в чьём кабинете отображается страница задач — подставьте ID нужного сотрудника, например текущего. <portal> — домен портала. Доступ ограничен правами сотрудника в Битрикс24.

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

JSON
{
  "success": true,
  "data": {
    "id": 3871,
    "title": "Подготовить отчёт за квартал",
    "description": "",
    "status": 2,
    "priority": 2,
    "responsibleId": 1,
    "createdBy": 1,
    "createdDate": "2026-05-12T08:46:12.000Z",
    "deadline": "2026-05-19T15:00:00.000Z",
    "groupId": 0,
    "accomplices": [],
    "auditors": [],
    "creator": {
      "id": "1",
      "name": "Текущий пользователь",
      "link": "/company/personal/user/1/"
    },
    "responsible": {
      "id": "1",
      "name": "Текущий пользователь",
      "link": "/company/personal/user/1/"
    }
  }
}

Пример ответа при ошибке

422 — не указан ответственный:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Не указан исполнитель"
  }
}

Ошибки

HTTP Код Описание
422 BITRIX_ERROR Битрикс24 отклонил создание задачи — например, не передано обязательное поле title или responsibleId, либо переданное значение отклонено порталом
400 READONLY_FIELD В теле запроса передано поле, доступное только на чтение (id, dateStart, activityDate, realStatus)
400 INVALID_DISK_ATTACHMENT_VALUE Значение поля-файла передано не массивом строк вида n<id> — числом, строкой без префикса или одиночной строкой вместо массива
403 SCOPE_DENIED API-ключ не имеет скоупа tasks
401 TOKEN_MISSING API-ключ не имеет настроенных токенов

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

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