For AI agents: markdown of this page — /docs-content-en/entities/crm-forms/list.md documentation index — /llms.txt
List forms
GET /v1/crm-forms
Finds CRM forms in the Bitrix24 account by activity, name, code, CRM scheme, responsible user or dates, so you can get the ID of the form you need.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
Parameterid (query) |
Typeinteger | integer[] | Default— | DescriptionForm IDs. Repeat the parameter: ?id=1&id=3. IDs come from this list |
Parameteractive (query) |
Typeboolean | Default— | DescriptionForm activity. Omit to return both active and inactive forms |
Parametername (query) |
Typestring | Default— | DescriptionExact form name, including commas. Repeat the parameter for several names |
Parametercode (query) |
Typestring | Default— | DescriptionExact symbolic code. Repeat the parameter for several codes |
ParameterentityScheme (query) |
Typenumber | Default— | DescriptionAlias for crm.entityScheme. Values: entitySchemes in builder configuration. Several values may be comma-separated |
ParameterresponsibleUserId (query) |
Typenumber | Default— | DescriptionAlias for responsible.userIds. IDs: List employees. Several IDs may be comma-separated |
Parameterfilter (query) |
Typeobject | Default— | DescriptionFilter by form properties. Top-level metadata: Form contract fields. Filtering syntax. Example: ?filter[id][$in]=1,3, date range: ?filter[updatedTime][$gte]=2023-01-01T00:00:00Z. Property names and operators are validated by Bitrix24 |
Parameterselect (query) |
Typestring | Default— | DescriptionComma-separated properties and nested paths, such as id,name,active,templateId,crm.entityScheme,responsible.userIds,updatedTime |
Parameterorder (query) |
Typeobject | Default— | DescriptionSort: ?order[name]=desc. Use either order[...] or sort. Using both returns 400 INVALID_PARAMS |
Parametersort (query) |
Typestring | Default— | DescriptionSort shorthand: ?sort=-name; a leading minus means descending order. Bitrix24 validates sort properties and directions |
Parameterlimit (query) |
Typenumber | Default— | DescriptionPage size. Bitrix24 validates the value |
Parameteroffset (query) |
Typenumber | Default— | DescriptionNumber of forms to skip. Bitrix24 validates the value |
Pagination. One request reads one page. Without limit and offset, Bitrix24 uses its own pagination defaults. Pagination metadata is included only when returned by Bitrix24. To request the next page, pass limit and increase offset by that value.
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/crm-forms?limit=2" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/crm-forms?limit=2" \
-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/crm-forms?limit=2', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { data, meta } = await res.json()
for (const form of data) console.log(form.id, form.name)
const mayHaveNextPage = data.length === 2
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/crm-forms?limit=2', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data, meta } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue on success |
Fielddata |
Typearray | DescriptionForms on the page, preserving their properties. Top-level property metadata: Form contract fields |
Fieldmeta |
Typeobject | DescriptionOptional pagination metadata returned by Bitrix24 |
Fieldmeta.redacted |
Typestring[] | DescriptionPresent only when the current connection's credentials are found in the content. JSON Pointer paths identify replaced values |
Without select, each form has 11 scalar properties: id, code, name, active, system, languageId, templateId, createdTime, updatedTime, activeChangedById, activeChangedTime. Target entities and responsible users require an explicit select. activeChangedById identifies the author of the activity change, not the responsible user.
Response example
{
"success": true,
"data": [
{
"id": 1,
"code": "1_kontaktnye_dannye",
"name": "Contact details",
"active": true,
"system": true,
"languageId": "ru",
"templateId": "light",
"createdTime": "2020-04-22T06:13:05Z",
"updatedTime": "2020-04-22T06:13:05Z",
"activeChangedById": 1,
"activeChangedTime": "2020-04-22T06:13:05Z"
},
{
"id": 3,
"code": "3_obratnaya_svyaz",
"name": "Feedback form",
"active": true,
"system": true,
"languageId": "ru",
"templateId": "light",
"createdTime": "2020-04-22T06:13:05Z",
"updatedTime": "2020-04-22T06:13:05Z",
"activeChangedById": 1,
"activeChangedTime": "2020-04-22T06:13:05Z"
}
]
}
Live response from a Russian-language portal: code and languageId are portal values returned as stored. code is the exact value for the ?code= filter, and another portal has its own codes. Only the display name appears here in English.
Error response example
400 — invalid limit, here ?limit=abc:
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Cannot parse pagination parameter `{\"limit\":\"abc\"}`",
"b24Code": "BITRIX_REST_V3_EXCEPTION_INVALIDPAGINATIONEXCEPTION"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP400 | CodeINVALID_PARAMS |
DescriptionMalformed filter, select, order or sort structure |
| HTTP400 | CodeINVALID_PARAMS |
DescriptionBoth order[...] and sort were passed |
| HTTP400 | CodeINVALID_PARAMS |
DescriptionBitrix24 rejected a filter, sort or pagination value. The original code is in error.b24Code. Field errors are in error.validation |
| HTTP403 | CodeBITRIX_ACCESS_DENIED |
DescriptionThe Bitrix24 user lacks permission to access forms |
| HTTP403 | CodeBITRIX_INSUFFICIENT_SCOPE |
DescriptionThe Bitrix24 token lacks the required scope |
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionBitrix24 did not find a requested entity or field descriptor. The original code is in error.b24Code |
| HTTP409 | CodeCRM_FORM_REST_NOT_ENABLED |
DescriptionThe CRM form REST methods are unavailable on this Bitrix24 account. This does not mean that an individual form is missing |
| HTTP400–599 | CodeCRM_FORM_* |
DescriptionRejection under form rules. The code and HTTP status are preserved. The original code is in error.b24Code |
| HTTP422 | CodeBITRIX_ERROR |
DescriptionAnother Bitrix24 rejection. The reason is in error.message. The original code is in error.b24Code |
| HTTP429 | CodeRATE_LIMITED |
DescriptionRequest rate exceeded. Follow the Retry-After header |
| HTTP502 | CodeBITRIX_UNAVAILABLE |
DescriptionBitrix24 returned an unexpected response shape |
| HTTP502 | CodeBITRIX_UNAVAILABLE |
DescriptionBitrix24 is unavailable: a server error or a dropped connection |
| HTTP503 | CodeBITRIX_TIMEOUT |
DescriptionBitrix24 did not respond in time. The read can be retried |
| HTTP401 | CodeMISSING_API_KEY |
DescriptionThe X-Api-Key header is missing |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe key has no configured Bitrix24 credentials |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe Vibecode API key lacks the crm scope |
Full list of common API errors — Errors.