Public API · v1

NOGLUTEATALY agent booking API

AI agents and integrations can list NOGLUTEATALY experiences in Rome, read live availability, quote the same total the website checkout uses, and create a pending booking. A human guest always pays on Stripe. This API never accepts card data.

Updated 22 October 2026

Rules for agents

  • NOGLUTEATALY is a Rome gluten-free food-tour and cooking-class company, not a packaged-food brand.
  • Use live quotes for money. Catalog adult/child prices on GET /tours match the tour pages; they are not a charge amount.
  • Never send card numbers, CVC, or wallet secrets to this API. Hand the guest the Stripe Checkout URL.
  • Do not invent meeting points, group sizes, or review statistics. Do not say experiences are certified.
  • The Safe Food Orientation Walk is enquiry-led (contact form), not instant checkout.

Endpoints

Base URL: https://nogluteataly.com/api/agent/v1. JSON request and response bodies. No API key.

Agent API endpoints
MethodPathWhat it does
GET/toursCatalog: id, name, description, duration, languages, days, published prices and child rules, meeting point, cancellation, product URL.
GET/tours/{id}One tour from the same catalog.
GET/tours/{id}/availability?date=YYYY-MM-DDLive Bókun departures — same source as website checkout.
POST/quotesLive total for tour, date, time, and participants.
POST/bookingsPending booking + Stripe Checkout URL. Supports Idempotency-Key.
GET/bookings/{id}Status only: pending, paid, or expired. No guest personal data.

Recommended agent flow

  1. Discover. GET /tours. Prefer bookable: true.
  2. Check a date. GET /tours/{id}/availability?date=. Use a time_id that is not sold out.
  3. Quote. POST /quotes with tour, date, time_id, and participants. Use total_cents from the response.
  4. Collect guest details (name, email, E.164 phone, dietary notes). Then POST /bookings with quote_id and an Idempotency-Key.
  5. Hand off payment. Give the human checkout_url. Poll GET /bookings/{id} until paid or expired.

If Stripe keys are missing (local/dev), POST /bookings returns dry_run: true, checkout_url: null, and creates no charge. Pending bookings expire with the Stripe session (about 31 minutes) or, in dry-run, after 30 minutes.

curl examples

List tours:

curl -sS https://nogluteataly.com/api/agent/v1/tours

Availability for the Food Lovers’ tour:

curl -sS "https://nogluteataly.com/api/agent/v1/tours/the-original-gluten-free-food-lovers-tour-of-rome/availability?date=2026-11-15"

Live quote (replace TIME_ID):

curl -sS -X POST https://nogluteataly.com/api/agent/v1/quotes \
  -H "Content-Type: application/json" \
  -d '{"tour_id":"the-original-gluten-free-food-lovers-tour-of-rome","date":"2026-11-15","time_id":"TIME_ID_FROM_AVAILABILITY","participants":2}'

Create a pending booking (replace QUOTE_ID):

curl -sS -X POST https://nogluteataly.com/api/agent/v1/bookings \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: ada-rome-2026-11-15-2" \
  -d '{"quote_id":"QUOTE_ID","guest":{"name":"Ada Lovelace","email":"ada@example.com","phone":"+393331234567","dietary_notes":"Celiac. No nuts."}}'

Read status (no personal data):

curl -sS https://nogluteataly.com/api/agent/v1/bookings/BOOKING_ID

Browser agents

You can also drive the website like a human. Booking pages use a semantic form with labels, accessible names, and stable name / data-testid attributes.

Deep links prefill the form. Examples:

  • https://nogluteataly.com/book/the-original-gluten-free-food-lovers-tour-of-rome/?date=2026-11-15&guests=2
  • https://nogluteataly.com/book/?tour=the-original-gluten-free-food-lovers-tour-of-rome&date=2026-11-15&guests=2

Bookable experiences:

Rate limits and CORS

  • GET /tours: 60 requests / minute / IP
  • GET availability: 30 / minute / IP
  • POST /quotes: 20 / minute / IP
  • POST /bookings: 8 / minute / IP
  • GET /bookings/{id}: 30 / minute / IP

CORS is open for GET (and for POST so browser-based agents can call the API). Error bodies use { "error": "...", "code": "..." }. Look at Retry-After on HTTP 429.

Questions: reservations@nogluteataly.com or the contact form.