For AI agents: markdown of this page — /docs-content-en/entities/tasks/fields.md documentation index — /llms.txt

Task fields

GET /v1/tasks/fields

Returns the task field schema: types, read-only flags, the nullable marker, human-readable label and description, value enumerations for status, priority, mark and durationType, and — for the fields the Bitrix24 account serves dynamically — the dictionary of accepted values values plus the default value default.

Field names match those in the list and card responses, and the declared types match the returned values: number fields return numbers, and boolean fields return true or false.

Examples

curl — personal key

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

curl — OAuth application

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

JavaScript — personal key

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

const { success, data } = await res.json()
console.log('Fields:', Object.keys(data.fields).length)
console.log('status values:', data.fields.status.enum)

JavaScript — OAuth application

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

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

Response fields

Every task field is described in camelCase — under the same name the response carries. Raw upper-case names are gone from the schema. There are two expected exceptions: the account's user fields (UF_*) and CHECKLIST — their set depends on the account, so they arrive dynamically (see Account-specific fields).

The "Bitrix24" column gives the name the field is accepted under in filter, sort and select. The "null" column says whether the field can arrive empty.

The exception is realStatus: it is a filter-and-sort-only service name marked notReturned: true. An explicit select=realStatus returns an UNKNOWN_SELECT_FIELD warning, and no separate value is present in the response. Use select=status to read the actual status.

The label and description field captions are returned in English, while the ones the platform takes straight from the Bitrix24 account come in the account language. Request headers do not switch the language. Enum values carry an English label.

Field Bitrix24 Type RO null Description
Fieldid Bitrix24ID Typenumber ROyes null DescriptionTask identifier
Fieldtitle Bitrix24TITLE Typestring RO null DescriptionTask title
Fielddescription Bitrix24DESCRIPTION Typestring RO nullyes DescriptionDescription (supports BB-code)
FieldresponsibleId Bitrix24RESPONSIBLE_ID Typenumber RO null DescriptionResponsible person. List: GET /v1/users
FieldcreatedBy Bitrix24CREATED_BY Typenumber RO null DescriptionCreator. Defaults to the key's user. Can be set both on create and in PATCH — Bitrix24 applies the value within the permissions of the calling user. Pass an existing employee only, otherwise the task stops being manageable through the API (see PATCH /v1/tasks/:id). List: GET /v1/users
Fieldstatus Bitrix24STATUS Typenumber RO null DescriptionTask status. Allowed values in fields.status.enum. filter[status] is a virtual (meta) filter: here Bitrix24 expects −1 (overdue), −2 (unviewed), −3 (almost overdue), not the number from the status field of the response — so filter[status]=2 will NOT return all tasks with status 2. To filter by the actual status use realStatus
FieldrealStatus Bitrix24REAL_STATUS Typenumber ROyes null DescriptionReal (actual stored) task status — matches the status field value in the response. filter/sort only: ?filter[realStatus]=2, ?sort=realStatus — unlike the virtual filter[status], it filters by the stored status. Same values as status (see fields.status.enum). Not returned separately in the response body (the real status is already in status) — the schema marks this with notReturned. Change the status via status
Fieldpriority Bitrix24PRIORITY Typenumber RO null DescriptionTask priority. Allowed values in fields.priority.enum
FieldgroupId Bitrix24GROUP_ID Typenumber RO null DescriptionWorkgroup. List: GET /v1/workgroups
FieldparentId Bitrix24PARENT_ID Typenumber RO nullyes DescriptionParent task. List: GET /v1/tasks
Fielddeadline Bitrix24DEADLINE Typedatetime RO nullyes DescriptionDeadline (ISO 8601)
FielddateStart Bitrix24DATE_START Typedatetime ROyes nullyes DescriptionThe actual date when work on the task started. Filterable: ?filter[>=dateStart]=2026-05-01T00:00:00
FieldstartDatePlan Bitrix24START_DATE_PLAN Typedatetime RO nullyes DescriptionPlanned start date
FieldendDatePlan Bitrix24END_DATE_PLAN Typedatetime RO nullyes DescriptionPlanned end date
FieldtimeEstimate Bitrix24TIME_ESTIMATE Typenumber RO null DescriptionEffort estimate in seconds
FieldtimeSpentInLogs Bitrix24TIME_SPENT_IN_LOGS Typenumber ROyes nullyes DescriptionTime actually spent, in seconds — the sum of the time-tracking entries, see Task time tracking. Until such entries exist, the field arrives as null. Selectable via ?select=timeSpentInLogs and sortable via ?sort=-timeSpentInLogs. A filter on this field is silently ignored — the request returns the same set as one without it. The sum over a selection comes from aggregation
Fieldtags Bitrix24TAGS Typeobject RO null DescriptionTask tags. A dictionary keyed by tag identifier: { "<id>": { "id": <id>, "title": "<tag>" } }. With no tags — {}. Filter by a single tag: ?filter[tags]=tag (translated to Bitrix24 TAG)
Fieldaccomplices Bitrix24ACCOMPLICES Typearray RO null DescriptionParticipants. List: GET /v1/users. Filter by a single user: ?filter[accomplices]=25 (translated to Bitrix24 ACCOMPLICE)
Fieldauditors Bitrix24AUDITORS Typearray RO null DescriptionObservers. List: GET /v1/users. Filter by a single user: ?filter[auditors]=25 (translated to Bitrix24 AUDITOR)
FieldclosedDate Bitrix24CLOSED_DATE Typedatetime RO nullyes DescriptionClosing date (set on transition to status 5 or 6). A service field, but accepted on writes — see PATCH /v1/tasks/:id
FieldcreatedDate Bitrix24CREATED_DATE Typedatetime RO null DescriptionCreation date. A service field, but accepted on writes — see PATCH /v1/tasks/:id
FieldchangedDate Bitrix24CHANGED_DATE Typedatetime RO null DescriptionDate of the last change. A service field, but accepted on writes — the submitted value is stored instead of the current time, see PATCH /v1/tasks/:id
FieldchangedBy Bitrix24CHANGED_BY Typenumber RO null DescriptionID of the user who last modified the task. A service field, but accepted on writes — see PATCH /v1/tasks/:id. List: GET /v1/users
FieldclosedBy Bitrix24CLOSED_BY Typenumber RO nullyes DescriptionID of the user who closed the task. A service field, but accepted on writes — see PATCH /v1/tasks/:id. List: GET /v1/users
FieldstatusChangedBy Bitrix24STATUS_CHANGED_BY Typenumber RO nullyes DescriptionID of the user who last changed the task status. A service field, but accepted on writes — see PATCH /v1/tasks/:id. List: GET /v1/users
FieldactivityDate Bitrix24ACTIVITY_DATE Typedatetime ROyes null DescriptionDate of the last activity (includes comments, unlike changedDate). Always returned and selectable via ?select=activityDate. Important: not filterable on the Bitrix24 side — use changedDate for filtering
Fieldmark Bitrix24MARK Typestring RO nullyes DescriptionSupervisor rating of the task. Values live in fields.mark.enum (P — positive, N — negative). null until rated
Fieldmultitask Bitrix24MULTITASK Typeboolean RO null DescriptionThe task has several responsible users
FieldnotViewed Bitrix24NOT_VIEWED Typeboolean ROyes null DescriptionThe responsible user has not opened the task yet. Specific to the key's user
Fieldreplicate Bitrix24REPLICATE Typeboolean RO null DescriptionThe task is a recurring-task template
FieldstageId Bitrix24STAGE_ID Typenumber RO null DescriptionKanban stage. 0 when the task is not on a board
FieldsprintId Bitrix24SPRINT_ID Typenumber RO nullyes DescriptionScrum sprint
FieldbacklogId Bitrix24BACKLOG_ID Typenumber RO nullyes DescriptionScrum backlog
FieldstatusChangedDate Bitrix24STATUS_CHANGED_DATE Typedatetime ROyes null DescriptionWhen the status last changed. Important: not filterable on the Bitrix24 side — use changedDate
Fieldguid Bitrix24GUID Typestring ROyes null DescriptionGlobal identifier in braces, preserved across export and import. Use id for requests
FieldxmlId Bitrix24XML_ID Typestring RO nullyes DescriptionArbitrary code for matching with an external system, up to 50 characters. A longer value is not rejected on write — only the first 50 characters are stored, and filter[xmlId] with the original value does not find the task
FieldcommentsCount Bitrix24COMMENTS_COUNT Typenumber ROyes nullyes DescriptionTotal comments on the task
FieldserviceCommentsCount Bitrix24SERVICE_COMMENTS_COUNT Typenumber ROyes nullyes DescriptionHow many automatic comments Bitrix24 itself added — about a status change, for example
FieldnewCommentsCount Bitrix24NEW_COMMENTS_COUNT Typenumber ROyes null DescriptionUnread comments. Specific to the key's user
FieldallowChangeDeadline Bitrix24ALLOW_CHANGE_DEADLINE Typeboolean RO null DescriptionThe responsible user may move deadline themselves
FieldallowTimeTracking Bitrix24ALLOW_TIME_TRACKING Typeboolean RO null DescriptionTime tracking is enabled. Entries — GET /v1/tasks/{taskId}/time
FieldchatId Bitrix24CHAT_ID Typenumber ROyes nullyes DescriptionTask discussion chat. Messages — GET /v1/tasks/{taskId}/chat/messages
FielddurationPlan Bitrix24DURATION_PLAN Typenumber RO nullyes DescriptionPlanned effort in durationType units
FielddurationFact Bitrix24DURATION_FACT Typenumber ROyes nullyes DescriptionActual effort in durationType units
FielddurationType Bitrix24DURATION_TYPE Typestring RO null DescriptionThe unit of measure for durationPlan and durationFact. Values live in fields.durationType.enum
Fieldfavorite Bitrix24FAVORITE Typeboolean ROyes null DescriptionIn favorites. Specific to the key's user. Manage via POST/DELETE /v1/tasks/{taskId}/favorite
Fieldsorting Bitrix24SORTING Typenumber ROyes nullyes DescriptionManual sort weight inside a list
FieldisMuted Bitrix24IS_MUTED Typeboolean ROyes null DescriptionNotifications muted. Specific to the key's user
FieldisPinned Bitrix24IS_PINNED Typeboolean ROyes null DescriptionPinned in the task list. Specific to the key's user. Manage via POST/DELETE /v1/tasks/{taskId}/pin
FieldisPinnedInGroup Bitrix24IS_PINNED_IN_GROUP Typeboolean ROyes null DescriptionPinned inside its workgroup list
FieldflowId Bitrix24FLOW_ID Typenumber ROyes nullyes DescriptionFlow the task was created in
FieldsiteId Bitrix24SITE_ID Typestring ROyes null DescriptionThe Bitrix24 account site the task belongs to
FieldforumId Bitrix24FORUM_ID Typenumber ROyes nullyes DescriptionInternal comment storage
FieldforumTopicId Bitrix24FORUM_TOPIC_ID Typenumber ROyes nullyes DescriptionInternal comment storage
FieldexchangeId Bitrix24EXCHANGE_ID Typenumber ROyes nullyes DescriptionMicrosoft Exchange identifier. Populated only on Bitrix24 accounts with synchronization
FieldexchangeModified Bitrix24EXCHANGE_MODIFIED Typedatetime ROyes nullyes DescriptionWhen the task last changed on the Microsoft Exchange side
FieldoutlookVersion Bitrix24OUTLOOK_VERSION Typenumber ROyes null DescriptionRevision counter for Microsoft Outlook synchronization
FieldviewedDate Bitrix24VIEWED_DATE Typedatetime ROyes nullyes DescriptionWhen the key's user last opened the task
Fieldsubordinate Bitrix24SUBORDINATE Typeboolean ROyes null DescriptionThe task belongs to a subordinate of the key's user
FieldtaskControl Bitrix24TASK_CONTROL Typeboolean RO null DescriptionOnce completed, the task returns to the creator for approval
FieldaddInReport Bitrix24ADD_IN_REPORT Typeboolean RO null DescriptionThe task is counted in efficiency reports
FieldmatchWorkTime Bitrix24MATCH_WORK_TIME Typeboolean RO null DescriptionDeadline calculation skips weekends and holidays
FieldforkedByTemplateId Bitrix24FORKED_BY_TEMPLATE_ID Typenumber ROyes nullyes DescriptionTemplate the task was created from. null when created manually
FielddescriptionInBbcode Bitrix24DESCRIPTION_IN_BBCODE Typeboolean ROyes null DescriptionThe description field holds BB-code rather than plain text
Fieldcreator Bitrix24— Typeobject ROyes null DescriptionCreator card: name, link, avatar. Not filterable and not selectable via select
Fieldresponsible Bitrix24— Typeobject ROyes null DescriptionResponsible user card. Not filterable and not selectable via select
FieldaccomplicesData Bitrix24— Typeobject ROyes null DescriptionParticipant cards keyed by user ID. With no participants — {}
FieldauditorsData Bitrix24— Typeobject ROyes null DescriptionObserver cards keyed by user ID. With no observers — {}
Fieldgroup Bitrix24— Typeobject ROyes null DescriptionWorkgroup card: name, image. With no group — {}

status values — the fields.status.enum field:

Value Label Description
Value1 LabelNew DescriptionInitial state. New tasks are created with status 2. The value 1 is found in tasks imported from external systems or migrated from older Bitrix24 versions
Value2 LabelPending DescriptionPending. The default status for new tasks
Value3 LabelIn Progress DescriptionIn progress
Value4 LabelAwaiting Control DescriptionAwaiting control. The responsible user marked the task as done. The creator must confirm
Value5 LabelCompleted DescriptionCompleted
Value6 LabelDeferred DescriptionDeferred
Value7 LabelDeclined DescriptionDeclined

priority values — the fields.priority.enum field:

Value Label
Value0 LabelLow
Value1 LabelNormal
Value2 LabelHigh

User fields (UF_*) are accepted on create/update and in filters in both spellings — ufCrmTask and UF_CRM_TASK (camelCase is converted automatically). Important: UF_CRM_TASK (the CRM binding) accepts an array of binding identifiers — ["D_123"] (deal), ["C_45"] (contact), ["CO_7"] (company), ["L_9"] (lead). A string instead of an array ("D_123") is silently ignored by Bitrix24 — the value will not be saved (verified on a live Bitrix24 account).

File fields accept an array of strings shaped as n<id>, where id is the file identifier from the POST /v1/files/upload response. A task has one standard file field — ufTaskWebdavFiles — plus any user fields of the file type created by the Bitrix24 account administrator. A sample value is ["n9759"]. Any other shape — a number, a string without the prefix, a single string instead of an array — is rejected with 400 INVALID_DISK_ATTACHMENT_VALUE, and no attachment is created.

A write replaces the whole attachment list of the task. An empty array [] removes every attachment. Clearing with an empty array works on POST /v1/tasks and PATCH /v1/tasks/:id; in a batch request (POST /v1/batch, POST /v1/tasks/batch) an empty array does not reach the wire and the attachments stay in place, so send the clear as a single request. On read the field returns numbers other than the ones sent on write: these are attachment identifiers that change on every rewrite of the field and do not match the file identifiers in Drive. To address the file itself, store the id from the upload response.

Account-specific fields

Beyond the declared fields above, GET /v1/tasks/fields returns the fields that depend on the particular Bitrix24 account and therefore cannot be described in advance:

  • user fields (UF_* / uf*) — their set is defined by the Bitrix24 account administrator.
  • CHECKLIST — checklist items, read-only here. Manage via GET/POST /v1/tasks/{taskId}/checklist.

For such fields type comes from the account, and with it the dictionary of accepted values values and the default value default:

JSON
{
  "CHECKLIST": {
    "type": "enum",
    "readonly": false,
    "label": "Checklist",
    "description": "Checklist items of the task. Read-only here — items are created and changed through the task checklist endpoints.",
    "values": [
      { "value": "Y", "label": "Yes" },
      { "value": "N", "label": "No" }
    ],
    "default": "N"
  }
}

The label of a dictionary entry comes from the account and is localized according to the account's settings. Where the account serves bare codes with no captions, the entry has no label.

Six fields are per-user, not properties of the task. favorite, isMuted, isPinned, newCommentsCount, notViewed and viewedDate describe how the task relates to the user the API key acts on behalf of — a different key on the same Bitrix24 account will see different values here. Do not cache them as task attributes.

The monts typo in durationType comes from Bitrix24. We pass the dictionary through as-is because that is the spelling the account accepts. A "corrected" months would not be understood.

values and items are different keys with different shapes. values is the normalized dictionary above. items is the raw Bitrix24 enumeration reference list for fields of type enumeration, passed through as-is: [{ "ID": "1", "VALUE": "First" }]. The guarantee is per key: each one always has its own shape. Read the one you need by name rather than "whichever dictionary you come across first" — on today's Bitrix24 accounts a field carries only one of the two, but we do not forbid both being present.

Nullability. Fields that really do arrive empty carry nullable: true in the schema and a mark in the "null" column above — 27 of them today. For type-safe clients (TS) declare such fields as T | null. Empty accomplices and auditors arrive as [] — they are lists. Empty tags, group, accomplicesData and auditorsData arrive as {} — they are dictionaries.

Lists and cards differ in their key sets. This is a property of Bitrix24 rather than of this wrapper, so those fields are deliberately absent from the schema: subStatus arrives only in the list, while action, checklist, checkListTree and checkListCanAdd arrive only in the card. They are still returned in the response.

Response example

A few fields are shown as an example. The full response contains every declared field plus the account's user fields.

JSON
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true },
      "title": { "type": "string", "readonly": false },
      "description": { "type": "string", "readonly": false },
      "responsibleId": { "type": "number", "readonly": false },
      "createdBy": { "type": "number", "readonly": false },
      "status": {
        "type": "number",
        "readonly": false,
        "enum": [
          { "value": 1, "label": "New" },
          { "value": 2, "label": "Pending" },
          { "value": 3, "label": "In Progress" },
          { "value": 4, "label": "Awaiting Control" },
          { "value": 5, "label": "Completed" },
          { "value": 6, "label": "Deferred" },
          { "value": 7, "label": "Declined" }
        ]
      },
      "priority": {
        "type": "number",
        "readonly": false,
        "enum": [
          { "value": 0, "label": "Low" },
          { "value": 1, "label": "Normal" },
          { "value": 2, "label": "High" }
        ]
      },
      "deadline": { "type": "datetime", "readonly": false },
      "createdDate": { "type": "datetime", "readonly": false },
      "changedDate": { "type": "datetime", "readonly": false }
    }
  }
}

Error response example

403 — no scope:

JSON
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'tasks' scope"
  }
}

Errors

HTTP Code Description
HTTP403 CodeSCOPE_DENIED DescriptionThe API key does not have the tasks scope
HTTP401 CodeTOKEN_MISSING DescriptionThe API key has no configured tokens
HTTP429 CodeRATE_LIMITED DescriptionRate limit exceeded: 300 requests per minute per portal. All API keys of the portal share one limit. The current limit is returned in the x-ratelimit-limit header. Retry after the delay in the Retry-After header

For the full list of common API errors, see Errors.

See also

Field schema IDs and enumeration variants: Task fields, GET /v1/userfields/tasks.