> ## 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.

# Submit data feed

> Publish a dataset we ingest continuously, rather than sending one report at a time

## Overview

A report is a single observation you push to us. A data feed is a dataset you already publish that we ingest on a schedule, so you contribute continuously without writing any integration code against our API.

Feeds suit organisations that already maintain the data: a highway authority publishing street works permits, an operator publishing closures, a city publishing its cycle network. If you would rather push individual events as they happen, use [`POST /reports`](/api-reference/reports/submit-report) instead.

## Feeds we ingest today

| Feed             | Published by               | What it gives us                                                                                       |
| ---------------- | -------------------------- | ------------------------------------------------------------------------------------------------------ |
| Road Disruptions | Transport for London       | Closures and works on London's strategic roads.                                                        |
| Street Manager   | Department for Transport   | Statutory street works permits for every street in England, including borough and residential streets. |
| OpenStreetMap    | OpenStreetMap contributors | The base street network we route on, refreshed as the map changes.                                     |

Roadworks feeds cover London today. We attribute each source wherever its data is visible: TfL data is shown as "Powered by TfL Open Data", and street data as "© OpenStreetMap contributors".

## How ingestion works

We take feeds two ways. We can **pull** on a schedule, which is how most feeds work and needs nothing from you beyond a reachable endpoint. Or you can **push** events to us as they are issued, which is how street works permits reach us, and which gets a change into routing within seconds rather than at the next pull.

Either way the items are matched onto the roads in our routing model. A closure becomes a dated avoidance window, so routes steer around the road while the work is live and the window expires on its own. Those windows are what riders see in the upcoming closures list on [the explore map](https://cyclemate.club/explore/london).

We also handle works ending early. When an item is cancelled, completed, or disappears from your feed, we close its window rather than leaving riders routed around a road that has reopened.

## What makes a feed we can use

Before proposing a feed, check it has:

* **A stable identifier per item**, so an update or cancellation matches the original rather than creating a duplicate.
* **Start and end dates**, so we can open and close the avoidance window at the right time.
* **Enough location detail to match a road**, which means coordinates, a linear reference, or street names precise enough to resolve.
* **A licence that permits our use**, either an open licence or a written agreement. Tell us the attribution wording you need.
* **A documented schema**, so we can map your fields without guessing at their meaning.

A feed missing some of these is often still usable. Dates and identifiers are the two that matter most, because without them we cannot tell when a closure ends or whether an item is new.

## Proposing a feed

[Contact us](https://cyclemate.club/for-developers) with a link to the feed, its licence, and roughly how often it changes. We will confirm whether we can ingest it, agree the attribution, and tell you when it goes live.
