RentalTideRentalTideRentalTideDocs
Dashboard›

OCTO Supplier API

Connect to RentalTide operators over OCTO. Certified supplier API for live availability, holds and bookings on rentals, tours and charters.

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.

HTTP
GET https://v3.api.rentaltide.com/octo/v1/products
Authorization: Bearer rtc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Octo-Capabilities: octo/pricing, octo/content
Not on OCTO?

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 URLhttps://v3.api.rentaltide.com/octo/v1
AuthAuthorization: Bearer <key> or X-API-Key: <key>
Live keysrtc_live_..., one per operator. The operator creates it in Settings → OTAs & Resellers and sends it to you
Test keysrtc_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

MethodPathDoes
GET/supplierThe operator behind the key
GET/productsEvery product the operator offers you
GET/products/:productIdOne product
POST/availabilitySlots for one option, by date range or availabilityIds
POST/availability/calendarOne entry per day for one option
POST/bookingsHold a slot (ON_HOLD)
POST/bookings/:uuid/extendExtend a hold
POST/bookings/:uuid/confirmConfirm a hold (CONFIRMED)
PATCH/bookings/:uuidUpdate contact, notes or reference; on a hold, also the slot or party
POST/bookings/:uuid/cancelRelease a hold or cancel a booking (DELETE /bookings/:uuid works too)
GET/bookings/:uuidOne booking
GET/bookingsSearch 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. retail is what the customer pays, net is what you owe the operator, and taxes are included (includedTaxes). Each operator sells in one currency; asking for another is BAD_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:

RentalTideOCTO
A listing or a tourProduct
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 hireOne default option, availabilityType: OPENING_HOURS, all-day availability
Package start times and tour departuresSTART_TIME availability
A boat or jet ski sold per craftUnit 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 tripUnit guest
A tour's price tiersOne 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

  1. Hold. POST /bookings with productId, optionId, availabilityId and unitItems. The uuid you send is the idempotency key: repeating the call returns the same hold. Holds last 30 minutes by default; set expirationMinutes for up to 60.
  2. Confirm. POST /bookings/:uuid/confirm with the lead contact. The price is the one quoted when the hold was made.
  3. 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

  1. Build and test against your sandbox.
  2. Agree terms with the operator: commission, payout schedule and which products you sell.
  3. The operator creates your connection in Settings → OTAs & Resellers and sends you the rtc_live_ key.
  4. Map their products and start selling.

Questions about connecting: support@rentaltide.com.

Was this page helpful?
Need help? Contact Support.See what’s new. Check out changelog.Questions? Book a video chat.
Ask AI
Responses are generated using AI and may contain mistakes.
Ask questions about RentalTide and get help with your integration.