Plan transit routes between origin and destination

GET /routes

Calculate optimal public transport routes with real-time data integration

Parameters

Parameter Type Required Description Example
origin string Origin coordinates in 'lat,lon' format 51.537511,-0.152208
destination string Destination coordinates in 'lat,lon' format 51.531921,-0.082569
arrivalTime string 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 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 Maximum number of transfers (range 0-6) 2
geometry string Geometry return format
Values: polyline, flexible-polyline
Default: polyline
polyline
transport string Return routes using only specified transport types, comma-separated
Available: bus, subway, train, tram
bus,subway,train,tram
maxRoutes integer 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 3
lang string Language code for translated stop/route names (IETF BCP 47 format, e.g. en, ru, es, zh-CN). If no translation is available, the original name is returned en

Time format

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

Form Example Meaning
No zone 2025-09-18T10:00:00 Local time at the queried location: the origin for /routes, the stop or location for /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.
  • Departure and arrival times in the response use the region's local time. The localDate and localTime fields report the request time in that zone.

Real-time vs scheduled times

Times come in two flavours: the schedule (always present) and the real-time/live value (present only when the operator feeds live data). When a real-time value is present 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)
/nextDepartures departureTime (HH:MM:SS) + date rtDepartureTime (HH:MM:SS) + rtDate
/routes section departure.time / arrival.time (full ISO 8601) section departure.rtDeparture / arrival.rtArrival (full ISO 8601); same on intermediateStops[]
  • Real-time fields are absent when no live data exists - then only the schedule is known. Always check for the rt* field and fall back to the scheduled one.
  • 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).

Try It Out

Base URL: https://capi.busmaps.com:8443
Example Requests:
Required parameters only
curl -H "capi-key: Bearer YOUR_API_KEY" -H "capi-host: busmaps.com" "https://capi.busmaps.com:8443/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/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&maxRoutes=3&lang=en"

Response Example

HTTP 200 - Success
{
  "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

Title: Routes Response

View Full JSON Schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Routes Response",
  "type": "object",
  "properties": {
    "imperial": {
      "type": "boolean",
      "description": "True when distances are meant to be shown in imperial units (US/UK)"
    },
    "regionName": {
      "type": "string",
      "description": "Transit data region that served the request"
    },
    "alerts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier"
          },
          "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 name"
          },
          "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": "Identifier"
          },
          "duration": {
            "type": "integer",
            "description": "Duration 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 calories burned walking"
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "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": "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": "Coordinate pair of the point"
                        },
                        "name": {
                          "type": "string",
                          "description": "Display name"
                        },
                        "description": {
                          "type": "string",
                          "description": "Full alert text"
                        },
                        "stopCode": {
                          "type": "string",
                          "description": "Public stop code shown to passengers"
                        },
                        "wheelchairBoarding": {
                          "type": "integer",
                          "description": "Wheelchair accessibility flag (GTFS: 0 unknown, 1 yes, 2 no)"
                        }
                      },
                      "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": "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 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": "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"
                    },
                    "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": "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": "Coordinate pair of the point"
                        },
                        "name": {
                          "type": "string",
                          "description": "Display name"
                        },
                        "description": {
                          "type": "string",
                          "description": "Full alert text"
                        },
                        "stopCode": {
                          "type": "string",
                          "description": "Public stop code shown to passengers"
                        },
                        "wheelchairBoarding": {
                          "type": "integer",
                          "description": "Wheelchair accessibility flag (GTFS: 0 unknown, 1 yes, 2 no)"
                        }
                      },
                      "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": "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": "Coordinate pair of the point"
                              },
                              "name": {
                                "type": "string",
                                "description": "Display name"
                              },
                              "description": {
                                "type": "string",
                                "description": "Full alert text"
                              }
                            },
                            "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": "Ordered legs that make up the route"
          },
          "transfers": {
            "type": "integer",
            "description": "Number of transfers required"
          }
        },
        "required": [
          "id",
          "duration",
          "co2EmissionKg",
          "walkingDistance",
          "co2SavedComparedToCarKg",
          "walkingDuration",
          "walkingCalories",
          "sections",
          "transfers"
        ]
      },
      "description": "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": "Server processing time in milliseconds"
    }
  },
  "required": [
    "regionName",
    "processingTimeMs",
    "routes"
  ]
}
Response Codes
HTTP 200

Routes calculated successfully (or noCoverage notice if region not supported)

HTTP 400

Invalid parameters or coordinates

HTTP 500

Internal server error