WayMatrixWayMatrix
WayMatrix
  • Getting started
  • API reference
  • Your API keys
  • Your usage
  • Billing
  • Back to waymatrix.io
Information
Matrix
    Travel-time and distance matrixpostTravel-time and distance matrix (explicit JSON form)post
Directions
    Route between two pointsgetRoute with full optionspostRoute, JSON formpostRoute, GeoJSON formpostRoute, GPX formpost
Isochrones
    Reachability polygonspostReachability polygons (explicit GeoJSON form)post
Service
    LivenessgetLiveness, headers onlyheadEngine and graph provenancegetEngine and graph provenance, headers onlyhead
Schemas
powered by Zuplo
WayMatrix Routing API
WayMatrix Routing API

Isochrones

Reachability polygons.


Reachability polygons

POST
https://api.waymatrix.io
/v2/isochrones/{profile}

The area you can reach from one or more locations within the time or distance ranges you give.

What it costs

locations × 100 × (largest range ÷ reference)² elements.

  • The reference is 300 seconds for a time range, or 10 km for a distance range.
  • Only your largest range counts. Three bands up to 15 minutes cost the same as one band of 15 minutes.
RequestElements
1 location, 5 minutes100
1 location, 3 bands to 15 minutes900
1 location, 1 hour14,400
2 locations, 10 minutes800

Longer ranges cost much more, because the area to search grows with the square of the range.

Limits

  • The number of locations, the number of ranges and the longest range are all capped.
  • On the smaller plans, a maximum-range isochrone is over the per-request limit. It's refused and not charged.

Errors

Going over a limit returns 400 (code 3004 or 3012), and the message says which limit.

Reachability polygons › path Parameters

profile
​string · required

The routing profile. Only driving-car is served. Any other value returns an "incorrect value" error.

Example: driving-car

Reachability polygons › Headers

Authorization
​string · required

The Authorization header is used to authenticate with the API using your API key. Value is of the format Bearer YOUR_KEY_HERE.

Reachability polygons › Request Body

IsochronesRequest
locations
​Coordinate[] · required

The centers of the isochrones.

range
​number[] · required

The ranges to compute, in seconds or meters depending on range_type. There's a maximum; going over it returns 400 (code 3004), and the message names the limit.

range_type
​string · enum

Whether range is seconds or meters. Default time.

Enum values:
time
distance
interval
​number

Produce intermediate bands at this step within each range.

units
​string · enum
Enum values:
m
km
mi
area_units
​string · enum
Enum values:
m
km
mi
location_type
​string · enum

Whether the locations are origins (start, the default) or destinations — the difference matters on one-way roads.

Enum values:
start
destination
attributes
​string[]
Enum values:
area
reachfactor
total_pop
intersections
​boolean
smoothing
​number
id
​string

Reachability polygons › Responses

Reachability polygons, as GeoJSON.

A GeoJSON FeatureCollection of reachability polygons.
IsochronesResponse
type
​string
bbox
​number[]
​object[]
​Metadata

Details about the request and the data behind the answer, plus element_count.

POST/v2/isochrones/{profile}
curl https://api.waymatrix.io/v2/isochrones/:profile \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "locations": [ { "0": -87.6298, "1": 41.8781 } ], "range": [ 600, 1200 ], "range_type": "time", "attributes": [ "area" ] }'
Example Request Body
{ "locations": [ { "0": -87.6298, "1": 41.8781 } ], "range": [ 600, 1200 ], "range_type": "time", "attributes": [ "area" ] }
json
application/json
Example Responses
{ "type": "FeatureCollection", "bbox": [ -87.64674, 41.86549, -87.61286, 41.89071 ], "features": [ { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ { "0": [ -87.6298, 41.89071 ], "1": [ -87.61782, 41.88702 ], "2": [ -87.61286, 41.8781 ], "3": [ -87.61782, 41.86918 ], "4": [ -87.6298, 41.86549 ], "5": [ -87.64178, 41.86918 ], "6": [ -87.64674, 41.8781 ], "7": [ -87.64178, 41.88702 ], "8": [ -87.6298, 41.89071 ] } ] }, "properties": { "group_index": 0, "value": 600, "center": [ -87.62975, 41.87812 ], "area": 6120344.5 } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ { "0": [ -87.6298, 41.90331 ], "1": [ -87.60584, 41.89594 ], "2": [ -87.59592, 41.8781 ], "3": [ -87.60584, 41.86026 ], "4": [ -87.6298, 41.85289 ], "5": [ -87.65376, 41.86026 ], "6": [ -87.66368, 41.8781 ], "7": [ -87.65376, 41.89594 ], "8": [ -87.6298, 41.90331 ] } ] }, "properties": { "group_index": 0, "value": 1200, "center": [ -87.62975, 41.87812 ], "area": 24481378.1 } } ], "metadata": { "attribution": "© openrouteservice by HeiGIT | Data from OpenStreetMap", "service": "isochrones", "timestamp": 1788412800000, "query": { "locations": [ { "0": -87.6298, "1": 41.8781 } ], "profile": "driving-car", "range": [ 600, 1200 ], "range_type": "time", "attributes": [ "area" ] }, "engine": { "version": "9.10.0", "build_date": "2026-07-28T00:00:00Z", "graph_date": "2026-07-31T00:00:00Z", "osm_date": "2026-07-30T00:00:00Z" }, "element_count": 100 } }
json
application/geo+json

Reachability polygons (explicit GeoJSON form)

POST
https://api.waymatrix.io
/v2/isochrones/{profile}/geojson

Identical to POST /v2/isochrones/{profile}.

Reachability polygons (explicit GeoJSON form) › path Parameters

profile
​string · required

The routing profile. Only driving-car is served. Any other value returns an "incorrect value" error.

Example: driving-car

Reachability polygons (explicit GeoJSON form) › Headers

Authorization
​string · required

The Authorization header is used to authenticate with the API using your API key. Value is of the format Bearer YOUR_KEY_HERE.

Reachability polygons (explicit GeoJSON form) › Request Body

IsochronesRequest
locations
​Coordinate[] · required

The centers of the isochrones.

range
​number[] · required

The ranges to compute, in seconds or meters depending on range_type. There's a maximum; going over it returns 400 (code 3004), and the message names the limit.

range_type
​string · enum

Whether range is seconds or meters. Default time.

Enum values:
time
distance
interval
​number

Produce intermediate bands at this step within each range.

units
​string · enum
Enum values:
m
km
mi
area_units
​string · enum
Enum values:
m
km
mi
location_type
​string · enum

Whether the locations are origins (start, the default) or destinations — the difference matters on one-way roads.

Enum values:
start
destination
attributes
​string[]
Enum values:
area
reachfactor
total_pop
intersections
​boolean
smoothing
​number
id
​string

Reachability polygons (explicit GeoJSON form) › Responses

Reachability polygons, as GeoJSON.

A GeoJSON FeatureCollection of reachability polygons.
IsochronesResponse
type
​string
bbox
​number[]
​object[]
​Metadata

Details about the request and the data behind the answer, plus element_count.

POST/v2/isochrones/{profile}/geojson
curl https://api.waymatrix.io/v2/isochrones/:profile/geojson \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "locations": [ { "0": -87.6298, "1": 41.8781 } ], "range": [ 600, 1200 ], "range_type": "time", "attributes": [ "area" ] }'
Example Request Body
{ "locations": [ { "0": -87.6298, "1": 41.8781 } ], "range": [ 600, 1200 ], "range_type": "time", "attributes": [ "area" ] }
json
application/json
Example Responses
{ "type": "FeatureCollection", "bbox": [ 0 ], "features": [ { "type": "type", "geometry": {}, "properties": { "group_index": 0, "value": 0, "center": { "0": -87.6298, "1": 41.8781 }, "area": 0, "reachfactor": 0 } } ], "metadata": { "attribution": "© openrouteservice by HeiGIT | Data from OpenStreetMap", "service": "service", "timestamp": 0, "query": {}, "engine": { "version": "version", "build_date": "build_date", "graph_date": "graph_date", "osm_date": "osm_date" }, "element_count": 0 } }
json
application/geo+json

DirectionsService