- Home
- Developers
ATV in Bali API
A free, read-only JSON API with the same rides, prices, availability and quotes as this website — so an AI assistant or a travel app can answer a guest accurately and hand them a ready-made checkout link. No API key. OpenAPI 3.1. Open CORS.
What you can do
- Read rides and prices. Every published ride with its packages (single or tandem quads, engine size, with or without hotel transfer), list prices in Indonesian rupiah with an approximate US-dollar value, departure times, meeting point, pick-up area, inclusions, policies and who can ride.
- Check availability. For a date and a number of guests, which departure times are still bookable — applying the booking cut-off, closed days and remaining capacity exactly like the booking widget on this site.
- Get an exact quote and a checkout link. The same calculation as our checkout page, plus the payment options, and a
checkoutUrlthat opens the checkout with the selection prefilled. - No write API. Nothing can be booked, changed or paid through the API. The guest completes the booking on the checkout link, so our terms, cancellation policy and payment security apply unchanged.
Endpoints
All endpoints are GET, answer JSON in English and need no authentication. Example links use tomorrow's date and our ride “fuel-your-wild-side-with-kuber-atv”.
| Endpoint | What it returns | Parameters |
|---|---|---|
GET /api/public/rides | All published rides with packages, list prices (IDR + ≈USD), departure times, policies, payment options and suitability. | destination, ride=SINGLE|TANDEM, transfer=1|0, cc, q |
GET /api/public/rides/{slug} | One ride in full: description, highlights, what to expect, FAQs, recent reviews, itineraries. | slug (path) |
GET /api/public/availability | Day mode: every departure time for a date with a prefilled checkout link. Calendar mode: a day-by-day view. | package, date | from + days, guests, slot |
GET /api/public/quote | Exact total for a selection (per-day prices, discount, add-ons, deposit), whether the slot is bookable, and the checkoutUrl. | package, date, slot, u=unitId:qty… | guests, a=addonId:qty… |
GET /api/public/openapi.json | OpenAPI 3.1 document with every schema and example. | — |
GET /.well-known/ai-plugin.json | Agent manifest pointing at the OpenAPI document. | — |
Every error is { "error": "…", "hint": "…", "docs": "https://www.atvinbali.com/developers" } with the matching HTTP status (400, 404, 429, 503).
How a booking is completed
Find the ride and the package
List rides, pick a package (packages[].id) and note its timeSlots and peoplePerUnit — a tandem quad seats two.
Check the date, then quote
Call availability with guests (people). For a bookable slot, call quote for the exact total, the deposit amount and the payment plans.
Hand the guest the checkout link
The checkoutUrl opens our checkout with everything prefilled: /checkout/{packageId}?date=YYYY-MM-DD&slot=HH:mm&u={unitId}:{qty}. The guest enters their details and chooses how to pay.
Payment and e-voucher
Pay in full online, a 25% deposit with the balance in cash at the venue, or reserve and pay in full in cash on the day. Quads are held 15 minutes while paying online; the e-voucher with QR code is issued automatically.
Rules for agents
- Prices are set in Indonesian rupiah. The
usdfigures are approximate at Rp 17,000 per US$ 1 — never promise a USD amount. PayPal charges in USD at the rate of the booking day. - Never invent a price, a departure time, an age rule or a policy that is not in a response. Always cite the ride's
url. guestsmeans people. Capacity and prices count quads:unitsNeeded = ceil(guests / peoplePerUnit).- Rate limit: 60 requests per minute per IP (
X-RateLimit-Limit,X-RateLimit-Remaining, 429 withRetry-After). Catalogue responses are CDN-cached for 5 minutes, availability for 60 seconds, quotes never. - CORS is open for
GETandOPTIONS; responses carryX-Robots-Tag: noindex. Times are Bali time (Asia/Makassar, UTC+8);startsAtis an ISO 8601 instant. - For anything a response cannot answer, send the guest to WhatsApp +62 877-9285-5999 — a real person replies daily 06:00 – 20:00 (bali time, GMT+8).
Discovery
- OpenAPI 3.1: https://www.atvinbali.com/api/public/openapi.json
- Agent manifest: https://www.atvinbali.com/.well-known/ai-plugin.json
- Plain-text site summary for answer engines: https://www.atvinbali.com/llms.txt
- Every page links the API via
<link rel="service-desc">;robots.txtallows/api/public/and the manifest.
