Bookings API
Schedule appointments, manage availability, and handle booking workflows.
List Bookings
GET
/api/v1/bookingsRetrieve a list of bookings
Query Parameters
| Parameter | Type | Description |
|---|---|---|
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/bookingsCreate a new booking
Request Body
| Parameter | Type | Description |
|---|---|---|
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-calcomSync bookings from Cal.com into your organization
Requires an authenticated admin session and a configured Cal.com integration for the organization.
Request Body
| Parameter | Type | Description |
|---|---|---|
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,CANCELLEDCONFIRMED→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
}
}