RentalTideRentalTideDocs
Dashboard

Channel API sandbox

A private demo operator with sample rentals and tours, and a test key that calls the same endpoints as production — build and finish your reseller integration before a single operator connects to you.

Your rtc_test_ key points at a demo operator that belongs to you alone. It calls the same /channel/v1/* endpoints, returns the same payloads and the same error codes, and books against real availability logic — the difference is that no live calendar is touched, no operator is billed, and no guest exists.

Bash
JSON

mode is "test" here and "live" on a real key — that one field is the only thing your code needs to branch on, if it branches at all.

Get a key

Sign in at partners.rentaltide.com Reseller & OTA APICreate my sandbox. The key is shown once; rotate it from the same panel if you lose it.

You do not need to register a channel first, and you do not need an operator. That is the point: on day one a live key returns an empty /products (nobody has connected to you yet), so there is nothing to build against. The sandbox is what makes day one productive.

What's in it

A seeded marina with the sample listings a RentalTide operator gets in their own sandbox — enough to hit every branch of the catalog payload:

ListingExercises
Hourly rentalhourlyPrices rule objects, minimumHours
Daily rentaldailyPrices, multi-day windows
Fixed-durationA product whose window you cannot choose freely
Combo / bundleMulti-item pricing
Scheduled tourSeat-based capacity (unitsFree: null) + per-person priceTiers — Adult $65 / Child $35
Private tourA charter: isPrivate, privatePricing base + per-extra-guest rate
Rental with add-onsA listing that carries add-ons

The demo location is on America/Vancouver with two tax rates (GST 5%, PST 7%), so taxes and totalTaxRate are real values you can compute against rather than an all-zero payload that hides a bug until go-live.

The full loop

Bash

Reset

Bash
JSON

Deletes every test booking you created and leaves the sample catalog standing. It also clears your Idempotency-Key records, so you can re-run the quickstart verbatim instead of inventing a new key each time. There is also a Reset data button in the portal.

The endpoint is refused on a live key with 403 not_sandbox — it deletes bookings, and there is no version of that which is safe on a real operator's account.

What to test here that you cannot test live

  • Idempotency. Fire the same Idempotency-Key twice and confirm you handle 200 + "idempotentReplay": true; change the price and confirm you handle 422 idempotency_key_reuse. Both are cheap here and expensive to discover in production.
  • Sold out. Book the same window until 409 unavailable comes back, and confirm your checkout recovers rather than showing the guest a 500.
  • Tours. Seat-based products return unitsFree: null — trust available. A client that reads unitsFree as a number breaks on the first tour it sells. Tours also price from tourPricing, never from seasons (which is empty, or present with every rate at 0). The sandbox has one of each shape — a tiered tour and a private charter — so you can build both paths before you meet either in production.
  • Tax. Charge price × (1 + totalTaxRate / 100) and send that tax-inclusive figure as totalPrice.
  • A key that stops working. Rotate the test key mid-run and confirm you surface invalid_api_key as an operational alert, not a retry loop.

What is deliberately different

SandboxLive
TenantYour own demo operatorReal operators who connected to you
CalendarA demo calendar nobody readsThe operator's real calendar and manifests
MoneyLedger entries on a demo accountReal ledger, real payout obligation
Platform feeNone$5 per booking, charged to the operator
Guest messagingNothing is sentNothing is sent either — you own guest comms
Rate limit300 req/min300 req/min
GET /memode"test""live"

Everything else — payload shapes, error codes, locking, idempotency, cancel semantics — is the same code. When you switch the key, nothing else changes.

Going live

  1. Register your channel (partner portal → Reseller & OTA APIRegister) if you have not already. You get your rtc_live_ key.
  2. Declare your payout terms on the same page — operators see them on your card before they decide to connect.
  3. Swap RT_KEY. Your first /products will be empty until an operator opts in; that is expected, not a bug.
  4. Keep the sandbox. It stays live alongside your production key, which makes it the place to reproduce a partner-reported bug without touching an operator's account.

Full endpoint reference: Reseller & OTA API. Building an app that lives inside RentalTide instead? That is a different surface — see the App Sandbox.

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.