Guide Association

About this demo

This is what a guide association's website can look like when it is built only on the Keyguides Association Integration API. There is no database: every guide, tour, price, language and free time slot is fetched live from the API, and bookings are completed on keyguidesconnect.com through attributed links.

How it's built

  • Server-side only. The API key lives in the server environment. Pages are Server Components; the interactive availability pickers call this site's own /api/…/availability routes, which call Keyguides. The browser never sees the key, and the API sends no CORS headers anyway.
  • No local copy of the catalog. Data is requested per page view; the API caches on its side. That keeps the site inside the spec's cache limits (catalog 60s, availability 30s, reference data 300s).
  • Bookings stay on Keyguides. Booking links are built from links.book.hrefTemplate, filling only parameters the API marks as implemented, and always keeping the attribution parameters (kg_assoc, utm_*).
  • Only real choices. Durations, prices and the group limit come from the guide's customTours; time slots from the availability endpoints.

Endpoints used

EndpointUsed onProvides
GET /v1Footer status badgeUnauthenticated service info
GET /v1/associations/meSite name, home heroThe association the API key belongs to
GET /v1/guidesHome, Our guides (filters, sort, paging)Members, scoped to this association
GET /v1/guides/{id}Guide profileProfile, custom-tour durations and prices
GET /v1/guides/{id}/toursGuide profile → "Tours with…"A guide's published tours
GET /v1/guides/{id}/availabilityGuide profile → booking widgetFree slots for a duration
GET /v1/toursHome, Tours (filters, guests, paging)Tours led by members
GET /v1/tours/{id}Tour pageDescription, offerings, guides
GET /v1/tours/{id}/availabilityTour page → booking widgetFree slots for a guide and offering
GET /v1/citiesHome, Destinations, filtersCities with guide/tour counts
GET /v1/countriesDestinations, filtersCountries with counts
GET /v1/languagesHome stats, Destinations, filtersLanguages with guide counts
GET /v1/interestsDestinations, filters, guide profileThemes with guide counts