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.
After hours — the AI answers
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.
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.