Overview
We route riders along the safest cycling roads. That safety model is built from data: street networks, collision records, and contributions from organisations that see the road before we do. There are two ways to contribute:- Reports. A single observation about a road, tied to a coordinate. For example “this street is closed” or “this junction is unsafe”. Send them one at a time with
POST /reports. - Data feeds. A dataset you already publish, which we ingest on a schedule so you contribute continuously without writing any integration code. See Submit data feed.
- The routing algorithm. An accepted contribution changes how routes are computed, steering riders away from the hazard.
- The safe cycling maps. The public safety layer at cyclemate.club/explore/london reflects accepted findings.
Every contribution is analysed by AI agents and reviewed by humans. Accepted findings feed back into the routing algorithm, typically within minutes. Reports also get a processing summary you can retrieve via
GET /reports/{id}, usually available within 15 minutes of submission.
What happens to a contribution
An accepted contribution leads to one of three changes. A permanent change to a road. The road’s safety rating changes for good, so routes avoid it from then on and its colour changes on the map. We use this when the hazard belongs to the road itself, like a junction that is dangerous by design or a street that is hostile to cycling. A temporary avoidance window. The road is avoided between a start and an end date, then the window expires on its own. We use this for closures, street works, and events. These are the entries in the upcoming closures list above, and it is where most feed items land. An algorithm improvement. Some contributions expose a gap in the model rather than one bad road. We change how a whole class of road is weighted across the city, so a single report can improve thousands of routes at once. These changes affect every route in the city, so they get the most review before they ship. Not everything changes the map. We close a report without a change when the issue has already been fixed, when we cannot reproduce it, or when the road is outside a city we route in.GET /reports/{id} returns either result: accepted with a summary of what changed, or closed with why nothing did.
Contributing reports
POST /reports accepts a single report and returns a report ID immediately. Use it to forward events as they happen, like a closure notice landing in your system or a hazard flagged by your users.
Organisations sending reports today include:
- Department for Transport, sending street works and closure events
- Our apps, sending rider-submitted issue reports from mid-ride
Contributing data feeds
If you already publish a dataset, we can ingest it directly instead. We take feeds from TfL Road Disruptions, DfT Street Manager, and OpenStreetMap today. Submit data feed covers what we ingest, how ingestion works, and what a feed needs before we can use it.Reading back what happened
GET /reports/{id} returns the report’s processing status and, once analysis completes, a one-line summary of the outcome. Callers can only read reports they submitted.
Coverage
Contributions are accepted for any coordinate. Those inside an operating city can influence routing and the safety maps. Those elsewhere are stored and inform future coverage.Getting access
Reports use the same API keys as the rest of the platform. See Authentication. Partner keys are issued with an agreedsource identifier that attributes your submissions. Data feeds need no key, since we ingest them from your side. Contact us to set one up.