Overview
Use BatchV2.make() to execute up to 50 REST API commands in a single request. This is especially useful when you need to retrieve or update large amounts of data while minimizing network requests and adhering to REST API limits.
// Basic usage
import { EnumCrmEntityTypeId } from '@bitrix24/b24jssdk'
const response = await $b24.actions.v2.batch.make({
calls: [
['crm.item.get', { entityTypeId: EnumCrmEntityTypeId.contact, id: 1 }],
['crm.item.get', { entityTypeId: EnumCrmEntityTypeId.contact, id: 2 }]
],
options: {
isHaltOnError: true,
returnAjaxResult: true,
requestId: 'unique-request-id'
}
})
Method Signature
make<T = unknown>(
options: ActionBatchV2
): Promise<CallBatchResult<T>>
Parameters
The options object contains the following properties:
Command Formats (options.calls)
1. Array of tuples (BatchCommandsArrayUniversal)
calls: [
['method1', params1],
['method2', params2],
// ...
]
2. Array of objects (BatchCommandsObjectUniversal)
calls: [
{ method: 'method1', params: params1 },
{ method: 'method2', params: params2 },
// ...
]
3. Object with named commands (BatchNamedCommandsUniversal)
calls: {
command1: { method: 'method1', params: params1 },
command2: ['method2', params2],
// ...
}
Batch Request Options (options.options)
Return Value
Promise<CallBatchResult<T>> — a promise that resolves to a CallBatchResult<T> object.
The result structure depends on the input data format:
- For array of commands: array of results in the same order.
- For named commands: object with keys corresponding to command names.
Error Handling
Always check the result using isSuccess and handle errors:
const response = await $b24.actions.v2.batch.make({
calls: [
{ method: 'crm.item.get', params: { entityTypeId: EnumCrmEntityTypeId.contact, id: 1 } },
{ method: 'crm.item.get', params: { entityTypeId: EnumCrmEntityTypeId.contact, id: 2 } }
],
options: {
isHaltOnError: true,
returnAjaxResult: true,
requestId: 'unique-request-id'
}
})
if (!response.isSuccess) {
// Handling error
console.error(new Error(`Error: ${response.getErrorMessages().join('; ')}`))
return
}
// Working with a successful result
const data = response.getData()
Examples
Getting Multiple CRM Companies
Init Data Storage
This code automates the creation and initialization of data storages in Bitrix24 via the REST API.
It checks the existence of the specified storages and, if they don't exist, creates them along with the specified properties, using batch requests for efficiency.
Delete Data Storage
This code deletes multiple data storages in the Bitrix24 system via the REST API.
It sequentially sends delete requests for each data storage specified in the dataStorageMap using the entity.delete method.
Alternatives and Recommendations
- For sequential requests: Use
Callfor single calls. - For working with lists: Use
CallListfor retrieving large volumes of data. - For step-by-step processing: Use
FetchListfor processing data as it arrives. - To run more commands (more than 50): Use
BatchByChunk, which automatically splits commands into chunks of 50. - On the client-side (browser): Use the built-in
B24Frameobject.
FetchList
Returns an AsyncGenerator that allows processing data from list methods of Bitrix24 REST API version 2 as it is received without loading the entire array into memory at once. This is especially useful when working with very large volumes of data.
BatchByChunk
Method for executing batch requests with automatic chunking for any number of commands. Automatically splits large command sets into batches of 50 and executes them sequentially. Use only arrays of tuples or arrays of objects.