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

Companies

CRM company management: create, get, update, delete, filter.

Bitrix24 API: crm.company.* Scope: crm

Create company

POST /v1/companies

Creates a new company in CRM.

Request fields (body)

Parameter Type Description
title string Company name
typeId string Company type: CUSTOMER, SUPPLIER, COMPETITOR. Values list: GET /v1/statuses?filter[entityId]=COMPANY_TYPE
industry string Industry: IT, TELECOM, MANUFACTURING, etc. List: GET /v1/statuses?filter[entityId]=INDUSTRY
revenue number Annual turnover
currencyId string Turnover currency. List: GET /v1/currencies
phone string | string[] | object[] Phone. Accepts three forms: a string "+1...", an array of strings ["+1...", "+1..."], or an array of objects [{ "value": "+1...", "typeId": "WORK" }, …]. typeId: WORK | HOME | MOBILE | OTHER (default WORK). ⚠ The UPPER form [{ "VALUE": "...", "VALUE_TYPE": "WORK" }] is not accepted — it returns 400 INVALID_MULTIFIELD_SHAPE. Use camelCase: [{ "value": "...", "typeId": "WORK" }]
email string | string[] | object[] Email. Accepts three forms: a string "a@b.com", an array of strings ["a@b.com", "b@c.com"], or an array of objects [{ "value": "a@b.com", "typeId": "WORK" }, …]. typeId: WORK | HOME | MAILING | OTHER (default WORK). ⚠ The UPPER form [{ "VALUE": "...", "VALUE_TYPE": "WORK" }] is not accepted — it returns 400 INVALID_MULTIFIELD_SHAPE. Use camelCase: [{ "value": "...", "typeId": "WORK" }]
web string | string[] | object[] Website. Accepts three forms: a string "https://acme.com", an array of strings, or an array of objects [{ "value": "https://...", "typeId": "WORK" }]. typeId: WORK | HOME | OTHER (default WORK). ⚠ The UPPER form [{ "VALUE": "...", "VALUE_TYPE": "WORK" }] is not accepted — it returns 400 INVALID_MULTIFIELD_SHAPE. Use camelCase: [{ "value": "...", "typeId": "WORK" }]
comments string Comment
sourceId string Source. List: GET /v1/statuses?filter[entityId]=SOURCE
sourceDescription string Source description
assignedById number Assigned person. List: GET /v1/users
opened boolean Available to everyone
leadId number ID of the lead the company was created from

Full list of fields: GET /v1/companies/fields.

Examples

curl — personal key

Terminal
curl -X POST https://vibecode.bitrix24.com/v1/companies \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Acme LLC",
    "typeId": "CUSTOMER",
    "industry": "IT",
    "phone": "+12025550123",
    "email": "info@example.com",
    "web": "https://example.com"
  }'

curl — OAuth application

Terminal
curl -X POST https://vibecode.bitrix24.com/v1/companies \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Acme LLC",
    "typeId": "CUSTOMER",
    "industry": "IT",
    "phone": "+12025550124",
    "email": "info@example.com",
    "web": "https://example.com"
  }'

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/companies', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'Acme LLC',
    typeId: 'CUSTOMER',
    industry: 'IT',
    phone: '+12025550125',
    email: 'info@example.com',
    web: 'https://example.com',
  }),
})

const { success, data } = await res.json()
console.log('Company ID:', data.id)

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/companies', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'Acme LLC',
    typeId: 'CUSTOMER',
    industry: 'IT',
    phone: '+12025550126',
    email: 'info@example.com',
    web: 'https://example.com',
  }),
})

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

Alternative form — array of objects with explicit `typeId`

If you need to specify several values or an explicit type (HOME, OTHER):

JSON
{
  "phone": [
    { "value": "+12025550127", "typeId": "WORK" },
    { "value": "+12025550123", "typeId": "OTHER" }
  ],
  "email": [
    { "value": "info@example.com", "typeId": "WORK" },
    { "value": "sales@example.com", "typeId": "MAILING" }
  ],
  "web": [
    { "value": "https://example.com", "typeId": "WORK" },
    { "value": "https://shop.example.com", "typeId": "OTHER" }
  ]
}

Response fields

Field Type Description
id number ID of the created company
title string Name
typeId string Company type
industry string Industry
assignedById number Assigned person
createdBy number Creator
createdTime datetime Creation date
updatedTime datetime Modification date

The response contains all company fields, including user fields (ufCrm_*).

The company card URL in Bitrix24 is built from id:

https://<portal>.bitrix24.com/crm/company/details/<id>/

<portal> is the Bitrix24 account domain. Access is limited by the employee's permissions in Bitrix24.

Response example

JSON
{
  "success": true,
  "data": {
    "id": 2923,
    "title": "Acme LLC",
    "typeId": "CUSTOMER",
    "industry": "IT",
    "revenue": 0,
    "currencyId": "USD",
    "assignedById": 1,
    "createdBy": 1,
    "createdTime": "2026-04-15T12:53:59+00:00",
    "updatedTime": "2026-04-15T12:53:59+00:00",
    "opened": true
  }
}

Error response example

403 — no scope:

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

Errors

HTTP Code Description
403 SCOPE_DENIED The API key does not have the crm scope
401 TOKEN_MISSING The API key has no configured tokens
400 INVALID_REQUEST Invalid fields

Full list of common API errors — Errors.

See also