curl -X POST https://app.lunacal.ai/api/mcp/bookings/list \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filters": {
"status": "upcoming",
"attendeeEmail": "alice@example.com"
},
"limit": 10
}'
{
"bookings": [
{
"uid": "8f2b1c3e-4d5a-4b6c-9e7f-0a1b2c3d4e5f",
"title": "30 min call with Alice",
"startTime": "2026-10-10T09:00:00.000Z",
"endTime": "2026-10-10T09:30:00.000Z",
"status": "ACCEPTED",
"location": "Zoom",
"paid": false,
"rescheduled": false,
"isHost": true,
"canManage": true,
"isEventDeleted": false,
"recurringEventId": null,
"cancellationReason": null,
"rejectionReason": null,
"responses": { "name": "Alice", "email": "alice@example.com" },
"references": [],
"attendees": [
{ "name": "Alice Smith", "email": "alice@example.com", "timeZone": "UTC" }
],
"payment": [],
"eventType": {
"id": 42,
"title": "30 min call",
"slug": "30min",
"price": 0,
"currency": "usd",
"schedulingType": null
},
"user": { "id": 1, "name": "Jane Doe", "email": "jane@example.com" }
}
],
"recurringInfo": [],
"nextCursor": 10
}
Booking endpoints
List bookings
Retrieve a paginated list of the user’s bookings.
POST
/
api
/
mcp
/
bookings
/
list
curl -X POST https://app.lunacal.ai/api/mcp/bookings/list \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filters": {
"status": "upcoming",
"attendeeEmail": "alice@example.com"
},
"limit": 10
}'
{
"bookings": [
{
"uid": "8f2b1c3e-4d5a-4b6c-9e7f-0a1b2c3d4e5f",
"title": "30 min call with Alice",
"startTime": "2026-10-10T09:00:00.000Z",
"endTime": "2026-10-10T09:30:00.000Z",
"status": "ACCEPTED",
"location": "Zoom",
"paid": false,
"rescheduled": false,
"isHost": true,
"canManage": true,
"isEventDeleted": false,
"recurringEventId": null,
"cancellationReason": null,
"rejectionReason": null,
"responses": { "name": "Alice", "email": "alice@example.com" },
"references": [],
"attendees": [
{ "name": "Alice Smith", "email": "alice@example.com", "timeZone": "UTC" }
],
"payment": [],
"eventType": {
"id": 42,
"title": "30 min call",
"slug": "30min",
"price": 0,
"currency": "usd",
"schedulingType": null
},
"user": { "id": 1, "name": "Jane Doe", "email": "jane@example.com" }
}
],
"recurringInfo": [],
"nextCursor": 10
}
Returns bookings where the authenticated user is the host, an attendee, a team admin, or a seat holder. Results are paginated with a cursor.
Body
object
required
Filters to apply.
Show properties
Show properties
string
required
Booking status to return. One of
upcoming, recurring, past, cancelled, unconfirmed.integer[]
Only return bookings for these teams.
integer[]
Only return bookings hosted by these users.
integer[]
Only return bookings for these event types.
string
Free-text search across booking title and attendee name.
string
Only return bookings starting on or after this ISO 8601 time.
string
Only return bookings starting on or before this ISO 8601 time.
string
Only return bookings with this attendee email.
boolean
Include personal bookings of team members.
integer
default:"10"
Number of bookings to return, from
1 to 100.integer
default:"0"
Pagination cursor. Pass the
nextCursor value from the previous response.Response
object[]
List of bookings.
Show booking properties
Show booking properties
string
Unique booking ID. Use it to cancel or reschedule.
string
Booking title.
string
Start time in ISO 8601.
string
End time in ISO 8601.
string
One of
ACCEPTED, CANCELLED, REJECTED, PENDING, AWAITING_HOST.string
Meeting location, e.g.
Zoom.boolean
Whether the booking has been paid.
boolean
Whether the booking was rescheduled.
boolean
Whether the authenticated user is the host.
boolean
Whether the authenticated user can manage the booking.
boolean
Whether the event type has been deleted.
string | null
ID of the recurring series, if any.
string | null
Reason given for cancellation.
string | null
Reason given for rejection.
object
Answers to the booking form, keyed by field name.
object[]
External references such as calendar and video links.
object[]
Attendees, each with
name, email, and timeZone.object[]
Payment records.
object
Summary of the event type:
id, title, slug, price, currency, schedulingType.object
The host:
id, name, email.object[]
Metadata for recurring bookings.
integer | null
Cursor for the next page, or
null when there are no more results.curl -X POST https://app.lunacal.ai/api/mcp/bookings/list \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filters": {
"status": "upcoming",
"attendeeEmail": "alice@example.com"
},
"limit": 10
}'
{
"bookings": [
{
"uid": "8f2b1c3e-4d5a-4b6c-9e7f-0a1b2c3d4e5f",
"title": "30 min call with Alice",
"startTime": "2026-10-10T09:00:00.000Z",
"endTime": "2026-10-10T09:30:00.000Z",
"status": "ACCEPTED",
"location": "Zoom",
"paid": false,
"rescheduled": false,
"isHost": true,
"canManage": true,
"isEventDeleted": false,
"recurringEventId": null,
"cancellationReason": null,
"rejectionReason": null,
"responses": { "name": "Alice", "email": "alice@example.com" },
"references": [],
"attendees": [
{ "name": "Alice Smith", "email": "alice@example.com", "timeZone": "UTC" }
],
"payment": [],
"eventType": {
"id": 42,
"title": "30 min call",
"slug": "30min",
"price": 0,
"currency": "usd",
"schedulingType": null
},
"user": { "id": 1, "name": "Jane Doe", "email": "jane@example.com" }
}
],
"recurringInfo": [],
"nextCursor": 10
}