Get customers
Answer customers
Work for you
Reach people
Give agents tools
Run and ship
Manage rental bookings, customers, listings and quotes
Get current credential. Returns the identity and metadata for the credential authenticating this request. Useful for verifying an integration is wired up correctly ("is my token being accepted, and as whom?"). No scope required.
Search listings. Returns a page of listings matching the supplied filters. Backed by an eventually-consistent search index; use GET /v1/listings/{id} for source-of-truth state.
8 fields
Get listing detail. Returns source-of-truth detail for a single listing. Use this for read-modify-write flows — the search index is eventually consistent. Dealer credentials (with `owner_ids`) can only view listings in their own fleet; other listings return 404 (same as if the listing didn't exist, to avoid confirming other dealers' listing IDs). Marketplace credentials (empty `owner_ids`) can view any listing.
1 field
Update a listing. Partially update a listing. Only whitelisted fields (`name`, `description`, `price_per_day`, `instant_book`) are accepted; anything else is silently dropped. The authenticated user must have owner-equivalent rights on the listing.
5 fields
List a listing's add-ons. Returns the optional add-ons bookable on this listing (account-wide and listing-specific, filtered to what applies at its location and vehicle type). Apply them via `addons: [{id, quantity}]` on POST /v1/quotes or booking create/update. Required items (prep fees etc.) are attached to bookings automatically and are not listed here.
Get a listing's availability. Returns the date ranges that cannot be booked within the window — existing bookings, owner blocks, and turnaround buffer days, merged into anonymous ranges. Dates not listed are available. This reads the booking source of truth (not the search index) and reflects the same rules booking creation enforces.
3 fields
List a listing’s insurance options. The insurance/protection options (tiers) offered on a listing — price per day, deductible, coverage summary, and feature list. Dealer credentials get dealer-priced options; other credentials get marketplace pricing.
Get a quote. Returns a non-destructive full price breakdown for a listing and date range. Quote calculation does not reserve availability or create a booking.
6 fields
List bookings. Returns bookings the credential participates in — either as renter (bookings where renter_id = credential user_id) or as owner (bookings on rentals in the credential's owner_ids).
Create a booking. Creates a booking in `negotiating` status. Send an `Idempotency-Key` header to make retries safe — repeating a request with the same key returns the original response instead of creating a duplicate booking. Without the header, every request creates a new booking. Payment collection (Stripe client_secret) is not yet wired here; a dedicated endpoint will be added for that.
12 fields
Get a booking. Returns a single booking. Only accessible to the renter or the owner of the associated listing.
Modify a booking. Partially update a booking. Only dates, guests, discount code, and insurance can be modified. Go api rejects updates once a booking is confirmed — you'll see a 400 with an upstream reason.
9 fields
Approve a booking. Approves the booking from the calling credential's side (renter if user_id = renter_id, owner otherwise). Both sides approving triggers payment capture / confirmation. **Sending a quote:** when a dealer creates a booking on behalf of a customer and then calls approve, the platform marks the owner side approved and emails the customer their quote with a link to review and pay. Include `reason` to add a personal message to that email and the conversation thread.
Decline a booking. Declines a pre-confirmation booking. Returns 409 if the booking is already confirmed (use /cancel instead).
Cancel a booking. Cancels a confirmed booking. Returns 409 if the booking has not been confirmed (use /decline instead). Cancellation may trigger refund logic per the listing's cancel policy.
Create a shareable checkout link. Mints a single-use-style deep link the customer can open without a password — resolving it signs them in and lands them on the booking's checkout or payment step. Send it through your own channel (SMS, email). Only available when the booking's customer is one of **your** customers (`managed_by: "dealer"`) — marketplace customers have their own accounts and cannot be signed in via links. Links expire after ~3 days; mint a fresh one per send. Typical flow for a dealer-sent quote: create the booking → `POST /{id}/approve` with `notify: false` → create a `payment` link → send it to the customer yourself.
2 fields
List a booking's documents. Returns the booking's documents: platform-generated PDFs (receipt, contract, e-sign receipt, departure/return forms) and uploaded files (driver documents, message attachments). Fetch on demand — availability of generated documents changes with booking state (e.g. the receipt appears once the booking is approved).
List a booking's payments. Returns the booking's money movement, newest first, in two groups: - `payments` — the customer timeline: settled charges and refunds plus scheduled/pending future charges (e.g. the remainder auto-charge). `scheduled: true` entries carry a `due_date`; refund entries carry `original_payment_id`. - `payouts` — money paid out to your account for this booking, with expected/actual bank deposit dates. Complements the `payment` block on booking detail: that block is the summary (total paid / balance / plan); this is the itemized history behind it.
Get a booking's message thread. Returns the full renter conversation attached to a booking, oldest message first. Authors are normalized to renter/dealer/system. Reading does NOT mark the thread read in the Wheelbase dashboard.
Search customers. Searches the dealer's customers — both dealer-managed records and marketplace guests who have booked with the dealer. Marketplace customers (`managed_by: "marketplace"`) have `email` and `phone` masked (empty strings) in search results, regardless of booking history. Use `GET /v1/customers/{id}` to read contact info once a confirmed booking exists.
Create a customer. Creates a dealer-managed customer. Find-or-create semantics by email: if a customer with this email already exists in your account, that record is updated and returned instead of creating a duplicate. Created customers are `managed_by: "dealer"` and fully editable. You cannot create a customer using your own account email.
7 fields
Get a customer. Returns a single customer. Dealer-managed customers (`managed_by: "dealer"`) return all fields. Marketplace customers are only readable when they have an interaction with your account (booking or conversation) — otherwise 404 — and their `email`/`phone` are populated only once a confirmed booking exists. `birthdate` is never available for marketplace customers.
Update a customer. Partially update a dealer-managed customer. Marketplace customers (`managed_by: "marketplace"`) are managed by the marketplace and cannot be edited — attempts return 403.
List locations. Returns the dealer's pickup/drop-off locations with address and weekly hours. Use the ids with the `location_ids` filters on vehicle/booking reports and customer search — and to tie a booking or vehicle to its pickup location's hours.
List message threads. Returns the credential's renter message threads, newest activity first. Each row carries the follow-up signals — last_message_at, last_message_author, unread — so a queue can skip renters who already replied. Reading threads does NOT mark them read in the Wheelbase dashboard.