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
curl "https://vibecode.bitrix24.com/v1/tasks/fields" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/tasks/fields" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
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
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 viaGET/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:
{
"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.
{
"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:
{
"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.