For AI agents: markdown of this page — /docs-content-en/entities/users/fields.md documentation index — /llms.txt
Employee fields
GET /v1/users/fields
Returns the full list of fields for the "employee" entity, including the Bitrix24 account's user (UF_*) fields.
Every field is described by the type and readonly keys. Schema fields additionally carry a label and a description, and gender (personalGender) and account type (userType) carry an enum of allowed values, each value with its own label. Gender also carries nullable: true: when the employee has not filled it in, the response returns null — the OpenAPI schema says the same, declaring the field type as ["string", "null"].
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/users/fields" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/users/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/users/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/users/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, while the ones the platform takes straight from the Bitrix24 account come in the account language. Request headers do not switch the language.
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | DescriptionAlways true on success |
Fielddata |
Typeobject | DescriptionThe employee field schema and the operations available for employees. Its keys are in the rows below |
Fielddata.fields |
Typeobject | DescriptionThe employee field schema: field name → an object with type, readonly and label. Some fields also carry description, nullable, enum and items. The standard fields are listed below. The work-details fields and the UF_* user fields of this Bitrix24 account come in addition to them |
Fielddata.batch |
Typearray | DescriptionEmployee write operations available in batch calls: create, update |
Fielddata.include |
Typearray | DescriptionThe names the include parameter accepts: department |
Fielddata.relations |
Typeobject | DescriptionEmployee relations: department covers the departments from departmentId. See List departments |
Fielddata.aggregatable |
Typearray | DescriptionStandard fields allowed in the aggregation groupBy: active, isAdmin, isOnline, departmentId, workPosition, personalGender, personalCity |
Standard employee fields
Each row is a key of the data.fields object.
| Field | Bitrix24 | Type | RO | Description |
|---|---|---|---|---|
Fieldid |
Bitrix24ID |
Typenumber | ROyes | DescriptionEmployee identifier |
Fieldname |
Bitrix24NAME |
Typestring | RO | DescriptionFirst name |
FieldlastName |
Bitrix24LAST_NAME |
Typestring | RO | DescriptionLast name |
FieldsecondName |
Bitrix24SECOND_NAME |
Typestring | RO | DescriptionMiddle name |
Fieldemail |
Bitrix24EMAIL |
Typestring | RO | DescriptionEmail — required on creation, must be unique |
Fieldactive |
Bitrix24ACTIVE |
Typeboolean | RO | DescriptionActivity flag (true — active, false — deactivated) |
FieldworkPosition |
Bitrix24WORK_POSITION |
Typestring | RO | DescriptionPosition |
FieldworkPhone |
Bitrix24WORK_PHONE |
Typestring | RO | DescriptionWork phone |
FieldpersonalPhone |
Bitrix24PERSONAL_PHONE |
Typestring | RO | DescriptionPersonal phone |
FieldpersonalMobile |
Bitrix24PERSONAL_MOBILE |
Typestring | RO | DescriptionMobile phone |
FieldpersonalBirthday |
Bitrix24PERSONAL_BIRTHDAY |
Typestring | RO | DescriptionDate of birth (ISO 8601 format) |
FieldpersonalGender |
Bitrix24PERSONAL_GENDER |
Typestring | RO | DescriptionGender: M — male, F — female. The allowed values are returned in enum. When the employee has not filled it in — null |
FieldpersonalCity |
Bitrix24PERSONAL_CITY |
Typestring | RO | DescriptionCity |
FieldpersonalPhoto |
Bitrix24PERSONAL_PHOTO |
Typestring | RO | DescriptionOn read — the photo URL. On write — the file itself: an array [file name, base64] on POST /v1/users and PATCH /v1/users/:id. For details and unsupported input formats, see the "Update employee" page |
FielddepartmentId |
Bitrix24UF_DEPARTMENT |
Typenumber[] | RO | DescriptionArray of department IDs. List: GET /v1/departments |
FieldxmlId |
Bitrix24XML_ID |
Typestring | RO | DescriptionExternal identifier for integrations |
FieldisAdmin |
Bitrix24IS_ADMIN |
Typeboolean | ROyes | DescriptionBitrix24 account administrator flag, tri-state: true, false or null. Populated only on GET /v1/users/me, unavailable on GET /v1/users/:id and the list |
FieldisOnline |
Bitrix24IS_ONLINE |
Typeboolean | ROyes | DescriptionThe employee is currently online |
FielddateRegister |
Bitrix24DATE_REGISTER |
Typedatetime | ROyes | DescriptionDate the employee registered in the Bitrix24 account |
FieldlastLogin |
Bitrix24LAST_LOGIN |
Typedatetime | ROyes | DescriptionLast login date |
FieldlastActivityDate |
Bitrix24LAST_ACTIVITY_DATE |
Typedatetime | ROyes | DescriptionLast activity date |
FieldtimeZone |
Bitrix24TIME_ZONE |
Typestring | RO | DescriptionThe employee's time zone. Example: "UTC" |
Fieldtitle |
Bitrix24TITLE |
Typestring | RO | DescriptionSalutation / title |
FieldpersonalWww |
Bitrix24PERSONAL_WWW |
Typestring | RO | DescriptionPersonal website |
FieldpersonalProfession |
Bitrix24PERSONAL_PROFESSION |
Typestring | RO | DescriptionProfession |
FieldpersonalIcq |
Bitrix24PERSONAL_ICQ |
Typestring | RO | DescriptionICQ (legacy Bitrix24 field) |
FieldpersonalFax |
Bitrix24PERSONAL_FAX |
Typestring | RO | DescriptionFax |
FieldpersonalPager |
Bitrix24PERSONAL_PAGER |
Typestring | RO | DescriptionPager |
FieldpersonalStreet |
Bitrix24PERSONAL_STREET |
Typestring | RO | DescriptionStreet |
FielduserType |
Bitrix24USER_TYPE |
Typestring | ROyes | DescriptionAccount type: "employee" — staff member, "extranet" — external. The list of values arrives in enum. The employee list hides mail users, chatbots, Open Channel users and Replica records, so a response carries employee or extranet. The value "email" (mail user) is a filter value only — Bitrix24 documents it among the accepted values of the USER_TYPE filter, but it does not appear in a response, because the method excludes such users. The field does not arrive in the GET /v1/users/me response |
FieldtimestampX |
Bitrix24TIMESTAMP_X |
Typedatetime | ROyes | DescriptionTimestamp of the record's last change in Bitrix24. For some users it is returned as an empty object {} |
Work-details fields (WORK_*, some PERSONAL_*) are returned under their original Bitrix24 names in UPPER_SNAKE_CASE — Bitrix24 supplies their labels itself, localized to the language of the Bitrix24 account. Ten of them have no label in Bitrix24 at all (WORK_FAX, WORK_PAGER, WORK_STREET, WORK_MAILBOX, WORK_STATE, WORK_ZIP, WORK_COUNTRY, WORK_PROFILE, WORK_LOGO, WORK_NOTES) — the field name used to arrive in place of a label, and Vibecode now supplies the label and the description. When the Bitrix24 account does label such a field itself, its own label is kept unchanged. An empty work-details field may be absent from a read response entirely — check for the presence of the key, not for an empty string.
User fields (UF_*) are also returned in responses and accepted on creation or update. In the response, a user field of the "list" type (enumeration) carries an items array of possible values (ID, VALUE, DEF, XML_ID) — provided the key has the user.userfield scope; without it the field is returned with its label but no items. For information on creating and editing employee fields, see Employee fields.
The field ufDepartment does not exist — the employee's department lives in departmentId, an array of department identifiers. The original Bitrix24 name UF_DEPARTMENT is accepted in select as an alias and projects the canonical departmentId. An unknown name in select is not rejected — the response is extended with an UNKNOWN_SELECT_FIELD warning in meta.warnings.
The response elements of departmentId are numbers (number[]): OpenAPI describes them as number, while this endpoint and fieldsDetailed in /v1/guide publish readItemSchema: { "type": "number" }. This describes responses only: UserInput.departmentId retains its previous string[] schema, and accepted values and their order do not change.
Response example
{
"success": true,
"data": {
"fields": {
"name": {
"type": "string",
"readonly": false,
"label": "First name",
"description": "Employee's first name."
},
"timestampX": {
"type": "datetime",
"readonly": true,
"label": "Modified date",
"description": "Timestamp of the last modification to the employee record in Bitrix24."
},
"personalGender": {
"type": "string",
"readonly": false,
"nullable": true,
"label": "Gender",
"description": "Employee's gender. Comes back as null when the employee has not filled it in.",
"enum": [
{ "value": "M", "label": "Male" },
{ "value": "F", "label": "Female" }
]
},
"WORK_CITY": { "type": "string", "readonly": false, "label": "Work city" },
"WORK_FAX": {
"type": "string",
"readonly": false,
"label": "Company fax",
"description": "Fax number of the company in the employee's work details."
},
"UF_USR_STATUS": {
"type": "enumeration",
"readonly": false,
"label": "Status",
"items": [
{ "ID": "1", "VALUE": "New", "DEF": "N", "XML_ID": "x1" },
{ "ID": "2", "VALUE": "In progress", "DEF": "Y", "XML_ID": "x2" }
]
}
},
"relations": {
"department": { "type": "many", "entity": "departments", "operations": [] }
},
"include": ["department"],
"aggregatable": ["active", "isAdmin", "isOnline", "departmentId", "workPosition", "personalGender", "personalCity"],
"batch": ["create", "update"]
}
}
One field of each kind is shown. The actual response contains 30+ schema fields in camelCase (each with a label and a description), Bitrix24 work-details fields in UPPER_SNAKE_CASE (WORK_*, some PERSONAL_*), and UF fields of the specific Bitrix24 account. The original Bitrix24 name of a schema field is not duplicated in the response: UF_DEPARTMENT arrives as departmentId, NAME as name.
Error response example
403 — no scope:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'user' scope"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe API key has no configured tokens |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe API key lacks the user scope |
| 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.