Skip to main content

Bookings API

Bookings are the core resource in EquipDash, representing reservations for rental products or experience activities.

What is a Booking?โ€‹

A booking is a reservation that connects a Customer to one or more Products (rental items) or Experiences (tours/activities) for a specific date and time period. Bookings track:

  • Rental details: Which products are being rented, quantities, and variations
  • Experience details: Which tours/activities are booked, participant counts
  • Pricing: Subtotals, discounts, taxes, and payment status
  • Customer information: Contact details and booking history
  • Status tracking: From draft through completion or cancellation

Booking Typesโ€‹

TypeDescriptionExamples
rentalEquipment or item rentalsBike rentals, kayak rentals, camping gear
experienceTours, activities, or classesGuided tours, surf lessons, yoga classes
mixedBoth rentals and experiences in one bookingRent a kayak and book a guided tour together
note

A booking can contain rentals, experiences, or both at once (a mixed booking). When a booking holds both rental and experience line items, type is "mixed". To branch on what a booking actually contains, prefer the line_types array (see below) over the type string.

Line Typesโ€‹

Every booking returns a line_types array describing which fulfillment tracks it holds, derived from its line items (not from type). A mixed booking returns ["rental", "experience"]; a single-type booking returns one entry. Order is stable: rental โ†’ experience โ†’ store โ†’ service.

{
"id": 1234,
"type": "mixed",
"line_types": ["rental", "experience"]
}
ValuePresent when the booking has...
rentalOne or more rental product line items
experienceOne or more experience line items
storeOne or more store-product (point-of-sale) line items
serviceOne or more workshop/service line items

Per-Line Fulfillment Statusโ€‹

On a mixed booking each track is fulfilled independently, so the top-level status is only a rolled-up summary. The authoritative per-line state lives on each line item as fulfillment_status:

  • Rental lines (products[].fulfillment_status): confirmed โ†’ picked_up โ†’ returned (or cancelled, or no_show when staff mark that the customer never came).
  • Experience lines (experiences[].fulfillment_status): confirmed โ†’ checked_in โ†’ completed (or cancelled, or no_show). On a booking with the same activity on several days, a day that was never checked in reads no_show once the booking is completed.

The booking-level status resolves to completed only once every line has reached its terminal state; until then a mixed booking reads confirmed even after one half is picked up or checked in. Read fulfillment_status per line for exact progress.

A booking on several daysโ€‹

When one booking has the same activity on several days, each day is checked in on its own. POST /v1/bookings/{id}/actions/check-in checks in the day that's due: today, else the most recent day that passed without a check-in, else the next day to come. Call it again for the next day while the booking reads checked_in. Once every day is in it answers that the booking is already checked in. On Get a booking, check_in_day names the day the next call checks in, and day_to_check_in names the day still to check in, dated today or later.

Booking Status Flowโ€‹

draft โ†’ confirmed โ†’ picked_up/checked_in โ†’ returned/completed
โ†˜ no_show
โ†˜ cancelled
StatusDescription
draftSaved without telling anyone. Holds its dates only when draft.holds_dates is true. See Confirm Booking.
confirmedBooking is confirmed and awaiting fulfillment
picked_upCustomer has collected rental items
checked_inCustomer has arrived for experience
returnedRental items have been returned
completedBooking is fully complete
no_showThe customer never came. The seat stays sold, the revenue is kept, the rental items are free for other bookings, and any balance is still due. See Mark a No Show
cancelledBooking has been cancelled

Relationshipsโ€‹

A booking connects to many other resources:

Rental Booking                    Experience Booking
โ”œโ”€โ”€ Customer (required) โ”œโ”€โ”€ Customer (required)
โ”œโ”€โ”€ Products[] โ”œโ”€โ”€ Experiences[]
โ”‚ โ””โ”€โ”€ ProductVariation โ”œโ”€โ”€ Payments[]
โ”œโ”€โ”€ Bundles[] (product packages) โ”œโ”€โ”€ CustomCharges[]
โ”œโ”€โ”€ Payments[] โ”œโ”€โ”€ Tags[]
โ”œโ”€โ”€ CustomCharges[] โ”œโ”€โ”€ Notes[]
โ”œโ”€โ”€ Tags[] โ””โ”€โ”€ Cancellation (if cancelled)
โ”œโ”€โ”€ Notes[]
โ””โ”€โ”€ Cancellation (if cancelled)

API Endpointsโ€‹

MethodEndpointDescriptionScope Required
GET/v1/bookingsList all bookings with filtering and paginationbookings:read
GET/v1/bookings/{id}Get a single booking with full detailsbookings:read
POST/v1/bookingsCreate a new bookingbookings:write
PATCH/v1/bookings/{id}Update an existing bookingbookings:write
DELETE/v1/bookings/{id}Cancel a bookingbookings:write
POST/v1/bookings/{id}/actions/no-showMark that the customer never came, or undo itbookings:write
POST/v1/bookings/{id}/paymentsAdd a payment to a bookingbookings:write
PUT/v1/bookings/{id}/payment-method-discountApply or clear the in-person payment-method discountbookings:write
POST/v1/bookings/{id}/notesAdd a note to a bookingbookings:write
PUT/v1/bookings/{id}/tagsUpdate tags on a bookingbookings:write
GET/v1/bookings/{id}/gear-listWhat to pull off the shelf for the booking, and from which sitegear:read

Common Use Casesโ€‹

Syncing Bookings to External Systemsโ€‹

Use the List Bookings endpoint with date filters to sync recent bookings:

curl "https://app.equipdash.com/api/v1/bookings?start_date_from=2026-01-01&status=confirmed" \
-H "Authorization: Bearer YOUR_API_KEY"

Creating Bookings from Your Websiteโ€‹

Accept bookings on your own website and create them via the API:

curl -X POST "https://app.equipdash.com/api/v1/bookings" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer_id": 123,
"start_date": "2026-02-15T09:00:00Z",
"end_date": "2026-02-15T17:00:00Z",
"products": [{"product_id": 1, "quantity": 2}]
}'

Real-time Updates with Webhooksโ€‹

Subscribe to booking events to get notified instantly:

  • booking.created - New booking created
  • booking.updated - Booking details changed
  • booking.cancelled - Booking was cancelled
  • booking.completed - Booking marked complete
  • booking.no_show - Booking marked as a no-show

See Webhooks for setup instructions.

  • Customers - Customer records linked to bookings
  • Products - Rental items that can be booked
  • Experiences - Tours and activities that can be booked
  • Tags - Labels for organizing bookings
  • Webhooks - Real-time booking notifications