Open Application Platform Docs

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.