v1.2.0

CallV3.make

Method for making Bitrix24 REST API version 3 calls.
We are still updating this page. Some data may be missing here — we will complete it shortly.

Overview

Use CallV3.make() to call REST API version 3 methods.

The method returns a Promise with an AjaxResult object containing response data, status, and error handling methods.

// Basic usage
const response = await $b24.actions.v3.call.make({
  method: 'tasks.task.get',
  params: {
    id: 123
  },
  requestId: 'unique-request-id'
})

Method Signature

make<T = unknown>(
  options: ActionCallV3
): Promise<AjaxResult<T>>

Parameters

The options object contains the following properties:

ParameterTypeRequiredDescription
methodstringYesREST API method name (e.g., crm.contact.get, tasks.task.get).
paramsTypeCallParamsNoObject with parameters to pass to the REST API method.
requestIdstringNoUnique request identifier for tracking. Used for request deduplication and debugging.

Return Value

Promise<AjaxResult<T>> — a promise that resolves to an AjaxResult object.

This object provides:

  • .getData(): SuccessPayload<T> | undefined — returns the success envelope { result: T, time: PayloadTime }, or undefined when the request failed. Check .isSuccess first.
  • .isSuccess: boolean — flag indicating successful request execution.
  • .getErrorMessages(): string[] — array of error messages.

Error Handling

Calling a method that is not supported by REST API version 3 throws an SdkError with code JSSDK_CORE_METHOD_NOT_SUPPORT_IN_API_V3 before any HTTP request is made. Use CallV2.make() for legacy methods, or check apidocs.bitrix24.com to see which methods are available in v3.

For successful requests, always check isSuccess and handle errors:

// @check-ignore: top-level return in error-handling illustration

const response = await $b24.actions.v3.call.make({
  method: 'some.method',
  params: { /* some_params */ },
  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()?.result

Examples

Getting a Task

Long-Running Requests

Heavy non-idempotent methods like crm.documentgenerator.document.add routinely exceed the default 30-second axios timeout. On a timeout the SDK retries by default, which can create duplicate entities server-side (see issue #24).

For any method that creates or persists state, raise the axios timeout and disable retries on transport errors:

import { ApiVersion, ParamsFactory } from '@bitrix24/b24jssdk'

// const $b24 = ...
$b24.getHttpClient(ApiVersion.v3).ajaxClient.defaults.timeout = 120_000
await $b24.setRestrictionManagerParams({
  ...ParamsFactory.getDefault(),
  retryOnNetworkError: false
})

await $b24.actions.v3.call.make({
  method: 'crm.deal.add',
  params: {/*…*/}
})

See Limiters → Long-Running Requests & Non-idempotent Calls for the full explanation and alternative configurations.

Alternatives and Recommendations

  • For working with lists: Instead of manually managing pagination use:
    • CallList — automatically retrieves all pages and returns a single result.
    • FetchList — returns an async generator for step-by-step processing of large lists.
  • For batch operations: Use Batch to execute up to 50 commands in a single request.
  • On the client-side (browser): Use the built-in B24Frame object.