Plan transit routes between origin and destination

GET /v1/routes
Base URL: https://capi.busmaps.com:8443

Calculate optimal public transport routes with real-time data integration

Using this data in a voice model?

The Voice Model-Ready endpoint preserves answer-critical transit facts while reducing response tokens and map-only data.

View the Voice Model-Ready endpoint →

Response fields and units

FieldFormat / unitMeaning
routes[].duration, routes[].walkingDuration seconds Total journey time and total walking time
routes[].walkingDistance meters Total walking distance
routes[].sections[].travelSummary.duration seconds Duration of this journey section
routes[].sections[].travelSummary.length meters Length of this journey section
routes[].walkingCalories kilocalories (kcal) Estimated energy used while walking
routes[].co2EmissionKg, routes[].co2SavedComparedToCarKg kilograms (kg) Estimated CO2 emissions and savings
imperial boolean Optional flag, present as true for US/UK; numeric distance fields remain in meters
processingTimeMs milliseconds Server processing time

Parameters

ParameterTypeRequiredDescriptionExample
origin string Yes Origin coordinates in 'lat,lon' format 51.537511,-0.152208
destination string Yes Destination coordinates in 'lat,lon' format 51.531921,-0.082569
arrivalTime string No ISO 8601 arrival time. Z for UTC, an offset like +01:00 (encode + as %2B), or no zone for origin-local time. See Time format below. Send arrivalTime or departureTime, not both. departureTime wins if both are present. 2025-09-18T09:30:00Z
departureTime string No ISO 8601 departure time. Z for UTC, an offset like +01:00 (encode + as %2B), or no zone for origin-local time. See Time format below. Send departureTime or arrivalTime, not both. departureTime wins if both are present. (Default: current time (UTC)) 2025-09-18T09:00:00Z
transfers integer No Maximum number of transfers (range 0-6) (Range: 0-6) 2
geometry string No Geometry return format (Default: polyline; Values: polyline, flexible-polyline) polyline
transport string No Return routes using only specified transport types, comma-separated (Values: bus, subway, train, tram) bus,subway,train,tram
barrierMode integer No Wheelchair routing filter: 0 no filter, 1 require explicitly accessible stops and trips, 2 require explicitly accessible stops only, 3 require explicitly accessible trips only. Unknown accessibility fails each requirement selected by the mode (Default: 0; Range: 0-3) 1
maxRoutes integer No Search effort (range 1-6). Higher values explore more alternatives. The actual number of routes returned is determined by available connections and is unrelated to this number (Range: 1-6) 3
lang string No Language code for translated stop/route names (IETF BCP 47 format) en

Time format

Time parameters use ISO 8601. The zone designator at the end of the value determines its interpretation.

FormExampleMeaning
No zone 2025-09-18T10:00:00 Local time at the queried location: the origin for /v1/routes or the stop or location for /v1/nextDepartures. The caller does not need the location's UTC offset.
UTC 2025-09-18T14:00:00Z A fixed instant. The Z suffix marks UTC.
Explicit offset 2025-09-18T10:00:00-04:00 A fixed instant. Encode + as %2B in the query string.
  • The UTC and offset forms denote the same instant regardless of caller location; only the no-zone form is location-relative. 09:00:00Z and 10:00:00+01:00 are equivalent.
  • If omitted, the current time is used.
  • Seconds are rounded up to the next minute.
  • When present, localDate and localTime report the request time in the resolved region. nextDepartures v1 times use ISO 8601 and may include a UTC offset or omit a zone designator.

Real-time vs scheduled times

Times come in two flavours: the schedule (always present) and the real-time/live value (available only when the operator feeds live data). When a real-time value is available it is the actual expected time - use it instead of the scheduled one. The field names differ per endpoint:

Endpoint Scheduled field Real-time field (live only)
/v1/nextDepartures scheduledDepartureTime (ISO 8601) realtimeDepartureTime (ISO 8601; live only)
/v1/routes section departure.time / arrival.time (full ISO 8601) section departure.rtDeparture / arrival.rtArrival (full ISO 8601); same on intermediateStops[]
  • When no live data exists, object responses omit their real-time field. Fall back to the scheduled value.
  • nextDepartures times use ISO 8601 and may include a UTC offset or omit a zone designator.
  • Delay = real-time minus scheduled (positive = running late). A live/delay badge is the typical UI.
  • Service disruptions come as a top-level alerts[] array (header, description, cause, effect, validFrom/validUntil, and the affected route/stop via informedEntity / sectionIds).

Wheelchair accessibility

wheelchairBoarding: wheelchairBoarding describes a stop.

wheelchairAccessible: wheelchairAccessible describes a trip.

Value Meaning
field absent Unknown (GTFS value 0).
1 Accessible.
2 Not accessible.
Accessibility filtering is strict. In response data, an absent wheelchairBoarding or wheelchairAccessible field means unknown; it does not establish accessibility or inaccessibility. With barrierMode 1-3, unknown values fail each accessibility requirement selected by the mode, so only an explicit value of 1 passes. Use these modes when confirmed accessibility is required, because many networks do not publish this data.

Try It Out

Required parameters only

curl -H "capi-key: Bearer YOUR_API_KEY" \
     -H "capi-host: busmaps.com" \
     "https://capi.busmaps.com:8443/v1/routes?origin=51.537511,-0.152208&destination=51.531921,-0.082569"

Popular parameters

curl -H "capi-key: Bearer YOUR_API_KEY" \
     -H "capi-host: busmaps.com" \
     "https://capi.busmaps.com:8443/v1/routes?origin=51.537511,-0.152208&destination=51.531921,-0.082569&arrivalTime=2025-09-18T09:30:00Z&transfers=2&geometry=polyline&transport=bus,subway,train,tram&barrierMode=1&maxRoutes=3&lang=en"

Response Example

{
    "routes": [
        {
            "id": "C0",
            "duration": 1320,
            "transfers": 0,
            "sections": [
                {
                    "id": "C0-S0",
                    "type": "pedestrian",
                    "travelSummary": {
                        "duration": 480,
                        "length": 474
                    },
                    "departure": {
                        "time": "2026-06-05T11:23:00+01:00",
                        "place": {
                            "name": "",
                            "type": "place",
                            "location": {
                                "lat": 51.5074,
                                "lng": -0.1278
                            },
                            "id": ""
                        }
                    },
                    "arrival": {
                        "time": "2026-06-05T11:31:00+01:00",
                        "place": {
                            "name": "Embankment Underground Station",
                            "urlStopName": "Embankment-Underground-Station",
                            "type": "station",
                            "location": {
                                "lat": 51.507059,
                                "lng": -0.122291
                            },
                            "id": "2944051126489606616",
                            "countryIso": "GBR",
                            "countryUrl": "uk"
                        }
                    },
                    "polyline": "m`kyHx}WGoAGIBEBC@ABA?_@FQJk@HQ@MD]V_CNoAHq@@I@KDe@f@gFJ]Fm@B@B@@QBKD@BQc@MMEwAcADIRg@Ha@",
                    "transport": {
                        "mode": "pedestrian"
                    }
                },
                {
                    "id": "C0-S1",
                    "type": "transit",
                    "travelSummary": {
                        "duration": 300,
                        "length": 2117
                    },
                    "departure": {
                        "time": "2026-06-05T11:31:00+01:00",
                        "platformCode": "2",
                        "rtDeparture": "2026-06-05T11:31:00+01:00",
                        "place": {
                            "name": "Embankment Underground Station",
                            "urlStopName": "Embankment-Underground-Station",
                            "type": "station",
                            "location": {
                                "lat": 51.507059,
                                "lng": -0.122291
                            },
                            "id": "2944051126489606616",
                            "countryIso": "GBR",
                            "countryUrl": "uk"
                        }
                    },
                    "arrival": {
                        "time": "2026-06-05T11:36:00+01:00",
                        "platformCode": "3",
                        "rtArrival": "2026-06-05T11:36:00+01:00",
                        "place": {
                            "name": "Mansion House Underground Station",
                            "urlStopName": "Mansion-House-Underground-Station",
                            "type": "station",
                            "location": {
                                "lat": 51.511705,
                                "lng": -0.094776
                            },
                            "id": "16815287826471945869",
                            "countryIso": "GBR",
                            "countryUrl": "uk"
                        }
                    },
                    "polyline": "c~jyHj{VoE}AkFoKmCaGmDsV??k@oJQ_QGsKAcPoAwKuAaEr@yg@MmCAq@",
                    "transport": {
                        "mode": "subway",
                        "id": "1148712030-2808230924",
                        "countryIso": "GBR",
                        "countryUrl": "uk",
                        "headsign": "Tower Hill Underground Station",
                        "shortName": "District",
                        "urlRouteShortName": "District",
                        "longName": "Ealing Broadway/Richmond/Wimbledon - Earl's Court - Upminster/Edgware Road",
                        "color": "#007A33",
                        "textColor": "#FFFFFF",
                        "name": "District"
                    },
                    "intermediateStops": [
                        {
                            "departure": {
                                "time": "2026-06-05T11:33:00+01:00",
                                "place": {
                                    "name": "Temple Underground Station",
                                    "urlStopName": "Temple-Underground-Station",
                                    "type": "station",
                                    "location": {
                                        "lat": 51.510859,
                                        "lng": -0.114756
                                    },
                                    "id": "2453052915675249070",
                                    "countryIso": "GBR",
                                    "countryUrl": "uk"
                                }
                            }
                        },
                        {
                            "departure": {
                                "time": "2026-06-05T11:34:00+01:00",
                                "place": {
                                    "name": "Blackfriars Underground Station",
                                    "urlStopName": "Blackfriars-Underground-Station",
                                    "type": "station",
                                    "location": {
                                        "lat": 51.511618,
                                        "lng": -0.103239
                                    },
                                    "id": "6286148251023766201",
                                    "countryIso": "GBR",
                                    "countryUrl": "uk"
                                }
                            }
                        }
                    ],
                    "agency": {
                        "id": "2264224218-1585141307",
                        "countryIso": "GBR",
                        "countryUrl": "uk",
                        "name": "London Underground (TfL)",
                        "urlAgencyName": "London-Underground-TfL",
                        "website": "https://www.traveline.info",
                        "phone": "03432221234"
                    }
                },
                {
                    "id": "C0-S2",
                    "type": "pedestrian",
                    "travelSummary": {
                        "duration": 540,
                        "length": 549
                    },
                    "departure": {
                        "time": "2026-06-05T11:36:00+01:00",
                        "place": {
                            "name": "Mansion House Underground Station",
                            "urlStopName": "Mansion-House-Underground-Station",
                            "type": "station",
                            "location": {
                                "lat": 51.511705,
                                "lng": -0.094776
                            },
                            "id": "16815287826471945869",
                            "countryIso": "GBR",
                            "countryUrl": "uk"
                        }
                    },
                    "arrival": {
                        "time": "2026-06-05T11:45:00+01:00",
                        "place": {
                            "name": "",
                            "type": "place",
                            "location": {
                                "lat": 51.5155,
                                "lng": -0.0922
                            },
                            "id": ""
                        }
                    },
                    "polyline": "c{kyH`oQo@KA?A@W\\AIAGAMMaAKy@Ga@AQ?GE?AKISCSASE@A?CSA@E@IBCYOgACSAECGGGMMaAMIAcBSGAED@OK?O?G?MAUCg@GGAIAKAw@I[EC?GAA?EASAIAAAa@EMC?^AD",
                    "transport": {
                        "mode": "pedestrian"
                    }
                }
            ],
            "walkingDistance": 1023,
            "walkingDuration": 1020,
            "walkingCalories": 62.7,
            "co2EmissionKg": 0.08,
            "co2SavedComparedToCarKg": 0.4
        },
        {
            "id": "C1",
            "duration": 1260,
            "transfers": 0,
            "sections": [
                {
                    "id": "C1-S0",
                    "type": "pedestrian",
                    "travelSummary": {
                        "duration": 480,
                        "length": 474
                    },
                    "departure": {
                        "time": "2026-06-05T11:26:00+01:00",
                        "place": {
                            "name": "",
                            "type": "place",
                            "location": {
                                "lat": 51.5074,
                                "lng": -0.1278
                            },
                            "id": ""
                        }
                    },
                    "arrival": {
                        "time": "2026-06-05T11:34:00+01:00",
                        "place": {
                            "name": "Embankment Underground Station",
                            "urlStopName": "Embankment-Underground-Station",
                            "type": "station",
                            "location": {
                                "lat": 51.507059,
                                "lng": -0.122291
                            },
                            "id": "2944051126489606616",
                            "countryIso": "GBR",
                            "countryUrl": "uk"
                        }
                    },
                    "polyline": "m`kyHx}WGoAGIBEBC@ABA?_@FQJk@HQ@MD]V_CNoAHq@@I@KDe@f@gFJ]Fm@B@B@@QBKD@BQc@MMEwAcADIRg@Ha@",
                    "transport": {
                        "mode": "pedestrian"
                    }
                },
                {
                    "id": "C1-S1",
                    "type": "transit",
                    "travelSummary": {
                        "duration": 240,
                        "length": 2117
                    },
                    "departure": {
                        "time": "2026-06-05T11:34:00+01:00",
                        "platformCode": "2",
                        "rtDeparture": "2026-06-05T11:34:00+01:00",
                        "place": {
                            "name": "Embankment Underground Station",
                            "urlStopName": "Embankment-Underground-Station",
                            "type": "station",
                            "location": {
                                "lat": 51.507059,
                                "lng": -0.122291
                            },
                            "id": "2944051126489606616",
                            "countryIso": "GBR",
                            "countryUrl": "uk"
                        }
                    },
                    "arrival": {
                        "time": "2026-06-05T11:38:00+01:00",
                        "platformCode": "3",
                        "rtArrival": "2026-06-05T11:38:00+01:00",
                        "place": {
                            "name": "Mansion House Underground Station",
                            "urlStopName": "Mansion-House-Underground-Station",
                            "type": "station",
                            "location": {
                                "lat": 51.511705,
                                "lng": -0.094776
                            },
                            "id": "16815287826471945869",
                            "countryIso": "GBR",
                            "countryUrl": "uk"
                        }
                    },
                    "polyline": "c~jyHj{VoE}AkFoKmCaGmDsV??k@oJQ_QGsKAcPoAwKuAaEr@yg@MmCAq@",
                    "transport": {
                        "mode": "subway",
                        "id": "1148712030-2808230924",
                        "countryIso": "GBR",
                        "countryUrl": "uk",
                        "headsign": "Upminster Underground Station",
                        "shortName": "District",
                        "urlRouteShortName": "District",
                        "longName": "Ealing Broadway/Richmond/Wimbledon - Earl's Court - Upminster/Edgware Road",
                        "color": "#007A33",
                        "textColor": "#FFFFFF",
                        "name": "District"
                    },
                    "intermediateStops": [
                        {
                            "departure": {
                                "time": "2026-06-05T11:35:00+01:00",
                                "place": {
                                    "name": "Temple Underground Station",
                                    "urlStopName": "Temple-Underground-Station",
                                    "type": "station",
                                    "location": {
                                        "lat": 51.510859,
                                        "lng": -0.114756
                                    },
                                    "id": "2453052915675249070",
                                    "countryIso": "GBR",
                                    "countryUrl": "uk"
                                }
                            }
                        },
                        {
                            "departure": {
                                "time": "2026-06-05T11:37:00+01:00",
                                "place": {
                                    "name": "Blackfriars Underground Station",
                                    "urlStopName": "Blackfriars-Underground-Station",
                                    "type": "station",
                                    "location": {
                                        "lat": 51.511618,
                                        "lng": -0.103239
                                    },
                                    "id": "6286148251023766201",
                                    "countryIso": "GBR",
                                    "countryUrl": "uk"
                                }
                            }
                        }
                    ],
                    "agency": {
                        "id": "2264224218-1585141307",
                        "countryIso": "GBR",
                        "countryUrl": "uk",
                        "name": "London Underground (TfL)",
                        "urlAgencyName": "London-Underground-TfL",
                        "website": "https://www.traveline.info",
                        "phone": "03432221234"
                    }
                },
                {
                    "id": "C1-S2",
                    "type": "pedestrian",
                    "travelSummary": {
                        "duration": 540,
                        "length": 549
                    },
                    "departure": {
                        "time": "2026-06-05T11:38:00+01:00",
                        "place": {
                            "name": "Mansion House Underground Station",
                            "urlStopName": "Mansion-House-Underground-Station",
                            "type": "station",
                            "location": {
                                "lat": 51.511705,
                                "lng": -0.094776
                            },
                            "id": "16815287826471945869",
                            "countryIso": "GBR",
                            "countryUrl": "uk"
                        }
                    },
                    "arrival": {
                        "time": "2026-06-05T11:47:00+01:00",
                        "place": {
                            "name": "",
                            "type": "place",
                            "location": {
                                "lat": 51.5155,
                                "lng": -0.0922
                            },
                            "id": ""
                        }
                    },
                    "polyline": "c{kyH`oQo@KA?A@W\\AIAGAMMaAKy@Ga@AQ?GE?AKISCSASE@A?CSA@E@IBCYOgACSAECGGGMMaAMIAcBSGAED@OK?O?G?MAUCg@GGAIAKAw@I[EC?GAA?EASAIAAAa@EMC?^AD",
                    "transport": {
                        "mode": "pedestrian"
                    }
                }
            ],
            "walkingDistance": 1023,
            "walkingDuration": 1020,
            "walkingCalories": 62.7,
            "co2EmissionKg": 0.08,
            "co2SavedComparedToCarKg": 0.4
        }
    ],
    "alerts": [
        {
            "id": "dd1e4d9bb7ef",
            "origin": "API",
            "cause": "TECHNICAL_PROBLEM",
            "effect": "NO_SERVICE",
            "header": "Bakerloo Line",
            "description": "No service between Queen's Park and Harrow & Wealdstone while we fix a signal failure at Willesden Junction. Tickets are being accepted on London Buses, the Lioness line and London Northwestern Railway. GOOD SERVICE on the rest of the line.",
            "url": "https://tfl.gov.uk/tube-dlr-overground/status/",
            "validFrom": "",
            "validUntil": "",
            "operator": "2264224218-1585141307",
            "countryIso": "GBR",
            "countryUrl": "uk",
            "sectionIds": "C2-S1",
            "informedEntity": [
                {
                    "routeId": "2521614975-583762869"
                }
            ]
        }
    ],
    "regionName": "uk_ireland",
    "imperial": true,
    "processingTimeMs": 341.47
}

Response Schema

View JSON Schema
{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Routes Response",
    "type": "object",
    "properties": {
        "imperial": {
            "type": "boolean",
            "description": "Optional flag, present as true for US/UK; numeric distance fields remain in meters"
        },
        "regionName": {
            "type": "string",
            "description": "Transit data region that served the request"
        },
        "alerts": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Stable alert identifier (hash of header and description)"
                    },
                    "origin": {
                        "type": "string",
                        "description": "Source/origin of the alert"
                    },
                    "cause": {
                        "type": "string",
                        "description": "GTFS-RT alert cause"
                    },
                    "effect": {
                        "type": "string",
                        "description": "GTFS-RT alert effect"
                    },
                    "header": {
                        "type": "string",
                        "description": "Short alert headline"
                    },
                    "description": {
                        "type": "string",
                        "description": "Full alert text"
                    },
                    "url": {
                        "type": "string",
                        "description": "Link with more information"
                    },
                    "validFrom": {
                        "type": "string",
                        "description": "Alert start time (ISO 8601)"
                    },
                    "validUntil": {
                        "type": "string",
                        "description": "Alert end time (ISO 8601)"
                    },
                    "operator": {
                        "type": "string",
                        "description": "Operator identifier of the alert"
                    },
                    "countryIso": {
                        "type": "string",
                        "description": "ISO 3166-1 alpha-3 country code (e.g. 'GBR')"
                    },
                    "countryUrl": {
                        "type": "string",
                        "description": "Country URL slug (e.g. 'uk')"
                    },
                    "sectionIds": {
                        "type": "string",
                        "description": "Route section ids the alert applies to"
                    },
                    "informedEntity": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "routeId": {
                                    "type": "string",
                                    "description": "Internal route identifier"
                                }
                            },
                            "required": [
                                "routeId"
                            ]
                        },
                        "description": "Entities (route/stop) the alert applies to"
                    }
                },
                "required": [
                    "id",
                    "origin",
                    "cause",
                    "effect",
                    "header",
                    "description",
                    "url",
                    "operator",
                    "countryIso",
                    "countryUrl",
                    "sectionIds",
                    "informedEntity"
                ]
            },
            "description": "Service alerts/disruptions affecting the result"
        },
        "routes": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Route identifier (e.g., 'C0', 'C1')"
                    },
                    "duration": {
                        "type": "integer",
                        "description": "Total journey time in seconds"
                    },
                    "co2EmissionKg": {
                        "type": "number",
                        "description": "CO2 emissions in kg for this route"
                    },
                    "walkingDistance": {
                        "type": "integer",
                        "description": "Total walking distance in meters"
                    },
                    "co2SavedComparedToCarKg": {
                        "type": "number",
                        "description": "CO2 saved compared to driving in kg"
                    },
                    "walkingDuration": {
                        "type": "integer",
                        "description": "Total walking time in seconds"
                    },
                    "walkingCalories": {
                        "type": "number",
                        "description": "Estimated energy used while walking, in kilocalories (kcal)"
                    },
                    "sections": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "id": {
                                    "type": "string",
                                    "description": "Journey section identifier"
                                },
                                "type": {
                                    "type": "string",
                                    "description": "Type discriminator for the object"
                                },
                                "arrival": {
                                    "type": "object",
                                    "properties": {
                                        "rtArrival": {
                                            "type": "string",
                                            "description": "Real-time arrival info"
                                        },
                                        "time": {
                                            "type": "string",
                                            "description": "Timestamp in ISO 8601 (region-local with offset)"
                                        },
                                        "platformCode": {
                                            "type": "string",
                                            "description": "Platform or stand code"
                                        },
                                        "place": {
                                            "type": "object",
                                            "properties": {
                                                "countryIso": {
                                                    "type": "string",
                                                    "description": "ISO 3166-1 alpha-3 country code (e.g. 'GBR')"
                                                },
                                                "id": {
                                                    "type": "string",
                                                    "description": "Place or stop identifier"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "description": "Type discriminator for the object"
                                                },
                                                "urlStopName": {
                                                    "type": [
                                                        "null",
                                                        "string"
                                                    ],
                                                    "description": "URL-safe slug of the stop name"
                                                },
                                                "countryUrl": {
                                                    "type": "string",
                                                    "description": "Country URL slug (e.g. 'uk')"
                                                },
                                                "location": {
                                                    "type": "object",
                                                    "properties": {
                                                        "lng": {
                                                            "type": "number",
                                                            "description": "Longitude in decimal degrees"
                                                        },
                                                        "lat": {
                                                            "type": "number",
                                                            "description": "Latitude in decimal degrees"
                                                        }
                                                    },
                                                    "required": [
                                                        "lng",
                                                        "lat"
                                                    ],
                                                    "description": "Point location. Coordinate arrays use [longitude, latitude] in decimal degrees; objects expose named latitude/longitude fields"
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "description": "Display name"
                                                },
                                                "description": {
                                                    "type": "string",
                                                    "description": "Additional place or stop description"
                                                },
                                                "stopCode": {
                                                    "type": "string",
                                                    "description": "Public stop code shown to passengers"
                                                },
                                                "wheelchairBoarding": {
                                                    "type": "integer",
                                                    "description": "Wheelchair accessibility of the stop",
                                                    "enum": [
                                                        1,
                                                        2
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "type",
                                                "location"
                                            ],
                                            "description": "Endpoint place of the section (origin/destination of a leg)"
                                        }
                                    },
                                    "required": [
                                        "place",
                                        "time"
                                    ],
                                    "description": "Arrival end of the section"
                                },
                                "agency": {
                                    "type": "object",
                                    "properties": {
                                        "countryIso": {
                                            "type": "string",
                                            "description": "ISO 3166-1 alpha-3 country code (e.g. 'GBR')"
                                        },
                                        "id": {
                                            "type": "string",
                                            "description": "Operating agency identifier"
                                        },
                                        "urlAgencyName": {
                                            "type": [
                                                "null",
                                                "string"
                                            ],
                                            "description": "URL-safe slug of the agency name"
                                        },
                                        "phone": {
                                            "type": [
                                                "null",
                                                "string"
                                            ],
                                            "description": "Contact phone"
                                        },
                                        "countryUrl": {
                                            "type": "string",
                                            "description": "Country URL slug (e.g. 'uk')"
                                        },
                                        "website": {
                                            "type": "string",
                                            "description": "Website URL"
                                        },
                                        "name": {
                                            "type": "string",
                                            "description": "Display name"
                                        }
                                    },
                                    "required": [
                                        "countryIso",
                                        "id",
                                        "urlAgencyName",
                                        "phone",
                                        "countryUrl",
                                        "website",
                                        "name"
                                    ],
                                    "description": "Operating agency of the leg"
                                },
                                "travelSummary": {
                                    "type": "object",
                                    "properties": {
                                        "duration": {
                                            "type": "integer",
                                            "description": "Duration of this journey section in seconds"
                                        },
                                        "length": {
                                            "type": "integer",
                                            "description": "Length in meters"
                                        }
                                    },
                                    "required": [
                                        "duration",
                                        "length"
                                    ],
                                    "description": "Distance and duration summary of the section"
                                },
                                "transport": {
                                    "type": "object",
                                    "properties": {
                                        "mode": {
                                            "type": "string",
                                            "description": "Travel mode of the section (pedestrian, transit, ...)"
                                        },
                                        "countryIso": {
                                            "type": "string",
                                            "description": "ISO 3166-1 alpha-3 country code (e.g. 'GBR')"
                                        },
                                        "id": {
                                            "type": "string",
                                            "description": "Transit line identifier"
                                        },
                                        "textColor": {
                                            "type": "string",
                                            "description": "Text color as a hex string"
                                        },
                                        "urlRouteShortName": {
                                            "type": [
                                                "null",
                                                "string"
                                            ],
                                            "description": "URL-safe slug of the route short name"
                                        },
                                        "headsign": {
                                            "type": "string",
                                            "description": "Destination shown on the vehicle"
                                        },
                                        "countryUrl": {
                                            "type": "string",
                                            "description": "Country URL slug (e.g. 'uk')"
                                        },
                                        "shortName": {
                                            "type": "string",
                                            "description": "Short name"
                                        },
                                        "name": {
                                            "type": "string",
                                            "description": "Display name"
                                        },
                                        "color": {
                                            "type": "string",
                                            "description": "Color as a hex string"
                                        },
                                        "longName": {
                                            "type": "string",
                                            "description": "Long name"
                                        },
                                        "routeDesc": {
                                            "type": "string",
                                            "description": "Additional route description"
                                        },
                                        "wheelchairAccessible": {
                                            "type": "integer",
                                            "description": "Wheelchair accessibility of the trip",
                                            "enum": [
                                                1,
                                                2
                                            ]
                                        },
                                        "urlRouteLongName": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "URL-safe slug of the route long name"
                                        }
                                    },
                                    "required": [
                                        "mode"
                                    ],
                                    "description": "Transport details of the section (mode, route, agency)"
                                },
                                "departure": {
                                    "type": "object",
                                    "properties": {
                                        "rtDeparture": {
                                            "type": "string",
                                            "description": "Real-time departure info"
                                        },
                                        "time": {
                                            "type": "string",
                                            "description": "Timestamp in ISO 8601 (region-local with offset)"
                                        },
                                        "platformCode": {
                                            "type": "string",
                                            "description": "Platform or stand code"
                                        },
                                        "place": {
                                            "type": "object",
                                            "properties": {
                                                "countryIso": {
                                                    "type": "string",
                                                    "description": "ISO 3166-1 alpha-3 country code (e.g. 'GBR')"
                                                },
                                                "id": {
                                                    "type": "string",
                                                    "description": "Place or stop identifier"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "description": "Type discriminator for the object"
                                                },
                                                "urlStopName": {
                                                    "type": [
                                                        "null",
                                                        "string"
                                                    ],
                                                    "description": "URL-safe slug of the stop name"
                                                },
                                                "countryUrl": {
                                                    "type": "string",
                                                    "description": "Country URL slug (e.g. 'uk')"
                                                },
                                                "location": {
                                                    "type": "object",
                                                    "properties": {
                                                        "lng": {
                                                            "type": "number",
                                                            "description": "Longitude in decimal degrees"
                                                        },
                                                        "lat": {
                                                            "type": "number",
                                                            "description": "Latitude in decimal degrees"
                                                        }
                                                    },
                                                    "required": [
                                                        "lng",
                                                        "lat"
                                                    ],
                                                    "description": "Point location. Coordinate arrays use [longitude, latitude] in decimal degrees; objects expose named latitude/longitude fields"
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "description": "Display name"
                                                },
                                                "description": {
                                                    "type": "string",
                                                    "description": "Additional place or stop description"
                                                },
                                                "stopCode": {
                                                    "type": "string",
                                                    "description": "Public stop code shown to passengers"
                                                },
                                                "wheelchairBoarding": {
                                                    "type": "integer",
                                                    "description": "Wheelchair accessibility of the stop",
                                                    "enum": [
                                                        1,
                                                        2
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "type",
                                                "location"
                                            ],
                                            "description": "Endpoint place of the section (origin/destination of a leg)"
                                        }
                                    },
                                    "required": [
                                        "place",
                                        "time"
                                    ],
                                    "description": "Departure end of the section"
                                },
                                "intermediateStops": {
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "properties": {
                                            "departure": {
                                                "type": "object",
                                                "properties": {
                                                    "place": {
                                                        "type": "object",
                                                        "properties": {
                                                            "countryIso": {
                                                                "type": "string",
                                                                "description": "ISO 3166-1 alpha-3 country code (e.g. 'GBR')"
                                                            },
                                                            "id": {
                                                                "type": "string",
                                                                "description": "Place or stop identifier"
                                                            },
                                                            "type": {
                                                                "type": "string",
                                                                "description": "Type discriminator for the object"
                                                            },
                                                            "urlStopName": {
                                                                "type": [
                                                                    "null",
                                                                    "string"
                                                                ],
                                                                "description": "URL-safe slug of the stop name"
                                                            },
                                                            "countryUrl": {
                                                                "type": "string",
                                                                "description": "Country URL slug (e.g. 'uk')"
                                                            },
                                                            "location": {
                                                                "type": "object",
                                                                "properties": {
                                                                    "lng": {
                                                                        "type": "number",
                                                                        "description": "Longitude in decimal degrees"
                                                                    },
                                                                    "lat": {
                                                                        "type": "number",
                                                                        "description": "Latitude in decimal degrees"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "lng",
                                                                    "lat"
                                                                ],
                                                                "description": "Point location. Coordinate arrays use [longitude, latitude] in decimal degrees; objects expose named latitude/longitude fields"
                                                            },
                                                            "name": {
                                                                "type": "string",
                                                                "description": "Display name"
                                                            },
                                                            "description": {
                                                                "type": "string",
                                                                "description": "Additional place or stop description"
                                                            },
                                                            "wheelchairBoarding": {
                                                                "type": "integer",
                                                                "description": "Wheelchair accessibility of the stop",
                                                                "enum": [
                                                                    1,
                                                                    2
                                                                ]
                                                            }
                                                        },
                                                        "required": [
                                                            "countryIso",
                                                            "id",
                                                            "type",
                                                            "name",
                                                            "countryUrl",
                                                            "location",
                                                            "urlStopName"
                                                        ],
                                                        "description": "Endpoint place of the section (origin/destination of a leg)"
                                                    },
                                                    "time": {
                                                        "type": "string",
                                                        "description": "Timestamp in ISO 8601 (region-local with offset)"
                                                    }
                                                },
                                                "required": [
                                                    "place",
                                                    "time"
                                                ],
                                                "description": "Departure end of the section"
                                            }
                                        },
                                        "required": [
                                            "departure"
                                        ]
                                    },
                                    "description": "Stops passed through between boarding and alighting"
                                },
                                "polyline": {
                                    "type": "string",
                                    "description": "Encoded geometry of the section"
                                }
                            },
                            "required": [
                                "id",
                                "type",
                                "arrival",
                                "travelSummary",
                                "transport",
                                "departure",
                                "polyline"
                            ]
                        },
                        "description": "Route segments/legs"
                    },
                    "transfers": {
                        "type": "integer",
                        "description": "Number of transfers required"
                    }
                },
                "required": [
                    "id",
                    "duration",
                    "co2EmissionKg",
                    "walkingDistance",
                    "co2SavedComparedToCarKg",
                    "walkingDuration",
                    "walkingCalories",
                    "sections",
                    "transfers"
                ]
            },
            "description": "Array of calculated routes"
        },
        "notices": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "description": "Human-readable title of the notice/alert"
                    },
                    "code": {
                        "type": "string",
                        "description": "Status code for the response"
                    }
                },
                "required": [
                    "title",
                    "code"
                ]
            },
            "description": "Informational notices (e.g. noRouteFound, noCoverage)"
        },
        "processingTimeMs": {
            "type": "number",
            "description": "Processing time in milliseconds"
        }
    },
    "required": [
        "regionName",
        "processingTimeMs",
        "routes"
    ]
}

Response Codes

200 Routes calculated successfully (or noCoverage notice if region not supported)
400 Invalid parameters or coordinates
500 Internal server error