RentalTide is a certified OCTO supplier (core, octo/pricing and octo/content, certified November 2026). If your platform already reads OCTO, you can sell a RentalTide operator's rentals, tours and charters with the integration you have: point it at our endpoint and use the key the operator gives you.
The Reseller & OTA API (the Channel API) sells the same inventory over a smaller REST surface, and lets a marketplace use one key across every operator that connects to it. Use whichever your platform already speaks.
Base URL and keys
| Value | |
|---|---|
| Base URL | https://v3.api.rentaltide.com/octo/v1 |
| Auth | Authorization: Bearer <key> or X-API-Key: <key> |
| Live keys | rtc_live_..., one per operator. The operator creates it in Settings → OTAs & Resellers and sends it to you |
| Test keys | rtc_test_..., from your sandbox |
In OCTO terms each operator is one supplier, so you hold one key per operator. A key sees only that operator's products, and only the bookings made with that key. A marketplace key from the partner portal, which spans many operators, is refused here with 403 FORBIDDEN. Ask each operator for a direct key instead.
Keys are server-to-server secrets. Responses carry no CORS headers, so the API cannot be called from a browser.
Endpoints
| Method | Path | Does |
|---|---|---|
GET | /supplier | The operator behind the key |
GET | /products | Every product the operator offers you |
GET | /products/:productId | One product |
POST | /availability | Slots for one option, by date range or availabilityIds |
POST | /availability/calendar | One entry per day for one option |
POST | /bookings | Hold a slot (ON_HOLD) |
POST | /bookings/:uuid/extend | Extend a hold |
POST | /bookings/:uuid/confirm | Confirm a hold (CONFIRMED) |
PATCH | /bookings/:uuid | Update contact, notes or reference; on a hold, also the slot or party |
POST | /bookings/:uuid/cancel | Release a hold or cancel a booking (DELETE /bookings/:uuid works too) |
GET | /bookings/:uuid | One booking |
GET | /bookings | Search by resellerReference, supplierReference, localDate or localDateStart/localDateEnd |
Everything follows the OCTO specification. The sections below cover what is specific to RentalTide.
Capabilities
Send them in the Octo-Capabilities header (or the _capabilities query parameter). The response echoes the ones applied.
octo/pricing: prices on products, availability, calendar days and bookings, in integer minor units.retailis what the customer pays,netis what you owe the operator, and taxes are included (includedTaxes). Each operator sells in one currency; asking for another isBAD_REQUEST.octo/content: the product's public title, short description, features, FAQs, photos and locations, in the shape of OCTO's Content capability.
Not supported yet: octo/notifications (poll availability for changes), pickups, dropoffs and promotions.
How rentals map to OCTO
OCTO has no rental product type, so hire is mapped onto options and units:
| RentalTide | OCTO |
|---|---|
| A listing or a tour | Product |
| Each bookable length: a fixed package, or each whole-hour length an hourly hire allows (up to 8) | Option, id dur_<minutes> (e.g. dur_120) |
| Daily hire | One default option, availabilityType: OPENING_HOURS, all-day availability |
| Package start times and tour departures | START_TIME availability |
| A boat or jet ski sold per craft | Unit craft (type OTHER; one unit per craft type when a listing has several). paxCount is the seats in one craft; quantity is the number of craft |
| A seat on a shared trip | Unit guest |
| A tour's price tiers | One unit per tier, mapped to ADULT, CHILD and so on |
Availability is counted against the operator's real fleet, so the same craft is never sold twice across your platform, the operator's own booking page and other resellers. allowFreesale is always false.
Only products that confirm instantly are offered. A listing that needs the operator's approval, or a service delivered to the customer's address, is left out.
Holds and bookings
- Hold.
POST /bookingswithproductId,optionId,availabilityIdandunitItems. Theuuidyou send is the idempotency key: repeating the call returns the same hold. Holds last 30 minutes by default; setexpirationMinutesfor up to 60. - Confirm.
POST /bookings/:uuid/confirmwith the lead contact. The price is the one quoted when the hold was made. - Change. While a booking is on hold you can change its slot or party with
PATCH. Once confirmed, only the contact, notes and reference can change. To move a confirmed booking, cancel it and book again.
Contact fields. Every option lists what it needs in requiredContactFields. Usually that is the lead's firstName, lastName and emailAddress. When the operator asks guests to complete steps before arriving (a waiver, a licence check), phoneNumber is required too. When every guest signs their own waiver, each unit item needs that guest's name.
What the customer receives. A confirmed booking carries one VOUCHER with up to four delivery formats: PDF_URL, QRCODE (the customer's pre-trip page, for waivers and trip details), CODE128 (the check-in code) and, where available, PKPASS_URL (Apple Wallet). Hires are redeemed from the operator's manifest (MANIFEST), tours by scanning the voucher (DIGITAL).
Cancelling. A booking can be cancelled through the API until the option's cancellationCutoff, and only while the operator's policy gives a full refund. After that the request is refused with the reason, and the customer contacts the operator.
Money
You collect the full retail price from the customer and pay the operator the net (retail less your commission) on your normal payout schedule. Commission is agreed between you and each operator and set on that operator's key. RentalTide does not charge you.
Limits
Per key: 1,800 availability calls, 600 other reads and 120 writes per minute. Over the limit you get 429 with Retry-After. Availability answers may be up to 15 seconds old unless the operator has had a booking or hold since; a hold always checks live.
Errors use OCTO's codes: INVALID_PRODUCT_ID, INVALID_OPTION_ID, INVALID_UNIT_ID, INVALID_AVAILABILITY_ID, INVALID_BOOKING_UUID, BAD_REQUEST, UNPROCESSABLE_ENTITY (sold out, a missing contact field, a cancel past the cutoff), UNAUTHORIZED and FORBIDDEN, each with an errorMessage.
Sandbox
Sign in at partners.rentaltide.com → Reseller & OTA API → Create my sandbox. The rtc_test_ key works on this API as well as the Channel API, against a private demo operator. Bookings there never reach a real operator. See Channel API sandbox for the details.
The demo operator covers each mapping above: a packaged hire, hourly hire, daily hire, a seat-sold cruise, a tour with Adult and Child tickets, a private charter, a closed day (the 15th of every month) and a slot that is always sold out (09:00 on the Sold-Out Demo).
POST /octo/v1/sandbox/reset deletes your test bookings and holds and puts the demo data back. It is not part of OCTO and works only with a rtc_test_ key.
Going live
- Build and test against your sandbox.
- Agree terms with the operator: commission, payout schedule and which products you sell.
- The operator creates your connection in Settings → OTAs & Resellers and sends you the
rtc_live_key. - Map their products and start selling.
Questions about connecting: support@rentaltide.com.

