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โ
| Type | Description | Examples |
|---|---|---|
rental | Equipment or item rentals | Bike rentals, kayak rentals, camping gear |
experience | Tours, activities, or classes | Guided tours, surf lessons, yoga classes |
mixed | Both rentals and experiences in one booking | Rent a kayak and book a guided tour together |
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"]
}
| Value | Present when the booking has... |
|---|---|
rental | One or more rental product line items |
experience | One or more experience line items |
store | One or more store-product (point-of-sale) line items |
service | One 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(orcancelled, orno_showwhen staff mark that the customer never came). - Experience lines (
experiences[].fulfillment_status):confirmedโchecked_inโcompleted(orcancelled, orno_show). On a booking with the same activity on several days, a day that was never checked in readsno_showonce 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
| Status | Description |
|---|---|
draft | Saved without telling anyone. Holds its dates only when draft.holds_dates is true. See Confirm Booking. |
confirmed | Booking is confirmed and awaiting fulfillment |
picked_up | Customer has collected rental items |
checked_in | Customer has arrived for experience |
returned | Rental items have been returned |
completed | Booking is fully complete |
no_show | The 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 |
cancelled | Booking 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โ
| Method | Endpoint | Description | Scope Required |
|---|---|---|---|
GET | /v1/bookings | List all bookings with filtering and pagination | bookings:read |
GET | /v1/bookings/{id} | Get a single booking with full details | bookings:read |
POST | /v1/bookings | Create a new booking | bookings:write |
PATCH | /v1/bookings/{id} | Update an existing booking | bookings:write |
DELETE | /v1/bookings/{id} | Cancel a booking | bookings:write |
POST | /v1/bookings/{id}/actions/no-show | Mark that the customer never came, or undo it | bookings:write |
POST | /v1/bookings/{id}/payments | Add a payment to a booking | bookings:write |
PUT | /v1/bookings/{id}/payment-method-discount | Apply or clear the in-person payment-method discount | bookings:write |
POST | /v1/bookings/{id}/notes | Add a note to a booking | bookings:write |
PUT | /v1/bookings/{id}/tags | Update tags on a booking | bookings:write |
GET | /v1/bookings/{id}/gear-list | What to pull off the shelf for the booking, and from which site | gear: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 createdbooking.updated- Booking details changedbooking.cancelled- Booking was cancelledbooking.completed- Booking marked completebooking.no_show- Booking marked as a no-show
See Webhooks for setup instructions.
Related Resourcesโ
- 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