RentalTideRentalTideDocs
Dashboard

Public API

Public-facing endpoints for booking widgets and customer self-service

Public endpoints that power the customer-facing booking widget, cancellation flows, participant management, and membership enrollment. These endpoints do not require admin authentication.

Public API

Get customer inventory data

GET /public/customer

Retrieves all inventory items for a customer including locations, pricing, and bookings. Response is AES encrypted.

Parameters

NameInTypeRequiredDescription
customer_idquerystringYesThe customer ID

Responses

CodeDescription
200Encrypted inventory data
400Missing customer_id parameter
500Server error

Get minimal inventory info for embed widget

GET /public/widget-info

Returns unencrypted minimal boat data (name, image, price, capacity, category) for use by the embed-booking.js widget on third-party sites.

Parameters

NameInTypeRequiredDescription
customer_idquerystringYes
inventory_idquerystringYes

Responses

CodeDescription
200Minimal inventory info
400Missing required parameters
404Inventory not found

Get booking details

GET /public/booking

Retrieves details for a specific booking by transaction ID

Parameters

NameInTypeRequiredDescription
TransactionIdquerystringYesThe rental/transaction ID

Responses

CodeDescription
200Booking details
400Missing TransactionId parameter
500Server error

Update booking

PATCH /public/booking

Updates booking fields using dynamic field paths

Request body

FieldTypeRequiredDescription
rentalIdstringYes
dataobjectNoKey-value pairs of fields to update (supports dot notation)

Responses

CodeDescription
200Updated booking data
400Missing data or rentalId
500Server error

Get order with all line items

GET /public/order/{orderId}

Resolves orderId as bookingId, bundleGroupId, or single rentalId and returns grouped line items

Parameters

NameInTypeRequiredDescription
orderIdpathstringYesThe order ID (bookingId, bundleGroupId, or rentalId)

Responses

CodeDescription
200Order with line items
404Order not found
500Server error

Check asset availability

GET /public/check-availability

Checks if a specific asset is available during a time range

Parameters

NameInTypeRequiredDescription
inventoryIdquerystringYesThe inventory ID
assetIdquerystringYesThe asset ID
startUtcqueryintegerYesStart time as Unix timestamp
endUtcqueryintegerYesEnd time as Unix timestamp
excludeRentalIdquerystringNoRental ID to exclude from availability check

Responses

CodeDescription
200Availability status
400Missing required parameters
500Server error

Get available staff

GET /public/available-staff

Retrieves staff members available for a location with a specific skill during a time range

Parameters

NameInTypeRequiredDescription
locationIdquerystringYesThe location ID
skillquerystringYesThe required skill (coach, captain, trainer, operations)
startTimequerystringYesStart time in ISO format
endTimequerystringYesEnd time in ISO format

Responses

CodeDescription
200List of available staff
400Missing required parameters
500Server error

Get available staff for date range

GET /public/available-staff-range

Retrieves staff availability by skill for each day in a date range

Parameters

NameInTypeRequiredDescription
locationIdquerystringYesThe location ID
startquerystringYesStart date in ISO format
endquerystringYesEnd date in ISO format

Responses

CodeDescription
200Staff availability by day and skill
400Missing required parameters
500Server error

Add to waitlist

POST /public/waitlist

Adds a customer to the waitlist for an inventory item

Request body

FieldTypeRequiredDescription
firstNamestringYes
lastNamestringYes
emailstringYes
datestringYes
timestringNo
durationintegerNo
inventoryIdstringYes
locationIdstringYes
customerIdstringNo
addonsarrayNo
boatAddonsarrayNo
giftCardCodestringNo
refAffiliatestringNo

Responses

CodeDescription
201Waitlist entry created successfully
400Missing required fields
500Server error

Save cart recovery data

POST /public/cartRecovery

Saves or updates cart recovery data for abandoned cart emails

Request body

FieldTypeRequiredDescription
idstringYes
firstNamestringNo
lastNamestringNo
emailstringYes
bookingInfoobjectNo
locationIdstringYes
cartDataobjectNo
customerIdstringNo

Responses

CodeDescription
200Cart recovery data saved
400Missing required fields or invalid email
500Server error

Get cart recovery data

GET /public/cartRecovery/{id}

Retrieves cart recovery data by stable ID

Parameters

NameInTypeRequiredDescription
idpathstringYesThe cart recovery ID

Responses

CodeDescription
200Cart recovery data
400Recovery ID required
404Cart recovery data not found
500Server error

Mark cart recovery as completed

DELETE /public/cartRecovery/{id}

Marks a cart recovery record as completed (booking was finished)

Parameters

NameInTypeRequiredDescription
idpathstringYesThe cart recovery ID

Responses

CodeDescription
200Cart recovery marked as completed
400Recovery ID required
500Server error

Get cart recovery analytics

GET /public/cartRecovery/analytics/{locationId}

Retrieves cart recovery analytics for a location

Parameters

NameInTypeRequiredDescription
locationIdpathstringYesThe location ID
startDatequerystringNoStart date filter
endDatequerystringNoEnd date filter

Responses

CodeDescription
200Analytics data
500Server error

Get monthly availability

GET /public/availability

Retrieves availability for each day in a month for an inventory item

Parameters

NameInTypeRequiredDescription
inventoryIdquerystringYesThe inventory ID
locationIdquerystringYesThe location ID
monthquerystringYesMonth in YYYY-MM format
timezonequerystringNoTimezone for date calculations

Responses

CodeDescription
200Daily availability for the month
400Missing required parameters
404Inventory or location not found
500Server error

Get custom code integration

GET /public/getCustomCode

Returns custom code integration settings for a customer. Returns 204 if not configured.

Parameters

NameInTypeRequiredDescription
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Custom code configuration
204Custom code not configured
400Missing customerId parameter
500Server error

Get Google Tag Manager configuration

GET /public/getGTM

Returns GTM configuration for a customer. Returns 204 if not configured.

Parameters

NameInTypeRequiredDescription
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200GTM configuration
204GTM not configured
400Missing customerId parameter
500Server error

Get Meta Conversion API configuration

GET /public/getMetaConversion

Returns Meta Conversion API (Facebook Pixel) configuration. Returns 204 if not configured.

Parameters

NameInTypeRequiredDescription
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200Meta Conversion configuration
204Meta Conversion not configured
400Missing customerId parameter
500Server error

Get TikTok Pixel configuration

GET /public/getTikTokPixel

Returns TikTok Pixel configuration for a customer. Returns 204 if not configured.

Parameters

NameInTypeRequiredDescription
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200TikTok Pixel configuration
204TikTok Pixel not configured
400Missing customerId parameter
500Server error

Get WhatsApp Business configuration

GET /public/getWhatsApp

Returns WhatsApp Business configuration for a customer

Parameters

NameInTypeRequiredDescription
customerIdquerystringYesThe customer ID

Responses

CodeDescription
200WhatsApp Business configuration
400Missing customerId parameter
404Customer not found or WhatsApp not configured
500Server error

Add protection plan to booking

POST /public/bookings/{rentalId}/protection-plans

Adds a protection plan to an existing booking and charges the customer

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental/booking ID

Request body

FieldTypeRequiredDescription
planIdstringYes
planNamestringYes
percentagenumberNo
minimumnumberNo
pricenumberNo
bookingTotalnumberNo
calculatedCostnumberYes

Responses

CodeDescription
200Protection plan added successfully
400Missing required fields or no payment method
404Booking not found
500Server error

Add a tip to a booking

POST /public/bookings/{rentalId}/tip

Processes a tip for a completed booking using the customer's stored payment method

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental/booking ID

Request body

FieldTypeRequiredDescription
amountnumberYesThe tip amount in the booking's currency
percentagenumberNoThe tip percentage (if calculated from booking total)

Responses

CodeDescription
200Tip processed successfully
400Invalid request or payment failed
404Booking not found
500Server error

Get Apple Wallet pass data

GET /public/bookings/{rentalId}/apple-wallet

Generates Apple Wallet pass data including QR code for a booking

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental/booking ID

Responses

CodeDescription
200Apple Wallet pass data
404Booking not found
500Server error

Download Apple Wallet pass file

GET /public/bookings/{rentalId}/apple-wallet/download

Downloads the Apple Wallet pass file (.pkpass) for a booking

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental/booking ID

Responses

CodeDescription
200PKPass file download
404Booking not found
500Server error
501Apple Wallet not configured

Get Google Wallet pass data

GET /public/bookings/{rentalId}/google-wallet

Generates Google Wallet pass save URL for a booking

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental/booking ID

Responses

CodeDescription
200Google Wallet save URL
404Booking not found
500Server error

Get detailed day availability

GET /public/day-availability

Retrieves detailed availability for a specific day including time slots and bookings

Parameters

NameInTypeRequiredDescription
inventoryIdquerystringYesThe inventory ID
locationIdquerystringYesThe location ID
datequerystringYesDate in YYYY-MM-DD format
timezonequerystringNoTimezone for date calculations

Responses

CodeDescription
200Day availability details
400Missing required parameters
404Inventory or location not found
500Server error

Get time slot popularity data

GET /public/time-slot-popularity

Returns historical booking popularity data for time slots. Used for "Best Selling" badges.

Parameters

NameInTypeRequiredDescription
inventoryIdquerystringYesThe inventory ID
locationIdquerystringYesThe location ID
dayOfWeekquerystringNoDay of week for day-specific popularity
durationqueryintegerNoRental duration in hours

Responses

CodeDescription
200Time slot popularity data
400Missing required parameters
404Location not found
500Server error

Fetch reviews for a location

POST /public/locations/{locationId}/reviews

Public endpoint to fetch reviews from connected platforms (Google, TripAdvisor) for a location

Parameters

NameInTypeRequiredDescription
locationIdpathstringYesThe location ID

Request body

FieldTypeRequiredDescription
reviewConnectionsarrayYes

Responses

CodeDescription
200Reviews from connected platforms
400Missing reviewConnections array
500Server error

Upload document for booking

POST /public/bookings/{rentalId}/documents

Upload insurance or ownership documents for a booking. No authentication required.

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental/booking ID

Responses

CodeDescription
200Document uploaded successfully
400Missing or invalid parameters
404Booking not found
500Server error

AI customer assistant

POST /public/customer-sidekick

Customer-facing AI assistant for booking-specific questions

Request body

FieldTypeRequiredDescription
rentalIdstringYes
messagestringYes

Responses

CodeDescription
200AI response
400Missing required fields
500Server error

AI boat recommendation engine

POST /public/boat-concierge

AI-powered boat recommendation engine to help customers find the perfect boat

Request body

FieldTypeRequiredDescription
customerIdstringYes
messagestringYes
conversationHistoryarrayNo
selectedDatestringNo
locationIdstringNo

Responses

CodeDescription
200AI recommendation response
400Missing required fields
500Server error

Get public customer settings

GET /public/customer/{customerId}/public

Get public customer settings (loyalty, etc.) for checkout

Parameters

NameInTypeRequiredDescription
customerIdpathstringYesThe customer ID

Responses

CodeDescription
200Public customer settings
400Missing customerId
404Customer not found
500Server error

Get saved payment methods

GET /public/payment-methods

Get saved payment methods for a Stripe customer

Parameters

NameInTypeRequiredDescription
stripeCustomerIdquerystringYesThe Stripe customer ID

Responses

CodeDescription
200List of payment methods
400Missing stripeCustomerId
500Server error

Public Cancellation

Request cancellation OTP

POST /public/bookings/{rentalId}/cancellation-otp

Request an OTP code for booking cancellation. Sends OTP to the booking's email address.

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental/booking ID

Responses

CodeDescription
200OTP sent successfully
400Missing rentalId or no valid email on booking
404Booking not found
500Server error

Verify cancellation OTP

POST /public/bookings/{rentalId}/verify-cancellation-otp

Verify OTP and return a session token for cancellation

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental/booking ID

Request body

FieldTypeRequiredDescription
sessionIdstringYes
codestringYes

Responses

CodeDescription
200OTP verified successfully
400Invalid or expired session/code
500Server error

Check cancellation eligibility

GET /public/bookings/{rentalId}/cancellation-eligibility

Check if a booking is eligible for self-service cancellation. No authentication required.

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental/booking ID

Responses

CodeDescription
200Cancellation eligibility status
400Missing rentalId
404Booking not found
500Server error

Cancel booking

POST /public/bookings/{rentalId}/cancel

Customer self-service cancellation endpoint. Requires OTP verification via X-OTP-Session header.

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental/booking ID
X-OTP-SessionheaderstringYesOTP session token from verification

Request body

FieldTypeRequiredDescription
reasonstringNoReason for cancellation

Responses

CodeDescription
200Booking cancelled successfully
400Missing rentalId or booking already cancelled
401Invalid or expired session
403Not permitted to cancel or cancellation window closed
404Booking not found
500Server error

Public Participants

Get booking participants

GET /public/booking/participants

Get all participants for a booking with their waiver status

Parameters

NameInTypeRequiredDescription
rentalIdquerystringYesThe rental/booking ID

Responses

CodeDescription
200List of participants with waiver status
400Missing rentalId parameter
404Booking not found
500Server error

Add or update participant

POST /public/booking/participants

Add a new participant or update an existing one for a booking

Request body

FieldTypeRequiredDescription
rentalIdstringYes
participantobjectYes

Responses

CodeDescription
200Participant added/updated successfully
400Missing required fields
404Booking not found
500Server error

Update participant

PUT /public/booking/participants

Update an existing participant for a booking

Request body

FieldTypeRequiredDescription
rentalIdstringYes
participantobjectYes

Responses

CodeDescription
200Participant updated successfully
400Missing required fields or participant ID
404Booking or participant not found
500Server error

Delete participant

DELETE /public/booking/participants/{participantId}

Remove a participant from a booking

Parameters

NameInTypeRequiredDescription
participantIdpathstringYesThe participant ID to delete

Request body

FieldTypeRequiredDescription
rentalIdstringYes

Responses

CodeDescription
200Participant deleted successfully
400Missing required fields
404Booking not found
500Server error

Send waiver email

POST /public/booking/send-waiver-email

Send a waiver completion email to a participant

Request body

FieldTypeRequiredDescription
rentalIdstringNo
participantIdstringNo
emailstringYes
firstNamestringNo
lastNamestringNo
waiverUrlstringYes
locationIdstringNo

Responses

CodeDescription
200Waiver email sent successfully
400Missing required fields
500Server error

Send waiver SMS

POST /public/booking/send-waiver-sms

Send a waiver completion SMS to a participant

Request body

FieldTypeRequiredDescription
rentalIdstringNo
participantIdstringNo
phoneNumberstringYes
firstNamestringNo
lastNamestringNo
waiverUrlstringYes
locationIdstringNo

Responses

CodeDescription
200Waiver SMS sent successfully
400Missing required fields
500Server error

Process participant payment

POST /public/booking/process-payment

Process a payment for a participant's share of the booking

Request body

FieldTypeRequiredDescription
rentalIdstringYes
participantIdstringYes
paymentSplitobjectYes

Responses

CodeDescription
200Payment processed successfully
400Missing required fields
404Booking or participant not found
500Server error

Create payment intent

POST /public/booking/create-payment-intent

Create a Stripe payment intent for a participant payment

Request body

FieldTypeRequiredDescription
rentalIdstringYes
participantIdstringYes
paymentMethodIdstringYes
amountnumberYesAmount in cents
paymentSplitobjectYes

Responses

CodeDescription
200Payment intent created successfully
400Missing required fields or payment failed
404Booking or participant not found
500Server error

Public Memberships

Get public membership tiers

GET /public/memberships/tiers/{locationId}

Get public membership tiers for a location (no auth required). Only returns tiers marked as showToPublic=true.

Parameters

NameInTypeRequiredDescription
locationIdpathstringYesThe location ID

Responses

CodeDescription
200List of public membership tiers
404Location not found
500Server error

Create membership checkout session

POST /public/memberships/checkout

Create a Stripe checkout session for membership signup (no auth required)

Request body

FieldTypeRequiredDescription
customerIdstringYes
tierIdstringYes
billingCyclestringYes
renterEmailstringYes
renterNamestringNo
renterPhonestringNo
renterIdstringNo
successUrlstringNo
cancelUrlstringNo
locationIdstringNo
isInternalbooleanNo

Responses

CodeDescription
200Checkout session created or membership activated directly
400Missing required fields or tier not available
404Tier or location not found
500Server error

Get membership details

GET /public/memberships/details/{membershipId}

Get membership details by membership ID (for success page after direct subscription)

Parameters

NameInTypeRequiredDescription
membershipIdpathstringYesThe membership ID

Responses

CodeDescription
200Membership details
404Membership not found
500Server error

Check membership status

GET /public/memberships/status/{sessionId}

Check status of a membership signup by checkout session ID

Parameters

NameInTypeRequiredDescription
sessionIdpathstringYesThe Stripe checkout session ID

Responses

CodeDescription
200Membership status
404Membership not found
500Server error

Activate membership

POST /public/memberships/activate

Activate a membership after successful Stripe checkout (no auth required). Called from the success page after Stripe redirects back.

Request body

FieldTypeRequiredDescription
sessionIdstringYesThe Stripe checkout session ID

Responses

CodeDescription
200Membership activated successfully
400Missing sessionId or payment not completed
404Membership not found for this session
500Server error

Scanner

Scan a license

GET /scanner/scan

Triggers the license scanner and parses the scanned license data.

Responses

CodeDescription
200License scanned successfully
404No license scanned or scanner not triggered
500Scanner error

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.