For developers

The OpenVibe.Tours API

Reads are public. A trip write is a signed-in Network person (the tours_at cookie or a Bearer user token); a session write must come from openvibe.tours itself. No route needs a service token. Errors are application/problem+json with a stable code.

RouteWhat it doesQuery or body
GET /api/v1/citiesthe catalogue, newest population first?limit=&offset=&q=
GET /api/v1/cities/:slugone city, its places and routes?slug=lisbon
GET /api/v1/places/:idone OpenStreetMap place with source and fetch time—
GET /api/v1/routes/:idone route with its ordered, cited stops—
GET /api/v1/liveIRL tours now and recent IRL VODs—
GET /api/v1/tripsthe signed-in person's trips—
POST /api/v1/tripscreate a trip { title, city_slug, starts_on, ends_on, notes? }—
GET /api/v1/trips/:slugyour trip, or one shared with you—
PATCH /api/v1/trips/:slugedit title, city, dates or notes (owner, or Specific people with Can edit); the audience is the Share sheet's—
DELETE /api/v1/trips/:slugdelete your trip—
POST /api/v1/trips/:slug/placessave a place { place_id, note? }—
POST /api/v1/trips/:slug/routeset the trip's route { route_id }—
POST /api/v1/trips/:slug/staysadd a stay { stay_id }—
GET /api/v1/openapi.jsonthe OpenAPI 3.1 document—

OpenAPI

/api/v1/openapi.json · llms.txt · sitemap.xml

Sources and licences

  • OpenStreetMap via Overpass, ODbL 1.0; every place links its OSM object.
  • Wikivoyage, CC BY-SA 4.0; every route stop links the page it came from.
  • Wikidata, CC0; cities keep their Q id and every image keeps its Commons licence.
  • OpenVibe.Live and OpenVibe.Rent public APIs; read-only, never a token.

Source jobs

Each job records its run in tours_job_runs. Off under TOURS_DRILL; the intervals are env names in the README.

  • cities ok · 2026-11-12 22:45:10 UTC
  • live ok · 2026-11-13 06:47:48 UTC
  • photos ok · 2026-11-13 06:47:55 UTC
  • places partly fetched · 2026-11-09 21:43:54 UTC
  • routes ok · 2026-11-08 03:11:33 UTC
  • stays ok · 2026-11-13 06:27:53 UTC