Strange Isochrone 3099 on self hosted ORS

Hi ,

I am failing to understand a behavior with my self hosted ORS isochrone service ( local Docker container on latest image).

My ORS seems to be only able to build on (1?) specific point (or at least every other point I tried failed):

#Point where I get a 3099 error 

body = {"locations":[[2.345688,48.853004]],"range":[600],"range_type":"time"}

headers = {
    'Accept': 'application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8',
    'Content-Type': 'application/json; charset=utf-8'
}
call = requests.post('http://localhost:7070/ors/v2/isochrones/driving-car', json=body, headers=headers)

print(call.status_code, call.reason)
print(call.text)


#Point given in the API playgroud tested on my ors 

body = {"locations":[[8.681495,8.686507]],"range":[600],"range_type":"time"}

headers = {
    'Accept': 'application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8',
    'Content-Type': 'application/json; charset=utf-8'
}
call = requests.post('http://localhost:7070/ors/v2/isochrones/driving-car', json=body, headers=headers)

print(call.status_code, call.reason)
print(call.text)

Here are the responses i get :

500 

{"error":{"code":3099,"message":"Unable to build an isochrone map."},"info":{"engine":{"build_date":"2025-01-29T12:32:30Z","graph_version":"1","version":"9.1.0"},"timestamp":1740151517515}}

200 

{"type":"FeatureCollection","bbox":[8.678141,49.333596,8.697155,49.358999],"features":[{"type":"Feature","properties":{"group_index":0,"value":600.0,"center":[8.6857601,49.3336218]},"geometry":{"coordinates":[[[8.678174,49.348252],[8.678248,49.347787],[8.679379,49.342681],[8.682421,49.338721],[8.685582,49.333596],[8.685938,49.333647],[8.689449,49.336444],[8.69447,49.337864],[8.694824,49.33793],[8.695739,49.340295],[8.696888,49.343613],[8.697155,49.345504],[8.697018,49.346416],[8.69575,49.349014],[8.695577,49.34933],[8.691819,49.354547],[8.690421,49.358081],[8.689238,49.358999],[8.689215,49.358997],[8.689048,49.358806],[8.688825,49.358232],[8.681205,49.35366],[8.68099,49.353371],[8.678141,49.34861],[8.678174,49.348252]]],"type":"Polygon"}}],"metadata":{"attribution":"openrouteservice.org, OpenStreetMap contributors","service":"isochrones","timestamp":1740151517529,"query":{"profile":"driving-car","profileName":"driving-car","locations":[[8.681495,8.686507]],"range":[600.0],"range_type":"time"},"engine":{"version":"9.1.0","build_date":"2025-01-29T12:32:30Z","graph_date":"2025-02-21T11:47:59Z"}}}

I suspected there was something wrong with my point and tested it on the public API :

# "my" point on public ORS API

body = {"locations":[[2.345688,48.853004]],"range":[600],"range_type":"time"}

headers = {
    'Accept': 'application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8',
    'Authorization': MYKEY ,
    'Content-Type': 'application/json; charset=utf-8'
}
call = requests.post('https://api.openrouteservice.org/v2/isochrones/driving-car', json=body, headers=headers)

print(call.status_code, call.reason)
print(call.text + "\n\n")

and got a successfull isochrone :

200
{"type":"FeatureCollection","bbox":[8.678141,49.333596,8.697155,49.358999],"features":[{"type":"Feature","properties":{"group_index":0,"value":600.0,"center":[8.6857601,49.3336218]},"geometry":{"coordinates":[[[8.678174,49.348252],[8.678248,49.347787],[8.679379,49.342681],[8.682421,49.338721],[8.685582,49.333596],[8.685938,49.333647],[8.689449,49.336444],[8.69447,49.337864],[8.694824,49.33793],[8.695739,49.340295],[8.696888,49.343613],[8.697155,49.345504],[8.697018,49.346416],[8.69575,49.349014],[8.695577,49.34933],[8.691819,49.354547],[8.690421,49.358081],[8.689238,49.358999],[8.689215,49.358997],[8.689048,49.358806],[8.688825,49.358232],[8.681205,49.35366],[8.68099,49.353371],[8.678141,49.34861],[8.678174,49.348252]]],"type":"Polygon"}}],"metadata":{"attribution":"openrouteservice.org, OpenStreetMap contributors","service":"isochrones","timestamp":1740152177491,"query":{"profile":"driving-car","profileName":"driving-car","locations":[[8.681495,8.686507]],"range":[600.0],"range_type":"time"},"engine":{"version":"9.1.0","build_date":"2025-01-29T12:32:30Z","graph_date":"2025-02-21T11:47:59Z"}}}

The only difference i can notice is that the latest docker image run with 9.1 and public API on 9.0 but have no clue on why I cant get any other location to build an isochrone on.

I suspected that snaping was not enabled in the default config but snap/enable is set to true in /ors/config/ors-config.yml (and maximum_snapping_radius to 400 (meters I assume).

Any pointer to help me fix this would be apreciated !

Thanks a lot !

Edit : Error with copy paste :

Here is the response I get for my point with public API:

200 OK
{"type":"FeatureCollection","bbox":[2.299829,48.824353,2.387304,48.883216],"features":[{"type":"Feature","properties":{"group_index":0,"value":600.0,"center":[2.345680148395939,48.853006410660555]},"geometry":{"coordinates":[[[2.299829,48.862728],[2.300658,48.860534],[2.306969,48.854497],[2.306915,48.846882],[2.306877,48.846695],[2.306892,48.845737],[2.307044,48.843881],[2.307902,48.842281],[2.314327,48.836869],[2.316958,48.835117],[2.324128,48.82984],[2.324751,48.828324],[2.325522,48.825846],[2.325693,48.825804],[2.334634,48.825683],[2.339793,48.826744],[2.345,48.826194],[2.345236,48.82614],[2.351112,48.825126],[2.351575,48.825031],[2.356708,48.824353],[2.357878,48.824373],[2.360601,48.824704],[2.36063,48.824718],[2.364093,48.829514],[2.370956,48.831863],[2.373822,48.831129],[2.380652,48.830665],[2.385057,48.829064],[2.387304,48.831877],[2.38713,48.832016],[2.383444,48.840108],[2.384902,48.845323],[2.385461,48.846227],[2.385543,48.846686],[2.386071,48.849553],[2.386107,48.849794],[2.384925,48.85187],[2.380728,48.857611],[2.375598,48.863086],[2.3719,48.867604],[2.368786,48.870407],[2.364317,48.878084],[2.364172,48.879412],[2.364096,48.880022],[2.363915,48.880755],[2.361233,48.882248],[2.358665,48.883205],[2.358619,48.883216],[2.352308,48.882395],[2.351759,48.882287],[2.34845,48.881283],[2.347583,48.880983],[2.339332,48.879173],[2.336659,48.878529],[2.329715,48.87602],[2.326913,48.875421],[2.322418,48.874371],[2.314247,48.871377],[2.313387,48.871361],[2.31093,48.871436],[2.308594,48.87136],[2.303242,48.866402],[2.30043,48.864127],[2.299851,48.862825],[2.299829,48.862728]]],"type":"Polygon"}}],"metadata":{"attribution":"openrouteservice.org | OpenStreetMap contributors","service":"isochrones","timestamp":1740247545397,"query":{"profile":"driving-car","profileName":"driving-car","locations":[[2.345688,48.853004]],"range":[600.0],"range_type":"time"},"engine":{"version":"9.0.0","build_date":"2025-01-27T14:56:02Z","graph_date":"2025-01-28T09:38:16Z"}}}

OK, I’m not too bright—I failed to meet some prerequisites when deploying with Docker.

For those who struggle with setting up ORS with Docker, this video was a huge help in understanding key concepts that went over my head while reading the documentation (but outdated refer to : Running with Docker | openrouteservice backend documentation after watching
:link: https://www.youtube.com/watch?v=VQXlbqKArFk

Key information for newbies like me: Unlike the public API, your location data is not included by default—you need to download a file containing your area’s data.
(This explains the error I got when trying to calculate an isochrone outside of Germany.)

3 Likes