Unofficial Dikidi API Client
🐍 Async + Sync Python client for Dikidi — beauty salon booking platform.
Get appointments, clients, services, schedules, finances, marketing data and more.
Based on reverse-engineered real browser AJAX requests. Built on
httpx.
pip install dikidi-apiRequires Python 3.11+.
from dikidi_api import SyncDikidiClient
with SyncDikidiClient("+79991234567", "password", company_id=12345) as client:
client.auth()
journal = client.journal.get_api_data("2026-06-01", "2026-06-07")
for section in ("masters", "resources"):
info = journal.get(section, {}).get("info", {})
records = journal.get(section, {}).get("records", {}).get("data", {})
for mid in info.get("ids", []):
name = info.get("data", {}).get(mid, {}).get("title", f"ID {mid}")
count = sum(len(v) for v in records.get(mid, {}).values())
if count:
print(f"{name}: {count} appointments")
clients = client.clients.find("Иван")
for c in clients:
print(f"{c['name']} — {c['phone']}")import asyncio
from dikidi_api import AsyncDikidiClient
async def main():
async with AsyncDikidiClient("+79991234567", "password", company_id=12345) as client:
await client.auth()
journal = await client.journal.get_api_data("2026-06-01", "2026-06-07")
print(journal)
asyncio.run(main())Both clients share the same endpoint interface. The only difference is await on async calls.
| Client | Import | HTTP Engine | Methods |
|---|---|---|---|
AsyncDikidiClient |
from dikidi_api import AsyncDikidiClient |
httpx.AsyncClient |
async |
SyncDikidiClient |
from dikidi_api import SyncDikidiClient |
httpx.Client |
sync |
client = SyncDikidiClient(login, password, company_id)
client.auth()
client.close()
# or
with SyncDikidiClient(login, password, company_id) as client:
client.auth()client = AsyncDikidiClient(login, password, company_id)
await client.auth()
await client.close()
# or
async with AsyncDikidiClient(login, password, company_id) as client:
await client.auth()| Method | Description |
|---|---|
get_api_data(date_from, date_to, ...) |
Full journal: masters, resources, records, schedules |
get_page() |
Journal page data |
get_appointments(start, end, ...) |
Filtered appointment list |
get_filters_data() |
Filter data |
get_finance_widget_data() |
Finance summary |
get_appointment_config() |
Booking config |
| Method | Description |
|---|---|
get_filter() |
Client list page |
find(query) |
Search by name/phone |
get_data_on_load(clients_ids, ...) |
Extended client data |
| Method | Description |
|---|---|
get_page() |
Schedule page |
| Method | Description |
|---|---|
get_filter() |
Service list |
get_masters() |
Master list |
| Method | Description |
|---|---|
get_bonuses() |
Loyalty program |
get_payment_filter() |
Payments |
get_payroll() |
Payroll |
get_salary_settlements() |
Salary settlements |
get_salary_sheets() |
Salary sheets |
get_salary_schemes() |
Salary schemes |
| Method | Description |
|---|---|
get_mailing() |
Mailing campaigns |
get_reviews() |
Reviews |
get_retention() |
Client retention |
get_season_tickets() |
Season tickets |
get_certificates() |
Gift certificates |
get_tips() |
Tips |
get_fines() |
Fines |
get_ats() |
Phone system (ATS) |
get_sms_ready_messages() |
Ready SMS messages |
| Method | Description |
|---|---|
get_profile() |
Company profile |
get_permissions() |
Permissions |
get_notifications() |
Notifications |
get_alerts() |
Alerts |
get_chat_page() |
Chat page |
get_chat_unread() |
Unread chat dialogs |
get_online_record_properties() |
Online booking settings |
get_resources() |
Resources |
uv sync # Install all dependencies
uv run pytest -v # Run unit tests (no .env required)
uv run pytest -v -m integration # Run integration tests (requires .env)
uv build # Build sdist + wheel
uv publish # Publish to PyPI| Type | Count | Command |
|---|---|---|
| 🔬 Unit (mocked) | 14 | uv run pytest |
| 🌐 Integration (live API) | 14 | uv run pytest -m integration |
Integration tests require .env in project root with LOGIN_DIKIDI, PASSWORD_DIKIDI, COMPANY_DIKIDI. Without it they skip automatically.
- Dikidi: dikidi.ru
- PyPI: dikidi-api
If this library saves you time or helps your business, consider supporting its development:
| Crypto | Address |
|---|---|
| ₿ Bitcoin (BTC) | bc1q98gg278ywqdfhmxpfttuvsyskdxxmg0ac4sg5a |
| ◉ USDT (TRC-20) | TFf8jHqaoTWEEx6XzHTdRpLkMcYcwwRd17 |
| ◎ USDT (Solana) | 8SZc4jQoMKQeedJMe9VS5bnrWF8PCKvDjwixz3Zg4p2W |
Your support keeps the project alive and up to date ❤️
© 2026 Aleksandr Bevz