Bookings API

Schedule appointments, manage availability, and handle booking workflows.

List Bookings

GET
/api/v1/bookings

Retrieve a list of bookings

Query Parameters

ParameterTypeDescription
schedule_id
string
Filter by schedule
event_type_id
string
Filter by event type
status
string
Filter by status (PENDING, CONFIRMED, CANCELLED, COMPLETED, NO_SHOW)
upcoming
boolean
Only future bookings
start_date
string
Bookings on or after this date
end_date
string
Bookings on or before this date
attendee_email
string
Search by attendee email
limit
number
Max results
Default: 50
offset
number
Skip results
Default: 0
Request
curl -X GET "https://api.webkasa.app/api/v1/bookings?upcoming=true&status=CONFIRMED" \
  -H "Authorization: Bearer wk_live_xxx..."

Response

{
  "data": [
    {
      "id": "bk_abc123",
      "schedule_id": "sch_xyz789",
      "start_time": "2024-02-15T10:00:00Z",
      "end_time": "2024-02-15T11:00:00Z",
      "status": "CONFIRMED",
      "title": "Consultation Call",
      "attendee_name": "John Doe",
      "attendee_email": "john@example.com",
      "created_at": "2024-01-01T00:00:00Z"
    }
  ],
  "meta": {
    "total": 25,
    "limit": 50,
    "offset": 0,
    "hasMore": false
  }
}

Get Booking

GET
/api/v1/bookings/{id}

Retrieve a single booking by ID

Request
curl -X GET "https://api.webkasa.app/api/v1/bookings/bk_abc123" \
  -H "Authorization: Bearer wk_live_xxx..."

Create Booking

POST
/api/v1/bookings

Create a new booking

Request Body

ParameterTypeDescription
schedule_id
required
string
Schedule ID for the booking
start_time
required
string
Start time (ISO 8601)
end_time
required
string
End time (ISO 8601)
attendee.name
required
string
Attendee name
attendee.email
required
string
Attendee email
event_type_id
string
Event type ID
timezone
string
Timezone for the booking
title
string
Booking title
location
string
Meeting location
location_type
string
Location type (in_person, phone, video, custom)
attendee.phone
string
Attendee phone
attendee.timezone
string
Attendee timezone
attendee.notes
string
Additional notes
metadata
object
Custom metadata
Request
curl -X POST "https://api.webkasa.app/api/v1/bookings" \
  -H "Authorization: Bearer wk_live_xxx..." \
  -H "Content-Type: application/json" \
  -d '{
    "schedule_id": "sch_abc123",
    "event_type_id": "evt_xyz789",
    "start_time": "2024-02-15T10:00:00Z",
    "end_time": "2024-02-15T11:00:00Z",
    "timezone": "America/Los_Angeles",
    "title": "Consultation Call",
    "location": "Zoom",
    "location_type": "video",
    "attendee": {
      "name": "John Doe",
      "email": "john@example.com",
      "phone": "+1234567890",
      "timezone": "America/New_York",
      "notes": "First-time visitor"
    },
    "metadata": {
      "source": "website"
    }
  }'

Response

{
  "data": {
    "id": "bk_abc123",
    "schedule_id": "sch_abc123",
    "status": "PENDING",
    "start_time": "2024-02-15T10:00:00Z",
    "created_at": "2024-01-01T00:00:00Z"
  }
}

Sync Cal.com Bookings

POST
/api/bookings/sync-calcom

Sync bookings from Cal.com into your organization

Requires an authenticated admin session and a configured Cal.com integration for the organization.

Request Body

ParameterTypeDescription
organizationId
required
string
Organization ID to sync bookings for
startDate
string
Start date (ISO 8601) for sync range
endDate
string
End date (ISO 8601) for sync range
Request
curl -X POST "https://app.webkasa.app/api/bookings/sync-calcom" \
  -H "Content-Type: application/json" \
  -d '{
    "organizationId": "org_abc123",
    "startDate": "2024-02-01T00:00:00Z",
    "endDate": "2024-03-01T00:00:00Z"
  }'

Response

{
  "success": true,
  "synced": 12,
  "skipped": 1
}

Update Booking

PATCH
/api/v1/bookings/{id}

Update booking status or details

Valid status transitions:

  • PENDING CONFIRMED, CANCELLED
  • CONFIRMED COMPLETED, CANCELLED, NO_SHOW
Request
curl -X PATCH "https://api.webkasa.app/api/v1/bookings/bk_abc123" \
  -H "Authorization: Bearer wk_live_xxx..." \
  -H "Content-Type: application/json" \
  -d '{
    "status": "CONFIRMED",
    "metadata": {
      "confirmed_by": "admin"
    }
  }'

Response

{
  "data": {
    "id": "bk_abc123",
    "status": "CONFIRMED",
    "updated_at": "2024-01-02T00:00:00Z"
  }
}

Cancel Booking

DELETE
/api/v1/bookings/{id}

Cancel a booking (soft delete)

Request
curl -X DELETE "https://api.webkasa.app/api/v1/bookings/bk_abc123" \
  -H "Authorization: Bearer wk_live_xxx..."

Response

{
  "data": {
    "id": "bk_abc123",
    "status": "CANCELLED",
    "cancelled": true
  }
}