Reach areas (beta)
Draw the areas reachable from a point within given drive times.
isochrone.compute
Beta
call
How to call it
REST
POST
/v1/isochrone
GraphQL
query
openIsochrone
MCP
open_isochrone_compute
Draw the areas reachable from a point within up to four drive times (minutes 1-120), or with direction "to" the areas from which the point is reached, for a vehicle profile. Returns GeoJSON MultiPolygons with their surface in km2. Billed one call.
Request schema
Generated from the same validation rules the endpoint runs, so a field cannot be documented without being validated.
POST /v1/isochrone
{
"type": "object",
"properties": {
"direction": {
"type": [
"string",
"null"
],
"enum": [
"from",
"to"
]
},
"location": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"lat",
"lng"
]
},
"minutes": {
"type": "array",
"minItems": 1,
"maxItems": 4,
"items": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
},
"profile": {
"type": [
"string",
"null"
],
"enum": [
"car",
"van",
"truck",
"bike",
"foot",
"motorcycle"
]
}
},
"additionalProperties": false,
"required": [
"location",
"minutes"
]
}
Request example
{
"location": {
"lat": 45.5017,
"lng": -73.5673
},
"minutes": [
5,
10
],
"profile": "car"
}
Response
What a successful call returns: the schema of `data` and `meta`, with a description of each field, followed by an example response from a real call.
POST /v1/isochrone
Response schema
{
"description": "The reach areas, one per drive time. Billed one call.",
"data": {
"type": "object",
"properties": {
"location": {
"type": "object",
"description": "The point, `{lat, lng}`, as given."
},
"direction": {
"type": "string",
"enum": [
"from",
"to"
],
"description": "`from`: reached from the point; `to`: from which the point is reached."
},
"areas": {
"type": "array",
"description": "One area per value of `minutes`, smallest first.",
"items": {
"type": "object",
"properties": {
"minutes": {
"type": "integer",
"description": "The drive time."
},
"area_km2": {
"type": "number",
"description": "The surface of the area in square kilometres."
},
"geometry": {
"type": "object",
"description": "A GeoJSON MultiPolygon, positions as [lng, lat]."
}
}
}
}
},
"required": [
"location",
"direction",
"areas"
]
},
"meta": {
"type": "object",
"properties": {},
"additionalProperties": true
}
}
Response example
{
"request_id": "req_01k8zq3m5n7p9r1t3v5x7z9b2d",
"capability": "isochrone.compute",
"billing": {
"unit": "call",
"quantity": 1,
"counted": true
},
"data": {
"location": {
"lat": 45.5017,
"lng": -73.5673
},
"direction": "from",
"areas": [
{
"minutes": 5,
"area_km2": 16.21,
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
-73.563299,
45.530674
],
[
-73.583949,
45.515349
],
[
-73.584242,
45.513757
],
[
-73.591753,
45.494246
],
[
-73.600596,
45.467403
],
[
-73.575631,
45.482031
],
[
-73.559299,
45.476764
],
[
-73.543299,
45.48029
],
[
-73.542831,
45.475168
],
[
-73.54472,
45.4927
],
[
-73.552638,
45.4967
],
[
-73.550582,
45.507982
],
[
-73.547776,
45.516223
],
[
-73.554652,
45.527052
],
[
-73.563299,
45.530674
]
]
]
]
}
},
{
"minutes": 10,
"area_km2": 85.45,
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
-73.523299,
45.566736
],
[
-73.56589,
45.5577
],
[
-73.62407,
45.50747
],
[
-73.661785,
45.500214
],
[
-73.640299,
45.471298
],
[
-73.662299,
45.444574
],
[
-73.628651,
45.4447
],
[
-73.610299,
45.458262
],
[
-73.559421,
45.4547
],
[
-73.480299,
45.465887
],
[
-73.509065,
45.488465
],
[
-73.527299,
45.503088
],
[
-73.520532,
45.5297
],
[
-73.523299,
45.566736
]
]
]
]
}
}
]
},
"meta": {
"profile": "car",
"geometry_format": "geojson"
}
}
What it costs
One call, whatever its size.
Every billable response carries a billing block with the unit, the quantity and how the quantity was derived.
Errors it can return
| Status | Code | Description |
|---|---|---|
| 401 | TOKEN_INVALID |
Unknown or revoked API token. |
| 401 | TOKEN_MISSING |
No API token. Send Authorization: Bearer <your token>. |
| 402 | QUOTA_EXHAUSTED |
The included allowance for this capability is used up for the current period. |
| 403 | CAPABILITY_NOT_ENABLED |
This capability is not enabled for your account. See :doc to enable it. |
| 403 | CAPABILITY_NOT_GRANTED_TO_KEY |
Your account has this capability, but this API key was not granted it. |
| 403 | OPEN_API_DISABLED |
Open Platform access is not enabled for this account. |
| 422 | VALIDATION_FAILED |
The request failed validation. See details. |
| 429 | RATE_LIMITED |
Too many requests. Please retry after the indicated delay. |
| 500 | INTERNAL_ERROR |
An unexpected error occurred. Quote the request_id when contacting support. |
| 502 | ENGINE_UNAVAILABLE |
The routing engine is temporarily unreachable. Please retry. |