A Python client for interacting with the Bitrix24 REST API.
Supports both synchronous (requests) and asynchronous (httpx) modes.
Ideal for CRM automation, data synchronization, and Bitrix24 integrations.
- Synchronous client (
requests) - Asynchronous client (
httpx) - Retry strategies:
fixed,linear,exponential,logarithmic,exponential_jitter - Support for pagination (
fetch_all=True) - API and HTTP error handling
- Context manager and session support
pip install bitrix24-api-clientfrom bitrix24_client import Bitrix24Client
with Bitrix24Client(
base_url="https://yourdomain.bitrix24.ru",
access_token="your_webhook_or_token"
) as client:
result = client.call_method("crm.lead.list", {"select": ["ID", "TITLE"]}, fetch_all=True)
print(result)import asyncio
from typing import List
from src.bitrix24_client import AsyncBitrix24Client
from src.bitrix24_client import chunk_batch_requests
async def run_batch_example():
client = AsyncBitrix24Client(
base_url="https://example.bitrix24.ru",
access_token="token",
max_concurrent_requests=35,
user_id=1
)
await client.open_session()
lead_ids: List[dict] = await client.call_method(
'crm.lead.list',
params={
'select': ['ID']
},
fetch_all=True
)
commands = {
f"get_lead_{lead_id['ID']}": f"crm.lead.get?id={lead_id['ID']}"
for lead_id in lead_ids
}
chunks = chunk_batch_requests(commands)
get_lead_tasks = [
asyncio.create_task(client.call_method(
'batch',
params={"halt": 1, "cmd": chunk}
)) for chunk in chunks
]
results = await asyncio.gather(*get_lead_tasks)
await client.close_session()
if __name__ == "__main__":
asyncio.run(run_batch_example())Supported strategies:
fixed— fixed delaylinear— linear backofflogarithmic— logarithmic backoffexponential— exponential backoffexponential_jitter— exponential backoff with jitter (randomized delay)
Example:
client = Bitrix24Client(
base_url="https://yourdomain.bitrix24.ru",
access_token="your_webhook_or_token",
retry_strategy="exponential_jitter"
)| Parameter | Description |
|---|---|
base_url |
Base URL of the Bitrix24 portal. |
access_token |
Bitrix24 access token or webhook key. |
user_id |
User ID for OAuth-based authentication (optional, None for webhook). |
timeout |
Request timeout in seconds. |
max_retries |
Maximum number of retries on 503 errors. |
retry_strategy |
Optional retry delay strategy (implements RetryStrategyI). |
response_formatter |
Optional API response formatter (implements ResponseFormatterI). |
response_validator |
Optional API response validator (implements ResponseValidatorI). |
Note:
If retry_strategy, response_formatter, or response_validator are not provided, default implementations will be used.
Raises:
Bitrix24InvalidBaseURLError — If the provided base_url is invalid.
If you’ve found a bug, have a suggestion, or want to add a feature — your help is welcome! Feel free to open an issue or submit a pull request.
All contributions are appreciated: code, documentation, or usage examples.
This project is licensed under the MIT License. See the LICENSE file for details.