Trips API

Read-only access to trip metadata. Useful for embedding a trip card on your own site or building a custom dashboard.

All trip endpoints honor visibility:

  • Public trips are world-readable.
  • Unlisted trips need the share token in the URL path (which is part of the public trip URL anyway).
  • Private trips need the password (?key={password} query param or HTTP Basic auth).

List trips for an org

GET https://app.whereistereza.com/o/{org-slug}/api/t/trips

Returns only public trips by default.

{
  "trips": [
    {
      "id": "abc123",
      "slug": "camino-frances",
      "name": "Camino Francés 2026",
      "start_date": "2026-04-01",
      "end_date":   "2026-05-15",
      "visibility": "public",
      "active":     true,
      "share_url":  "https://app.whereistereza.com/o/yourname/abc123/camino-frances"
    }
  ]
}

Trip detail

GET https://app.whereistereza.com/o/{org-slug}/api/t/trips/{trip-id}
{
  "id": "abc123",
  "slug": "camino-frances",
  "name": "Camino Francés 2026",
  "description": "From Saint-Jean-Pied-de-Port to Santiago de Compostela.",
  "start_date":  "2026-04-01",
  "end_date":    "2026-05-15",
  "visibility":  "public",
  "active":      true,
  "default_transport_mode": "walking",
  "stats": {
    "distance_km":         812.3,
    "moving_time_seconds": 612000,
    "stopped_time_seconds":  84000,
    "elevation_gain_m":    14200,
    "elevation_loss_m":    13980,
    "naismith_equiv_km":   952.1,
    "active_days":          32,
    "rest_days":             4
  },
  "share_url": "https://app.whereistereza.com/o/yourname/abc123/camino-frances"
}

Trip daily stats

GET https://app.whereistereza.com/o/{org-slug}/api/t/trips/{trip-id}/daily
{
  "days": [
    {
      "date": "2026-04-01",
      "distance_km": 24.6,
      "elevation_gain_m": 980,
      "elevation_loss_m": 220,
      "moving_time_seconds": 23400,
      "max_speed_kmh": 5.2,
      "transport_modes": ["walking"]
    },
    "..."
  ]
}

Errors

  • 401 — private trip without password.
  • 404 — trip doesn't exist or visibility forbids access.

Caching

Trip endpoints serve Cache-Control: public, max-age=10, stale-while-revalidate=20. Stats are computed on the fly with a 60- second internal cache, so frequent polling is cheap.


Need help? Contact support · Where Is Tereza?