Skip to main content

Unofficial Python library for Dikidi (beauty salon booking platform API). Based on reverse-engineered real browser requests.

Project description

📅 dikidi-api

Unofficial Dikidi API Client

PyPI - Version PyPI - Python Version GitHub License CI

🐍 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.


📦 Installation

pip install dikidi-api

Requires Python 3.11+.


🚀 Quick Start

Sync

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']}")

Async

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())

📖 API Reference

Clients

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()

Journal

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

Clients

Method Description
get_filter() Client list page
find(query) Search by name/phone
get_data_on_load(clients_ids, ...) Extended client data

Schedule

Method Description
get_page() Schedule page

Services

Method Description
get_filter() Service list
get_masters() Master list

Finance

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

Marketing

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

Company

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

🛠 Development

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

Test Suite

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.


🔗 Links


📄 License

MIT

© 2026 Aleksandr Bevz


Not affiliated with Dikidi.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dikidi_api-0.1.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dikidi_api-0.1.0-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file dikidi_api-0.1.0.tar.gz.

File metadata

  • Download URL: dikidi_api-0.1.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dikidi_api-0.1.0.tar.gz
Algorithm Hash digest
SHA256 23be10b8022c8dfdc972bde87e3833160adfa606630b2e93917aa15da245d678
MD5 a7604636390d417c259adc76168d2f97
BLAKE2b-256 2fdbdc1b865b8e54c1f2bb89d0508c4f9cd8e0060b3bf91780c59d758fd9823c

See more details on using hashes here.

Provenance

The following attestation bundles were made for dikidi_api-0.1.0.tar.gz:

Publisher: release.yml on asbevz/dikidi-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dikidi_api-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dikidi_api-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dikidi_api-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3cfdeef57fc019fbfcc65e9f842926583215f268e64139281f350fa84d9f0832
MD5 6466cc85d8bbca8810f008e838ee0090
BLAKE2b-256 7010472154653ac5d964ea169af296144468634d564c672ffeb201b27c71adc4

See more details on using hashes here.

Provenance

The following attestation bundles were made for dikidi_api-0.1.0-py3-none-any.whl:

Publisher: release.yml on asbevz/dikidi-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page