For AI agents: markdown of this page — /docs-content-en/entities/activities/fields.md documentation index — /llms.txt
Activity fields
GET /v1/activities/fields
Returns the full list of available activity fields.
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/activities/fields" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/activities/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/activities/fields', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data } = await res.json()
console.log('Fields:', Object.keys(data.fields).length)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/activities/fields', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
Response fields
The label and description field captions are returned in English. Request headers do not switch the language.
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | DescriptionAlways true on success |
Fielddata.fields |
Typeobject | DescriptionThe activity field schema: field name → type, readonly, label, description. Required fields carry required: true, the field that can only be set on creation carries createOnly: true, the field accepted on creation but refused on update carries readonlyOnUpdate: true, and fields with a fixed set of values carry an enum list. Every field of the map is listed in the table below |
Fielddata.relations |
Typeobject | DescriptionRelated entities with the includable flag: responsible, author, and editor, all three pointing to users |
Fielddata.aggregatable |
Typearray | DescriptionFields allowed in the groupBy of activity aggregation: typeId, ownerTypeId, responsibleId, authorId, editorId, completed, status, direction, providerId, providerTypeId |
Fielddata.aggregateFilterRequirement |
Typeobject | DescriptionThe narrowing filter that activity aggregation requires. anchors lists the accepted narrowings: the ownerTypeId + ownerId pair, the responsibleId field, or a date bound on createdAt, updatedAt, deadline. One is enough, as mode: "anyOfAnchors" states. enforcement is enforced when the account already rejects aggregation without a narrowing, or advisory while the narrowing is only recommended |
Fielddata.batch |
Typearray | DescriptionActivity operations available in POST /v1/batch: create, update, delete |
Fielddata.include |
Typearray | DescriptionThe names the include parameter accepts |
Fieldmeta.warnings |
Typearray | DescriptionReturned only when the field list could not be fetched from the Bitrix24 account: an element { code: "fields_partial", message }. data.fields then holds only the fields the platform declares, and some captions may be missing. Repeat the request to get the full set |
Fields of the `data.fields` map
| Field | Type | RO | Description |
|---|---|---|---|
Fieldid |
Typenumber | ROyes | DescriptionActivity ID |
FieldtypeId |
Typenumber | RO | DescriptionType: 1 — meeting, 2 — call, 3 — task, 4 — email, 5 — action, 6 — custom action (required at creation). Can be set at creation only and cannot be changed |
FieldownerTypeId |
Typenumber | RO | DescriptionParent entity type: 1 — lead, 2 — deal, 3 — contact, 4 — company |
FieldownerId |
Typenumber | RO | DescriptionParent entity ID. Lookup depends on ownerTypeId: GET /v1/deals, GET /v1/leads, GET /v1/contacts, GET /v1/companies |
FieldassociatedEntityId |
Typenumber | ROyes | DescriptionID of the associated entity (call/email/meeting in the Bitrix24 module). Filled automatically by the corresponding provider after the activity is created |
Fieldsubject |
Typestring | RO | DescriptionActivity subject (required at creation) |
Fieldcommunications |
Typeobject[] | RO | DescriptionActivity communications (required at creation). An array of objects: [{ "value": "+1…", "entityTypeId": 3, "entityId": 17 }] — nested keys in camelCase or Bitrix24 UPPER case. Details — Create activity |
Fielddescription |
Typestring | RO | DescriptionDescription |
FielddescriptionType |
Typenumber | RO | DescriptionFormat of description: 1 — plain text, 2 — BBCode, 3 — HTML |
FieldresponsibleId |
Typenumber | RO | DescriptionResponsible person. List: GET /v1/users |
FieldauthorId |
Typenumber | ROyes | DescriptionRecord author. Filled by Bitrix24 based on the current user at creation |
FieldeditorId |
Typenumber | ROyes | DescriptionLast editor. Updated by Bitrix24 on every change |
Fieldpriority |
Typenumber | RO | DescriptionPriority: 1 — low, 2 — medium, 3 — high |
Fielddirection |
Typenumber | RO | DescriptionDirection: 1 — incoming, 2 — outgoing |
Fieldlocation |
Typestring | RO | DescriptionVenue (for meetings) |
Fieldcompleted |
Typeboolean | RO | DescriptionCompleted |
Fieldstatus |
Typenumber | RO | DescriptionActivity status: 1 — waiting, 2 — completed, 3 — auto-completed |
FieldstartTime |
Typedatetime | RO | DescriptionStart date |
FieldendTime |
Typedatetime | RO | DescriptionEnd date |
Fielddeadline |
Typedatetime | RO | DescriptionDeadline. Activities without a deadline return the sentinel value 9999-12-30T21:00:00.000Z — not a real date. A less-than date filter filter[<deadline]=<date> does not match such activities, and they are not treated as overdue. An update that includes the field is refused with 400 READONLY_FIELD — change the deadline with POST /v1/activities/:id/deadline. Marked readonlyOnUpdate in the /fields response |
FieldcreatedAt |
Typedatetime | ROyes | DescriptionCreation date |
FieldupdatedAt |
Typedatetime | ROyes | DescriptionModification date |
FieldnotifyType |
Typenumber | RO | DescriptionReminder type: 0 — off, 1 — minutes before, 2 — hours before, 3 — days before |
FieldnotifyValue |
Typenumber | RO | DescriptionReminder value (in the units given by notifyType) |
FieldproviderId |
Typestring | RO | DescriptionActivity provider ID, for example CALL_LIST for a call list activity, CRM_EMAIL for an email, IMOPENLINES_SESSION for an Open Channel conversation, TASKS for a task |
FieldproviderTypeId |
Typestring | RO | DescriptionProvider subtype (depends on providerId) |
FieldproviderGroupId |
Typestring | RO | DescriptionProvider group identifier (for example, an email thread) |
FieldproviderParams |
Typeobject | RO | DescriptionArbitrary provider parameters (structure depends on providerId) |
FieldproviderData |
Typestring | RO | DescriptionSerialized provider data (XML/JSON in a string) |
Fieldsettings |
Typeobject | RO | DescriptionAdditional activity settings; the structure depends on typeId and providerId. For an email: MESSAGE_FROM, DISABLE_SENDING_MESSAGE_COPY, IS_MESSAGE_SENT, MESSAGE_HEADERS. To send an email, see Create activity |
FieldoriginId |
Typestring | RO | DescriptionExternal ID, if the activity came from a third-party channel (CTI, email) |
FieldoriginatorId |
Typestring | RO | DescriptionID of the originating source (application/connector) |
FieldresultStatus |
Typenumber | RO | DescriptionActivity result status (numeric code) |
FieldresultStream |
Typenumber | RO | DescriptionResult processing stream |
FieldresultSourceId |
Typestring | RO | DescriptionResult source |
FieldresultMark |
Typenumber | RO | DescriptionResult score/marker |
FieldresultValue |
Typenumber | RO | DescriptionNumeric result value |
FieldresultSum |
Typenumber | RO | DescriptionResult amount (for example, a receipt total) |
FieldresultCurrencyId |
Typestring | RO | DescriptionResult currency (USD, …) |
FieldautocompleteRule |
Typenumber | RO | DescriptionActivity auto-completion rule (numeric code) |
FieldisIncomingChannel |
Typeboolean | ROyes | DescriptionThe activity came from an incoming channel (Open Channel/call/email). Read-only |
Fieldbindings |
Typeobject | RO | DescriptionAdditional CRM entity bindings of the activity. Manage bindings after creation via /v1/activities/:activityId/bindings |
Fieldfiles |
Typearray | RO | DescriptionActivity attachments: numeric IDs or {id, url} objects; a file name is not guaranteed. Request files in select for list and search; a single activity may include or omit the field without select |
FieldwebdavElements |
Typeobject | RO | DescriptionLegacy Drive (WebDAV) file attachments. On list and search, returned only when explicitly requested in select |
FieldoriginVersion |
Typestring | RO | DescriptionSync version for the external system — prevents accidental overwrites of the data by an external integration |
Required at creation (
POST /v1/activities):subject,typeId,communications. These fields are flaggedrequired: truein the/fieldsresponse. A binding to a CRM entity is also required — viaownerTypeId+ownerIdor viaentityTypeId/entityIdinsidecommunications. Details — Create activity.
The typeId field is set at creation only: the /fields response flags it createOnly: true, and a PATCH /v1/activities/:id request that includes it returns 400 READONLY_FIELD. To get an activity of a different type, create a new one and delete the previous one.
typeId values
| Value | Activity type |
|---|---|
Value1 |
Activity typeMeeting |
Value2 |
Activity typeCall |
Value3 |
Activity typeTask |
Value4 |
Activity typeEmail |
Value5 |
Activity typeAction |
Value6 |
Activity typeCustom action |
ownerTypeId values
| Value | Parent entity | Lookup |
|---|---|---|
Value1 |
Parent entityLead | LookupGET /v1/leads |
Value2 |
Parent entityDeal | LookupGET /v1/deals |
Value3 |
Parent entityContact | LookupGET /v1/contacts |
Value4 |
Parent entityCompany | LookupGET /v1/companies |
Available includes
The GET /v1/activities/fields endpoint returns the list of available includes: responsible, author, editor.
Usage example: Get activity.
More on includes: Related data.
Response example
{
"success": true,
"data": {
"fields": {
"id": { "type": "number", "readonly": true, "label": "ID", "description": "Unique numeric identifier of the activity." },
"typeId": { "type": "number", "readonly": false, "createOnly": true, "required": true, "label": "Type", "description": "Activity type — codes are decoded in enum (B24 crm.enum.activitytype). Required on create; set only on create and cannot be changed afterward." },
"subject": { "type": "string", "readonly": false, "required": true, "label": "Subject", "description": "Activity subject. Required on create." },
"communications": {"type": "array", "readonly": false, "required": true, "label": "Communications", "description": "Activity communications. Required on create. An item may contain type, value, entityTypeId, entityId, id and activityId. Write accepts camelCase or Bitrix24 UPPER keys; read preserves the keys returned by Bitrix24.", "itemSchema": {"type": "object"}},
"files": {"type": "array", "readonly": false, "label": "Files", "description": "Activity attachments. An item can be a numeric file ID or an object with id and url, depending on the Bitrix24 method. A file name is not guaranteed. On list and search, returned only when files is requested in select; a single activity read may include it without select. The field may be absent.", "itemSchema": {}},
"responsibleId": { "type": "number", "readonly": false, "label": "Responsible", "description": "ID of the user responsible for the activity." }
},
"relations": {
"responsible": { "type": "one", "entity": "users", "includable": true },
"author": { "type": "one", "entity": "users", "includable": true },
"editor": { "type": "one", "entity": "users", "includable": true }
},
"aggregatable": ["typeId", "ownerTypeId", "responsibleId", "authorId", "editorId", "completed", "status", "direction", "providerId", "providerTypeId"],
"aggregateFilterRequirement": {
"mode": "anyOfAnchors",
"anchors": [
{ "type": "allOf", "fields": ["ownerTypeId", "ownerId"] },
{ "type": "field", "field": "responsibleId" },
{ "type": "dateBound", "fields": ["createdAt", "updatedAt", "deadline"] }
],
"surfaces": ["aggregate"],
"enforcement": "advisory"
},
"batch": ["create", "update", "delete"],
"include": ["responsible", "author", "editor"]
}
}
Only 5 of the many fields are shown, and the enum array of typeId is omitted — the codes are decoded in the typeId values section. The full field list is in the table above.
Error response example
403 — the key lacks the crm scope:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'crm' scope",
"hint": "This request needs the 'crm' scope, which the calling key does not carry. Add 'crm' to this key in the developer cabinet (or through the management API), then repeat the call.",
"cause": "key_scope_missing",
"requiredScope": "crm",
"keyScopes": ["task"],
"fix": { "action": "edit_key_scopes", "via": "cabinet" },
"userMessage": "The app's API key lacks the “CRM” permission. You can add it in the key settings in the developer cabinet."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe API key lacks the crm 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.