PHP code example of reutskiy-a / simple-api-bitrix24
1. Go to this page and download the library: Download reutskiy-a/simple-api-bitrix24 library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
reutskiy-a / simple-api-bitrix24 example snippets
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\Connectors\Models\Webhook;
use SimpleApiBitrix24\Enums\AuthType;
$apiSettings = new ApiClientSettings(AuthType::WEBHOOK);
$apiSettings->setDefaultCredentials(new Webhook('https://test.bitrix24.ru/rest/1/b1hw1*****k12t/'));
$api = new ApiClientBitrix24($apiSettings);
print_r($api->call('crm.deal.get', ['ID' => 2]));
use PDO;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\DatabaseCore\TableManager;
// Создаём объект PDO.
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
// Создаём объект описывающий схему будущей таблицы.
// Если нужно указать свои названия колонок и самой таблицы, то задайте их через ApiDatabaseConfig::__construct();
$databaseConfig = ApiDatabaseConfig::build($pdo);
// Создаём таблицу в базе, если она там отсутствует.
$tableManager = new TableManager($databaseConfig);
$tableManager->createUsersTableIfNotExists(); // или $tableManager->createUsersTableIfNotExists('your_table_name')
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\DatabaseCore\UserRepository;
use SimpleApiBitrix24\Enums\AuthType;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo); // или задайте свою схему таблицы через ApiDatabaseConfig::__construct()
// Создаём объект пользователя, авторизацию которого будем использовать.
$repository = new UserRepository($databaseConfig);
$user = $repository->getUserByIdAndMemberId(1, 'bitrix24_member_id');
// создаём объект настроек REST API клиента и зададим в этом примере авторизацию по умолчанию.
// так же авторизацию можно установить или изменить методом ApiClientBitrix24::setCredentials
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
$apiSettings->setDefaultCredentials($user);
// создаём объект REST API клиента
$api = new ApiClientBitrix24($apiSettings, $databaseConfig);
print_r($api->call('crm.deal.get', ['ID' => 2]));
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\DatabaseCore\UserRepository;
use SimpleApiBitrix24\Enums\AuthType;
use SimpleApiBitrix24\Services\Installation\InstallationService;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo); // или задайте свою схему таблицы через ApiDatabaseConfig::__construct()
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
$api = new ApiClientBitrix24($apiSettings, $databaseConfig);
// сохраняем данные пользователя в базу
$user = InstallationService::createUserFromProfileAndSave(
$databaseConfig,
'local.693c2b5c42e7c3.81926786',
'fDlCI34BZbbWv31iNm7H1jpwmu5py9vMyMkkVzQ3IC3WQdPQC4',
$_REQUEST['member_id'],
$_REQUEST['AUTH_ID'],
$_REQUEST['REFRESH_ID'],
$_REQUEST['DOMAIN']
);
// Тут ваша логика установки приложения
$api->setCredentials($user); // устанавливаем авторизацию для REST API клиента
print_r($api->call('scope'));
// Вызываем метод завершения установки приложения
InstallationService::finishInstallation();
use SimpleApiBitrix24\ApiClientSettings;
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
$apiSettings->setDefaultCredentials($user);
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\DatabaseCore\UserRepository;
use SimpleApiBitrix24\Enums\AuthType;
use SimpleApiBitrix24\Services\Installation\InstallationService;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo); // или задайте свою схему таблицы через ApiDatabaseConfig::__construct()
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
// Пользователь №1
$repository = new UserRepository($databaseConfig);
$user_1 = $repository->getUserByIdAndMemberId(1, 'bitrix24_member_id_1');
$apiClient_1 = new ApiClientBitrix24($apiSettings, $databaseConfig);
$apiClient_1->setCredentials($user_1);
// Пользователь №2
$user_2 = $repository->getFirstAdminByMemberId('bitrix24_member_id_2');
$apiClient_2 = clone $apiClient_1;
$apiClient_2->setCredentials($user_2);
// далее можем работать с разными независимыми друг от друга объектами REST API клиента
print_r($apiClient_1->call('profile'));
print_r($apiClient_2->call('profile'));
use SimpleApiBitrix24\Services\Installation\InstallationService;
// метод добавляет или обновляет данные пользователя в базе
InstallationService::createUserFromProfileAndSave(
$databaseConfig,
'local.693c2b5c42e7c3.81926786',
'fDlCI34BZbbWv31iNm7H1jpwmu5py9vMyMkkVzQ3IC3WQdPQC4',
$_REQUEST['member_id'],
$_REQUEST['AUTH_ID'],
$_REQUEST['REFRESH_ID'],
$_REQUEST['DOMAIN']
);
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\DatabaseCore\UserRepository;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo); // или задайте свою схему таблицы через ApiDatabaseConfig::__construct()
// Все методы и описание смотрите в реализации репозитория
$repository = new UserRepository($databaseConfig);
$user = $repository->getFirstUserByMemberId('member_id');
$user = $repository->getFirstAdminByMemberId('member_id');
$users = $repository->getAllUsersByMemberId('member_id');
$repository->delete($user);
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\Enums\AuthType;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo); // или задайте свою схему таблицы через ApiDatabaseConfig::__construct()
// по умолчанию обработка лимитов всегда включена при создании объекта ApiClientSettings;
// вы можете отключить или задать свой интервал для повторного запроса в микросекундах
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
$apiSettings
->setOperationTimeLimitHandler(true, 5000000)
->setQueryLimitExceededHandler(true, 1000000);
$api = new ApiClientBitrix24($apiSettings, $databaseConfig);
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Logger;
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\Enums\AuthType;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo); // или задайте свою схему таблицы через ApiDatabaseConfig::__construct()
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
$logger = new Logger('api-b24');
$handler = new RotatingFileHandler(
storage_path('logs/rest-api-bitrix24.log'),
15,
Logger::DEBUG
);
$formatter = new LineFormatter(
"[%datetime%] %level_name%: %message% %context%\n",
'Y-m-d H:i:s',
true
);
$formatter->setJsonPrettyPrint(true);
$handler->setFormatter($formatter);
$logger->pushHandler($handler);
$api = new ApiClientBitrix24($apiSettings, $databaseConfig, $logger);
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\Services\Batch;
// ...
$api = new ApiClientBitrix24($apiSettings, $databaseConfig);
$batchService = new Batch($api);
// получаем все элементы сущности, работает только со списочными методами
$getAllResult = $batchService->getAll('tasks.task.list', ['filter' => ['STATUS' => 5]]);
// вернёт ответы предварительно отсортировав их по тем же ключам массива, которые вы укажете в аргументе метода.
$resultWithKeys = $batchService->callWithKeys([
'scope_response' => ['method' => 'scope', 'params' => []],
'deal_list_response' => ['method' => 'crm.deal.list', 'params' => ['select' => ['ID', 'TITLE']]],
])
// BatchCollector — инструмент для накопления нескольких REST‑запросов в одном объекте
// с последующим пакетным выполнением, что уменьшает количество обращений к API.
// Можно добавлять более 50 запросов — сервис сам корректно разобьёт их на батчи.
$batchCollector = $batchService->collector();
$batchCollector->add('crm.deal.update', ['id' => 123, 'fields' => ['...']]);
$batchCollector->add('crm.deal.update', ['id' => 124, 'fields' => ['...']]);
$batchCollector->add('crm.lead.update', ['id' => 123, 'fields' => ['...']]);
$collectorResult = $batchCollector->execute();
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\Connectors\Models\Webhook;
use SimpleApiBitrix24\Enums\AuthType;
$apiSettings = new ApiClientSettings(AuthType::WEBHOOK);
$apiSettings->setDefaultCredentials(new Webhook('https://test.bitrix24.ru/rest/1/b1hw1*****k12t/'));
$api = new ApiClientBitrix24($apiSettings);
print_r($api->call('crm.deal.get', ['ID' => 2]));
use PDO;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\DatabaseCore\TableManager;
// Create a PDO instance
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
// Create a database configuration object.
// If you need custom table or column names, pass them via ApiDatabaseConfig::__construct()
$databaseConfig = ApiDatabaseConfig::build($pdo);
// Create the users table if it does not exist
$tableManager = new TableManager($databaseConfig);
$tableManager->createUsersTableIfNotExists(); // or $tableManager->createUsersTableIfNotExists('your_table_name')
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\DatabaseCore\UserRepository;
use SimpleApiBitrix24\Enums\AuthType;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo);
// Load a user whose authorization tokens will be used
$repository = new UserRepository($databaseConfig);
$user = $repository->getUserByIdAndMemberId(1, 'bitrix24_member_id');
// Create settings and set default credentials
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
$apiSettings->setDefaultCredentials($user);
// Create the REST API client
$api = new ApiClientBitrix24($apiSettings, $databaseConfig);
print_r($api->call('crm.deal.get', ['ID' => 2]));
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\DatabaseCore\UserRepository;
use SimpleApiBitrix24\Enums\AuthType;
use SimpleApiBitrix24\Services\Installation\InstallationService;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo);
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
$api = new ApiClientBitrix24($apiSettings, $databaseConfig);
// Create and save the user in the database
$user = InstallationService::createUserFromProfileAndSave(
$databaseConfig,
'local.693c2b5c42e7c3.81926786',
'fDlCI34BZbbWv31iNm7H1jpwmu5py9vMyMkkVzQ3IC3WQdPQC4',
$_REQUEST['member_id'],
$_REQUEST['AUTH_ID'],
$_REQUEST['REFRESH_ID'],
$_REQUEST['DOMAIN']
);
// Your installation logic here
$api->setCredentials($user);
print_r($api->call('scope'));
// Finalize installation
InstallationService::finishInstallation();
use SimpleApiBitrix24\ApiClientSettings;
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
$apiSettings->setDefaultCredentials($user);
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\DatabaseCore\UserRepository;
use SimpleApiBitrix24\Enums\AuthType;
use SimpleApiBitrix24\Services\Installation\InstallationService;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo); // If you need custom table or column names, pass them via ApiDatabaseConfig::__construct()
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
// User #1
$repository = new UserRepository($databaseConfig);
$user_1 = $repository->getUserByIdAndMemberId(1, 'bitrix24_member_id_1');
$apiClient_1 = new ApiClientBitrix24($apiSettings, $databaseConfig);
$apiClient_1->setCredentials($user_1);
// User #2
$user_2 = $repository->getFirstAdminByMemberId('bitrix24_member_id_2');
$apiClient_2 = clone $apiClient_1;
$apiClient_2->setCredentials($user_2);
// Now both clients work independently
print_r($apiClient_1->call('profile'));
print_r($apiClient_2->call('profile'));
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\DatabaseCore\UserRepository;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo); // If you need custom table or column names, pass them via ApiDatabaseConfig::__construct()
// All methods and description can be found in the repository implementation
$repository = new UserRepository($databaseConfig);
$user = $repository->getFirstUserByMemberId('member_id');
$user = $repository->getFirstAdminByMemberId('member_id');
$users = $repository->getAllUsersByMemberId('member_id');
$repository->delete($user);
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\Enums\AuthType;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo);
// by default, limit processing is always enabled when creating an ApiClientSettings object;
// you can disable it or set your own interval for re-request in microseconds
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
$apiSettings
->setOperationTimeLimitHandler(true, 5000000)
->setQueryLimitExceededHandler(true, 1000000);
$api = new ApiClientBitrix24($apiSettings, $databaseConfig);
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Logger;
use PDO;
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\ApiClientSettings;
use SimpleApiBitrix24\ApiDatabaseConfig;
use SimpleApiBitrix24\Enums\AuthType;
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root', 'password');
$databaseConfig = ApiDatabaseConfig::build($pdo); // If you need custom table or column names, pass them via ApiDatabaseConfig::__construct()
$apiSettings = new ApiClientSettings(AuthType::TOKEN);
$logger = new Logger('api-b24');
$handler = new RotatingFileHandler(
storage_path('logs/rest-api-bitrix24.log'),
15,
Logger::DEBUG
);
$formatter = new LineFormatter(
"[%datetime%] %level_name%: %message% %context%\n",
'Y-m-d H:i:s',
true
);
$formatter->setJsonPrettyPrint(true);
$handler->setFormatter($formatter);
$logger->pushHandler($handler);
$api = new ApiClientBitrix24($apiSettings, $databaseConfig, $logger);
use SimpleApiBitrix24\ApiClientBitrix24;
use SimpleApiBitrix24\Services\Batch;
// ...
$api = new ApiClientBitrix24($apiSettings, $databaseConfig);
$batchService = new Batch($api);
// Retrieve all items of an entity (works only with list‑type methods)
$getAllResult = $batchService->getAll('tasks.task.list', ['filter' => ['STATUS' => 5]]);
// Returns responses sorted by the same keys you provide
$resultWithKeys = $batchService->callWithKeys([
'scope_response' => ['method' => 'scope', 'params' => []],
'deal_list_response' => ['method' => 'crm.deal.list', 'params' => ['select' => ['ID', 'TITLE']]],
])
// BatchCollector is a utility for collecting multiple REST requests into a single queue
// and executing them as a batch, reducing the number of API calls.
// It supports more than 50 queued requests — batching is handled automatically.
$batchCollector = $batchService->collector();
$batchCollector->add('crm.deal.update', ['id' => 123, 'fields' => ['...']]);
$batchCollector->add('crm.deal.update', ['id' => 124, 'fields' => ['...']]);
$batchCollector->add('crm.lead.update', ['id' => 123, 'fields' => ['...']]);
$collectorResult = $batchCollector->execute();
json
{
"error": "OPERATION_TIME_LIMIT",
"error_description": "Method is blocked due to operation time limit."
}
json
{
"error": "OPERATION_TIME_LIMIT",
"error_description": "Method is blocked due to operation time limit."
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.