> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cyclemate.club/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Changes to our SuperSafe routing model, new data sources behind them, and the API itself. SuperSafe is constantly learning and changes as a result of external data contributions/reports do not appear in this changelog.

<Update label="2026-07-27" description="London" tags={["Weights"]}>
  ### London cycle route preferences realigned with TfL guidance

  Signed London routes are now treated according to Transport for London's own guidance on what each is for. Cycleways and Superhighways are preferred over the streets beside them; Quietways and local network routes are treated as ordinary streets, because signage alone does not make a road calmer. This replaces a set of route-by-route adjustments made over the preceding months.
</Update>

<Update label="2026-07-27" description="All cities" tags={["Weights"]}>
  ### Roadworks steer routes without forcing long detours

  Streets with active works are still avoided, but less emphatically. Riders were being sent noticeably out of their way around works that were passable.
</Update>

<Update label="2026-07-27" description="All cities" tags={["Data sources"]}>
  ### Banned turns read correctly where cycleways cross junctions

  A no-turn restriction is now set aside only where both approaches are on the same cycleway. Routes stop suggesting turns that are signed against at junctions where a cycleway meets a road.
</Update>

<Update label="2026-07-22" description="All cities" tags={["Model"]}>
  ### Walking directions follow pedestrian routes

  Walking legs are now planned over footways, paths and crossings rather than over the cycling network. Where a street has no separately mapped pavement the carriageway is still available, so walking directions stay connected everywhere. Cycling turn restrictions no longer apply to walking legs, which is what previously produced the odd walking detour.
</Update>

<Update label="2026-07-22" description="All cities" tags={["Weights"]}>
  ### Routes prefer to carry straight on through junctions

  Where a route can continue straight rather than turn, it now does. This trims the zig-zagging through residential grids that made some quiet routes tiring to follow, and it only applies mid-run, so junctions where straight on is not really an option are unaffected.
</Update>

<Update label="2026-07-17" description="All cities" tags={["Weights"]}>
  ### Rough and unpaved surfaces are avoided

  Where OpenStreetMap records a street or path as cobbled, gravel, dirt or otherwise uneven, routes now steer around it. Comfort and safety are treated separately: a rough street is avoided, but it is not reported as dangerous.
</Update>

<Update label="2026-07-16" description="All cities" tags={["Model"]}>
  ### One-off closures are avoided on the dates they apply

  Road closures with a fixed start and end date, such as marathons, festivals and multi-week works, are now avoided for departures inside that window and ignored outside it. Pass `departure_time` to route for a specific day.
</Update>

<Update label="2026-07-16" description="London" tags={["API"]}>
  ### Nearby closures are surfaced on multi-modal options

  Each option in a [`POST /multi-modal/`](/api-reference/routing/multimodal) response can now carry a `disruptions` array listing temporary road disruptions near its cycling legs, either active at the departure time or starting within the hour. Use it to warn a rider about works on the route you are about to show them.
</Update>

<Update label="2026-07-13" description="London" tags={["API"]}>
  ### Route to a place to park the bike

  [`POST /multi-modal/`](/api-reference/routing/multimodal) accepts `parking_type`, which ends the cycling leg at a real parking spot near the destination and walks the rider the rest of the way. Set it to `regular` for ordinary racks or `ebike` for designated rental e-bike bays. The chosen spot comes back as `parking`.
</Update>

<Update label="2026-07-12" description="All cities" tags={["Data sources"]}>
  ### Street surface is read from the map

  Surface information published in OpenStreetMap now flows through to routing, which is what makes surface-aware routes possible. Values are consolidated to a simple smooth-or-uneven distinction, because the raw tagging is too inconsistent between contributors to use directly.
</Update>

<Update label="2026-07-08" description="All cities" tags={["Model"]}>
  ### Streets that close on a schedule are avoided while they are closed

  Roads that shut on a recurring weekly pattern, such as street markets and regular events, are now avoided for departures inside those hours and used normally the rest of the week. Before this, a route either always avoided the street or never did.
</Update>

<Update label="2026-07-08" description="London" tags={["Data sources"]}>
  ### London street markets mapped

  The recurring closures for London's street markets are now recorded with their real trading hours, so a Saturday morning route around Broadway Market differs from a Tuesday afternoon one.
</Update>

<Update label="2026-07-03" description="All cities" tags={["API"]}>
  ### Explain a route in one sentence

  [`POST /explain-supersafe/`](/api-reference/routing/explain-supersafe) compares the SuperSafe route against the most direct route and returns a single sentence describing the difference, for captioning a route in your own interface. It accepts `nighttime` and `departure_time` so the sentence describes the same pair of routes you are showing.
</Update>

<Update label="2026-06-29" description="All cities" tags={["Fix"]}>
  ### Cycleways on merged streets keep the right side of the road

  Where a long street is recorded in several pieces, or is signed against the direction it was drawn, the cycleway alongside it now stays on the correct side. Routes stop putting riders on a lane running the other way.
</Update>

<Update label="2026-06-28" description="All cities" tags={["Data sources"]}>
  ### The road network is checked for connectivity

  Stretches of road that are not actually reachable from the rest of the city are now removed before routing. These were the source of routes that started or ended somewhere a rider could not get to.
</Update>

<Update label="2026-06-26" description="All cities" tags={["Data sources"]}>
  ### Rebuilt how map data is read

  The step that turns OpenStreetMap data into our road network was rewritten. Junctions, one-way rules and street naming are all more faithful to the source data, and the network takes considerably less time to rebuild, which is what made the nightly refresh below practical.
</Update>

<Update label="2026-06-24" description="All cities" tags={["Fix"]}>
  ### Long trips route reliably end to end

  The area searched for a route now scales with how far apart the two points are. Long cross-city trips that previously failed to return a route now succeed, and short trips are unaffected.
</Update>

<Update label="2026-06-14" description="All cities" tags={["Data sources"]}>
  ### Time-limited turn signs are respected

  Junctions where a turn is banned only at certain times, such as peak-hours-only restrictions, are now read from the map and honoured for the departure time you route for.
</Update>

<Update label="2026-06-13" description="All cities" tags={["Data sources"]}>
  ### One-way rules that apply to bikes specifically

  Where a street is one-way for bicycles, or explicitly two-way for bicycles on an otherwise one-way street, routing follows that rather than the general one-way rule. Contraflow lanes are usable in the direction they exist.
</Update>

<Update label="2026-06-09" description="All cities" tags={["API"]}>
  ### Roundabout instructions say which exit to take

  Steps through a roundabout now read "take the 2nd exit" rather than a generic turn, in both the written instruction and the voice cue, with exits counted from the entry point.
</Update>

<Update label="2026-06-07" description="All cities" tags={["API"]}>
  ### Banner instructions preview the following turn

  `bannerInstructions` entries now carry a `sub` component alongside `primary`, so an interface can show the turn after next while the rider is still approaching the current one. Useful where two maneuvers arrive close together.
</Update>

<Update label="2026-06-03" description="All cities" tags={["API"]}>
  ### Route for a chosen departure time

  [`POST /directions/`](/api-reference/routing/directions) and [`POST /multi-modal/`](/api-reference/routing/multimodal) accept `departure_time` as a wall-clock time in the route city's timezone. It determines whether night routing applies and which temporary closures are in force, and it comes back on `metadata` so you can confirm what was routed.
</Update>

<Update label="2026-06-03" description="London, New York City" tags={["API"]}>
  ### Each step reports whether it is lit

  Steps carry a `lit` flag, so you can show a rider how much of a route runs on lit streets. It reflects street lighting recorded in OpenStreetMap, which is approximate and better in some boroughs than others.
</Update>

<Update label="2026-06-02" description="London, New York City" tags={["Model"]}>
  ### Routes prefer lit streets after dark

  Evening and overnight trips now favour streets we know are lit. Night applies from half an hour after sunset to half an hour before sunrise, worked out for the route's own city, so it tracks the seasons rather than a fixed clock time. `metadata.nighttime` tells you which way a route was planned.
</Update>

<Update label="2026-05-28" description="All cities" tags={["Model"]}>
  ### Identical routes are returned once

  Where the safest route and the most direct route are the same road, only one option comes back rather than two identical ones. Riders were being asked to choose between two routes that were indistinguishable.
</Update>

<Update label="2026-05-26" description="All cities" tags={["Data sources"]}>
  ### Map data refreshes nightly

  Every supported city now rebuilds from the latest OpenStreetMap data each night. A new cycle lane, a closed street or a corrected one-way now reaches routing within a day of being mapped, rather than whenever we next rebuilt by hand.
</Update>

<Update label="2026-05-20" description="All cities" tags={["API"]}>
  ### Safe and direct options in one multi-modal request

  [`POST /multi-modal/`](/api-reference/routing/multimodal) now returns both the SuperSafe and the most direct variant of each travel option in a single response, instead of needing two calls to compare them.
</Update>

<Update label="2026-05-04" description="All cities" tags={["Model"]}>
  ### Routes obey banned turns

  Turn restrictions recorded in OpenStreetMap, including no-left-turn and no-U-turn signs, are now enforced during route planning rather than checked afterwards. Routes also accept an optional starting direction, so a rider already moving is not told to turn around.
</Update>

<Update label="2026-04-28" description="All cities" tags={["Fix"]}>
  ### The first instruction points the way you are facing

  Where a route starts partway along a street, the opening step now reports the correct departure direction. It could previously be reported as the opposite direction, which sent riders the wrong way out of the gate.
</Update>

<Update label="2026-04-25" description="All cities" tags={["API"]}>
  ### Simpler bearings on maneuvers

  Maneuver bearings are reported as single numbers in degrees rather than as a structure, matching the shape most navigation clients already expect.
</Update>

<Update label="2026-04-24" description="All cities" tags={["Data sources"]}>
  ### Separately mapped cycleways matched to their streets

  Cycleways drawn as their own line alongside a road, which is how most protected lanes are mapped, are now matched to the street they run beside. Turn-by-turn steps name the street rather than an unnamed parallel path, and a lane on one side of a road only helps riders travelling that way.
</Update>

<Update label="2026-04-16" description="All cities" tags={["API"]}>
  ### Turn angles match the maneuver

  Each step reports the angle a rider actually turns through at the junction, rather than an angle taken from the overall direction of the streets involved. Instructions like "sharp left" and "slight right" now match what the rider sees.
</Update>

<Update label="2026-04-14" description="All cities" tags={["API"]}>
  ### API keys required

  Every endpoint now requires an API key in the `Authorization` header. A valid user session is also accepted and grants higher rate limits. See [Authentication](/api-reference/introduction).
</Update>

<Update label="2026-03-29" description="All cities" tags={["Weights"]}>
  ### Road preferences tunable per city

  How strongly each kind of road is preferred or avoided is now set per city and can be changed without rebuilding anything. A busy arterial in London and one in Los Angeles no longer have to be treated identically, and a correction reaches riders the same day.
</Update>

<Update label="2026-03-26" description="All cities" tags={["Model"]}>
  ### Bike-share trips stay inside the permitted riding area

  Where an operator publishes zones its bikes may not be ridden through, routes now stay out of them, so a bike-share option is one the rider can actually complete.
</Update>

<Update label="2026-03-26" description="All cities" tags={["API"]}>
  ### Pricing and deep links on bike-share options

  Bike-share options carry the operator's published pricing plan and a rental link, so an interface can show the price of a trip and hand the rider straight to the operator's app.
</Update>

<Update label="2026-03-19" description="London" tags={["Weights"]}>
  ### Signed cycle routes preferred over the streets beside them

  Where a signed cycle route runs parallel to a road, routing now prefers the signed route. This is what makes a SuperSafe route follow the network a city has actually built.
</Update>

<Update label="2026-03-18" description="All cities" tags={["API"]}>
  ### Steps name the signed cycle route

  Each step carries the signed cycle routes it belongs to, such as `C13` or `CS7`, so instructions can name the route a rider is following rather than only the street.
</Update>

<Update label="2026-02-04" description="All cities" tags={["Model"]}>
  ### SuperSafe becomes a per-request option

  `supersafe` switches routing between the safety-first model and the most direct route, resolved against the city the request falls in. Before this, safety routing was all or nothing.
</Update>
