For AI agents: markdown of this page — /docs-content-en/entities/bizproc-templates/list.md documentation index — /llms.txt
Template list
GET /v1/bizproc-templates
Returns the business process templates created in the Bitrix24 account, with filtering, sorting, and pagination.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
Parameterselect (query) |
Typestring | Default— | DescriptionComma-separated fields: id, moduleId, entity, documentType, autoExecute, name, description, modified, isModified, userId. Without select, the full declared field set is returned, including id |
Parameterfilter (query) |
Typeobject | Default— | DescriptionFiltering by the fields of GET /v1/bizproc-templates/fields.Filtering syntax. Example: ?filter[entity]=BizprocDocument.The values of moduleId and entity are the first two elements of documentType, listed in Upload a template |
Parameterorder (query) |
Typeobject | Default— | DescriptionSorting. Example: ?order[id]=desc |
Parameterlimit (query) |
Typenumber | Default50 |
DescriptionNumber of records in the response. Zero does not mean "no limit" — it is ignored. The response contains 50 records and the LIMIT_ZERO_IGNORED warning |
Parameteroffset (query) |
Typenumber | Default0 |
DescriptionOffset from the start of the selection |
ParameterwithTotal (query) |
Typeboolean | Default— | DescriptionAccepted, but does not change the response: meta.total is returned for any value of the parameter |
For a limit greater than 50, the request is paginated on the server side. The maximum is 5000 records per call.
Examples
Templates can be read only with an OAuth application key — both examples send an OAuth application key and the Authorization: Bearer header. The session token is issued by OAuth authorization, is valid for 24 hours, and cannot be renewed — Passing the key.
curl — OAuth application
curl -X GET "https://vibecode.bitrix24.com/v1/bizproc-templates?select=id,name,moduleId,entity,autoExecute&limit=2" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — OAuth application
const params = new URLSearchParams({
select: 'id,name,moduleId,entity,autoExecute',
limit: '2',
})
const res = await fetch(`https://vibecode.bitrix24.com/v1/bizproc-templates?${params}`, {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data, meta } = await res.json()
console.log(`Templates in the account: ${meta.total}`)
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | DescriptionAlways true on success |
Fielddata |
Typearray | DescriptionArray of templates. The fields of each element are defined by select — the full schema is in Template fields |
Fieldmeta.total |
Typenumber | DescriptionNumber of templates matching the filter |
Fieldmeta.hasMore |
Typeboolean | DescriptionWhether there are records beyond limit |
Fieldmeta.warnings |
Typearray | DescriptionWarnings about how the request was parsed. Each one is an object with the code, field, and message fields. For example, an unknown field name in select produces a warning with the UNKNOWN_SELECT_FIELD code |
Response example
{
"success": true,
"data": [
{
"id": 23,
"name": "Contract approval",
"moduleId": "lists",
"entity": "BizprocDocument",
"autoExecute": 1
},
{
"id": 25,
"name": "Purchase request",
"moduleId": "lists",
"entity": "BizprocDocument",
"autoExecute": 1
}
],
"meta": {
"total": 81,
"hasMore": true
}
}
Error response example
403 — the request was sent with an API key:
{
"success": false,
"error": {
"code": "OAUTH_REQUIRED",
"message": "bizproc-templates require an OAuth app key (vibe_app_*) with an Authorization: Bearer session — a personal vibe_api_* key lacks the per-user OAuth context Bitrix24 needs for these methods. Create an OAuth app (POST /v1/apps) and retry with its key. On this 403 switch keys — do NOT delete or recreate the app (that discards anything already registered under it, e.g. a bizproc robot you just registered)."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP400 | CodeINVALID_FILTER_OPERATOR |
DescriptionAn unknown operator in the filter. The message lists the supported operators |
| HTTP400 | CodeINVALID_FILTER_OPERATOR |
DescriptionA logical key $or or $and in the filter. An OR condition is expressed with the $in operator for one field or with parallel requests through POST /v1/batch, an AND condition with sibling keys of one filter |
| HTTP403 | CodeOAUTH_REQUIRED |
DescriptionThe request was sent with an API key. Templates can be read only with an authorization key |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionAuthorization key without the Authorization: Bearer header |
| HTTP401 | CodeWRONG_AUTH_SCHEME |
DescriptionThe authorization key was sent in the Authorization: Bearer header. The key goes in X-Api-Key, while Authorization: Bearer carries the session token |
| HTTP401 | CodeINVALID_SESSION |
DescriptionThe session token has expired or is invalid — authorize again |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe key lacks the bizproc scope |
| HTTP409 | CodeBIZPROC_MODULE_NOT_ENABLED |
DescriptionBusiness Processes are not available on the account: the module is not included in the plan, or it is switched off in account settings. Ask an account administrator to enable Business Processes — until then, every retry returns the same error |
| 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.
Known specifics
The template file is not returned in the response. The .bpt content passed in the templateData field on creation cannot be read back through the API — neither in the list nor through select. Keep the original file on your side.
The documentType field is assembled from moduleId and entity. Request all three fields together — otherwise the first two elements of the array arrive as null: select=id,documentType returns [null, null, "iblock_19"], while select=id,documentType,moduleId,entity returns ["lists", "BizprocDocument", "iblock_19"].
An unknown field name in select, filter, or order does not raise an error. The response arrives with code 200 and the unknown name is dropped: in filter the result set is not narrowed, in order the sort order does not change, in select the field is absent from the records and a warning with the UNKNOWN_SELECT_FIELD code arrives in meta.warnings. Check field names against the select row in the parameters table or against the schema at GET /v1/bizproc-templates/fields.