Bookings API Documentation

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
IncompleteINCCheckout was started but not yet paid (e.g. an abandoned cart).
Deposit PaidDEPA deposit has been taken; a balance remains outstanding.
CompleteCOMThe booking is fully booked and paid.
CancelledCANThe 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
RepeatingREP
One-off / multi-partONE
RollingROL

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.