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 |
|---|---|---|---|
select (query) |
string | — | Comma-separated fields: id, moduleId, entity, documentType, autoExecute, name, description, modified, isModified, userId. Without select, the full declared field set is returned, including id |
filter (query) |
object | — | Filtering 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 |
order (query) |
object | — | Sorting. Example: ?order[id]=desc |
limit (query) |
number | 50 |
Number of records in the response. Zero does not mean "no limit" — it is ignored, 50 records arrive together with the LIMIT_ZERO_IGNORED warning |
offset (query) |
number | 0 |
Offset from the start of the selection |
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 authorization key — both examples send the authorization 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 — authorization key
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 — authorization key
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 |
|---|---|---|
success |
boolean | Always true on success |
data |
array | Array of templates. The fields of each element are defined by select — the full schema is in Template fields |
meta.total |
number | Number of templates matching the filter |
meta.hasMore |
boolean | Whether there are records beyond limit |
meta.warnings |
array | Warnings 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 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 |
|---|---|---|
| 400 | INVALID_FILTER_OPERATOR |
An unknown operator in the filter. The message lists the supported operators |
| 400 | INVALID_FILTER_OPERATOR |
A 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 |
| 403 | OAUTH_REQUIRED |
The request was sent with an API key. Templates can be read only with an authorization key |
| 401 | TOKEN_MISSING |
Authorization key without the Authorization: Bearer header |
| 401 | WRONG_AUTH_SCHEME |
The authorization key was sent in the Authorization: Bearer header. The key goes in X-Api-Key, while Authorization: Bearer carries the session token |
| 401 | INVALID_SESSION |
The session token has expired or is invalid — authorize again |
| 403 | SCOPE_DENIED |
The key lacks the bizproc scope |
| 429 | RATE_LIMITED |
Rate limit exceeded: 300 requests per minute per portal, all API keys of the portal share one limit. The exact value arrives in the x-ratelimit-limit header (the cap is divided across replicas). Retry after the delay in the Retry-After header |
Full list of common API errors — 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.