mahakala.app API Documentation

REST API v1 — Manage event types, bookings, and more programmatically.

Authentication

All API requests require a Bearer token. Generate API keys in Dashboard → Settings → API Keys.

curl -H "Authorization: Bearer mk_your_api_key" \
  https://mahakala.app/api/v1/me

Rate Limits

100 requests per minute per API key. Exceeding returns 429.

GET /api/v1/me

Get authenticated user info

Response
{ "user": { "id": "...", "email": "...", "name": "...", "timezone": "UTC" } }

GET /api/v1/event-types

List your active event types

Response
{ "eventTypes": [{ "id": "...", "title": "30min Call", "duration": 30, ... }] }

GET /api/v1/event-types/:id/availability?date=YYYY-MM-DD

Get available time slots for a specific date

Response
{ "date": "2026-02-15", "slots": [{ "start": "...", "end": "..." }] }

POST /api/v1/bookings

Create a new booking

Request Body
{ "eventTypeId": "...", "guestName": "Jane", "guestEmail": "[email protected]", "startTime": "2026-02-15T10:00:00Z" }
Response
{ "booking": { "id": "...", "status": "CONFIRMED", ... } }

GET /api/v1/bookings

List bookings. Query params: status, limit, offset

Response
{ "bookings": [...], "limit": 50, "offset": 0 }

GET /api/v1/bookings/:id

Get booking details

Response
{ "booking": { "id": "...", ... } }

DELETE /api/v1/bookings/:id

Cancel a booking

Response
{ "booking": { "id": "...", "status": "CANCELLED" } }

Webhooks

Configure webhooks in Dashboard → Settings → Webhooks. Events: booking.created, booking.cancelled, booking.rescheduled, poll.response_added. All payloads are signed with HMAC-SHA256 via X-Mahakala-Signature header.