QuavernQuavsit

Section 07 of 12

Journeys

GET /journeys returns up to six itineraries between two points. It costs 5 units per call and results are cached for 60 seconds for identical queries.

Parameters#

ParameterValue
from, toa stop or area id (idfm:area:71264), coordinates (48.8584,2.3470), or free text resolved through /places (first match)
whenRFC 3339 or now (default); departure time, or arrival time when arrive_by=true
arrive_bytrue to plan backwards from when
modescomma list to restrict transit modes
plannerauto (default), native, quavsit
max_walkmetres of walking allowed at each end, default 1000, at most 2500
networkforces the network when both points are inside several coverages
limit1–6, default 3

Free text that resolves to nothing answers 404 place_not_found with the offending side in details.

One network per journey#

Both ends must fall inside the coverage of the same network. Points that resolve to different networks, or to none, answer 400 transit_query_invalid with details.reason = "cross_network". Cross-network routing (for example a TER train then a city tram) is not available in this version; plan each leg separately.

Native planners and the Quavsit router#

Three networks expose an operator planner; the others are answered by Quavsit's own router built on the network's timetable:

Networkplanner=auto picksFallback when the native planner fails
idfmnative (navitia via PRIM)none: 503 transit_upstream_budget when the daily budget is exhausted
sncfnative (navitia)none
tisseonative (Tisséo planner, coordinates)Quavsit router
tbm, star, tam, rla, ileviaQuavsit router

planner=native on a network without one answers 404 capability_unsupported. planner=quavsit forces the router where the timetable is loaded (every GTFS network, Tisséo included). Journey.source names what answered: idfm, sncf, tisseo or quavsit.

The Quavsit router is a connection-scan over the current timetable with footpaths between stops up to 300 m apart (walking speed 4.5 km/h, 60 s change time) and the operator's own transfer table when it exists. Realtime trip updates for the window are applied before the scan, so delayed trips shift and cancelled trips are skipped; Journey.realtime is then true. Results favour earliest arrival, then fewer transfers, then latest departure. Fares are not computed by the router; native planners return fare when they know it.

Response shape#

A Journey carries departure_at, arrival_at, duration_seconds, transfers, walking_seconds, walking_meters, fare ({amount in cents, currency, text} or null), co2_grams when known, source, realtime and sections. Each Section is a walk, transit, wait or transfer leg with from_place, to_place, times, line (a compact LineRef), headsign, direction_id, stop_ids and, for transit legs, geometry as a GeoJSON LineString cut from the line shape between boarding and alighting stops. Walking legs are straight lines with distance_meters.

sh
curl -sS "https://api.quavern.net/v1/journeys?from=48.8556,2.3592&to=idfm:area:71264&when=now&limit=2" \
  -H "Authorization: Bearer qv_p_…"

The full JSON example is in Endpoints.

Ordering and duplicates#

Journeys are ranked by the planner (native first under auto), then deduplicated on (departure_at, arrival_at, sequence of transit lines).