Booking API

Your booking engine, now programmable

Everything your booking page can do — quote real prices, offer real times, book real jobs — exposed as a clean, secure API. Whatever you build on it, your rules ride along.

AI receptionists

A phone agent that quotes and books mid-call.

Your own website

A fully custom booking flow, powered by your live catalog.

Fleet & partner portals

Let a dealership or fleet manager book directly.

Internal tools

Scripts and automations that create real appointments.

One example

Watch one call become a booked job

Here's a phone agent running the flow — but these are the same four calls any integration makes, whether it's a website, a portal, or a script. Every number quoted is the real one your invoice will show.

SW

Shine Works Detailing

Incoming call · 6:42 PM

After hours — the AI answers

Hey, can you fit my Tahoe in this week? Full detail. I'm at 4012 Central Florida Pkwy.
Welcome back, Marcus. A full detail on the Tahoe at that address is $253.79 all in, about three and a half hours. I have Thursday 9:00 AM or 1:30 PM — any preference?
Thursday at 9 works.
Done — Thursday 9:00 AM, $253.79 total. Your confirmation text is on its way. Anything else?

Booked while you were buffing

ai-receptionist → api.detailroam · 4 calls, 6.2s

Who's calling

GET/v1/customers?phone=+14075550134

200 · Marcus Reid — returning · 2021 Chevy Tahoe on file

The real price, not a guess

POST/v1/quote

200 · Full Detail (Large SUV) + travel + tax = $253.79 · 210 min

Times the route can honor

GET/v1/availability?date=2026-09-17

200 · 9:00 AM · 1:30 PM · drive time included

Idempotency-Key: call_8H2K … can't double-book

POST/v1/appointments

201 · SCHEDULED · Thu 9:00 AM · confirmation text sent

Works with any agent platform that can call an API — Retell, Vapi, or something you built yourself.

Guardrails

Built so an eager integration can't wreck your calendar

The API has exactly the powers of your own booking flow — DetailRoam stays the referee on prices, slots, and retries, no matter what's on the other end.

Prices it can't invent

Every quote is computed by DetailRoam — vehicle-class tiers, travel fee for the actual address, your tax rules. Your integration just passes it along.

Slots that stay honest

The time is re-checked at the moment of booking. If it was just taken, the API answers with fresh alternatives so your app recovers gracefully.

Retries that can't double-book

Every write carries an idempotency key. A timed-out request retried gets the original result back — never a second appointment.

The quoted price is the booked price

Booking sends the total the caller heard. If anything changed in between, the API refuses and hands back the new number instead of surprising anyone.

The surface

Everything a front desk does, as endpoints

The same operations your dashboard runs — look up, quote, book, move, cancel — with your business rules enforced on every one.

  • GET /v1/customersFind the caller by phone, with their vehicles
  • POST /v1/customersCreate a new customer, duplicates rejected
  • POST /v1/vehiclesAdd a vehicle, or reuse a matching one
  • POST /v1/quoteReal totals: tiers, add-ons, travel fee, tax
  • GET /v1/availabilityOpen times with drive time accounted for
  • POST /v1/appointmentsBook it — slot re-checked at write time
  • GET /v1/appointmentsA customer's upcoming appointments
  • PATCH /v1/appointments/:idChange services or address, repriced
  • POST …/:id/rescheduleMove it; conflicts return alternatives
  • POST …/:id/cancelCancel with a reason, same rules as you

two minutes to your first quote

# Create a key in Dashboard → Booking page → API

curl -X POST https://www.detailroam.com/api/v1/quote \

-H "Authorization: Bearer drk_…" \

-d '{"serviceId": "…", "addressText": "4012 Central Florida Pkwy"}'

{ "ok": true, "quote": { "totalCents": 25379, "durationMinutes": 210, "travel": { "serviceable": true } } }

Keys live in your dashboard — created in a click, shown once, revocable instantly. Rate limits are enforced per key, and there is no raw SMS endpoint: the API can only do what your booking flow does, and customers get your normal confirmations.

Your live service menu — services, prices per vehicle size, add-ons — is also available as public JSON with no key at all, so a website can show real prices and build booking links without touching the authenticated API.

If it can call an API, it can book your jobs.

The booking API is included in the one plan, like everything else. Start free for 14 days and connect your first integration this week.