Bookings API Documentation
- Overview
- Fields
- Filters
- Operations
- Pulling Recent and Future Bookings
- Reservations (Per-Participant Detail)
Overview
This collection contains event bookings. A booking represents a single customer reserving a place at an event — it is the transaction that may cover one or more participants, is paid through a single invoice, and ties a customer to a specific event occurrence and its start date.
Each booking summarizes its party size (num_participants) and invoice totals. To retrieve the individual participants within a booking — including each attendee's name and check-in status — use the reservations collection described below.
This collection is read-only: only the list and read operations are supported. Results are ordered by creation time, newest first.
Bookings for rolling (recurring-membership) event types whose invoice is still payment-pending or cancelled are not returned. Bookings for one-off and repeating events are always returned regardless of status; filter by status or is_cancelled to narrow to confirmed bookings.
Fields
All fields are read-only.
| Name | Type | Description |
|---|---|---|
| id | integer | The unique identifier of the booking. This is placed in the URL when making API calls for the booking. |
| url | string (URL) | The unique API URL of the booking. |
| event_id | integer | The identifier of the event occurrence that was booked. |
| event_url | string (URL) | The API URL of the booked event. |
| event_type_name | string | The name of the event type (e.g. "Intro to Lead Climbing"). |
| event_type_schedule_type | string | The schedule type of the event type. One of the schedule types. |
| event_type_status | string | The status of the event type: DRA (Draft), ACT (Active), or RET (Retired). |
| event_start_date | string (ISO-8601 date) | The date the event begins, in the local time of your organization. This is the date used by the event_starts_at_min / event_starts_at_max filters. |
| num_participants | integer | The number of participants (reservations) on the booking, including any that were cancelled. |
| status | string | The status of the booking. One of the statuses. |
| is_cancelled | boolean | Whether the booking is fully cancelled (true when every participant on the booking is cancelled). |
| invoice_id | integer | The identifier of the invoice for this booking. |
| invoice_amount | string (decimal) | The gross invoice total, including tax. |
| invoice_tax_amount | string (decimal) | The tax portion of the invoice total. |
| invoice_amount_paid | string (decimal) | The amount paid on the invoice so far. |
| invoice_amount_due | string (decimal) | The outstanding balance on the invoice. |
| num_vouchers_used | integer | The number of completed voucher payments applied to the invoice. |
| vouchers_amount_paid | string (decimal) | The currency value attributed to vouchers used on the invoice. |
| invoice_refunded_amount | string (decimal) | The amount refunded against the invoice. |
| invoice_payment_type | string or null | The payment type used across the invoice's payments (see the payment types). |
| invoice_payment_method_type | string or null | The payment method type used across the invoice's payments. |
| invoice_cancellation_reason | string or null | The reason recorded if the invoice was cancelled. |
| booking_customer_id | integer or null | The identifier of the customer who made the booking. Null for bookings made without a logged-in customer. |
| booking_customer_url | string (URL) or null | The API URL of the customer who made the booking. |
| booking_customer_first_name | string or null | The first name of the customer who made the booking. |
| booking_customer_last_name | string or null | The last name of the customer who made the booking. |
| booking_customer_birthday | string (ISO-8601 date) or null | The birthday of the customer who made the booking. |
| booking_customer_email | string or null | The email address of the customer who made the booking. |
| created_date | string (ISO-8601 date) | The calendar date the booking was created, in the local time of your organization. |
| location_id | integer | The identifier of the location the event belongs to. |
| location_name | string | The name of the location the event belongs to. |
| pricing_matrix_id | integer or null | The identifier of the event's pricing matrix, if any. |
| pricing_matrix_name | string or null | The name of the event's pricing matrix, if any. |
| linked_private_event_id | integer or null | If this booking was a private-event request that has been converted, the identifier of the resulting private event. |
| linked_private_event_name | string or null | The name of the linked private event, if any. |
| created_at | string (ISO-8601 datetime) | When the booking was created, as a UTC timestamp. This is the field that created_at_min / created_at_max filter on, and the field results are ordered by. |
| updated_at | string (ISO-8601 datetime) | When the booking's record in the Capitan database was last updated, as a UTC timestamp. |
Statuses
| Name | Syntax | Description |
|---|---|---|
| Incomplete | INC | Checkout was started but not yet paid (e.g. an abandoned cart). |
| Deposit Paid | DEP | A deposit has been taken; a balance remains outstanding. |
| Complete | COM | The booking is fully booked and paid. |
| Cancelled | CAN | The booking has been cancelled. |
Note that attendance (whether a participant actually attended or was a no-show) is not represented on the booking. Attendance is tracked per participant; see reservations.
Event Type Schedule Types
| Name | Syntax |
|---|---|
| Repeating | REP |
| One-off / multi-part | ONE |
| Rolling | ROL |
Filters
See the filtering documentation for more information on how to use filters in the Capitan API.
| Name | Syntax | Description |
|---|---|---|
| Status | status |
Filters for bookings with the given status code. |
| Minimum Created Date | created_at_min |
Filters for bookings created on or after the given date (in the local time of your organization). Accepts an ISO-8601 date (YYYY-MM-DD); the boundary is the start of that day in your organization's time zone. |
| Maximum Created Date | created_at_max |
Filters for bookings created on or before the given date (in the local time of your organization). The given date is inclusive of its whole local day. |
| Minimum Event Start Date | event_starts_at_min |
Filters for bookings whose event starts on or after the given date (in the local time of your organization). Use this to retrieve future bookings. |
| Maximum Event Start Date | event_starts_at_max |
Filters for bookings whose event starts on or before the given date (in the local time of your organization). The given date is inclusive of its whole local day. |
| Event Type Is Repeating | event_type_is_repeating |
If true, filters for bookings of repeating events; if false, filters for bookings of one-off events. |
| Event Type Status | event_type_status_in |
Filters for bookings whose event type's status is one of the given comma-separated codes (DRA, ACT, RET). |
| Event Name | event_name_contains |
Filters for bookings whose event type name contains the given text (case-insensitive). |
| Is Cancelled | is_cancelled |
Filters for bookings that are (true) or are not (false) fully cancelled. |
| Location | location_id |
Filters for bookings whose event belongs to the given location ID. |
Operations
List
Request
GET /api/bookings/
Response
200 OK
{
"count": 84,
"next": "https://api.hellocapitan.com/api/bookings/?page=2",
"previous": null,
"results": [
{
"id": 48217,
"url": "https://api.hellocapitan.com/api/bookings/48217/",
"event_id": 90431,
"event_url": "https://api.hellocapitan.com/api/events/90431/",
"event_type_name": "Intro to Lead Climbing",
"event_type_schedule_type": "ONE",
"event_type_status": "ACT",
"event_start_date": "2026-06-20",
"num_participants": 2,
"status": "COM",
"is_cancelled": false,
"invoice_id": 75590,
"invoice_amount": "90.00",
"invoice_amount_paid": "90.00",
"invoice_amount_due": "0.00",
"booking_customer_id": 11234,
"booking_customer_url": "https://api.hellocapitan.com/api/customers/11234/",
"booking_customer_first_name": "Jordan",
"booking_customer_last_name": "Lee",
"booking_customer_email": "jordan.lee@example.com",
"created_date": "2026-06-15",
"location_id": 312,
"location_name": "Downtown Boulder",
"created_at": "2026-06-15T18:42:07.512345Z",
"updated_at": "2026-06-15T18:45:01.003221Z",
...
},
...
]
}
Read
Request
GET /api/bookings/48217/
Response
200 OK
{
"id": 48217,
"url": "https://api.hellocapitan.com/api/bookings/48217/",
"event_id": 90431,
...
}
Pulling Recent and Future Bookings
To retrieve all future bookings, filter on the event start date:
GET /api/bookings/?event_starts_at_min=2026-06-16&page_size=100
To retrieve recently created bookings, filter on the created date. The created_at_min and created_at_max filters operate at whole-day granularity, with day boundaries taken in your organization's local time zone:
GET /api/bookings/?created_at_min=2026-06-15&created_at_max=2026-06-15&page_size=100
Each result also includes a precise UTC created_at timestamp, which can be used to narrow to an exact window on the client side. Filters combine with logical AND, so a single request cannot return "created recently OR starting in the future"; issue the two requests separately and merge the results, de-duplicating on the booking id. Page through results using the next link until it is null; see the pagination documentation.
Reservations (Per-Participant Detail)
A booking may cover several participants. Where you need a row per participant — with each attendee's own name, birthday, email, linked customer, and check-in count — use the reservations collection at /api/reservations/. It is read-only and paginated in the same way as bookings.
Each reservation belongs to a booking and repeats the booking-level fields (booking_customer_*, event_*, event_type_*, location_*) alongside per-participant fields: first_name, last_name, birthday, email, preferred_name, customer_id / customer_url (the participant's own account), check_in_count (the number of event parts the participant has checked into), and question_responses. A full event start timestamp is available as event_start_timestamp.
The reservations collection supports analogous filters, but note the parameter names differ from bookings:
| Name | Syntax | Description |
|---|---|---|
| Minimum Created Date | created_date_min |
Filters for reservations created on or after the given date (organization-local). |
| Maximum Created Date | created_date_max |
Filters for reservations created on or before the given date (organization-local, inclusive). |
| Minimum Event Start Date | event_start_date_min |
Filters for reservations whose event starts on or after the given date. Use this to retrieve future reservations. |
| Maximum Event Start Date | event_start_date_max |
Filters for reservations whose event starts on or before the given date (inclusive). |
| Event Type | event_type_id |
Filters for reservations for the given event type ID. |
| Event Name | event_type_name_contains |
Filters for reservations whose event type name contains the given text (case-insensitive). |
| Location | location_id |
Filters for reservations at the given location ID. |
| Is Cancelled | is_cancelled |
Filters for reservations that are (true) or are not (false) cancelled. |