OCTO for resellers
Resellers, OTAs and hubs book a business's offerings over OCTO, the open standard for tours and activities, at https://daybooked.io/api/octo. The business makes one reseller key per reseller in Developers; the reseller reads products and availability, holds a place, then confirms it with the guest's name and email. daybooked serves OCTO Core with pricing and content.
Connect a reseller
One key per reseller, made in the dashboard. A reseller's key works here only, and sees only the bookings it made: a new key for the same reseller doesn't see the old one's, so keep the key while its bookings are ahead.
- In the dashboard, open Developers and choose New under API keys.
- Pick Reseller, name the key after the reseller, and create it.
- Send the reseller the key, shown once, and the OCTO address under it.
https://daybooked.io/api/octo
Authorization: Bearer daybooked_live_…
Octo-Capabilities: octo/pricing, octo/contentEndpoints
OCTO Core, plus octo/pricing and octo/content when Octo-Capabilities asks for them. JSON in and out.
GET /supplierThe business, with its booking pageGET /productsEvery active offeringGET /products/{id}One productPOST /availabilityStart times with what's left: by localDate, localDateStart and localDateEnd, or availabilityIdsPOST /availability/calendarEach day, up to a year at a timePOST /bookingsHold a place: uuid, productId, optionId, availabilityId, unitItems, expirationMinutesPOST /bookings/{uuid}/confirmConfirm with the guest's contactPATCH /bookings/{uuid}Move to another start; a hold may also change its units and guestPOST /bookings/{uuid}/extendKeep a hold expirationMinutes from now, up to a day after it was madePOST /bookings/{uuid}/cancelCancel, with a reasonDELETE /bookings/{uuid}The same cancel, for clients of older OCTO versionsGET /bookings/{uuid}One bookingGET /bookingsBy resellerReference or supplierReferenceGET /capabilitiesWhat can be asked forHow daybooked maps
Every active offering is a product, sold by start time in the business's time zone.
classOne option, DEFAULT, of guest units (type ADULT): one per seat. Two sessions at one start read as one availability; a booking takes the first with room.appointmentOne option, DEFAULT, of guest units for the party; one a booking when additional guests cost something else. Each booking takes one of its parallel slots for its time, whatever its party: vacancies is one booking's worth while a slot is free.rentalOne option per number of periods, 1 up to its most, of item units (type OTHER), priced for that many periods.availabilityIdThe local start with its offset, such as 2026-12-05T09:00:00-07:00; allDay for a time that runs midnight to midnight.voucherOnce confirmed: the booking's reference as a QR code; the business checks guests off its roster.Holds and bookings
Hold, then confirm with the guest's contact. Statuses: ON_HOLD, EXPIRED once a hold lapses, CONFIRMED, CANCELLED.
- The
uuidis the idempotency key: a retry with it returns the same booking. - A hold lasts
expirationMinutes: 30 by default, at most 1440. Extending never keeps it past a day from when it was made. A key keeps at most 20 open holds. - Confirm with
contact:emailAddress, andfullNameorfirstNameandlastName, before the start.unitItemsmay change a hold's party on the way. - A booking shows the contact you sent, and only that.
- A confirmed booking is the guest's and reads as paid: the reseller collected the money and owns the refund.
- Cancel a hold any time, and a booking until 24 hours before the start, or the business's guest cancellation window. Its guest can't cancel it with the business.
- daybooked sends the reseller's guest no booking emails or reminders; the business hears of each booking you confirm, move or cancel. Messages the business writes, one by one or to everyone booked at a time, still reach the guest.
- When an offering asks guests to sign a waiver, the business passes its signing link on: it isn't part of the OCTO booking.
Errors are OCTO's: { error, errorMessage } plus the id that was wrong, with HTTP 400. No key is 401; a key that isn't a live reseller key, 403; past 120 requests a minute, 429 with Retry-After.
Not supported
- Notifications and webhooks: read
GET /bookings/{uuid}again. When the business cancels or moves a booking of yours, daybooked asks it to tell you. - Pickups, dropoffs, offers, promotions, questions and gift cards.
OPENING_HOURSproducts, freesale and open-dated bookings.- A contact, reference or ticket per unit item,
emailReceipt, andforceon cancel. - A currency other than the business's, and net rates.