For AI agents: markdown of this page — /docs-content-en/entities/contacts/get.md documentation index — /llms.txt
Get contact
GET /v1/contacts/:id
Returns a contact by ID with all fields.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
Parameterid (path) |
Typenumber | Requiredyes | DescriptionContact ID. List: GET /v1/contacts |
Parameterinclude (query) |
Typestring | Requiredno | DescriptionComma-separated related data: company, companyBinding. The result is in data._included. See Related data |
Parameterselect (query) |
Typestring | Requiredno | DescriptionComma-separated response fields, for example id,name,lastName. Without it, every field is returned. The id field is always returned. Names come from Contact fields |
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/contacts/71" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/contacts/71" \
-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/contacts/71', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data } = await res.json()
console.log('Contact:', data.name, data.lastName)
console.log('Received:', data.id)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/contacts/71', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
For more on include, see Related data.
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue when the request succeeds |
Fielddata |
Typeobject | DescriptionThe contact with all fields, including user fields ufCrm_*. With the select parameter, only the listed fields and id are returned. All fields — Contact fields |
Fielddata._included |
Typeobject | DescriptionRelated data. Returned only with the include parameter: company is the contact's primary company or null; companyBindings is an array of all linked companies with the binding fields isPrimary, sort and roleId. See Related data |
Fieldmeta.warnings |
Typearray | DescriptionReturned when a name that is absent from the contact schema is listed alongside * in select: the contact comes back without that field. Each warning is an object with code, field and message, and the code is UNKNOWN_SELECT_FIELD. Without *, such a name causes the whole request to be rejected |
Related data
(include)
To retrieve related entities along with the contact, use the include parameter in the GET request:
GET /v1/contacts/71?include=company
Available include values: company, companyBinding. The result is in data._included.
Response example
{
"success": true,
"data": {
"id": 71,
"name": "John",
"lastName": "Brown",
"companyId": 1,
"assignedById": 1,
"sourceId": "WEB",
"typeId": "CLIENT",
"phone": "+12025550123",
"phoneWork": "+12025550123",
"email": "info@example.com",
"emailWork": "info@example.com",
"emailHome": "home@example.com",
"hasPhone": true,
"hasEmail": true,
"fm": [
{ "id": 41, "typeId": "PHONE", "valueType": "WORK", "value": "+12025550123" },
{ "id": 43, "typeId": "EMAIL", "valueType": "WORK", "value": "info@example.com" },
{ "id": 45, "typeId": "EMAIL", "valueType": "HOME", "value": "home@example.com" }
],
"createdTime": "2020-05-08T10:48:20+00:00",
"updatedTime": "2025-08-22T13:01:31+00:00"
}
}
The phone number and email address in the response are strings containing the primary value. Values by type are in phoneWork, phoneMobile, emailWork, and emailHome. The complete list with types is in the fm[] array ({ id, typeId, valueType, value }, where id identifies the entry). Check hasPhone/hasEmail to determine whether a value exists: if there is no phone number, phone is an empty string. The API cannot update or delete an individual fm[] entry by its id — PATCH adds new entries.
Error response example
404 — contact not found:
{
"success": false,
"error": {
"code": "ENTITY_NOT_FOUND",
"message": "Item not found"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionContact not found |
| HTTP400 | CodeUNKNOWN_SELECT_FIELD |
Descriptionselect contains an unknown field. The message lists the allowed names |
| HTTP403 | CodeACCESS_DENIED |
DescriptionNo access to the contact |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe API key does not have the crm scope |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe API key has no configured tokens |
For the full list of common API errors, see Errors.