Skip to main content

Overview

Accepts a single report and returns a report ID immediately. A report is a categorised observation about a road at a coordinate. The report enters the processing pipeline (AI analysis plus human review). Poll GET /reports/{id} for the outcome, typically available within 15 minutes.

Authentication

This endpoint requires an API key. Include it in the Authorization header:
A signed-in user session token is also accepted. Our apps submit rider reports this way. Anonymous callers are rejected: every report must be attributable to a submitter.

Rate limits

User session tokens are limited to 60 reports per hour. Exceeding the limit returns 429 with a Retry-After header and a retry_after_seconds field in the body. Partner API keys carry limits agreed at issuance. Contact us about expected volumes.

Request body

string
required
The report category. One of:
[number, number]
required
The report coordinate as [longitude, latitude] (GeoJSON order, see Coordinate format).
string
Free-text description of the issue, up to 2,000 characters. The more specific, the faster the analysis. Include what is blocked, since when, and until when if known.
string
Name of the affected road or place, up to 200 characters.
string
The sub-category, which says what kind of problem it is within the issue_type. Sending one classifies the report without waiting for a human to read the description, so it is the single most useful optional field. Each category recognises its own values:other is accepted under every category. Under road_closed, the first five values mean the road is physically blocked and the last two mean the manoeuvre is illegal rather than the road impassable, which we act on differently. Any other string up to 64 characters is stored but is not classified.
string
Required for partner API keys, ignored for user session tokens. The source identifier agreed when your key was issued (e.g. dft, forest): a 2–32 character slug of a-z, 0-9, _, -. It attributes the submission and scopes which reports your key can read back.

Response body

number
The report ID. Use it with GET /reports/{id} to poll processing status.
string
Always received on creation.
string
ISO 8601 timestamp of receipt.

Variants

Partner submission

A partner API key must send its agreed source slug on every report. Submissions are attributed to that slug, and the key can read back any report submitted through the API.

User session submission

A signed-in user token submits without source (any value sent is ignored). The report is attributed to the user’s account, and the token can read back only that user’s reports.

Error responses

400 Bad request

Invalid body: an unknown issue_type, an out-of-range location, or a missing source on a partner key. The error field names the problem.

401 Unauthorized

Missing or invalid credentials, or an anonymous caller.

405 Method not allowed

Method other than POST on the collection.

429 Too many requests

Rate limit exceeded, see Rate limits. Includes a Retry-After header.

500 Internal server error

Unexpected server failure.