{"info":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","description":"<html><head></head><body><p>Complete public developer API reference. Quick start remains a separate 16-request collection.</p>\n<p>Fork this collection; keep api_key and returned tokens local or in Postman Vault. base_url defaults to <a href=\"https://osrmroute.com\">https://osrmroute.com</a>. This reference includes billable calls and destructive management actions. Do not run the entire collection against production; send reviewed requests individually. Optional query fields are disabled initially.</p>\n<h3 id=\"plans-contract-snapshot-19-october-2026\">Plans (contract snapshot 19 October 2026)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Plan</th>\n<th>USD/month</th>\n<th>Daily credits</th>\n<th>Requests/min</th>\n<th>Route points</th>\n<th>Vehicles</th>\n<th>Isochrone minutes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Free</td>\n<td>0</td>\n<td>1000</td>\n<td>60</td>\n<td>5</td>\n<td>1</td>\n<td>0</td>\n</tr>\n<tr>\n<td>Starter</td>\n<td>65</td>\n<td>5000</td>\n<td>100</td>\n<td>30</td>\n<td>2</td>\n<td>15</td>\n</tr>\n<tr>\n<td>Pro</td>\n<td>189</td>\n<td>15000</td>\n<td>400</td>\n<td>80</td>\n<td>10</td>\n<td>20</td>\n</tr>\n<tr>\n<td>Business</td>\n<td>459</td>\n<td>50000</td>\n<td>1000</td>\n<td>200</td>\n<td>20</td>\n<td>30</td>\n</tr>\n<tr>\n<td>Pay as you go</td>\n<td>Custom / see pricing</td>\n<td>1000</td>\n<td>100</td>\n<td>30</td>\n<td>2</td>\n<td>15</td>\n</tr>\n<tr>\n<td>Enterprise</td>\n<td>Custom / see pricing</td>\n<td>Custom / see pricing</td>\n<td>Custom / see pricing</td>\n<td>Custom / see pricing</td>\n<td>Custom / see pricing</td>\n<td>Custom / see pricing</td>\n</tr>\n</tbody>\n</table>\n</div><p>Pay as you go: $1 = 1,000 credits; minimum top-up $10; free allowance then prepaid balance. Free is non-commercial testing. Actual account settings and <a href=\"https://osrmroute.com/pricing\">https://osrmroute.com/pricing</a> prevail. Business AI: 1,000 operations per billing month shared by AI Search and Studio; service activation required. Enterprise AI: custom agreement, not an automatic entitlement. Road-data allowance is separate from API credits.</p>\n<p>Coverage: all 45 OpenAPI operations, reverse/alternative variants, Studio actions, all 18 MCP tools and protocol discovery, mobile challenge/token, published map styles/tiles. Dashboard session APIs, admin routes, internal payment hub and signed private renderer URLs are not public developer APIs.</p>\n<p>Response examples are synthetic and sometimes abbreviated; not captured customer data or assertions of current source coverage. Device proofs cannot be simulated in Postman.</p>\n<p>Docs: <a href=\"https://osrmroute.com/docs\">https://osrmroute.com/docs</a> · Source: <a href=\"https://github.com/Mammadoff/osrmroute-examples\">https://github.com/Mammadoff/osrmroute-examples</a></p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"13914284","collectionId":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","publishedId":"2sBYHSxgDW","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"142338","highlight":"245BC1"},"publishDate":"2026-10-18T20:56:00.000Z"},"item":[{"name":"01 · Routing and optimization","item":[{"name":"Routing API","id":"3d3188c5-17a8-4cc0-a3c4-1a00cb43a102","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Routing API calculates routes on the road network between two or more points and returns geometry, distance, estimated duration and optional instructions. Driving coverage is global; walking and cycling use regional graphs. Response time depends on region, graph cache and request complexity. Test representative journeys for your application.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>profile</strong> (path, required): Transport mode profile. Supported values: driving (car), cycling (bike), walking (pedestrian). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>coordinates</strong> (path, required): Coordinates of the points. Format: lon,lat;lon,lat;lon,lat... (at least 2 points). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>overview</strong> (query, optional): Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>geometries</strong> (query, optional): Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>steps</strong> (query, optional): Whether step-by-step instructions are returned for each turn. Schema: <code>{\"type\": \"boolean\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","osrm","route","v1","driving","49.8516,40.3755;49.8378,40.3892"],"host":["https://osrmroute.com"],"query":[{"disabled":true,"description":{"content":"<p>Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"overview","value":"full"},{"disabled":true,"description":{"content":"<p>Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"geometries","value":"geojson"},{"disabled":true,"description":{"content":"<p>Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}</p>\n","type":"text/plain"},"key":"steps","value":"true"}],"variable":[]}},"response":[{"id":"dd762464-fd68-4bdc-bc88-cb0323c3ccc8","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","route","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"Ok\",\n  \"routes\": [\n    {\n      \"distance\": 3200,\n      \"duration\": 420,\n      \"geometry\": {\n        \"type\": \"LineString\",\n        \"coordinates\": [\n          [\n            49.8516,\n            40.3777\n          ],\n          [\n            49.86,\n            40.4\n          ]\n        ]\n      },\n      \"legs\": [\n        {\n          \"distance\": 3200,\n          \"duration\": 420,\n          \"steps\": []\n        }\n      ]\n    }\n  ],\n  \"waypoints\": [\n    {\n      \"name\": \"Example road\",\n      \"location\": [\n        49.8516,\n        40.3777\n      ],\n      \"distance\": 4.2\n    }\n  ]\n}"},{"id":"c6e69594-e20e-49c7-844e-0c7aebfe6286","name":"Synthetic · 400 · InvalidQuery","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","route","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}"},{"id":"7c33371b-cdd6-48df-948b-85fbf9beaf0c","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","route","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"2535a7da-7c4e-4027-83aa-1f61001145d2","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","route","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"af69bc50-7d0f-4d77-a890-7d7573894436","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","route","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"3256ef2e-d5d0-40aa-8b01-1520735bbee0","name":"Synthetic · 422 · ProfileNotAvailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","route","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}"},{"id":"1477ea3f-154a-472d-bcb6-038f24004ce2","name":"Synthetic · 422 · NoNearbyRoad","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","route","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}"},{"id":"918fbb49-ee12-48ae-b544-18c1ca8d2fbf","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","route","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"589a171c-8467-425e-b7b4-92bc4491ba8f","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","route","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"3d3188c5-17a8-4cc0-a3c4-1a00cb43a102"},{"name":"Route Optimization API","id":"4d307907-6715-49cd-a7c8-01a17b3844f5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"vehicles\": [\n    {\n      \"vehicle_id\": \"v1\",\n      \"start\": [\n        49.85,\n        40.37\n      ]\n    }\n  ],\n  \"services\": [\n    {\n      \"id\": 10,\n      \"location\": [\n        49.86,\n        40.4\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/vrp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 10 credits + 1 per stop. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Route Optimization API turns a fleet's toughest planning problems into efficient delivery plans. Give it a set of vehicles and stops and it solves the Vehicle Routing Problem (VRP) — assigning stops to vehicles and ordering them to minimise total drive time and cost. It handles capacity, time windows and multiple depots, so dispatchers stop planning routes by hand and couriers drive fewer kilometres.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>profile</code></td>\n<td>string</td>\n<td>no</td>\n<td>Shared driving/cycling/walking profile, including documented aliases. {\"default\": \"driving\"}</td>\n</tr>\n<tr>\n<td><code>services</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"maxItems\": 250}</td>\n</tr>\n<tr>\n<td><code>services[].id</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>services[].address</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>services[].location</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>services[].lat</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -90, \"maximum\": 90}</td>\n</tr>\n<tr>\n<td><code>services[].latitude</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -90, \"maximum\": 90}</td>\n</tr>\n<tr>\n<td><code>services[].lon</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>services[].lng</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>services[].longitude</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>services[].duration</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 2147483647}</td>\n</tr>\n<tr>\n<td><code>services[].service</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 2147483647}</td>\n</tr>\n<tr>\n<td><code>services[].time_windows</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"minItems\": 1, \"maxItems\": 8}</td>\n</tr>\n<tr>\n<td><code>services[].size</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"minItems\": 1, \"maxItems\": 8}</td>\n</tr>\n<tr>\n<td><code>services[].delivery</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"minItems\": 1, \"maxItems\": 8}</td>\n</tr>\n<tr>\n<td><code>services[].pickup</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"minItems\": 1, \"maxItems\": 8}</td>\n</tr>\n<tr>\n<td><code>services[].skills</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"maxItems\": 64}</td>\n</tr>\n<tr>\n<td><code>shipments</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"maxItems\": 125}</td>\n</tr>\n<tr>\n<td><code>shipments[].pickup</code></td>\n<td>object</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.id</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.address</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.location</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.lat</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -90, \"maximum\": 90}</td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.latitude</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -90, \"maximum\": 90}</td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.lon</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.lng</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.longitude</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.duration</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 2147483647}</td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.service</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 2147483647}</td>\n</tr>\n<tr>\n<td><code>shipments[].pickup.time_windows</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"minItems\": 1, \"maxItems\": 8}</td>\n</tr>\n<tr>\n<td><code>shipments[].delivery</code></td>\n<td>object</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.id</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.address</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.location</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.lat</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -90, \"maximum\": 90}</td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.latitude</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -90, \"maximum\": 90}</td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.lon</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.lng</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.longitude</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.duration</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 2147483647}</td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.service</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 2147483647}</td>\n</tr>\n<tr>\n<td><code>shipments[].delivery.time_windows</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"minItems\": 1, \"maxItems\": 8}</td>\n</tr>\n<tr>\n<td><code>shipments[].amount</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"minItems\": 1, \"maxItems\": 8}</td>\n</tr>\n<tr>\n<td><code>shipments[].skills</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"maxItems\": 64}</td>\n</tr>\n<tr>\n<td><code>vehicles</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"minItems\": 1, \"maxItems\": 100}</td>\n</tr>\n<tr>\n<td><code>vehicles[].id</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>vehicles[].vehicle_id</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>vehicles[].start</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>vehicles[].start_address</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>vehicles[].address</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>vehicles[].end</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>vehicles[].end_address</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>vehicles[].return_to_depot</code></td>\n<td>boolean</td>\n<td>no</td>\n<td>{\"default\": true}</td>\n</tr>\n<tr>\n<td><code>vehicles[].capacity</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"minItems\": 1, \"maxItems\": 8}</td>\n</tr>\n<tr>\n<td><code>vehicles[].skills</code></td>\n<td>array</td>\n<td>no</td>\n<td>{\"maxItems\": 64}</td>\n</tr>\n<tr>\n<td><code>vehicles[].time_window</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>vehicles[].earliest_start</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 2147483647}</td>\n</tr>\n<tr>\n<td><code>vehicles[].latest_end</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 2147483647}</td>\n</tr>\n<tr>\n<td><code>vehicles[].profile</code></td>\n<td>string</td>\n<td>no</td>\n<td>If present, must match the shared profile.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"anyOf\": [\n    {\n      \"required\": [\n        \"services\"\n      ],\n      \"properties\": {\n        \"services\": {\n          \"minItems\": 1\n        }\n      }\n    },\n    {\n      \"required\": [\n        \"shipments\"\n      ],\n      \"properties\": {\n        \"shipments\": {\n          \"minItems\": 1\n        }\n      }\n    }\n  ],\n  \"properties\": {\n    \"profile\": {\n      \"type\": \"string\",\n      \"default\": \"driving\",\n      \"description\": \"Shared driving/cycling/walking profile, including documented aliases.\"\n    },\n    \"services\": {\n      \"type\": \"array\",\n      \"maxItems\": 250,\n      \"items\": {\n        \"type\": \"object\",\n        \"additionalProperties\": false,\n        \"properties\": {\n          \"id\": {\n            \"oneOf\": [\n              {\n                \"type\": \"string\",\n                \"minLength\": 1,\n                \"maxLength\": 100\n              },\n              {\n                \"type\": \"integer\",\n                \"minimum\": 0,\n                \"maximum\": 9007199254740991\n              }\n            ]\n          },\n          \"address\": {\n            \"oneOf\": [\n              {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"description\": \"[longitude, latitude]\"\n              },\n              {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"lat\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"latitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"lon\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"lng\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"longitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  }\n                },\n                \"allOf\": [\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lat\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"latitude\"\n                        ]\n                      }\n                    ]\n                  },\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lon\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"lng\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"longitude\"\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"location\": {\n            \"oneOf\": [\n              {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"description\": \"[longitude, latitude]\"\n              },\n              {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"lat\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"latitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"lon\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"lng\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"longitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  }\n                },\n                \"allOf\": [\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lat\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"latitude\"\n                        ]\n                      }\n                    ]\n                  },\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lon\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"lng\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"longitude\"\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"lat\": {\n            \"type\": \"number\",\n            \"minimum\": -90,\n            \"maximum\": 90\n          },\n          \"latitude\": {\n            \"type\": \"number\",\n            \"minimum\": -90,\n            \"maximum\": 90\n          },\n          \"lon\": {\n            \"type\": \"number\",\n            \"minimum\": -180,\n            \"maximum\": 180\n          },\n          \"lng\": {\n            \"type\": \"number\",\n            \"minimum\": -180,\n            \"maximum\": 180\n          },\n          \"longitude\": {\n            \"type\": \"number\",\n            \"minimum\": -180,\n            \"maximum\": 180\n          },\n          \"duration\": {\n            \"type\": \"integer\",\n            \"minimum\": 0,\n            \"maximum\": 2147483647\n          },\n          \"service\": {\n            \"type\": \"integer\",\n            \"minimum\": 0,\n            \"maximum\": 2147483647\n          },\n          \"time_windows\": {\n            \"type\": \"array\",\n            \"minItems\": 1,\n            \"maxItems\": 8,\n            \"items\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"integer\",\n                    \"minimum\": 0,\n                    \"maximum\": 2147483647\n                  }\n                },\n                {\n                  \"type\": \"object\",\n                  \"additionalProperties\": false,\n                  \"required\": [\n                    \"earliest\",\n                    \"latest\"\n                  ],\n                  \"properties\": {\n                    \"earliest\": {\n                      \"type\": \"integer\",\n                      \"minimum\": 0,\n                      \"maximum\": 2147483647\n                    },\n                    \"latest\": {\n                      \"type\": \"integer\",\n                      \"minimum\": 0,\n                      \"maximum\": 2147483647\n                    }\n                  }\n                }\n              ]\n            }\n          },\n          \"size\": {\n            \"type\": \"array\",\n            \"minItems\": 1,\n            \"maxItems\": 8,\n            \"items\": {\n              \"type\": \"integer\",\n              \"minimum\": 0,\n              \"maximum\": 2147483647\n            }\n          },\n          \"delivery\": {\n            \"type\": \"array\",\n            \"minItems\": 1,\n            \"maxItems\": 8,\n            \"items\": {\n              \"type\": \"integer\",\n              \"minimum\": 0,\n              \"maximum\": 2147483647\n            }\n          },\n          \"pickup\": {\n            \"type\": \"array\",\n            \"minItems\": 1,\n            \"maxItems\": 8,\n            \"items\": {\n              \"type\": \"integer\",\n              \"minimum\": 0,\n              \"maximum\": 2147483647\n            }\n          },\n          \"skills\": {\n            \"type\": \"array\",\n            \"maxItems\": 64,\n            \"items\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"string\",\n                  \"minLength\": 1,\n                  \"maxLength\": 100\n                },\n                {\n                  \"type\": \"integer\",\n                  \"minimum\": 0,\n                  \"maximum\": 9007199254740991\n                }\n              ]\n            }\n          }\n        },\n        \"anyOf\": [\n          {\n            \"required\": [\n              \"address\"\n            ]\n          },\n          {\n            \"required\": [\n              \"location\"\n            ]\n          },\n          {\n            \"required\": [\n              \"lat\"\n            ]\n          },\n          {\n            \"required\": [\n              \"latitude\"\n            ]\n          }\n        ]\n      }\n    },\n    \"shipments\": {\n      \"type\": \"array\",\n      \"maxItems\": 125,\n      \"items\": {\n        \"type\": \"object\",\n        \"additionalProperties\": false,\n        \"required\": [\n          \"pickup\",\n          \"delivery\"\n        ],\n        \"properties\": {\n          \"pickup\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"id\": {\n                \"oneOf\": [\n                  {\n                    \"type\": \"string\",\n                    \"minLength\": 1,\n                    \"maxLength\": 100\n                  },\n                  {\n                    \"type\": \"integer\",\n                    \"minimum\": 0,\n                    \"maximum\": 9007199254740991\n                  }\n                ]\n              },\n              \"address\": {\n                \"oneOf\": [\n                  {\n                    \"type\": \"array\",\n                    \"minItems\": 2,\n                    \"maxItems\": 2,\n                    \"items\": {\n                      \"type\": \"number\"\n                    },\n                    \"description\": \"[longitude, latitude]\"\n                  },\n                  {\n                    \"type\": \"object\",\n                    \"properties\": {\n                      \"lat\": {\n                        \"type\": \"number\",\n                        \"minimum\": -90,\n                        \"maximum\": 90\n                      },\n                      \"latitude\": {\n                        \"type\": \"number\",\n                        \"minimum\": -90,\n                        \"maximum\": 90\n                      },\n                      \"lon\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      },\n                      \"lng\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      },\n                      \"longitude\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      }\n                    },\n                    \"allOf\": [\n                      {\n                        \"anyOf\": [\n                          {\n                            \"required\": [\n                              \"lat\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"latitude\"\n                            ]\n                          }\n                        ]\n                      },\n                      {\n                        \"anyOf\": [\n                          {\n                            \"required\": [\n                              \"lon\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"lng\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"longitude\"\n                            ]\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              },\n              \"location\": {\n                \"oneOf\": [\n                  {\n                    \"type\": \"array\",\n                    \"minItems\": 2,\n                    \"maxItems\": 2,\n                    \"items\": {\n                      \"type\": \"number\"\n                    },\n                    \"description\": \"[longitude, latitude]\"\n                  },\n                  {\n                    \"type\": \"object\",\n                    \"properties\": {\n                      \"lat\": {\n                        \"type\": \"number\",\n                        \"minimum\": -90,\n                        \"maximum\": 90\n                      },\n                      \"latitude\": {\n                        \"type\": \"number\",\n                        \"minimum\": -90,\n                        \"maximum\": 90\n                      },\n                      \"lon\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      },\n                      \"lng\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      },\n                      \"longitude\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      }\n                    },\n                    \"allOf\": [\n                      {\n                        \"anyOf\": [\n                          {\n                            \"required\": [\n                              \"lat\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"latitude\"\n                            ]\n                          }\n                        ]\n                      },\n                      {\n                        \"anyOf\": [\n                          {\n                            \"required\": [\n                              \"lon\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"lng\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"longitude\"\n                            ]\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              },\n              \"lat\": {\n                \"type\": \"number\",\n                \"minimum\": -90,\n                \"maximum\": 90\n              },\n              \"latitude\": {\n                \"type\": \"number\",\n                \"minimum\": -90,\n                \"maximum\": 90\n              },\n              \"lon\": {\n                \"type\": \"number\",\n                \"minimum\": -180,\n                \"maximum\": 180\n              },\n              \"lng\": {\n                \"type\": \"number\",\n                \"minimum\": -180,\n                \"maximum\": 180\n              },\n              \"longitude\": {\n                \"type\": \"number\",\n                \"minimum\": -180,\n                \"maximum\": 180\n              },\n              \"duration\": {\n                \"type\": \"integer\",\n                \"minimum\": 0,\n                \"maximum\": 2147483647\n              },\n              \"service\": {\n                \"type\": \"integer\",\n                \"minimum\": 0,\n                \"maximum\": 2147483647\n              },\n              \"time_windows\": {\n                \"type\": \"array\",\n                \"minItems\": 1,\n                \"maxItems\": 8,\n                \"items\": {\n                  \"oneOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"minItems\": 2,\n                      \"maxItems\": 2,\n                      \"items\": {\n                        \"type\": \"integer\",\n                        \"minimum\": 0,\n                        \"maximum\": 2147483647\n                      }\n                    },\n                    {\n                      \"type\": \"object\",\n                      \"additionalProperties\": false,\n                      \"required\": [\n                        \"earliest\",\n                        \"latest\"\n                      ],\n                      \"properties\": {\n                        \"earliest\": {\n                          \"type\": \"integer\",\n                          \"minimum\": 0,\n                          \"maximum\": 2147483647\n                        },\n                        \"latest\": {\n                          \"type\": \"integer\",\n                          \"minimum\": 0,\n                          \"maximum\": 2147483647\n                        }\n                      }\n                    }\n                  ]\n                }\n              }\n            },\n            \"anyOf\": [\n              {\n                \"required\": [\n                  \"address\"\n                ]\n              },\n              {\n                \"required\": [\n                  \"location\"\n                ]\n              },\n              {\n                \"required\": [\n                  \"lat\"\n                ]\n              },\n              {\n                \"required\": [\n                  \"latitude\"\n                ]\n              }\n            ]\n          },\n          \"delivery\": {\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"id\": {\n                \"oneOf\": [\n                  {\n                    \"type\": \"string\",\n                    \"minLength\": 1,\n                    \"maxLength\": 100\n                  },\n                  {\n                    \"type\": \"integer\",\n                    \"minimum\": 0,\n                    \"maximum\": 9007199254740991\n                  }\n                ]\n              },\n              \"address\": {\n                \"oneOf\": [\n                  {\n                    \"type\": \"array\",\n                    \"minItems\": 2,\n                    \"maxItems\": 2,\n                    \"items\": {\n                      \"type\": \"number\"\n                    },\n                    \"description\": \"[longitude, latitude]\"\n                  },\n                  {\n                    \"type\": \"object\",\n                    \"properties\": {\n                      \"lat\": {\n                        \"type\": \"number\",\n                        \"minimum\": -90,\n                        \"maximum\": 90\n                      },\n                      \"latitude\": {\n                        \"type\": \"number\",\n                        \"minimum\": -90,\n                        \"maximum\": 90\n                      },\n                      \"lon\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      },\n                      \"lng\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      },\n                      \"longitude\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      }\n                    },\n                    \"allOf\": [\n                      {\n                        \"anyOf\": [\n                          {\n                            \"required\": [\n                              \"lat\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"latitude\"\n                            ]\n                          }\n                        ]\n                      },\n                      {\n                        \"anyOf\": [\n                          {\n                            \"required\": [\n                              \"lon\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"lng\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"longitude\"\n                            ]\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              },\n              \"location\": {\n                \"oneOf\": [\n                  {\n                    \"type\": \"array\",\n                    \"minItems\": 2,\n                    \"maxItems\": 2,\n                    \"items\": {\n                      \"type\": \"number\"\n                    },\n                    \"description\": \"[longitude, latitude]\"\n                  },\n                  {\n                    \"type\": \"object\",\n                    \"properties\": {\n                      \"lat\": {\n                        \"type\": \"number\",\n                        \"minimum\": -90,\n                        \"maximum\": 90\n                      },\n                      \"latitude\": {\n                        \"type\": \"number\",\n                        \"minimum\": -90,\n                        \"maximum\": 90\n                      },\n                      \"lon\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      },\n                      \"lng\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      },\n                      \"longitude\": {\n                        \"type\": \"number\",\n                        \"minimum\": -180,\n                        \"maximum\": 180\n                      }\n                    },\n                    \"allOf\": [\n                      {\n                        \"anyOf\": [\n                          {\n                            \"required\": [\n                              \"lat\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"latitude\"\n                            ]\n                          }\n                        ]\n                      },\n                      {\n                        \"anyOf\": [\n                          {\n                            \"required\": [\n                              \"lon\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"lng\"\n                            ]\n                          },\n                          {\n                            \"required\": [\n                              \"longitude\"\n                            ]\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              },\n              \"lat\": {\n                \"type\": \"number\",\n                \"minimum\": -90,\n                \"maximum\": 90\n              },\n              \"latitude\": {\n                \"type\": \"number\",\n                \"minimum\": -90,\n                \"maximum\": 90\n              },\n              \"lon\": {\n                \"type\": \"number\",\n                \"minimum\": -180,\n                \"maximum\": 180\n              },\n              \"lng\": {\n                \"type\": \"number\",\n                \"minimum\": -180,\n                \"maximum\": 180\n              },\n              \"longitude\": {\n                \"type\": \"number\",\n                \"minimum\": -180,\n                \"maximum\": 180\n              },\n              \"duration\": {\n                \"type\": \"integer\",\n                \"minimum\": 0,\n                \"maximum\": 2147483647\n              },\n              \"service\": {\n                \"type\": \"integer\",\n                \"minimum\": 0,\n                \"maximum\": 2147483647\n              },\n              \"time_windows\": {\n                \"type\": \"array\",\n                \"minItems\": 1,\n                \"maxItems\": 8,\n                \"items\": {\n                  \"oneOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"minItems\": 2,\n                      \"maxItems\": 2,\n                      \"items\": {\n                        \"type\": \"integer\",\n                        \"minimum\": 0,\n                        \"maximum\": 2147483647\n                      }\n                    },\n                    {\n                      \"type\": \"object\",\n                      \"additionalProperties\": false,\n                      \"required\": [\n                        \"earliest\",\n                        \"latest\"\n                      ],\n                      \"properties\": {\n                        \"earliest\": {\n                          \"type\": \"integer\",\n                          \"minimum\": 0,\n                          \"maximum\": 2147483647\n                        },\n                        \"latest\": {\n                          \"type\": \"integer\",\n                          \"minimum\": 0,\n                          \"maximum\": 2147483647\n                        }\n                      }\n                    }\n                  ]\n                }\n              }\n            },\n            \"anyOf\": [\n              {\n                \"required\": [\n                  \"address\"\n                ]\n              },\n              {\n                \"required\": [\n                  \"location\"\n                ]\n              },\n              {\n                \"required\": [\n                  \"lat\"\n                ]\n              },\n              {\n                \"required\": [\n                  \"latitude\"\n                ]\n              }\n            ]\n          },\n          \"amount\": {\n            \"type\": \"array\",\n            \"minItems\": 1,\n            \"maxItems\": 8,\n            \"items\": {\n              \"type\": \"integer\",\n              \"minimum\": 0,\n              \"maximum\": 2147483647\n            }\n          },\n          \"skills\": {\n            \"type\": \"array\",\n            \"maxItems\": 64,\n            \"items\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"string\",\n                  \"minLength\": 1,\n                  \"maxLength\": 100\n                },\n                {\n                  \"type\": \"integer\",\n                  \"minimum\": 0,\n                  \"maximum\": 9007199254740991\n                }\n              ]\n            }\n          }\n        }\n      }\n    },\n    \"vehicles\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"maxItems\": 100,\n      \"items\": {\n        \"type\": \"object\",\n        \"additionalProperties\": false,\n        \"properties\": {\n          \"id\": {\n            \"oneOf\": [\n              {\n                \"type\": \"string\",\n                \"minLength\": 1,\n                \"maxLength\": 100\n              },\n              {\n                \"type\": \"integer\",\n                \"minimum\": 0,\n                \"maximum\": 9007199254740991\n              }\n            ]\n          },\n          \"vehicle_id\": {\n            \"oneOf\": [\n              {\n                \"type\": \"string\",\n                \"minLength\": 1,\n                \"maxLength\": 100\n              },\n              {\n                \"type\": \"integer\",\n                \"minimum\": 0,\n                \"maximum\": 9007199254740991\n              }\n            ]\n          },\n          \"start\": {\n            \"oneOf\": [\n              {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"description\": \"[longitude, latitude]\"\n              },\n              {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"lat\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"latitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"lon\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"lng\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"longitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  }\n                },\n                \"allOf\": [\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lat\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"latitude\"\n                        ]\n                      }\n                    ]\n                  },\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lon\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"lng\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"longitude\"\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"start_address\": {\n            \"oneOf\": [\n              {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"description\": \"[longitude, latitude]\"\n              },\n              {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"lat\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"latitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"lon\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"lng\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"longitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  }\n                },\n                \"allOf\": [\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lat\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"latitude\"\n                        ]\n                      }\n                    ]\n                  },\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lon\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"lng\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"longitude\"\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"address\": {\n            \"oneOf\": [\n              {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"description\": \"[longitude, latitude]\"\n              },\n              {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"lat\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"latitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"lon\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"lng\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"longitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  }\n                },\n                \"allOf\": [\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lat\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"latitude\"\n                        ]\n                      }\n                    ]\n                  },\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lon\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"lng\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"longitude\"\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"end\": {\n            \"oneOf\": [\n              {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"description\": \"[longitude, latitude]\"\n              },\n              {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"lat\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"latitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"lon\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"lng\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"longitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  }\n                },\n                \"allOf\": [\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lat\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"latitude\"\n                        ]\n                      }\n                    ]\n                  },\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lon\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"lng\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"longitude\"\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"end_address\": {\n            \"oneOf\": [\n              {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"description\": \"[longitude, latitude]\"\n              },\n              {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"lat\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"latitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -90,\n                    \"maximum\": 90\n                  },\n                  \"lon\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"lng\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  },\n                  \"longitude\": {\n                    \"type\": \"number\",\n                    \"minimum\": -180,\n                    \"maximum\": 180\n                  }\n                },\n                \"allOf\": [\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lat\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"latitude\"\n                        ]\n                      }\n                    ]\n                  },\n                  {\n                    \"anyOf\": [\n                      {\n                        \"required\": [\n                          \"lon\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"lng\"\n                        ]\n                      },\n                      {\n                        \"required\": [\n                          \"longitude\"\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"return_to_depot\": {\n            \"type\": \"boolean\",\n            \"default\": true\n          },\n          \"capacity\": {\n            \"type\": \"array\",\n            \"minItems\": 1,\n            \"maxItems\": 8,\n            \"items\": {\n              \"type\": \"integer\",\n              \"minimum\": 0,\n              \"maximum\": 2147483647\n            }\n          },\n          \"skills\": {\n            \"type\": \"array\",\n            \"maxItems\": 64,\n            \"items\": {\n              \"oneOf\": [\n                {\n                  \"type\": \"string\",\n                  \"minLength\": 1,\n                  \"maxLength\": 100\n                },\n                {\n                  \"type\": \"integer\",\n                  \"minimum\": 0,\n                  \"maximum\": 9007199254740991\n                }\n              ]\n            }\n          },\n          \"time_window\": {\n            \"oneOf\": [\n              {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"integer\",\n                  \"minimum\": 0,\n                  \"maximum\": 2147483647\n                }\n              },\n              {\n                \"type\": \"object\",\n                \"additionalProperties\": false,\n                \"required\": [\n                  \"earliest\",\n                  \"latest\"\n                ],\n                \"properties\": {\n                  \"earliest\": {\n                    \"type\": \"integer\",\n                    \"minimum\": 0,\n                    \"maximum\": 2147483647\n                  },\n                  \"latest\": {\n                    \"type\": \"integer\",\n                    \"minimum\": 0,\n                    \"maximum\": 2147483647\n                  }\n                }\n              }\n            ]\n          },\n          \"earliest_start\": {\n            \"type\": \"integer\",\n            \"minimum\": 0,\n            \"maximum\": 2147483647\n          },\n          \"latest_end\": {\n            \"type\": \"integer\",\n            \"minimum\": 0,\n            \"maximum\": 2147483647\n          },\n          \"profile\": {\n            \"type\": \"string\",\n            \"description\": \"If present, must match the shared profile.\"\n          }\n        }\n      }\n    }\n  }\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","vrp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"24eedcc1-4191-46b5-87f0-06d28fae0135","name":"Synthetic · 200 · success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"vehicles\": [\n    {\n      \"vehicle_id\": \"v1\",\n      \"start\": [\n        49.85,\n        40.37\n      ]\n    }\n  ],\n  \"services\": [\n    {\n      \"id\": 10,\n      \"location\": [\n        49.86,\n        40.4\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/vrp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"finished\",\n  \"job_id\": \"opt-1234567890\",\n  \"processing_time\": 0,\n  \"solution\": {\n    \"unassigned\": [],\n    \"quality\": {\n      \"solver\": \"vroom\",\n      \"version\": \"1.15.0\",\n      \"constraints_verified\": true,\n      \"optimality_proven\": false\n    },\n    \"costs\": 420,\n    \"distance\": 3200,\n    \"time\": 420,\n    \"no_vehicles\": 1,\n    \"no_unassigned\": 0,\n    \"routes\": [\n      {\n        \"vehicle_id\": \"v1\",\n        \"distance\": 3200,\n        \"transport_time\": 420,\n        \"activities\": [\n          {\n            \"type\": \"start\",\n            \"location_id\": \"depot\",\n            \"end_time\": 0\n          },\n          {\n            \"type\": \"service\",\n            \"id\": 10,\n            \"location_id\": \"stop_1\",\n            \"arr_time\": 200,\n            \"end_time\": 200\n          },\n          {\n            \"type\": \"end\",\n            \"location_id\": \"depot\",\n            \"arr_time\": 420\n          }\n        ]\n      }\n    ]\n  }\n}"},{"id":"0fe09ef5-a31c-4a03-a799-b9b4987e149c","name":"Synthetic · 400 · InvalidOptimizationInput","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"vehicles\": [\n    {\n      \"vehicle_id\": \"v1\",\n      \"start\": [\n        49.85,\n        40.37\n      ]\n    }\n  ],\n  \"services\": [\n    {\n      \"id\": 10,\n      \"location\": [\n        49.86,\n        40.4\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/vrp"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"InvalidOptimizationInput\",\n  \"error\": \"At least one service with valid coordinates is required.\"\n}"},{"id":"8b0ce8b4-944c-4223-9d9f-44d9f9ae265f","name":"Synthetic · 401 · auth","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"vehicles\": [\n    {\n      \"vehicle_id\": \"v1\",\n      \"start\": [\n        49.85,\n        40.37\n      ]\n    }\n  ],\n  \"services\": [\n    {\n      \"id\": 10,\n      \"location\": [\n        49.86,\n        40.4\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/vrp"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"6a861fc3-51c5-4afa-9337-8da9eb920f88","name":"Synthetic · 402 · balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"vehicles\": [\n    {\n      \"vehicle_id\": \"v1\",\n      \"start\": [\n        49.85,\n        40.37\n      ]\n    }\n  ],\n  \"services\": [\n    {\n      \"id\": 10,\n      \"location\": [\n        49.86,\n        40.4\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/vrp"},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"f42cae0e-b232-4d77-b6e1-5aaf915b3221","name":"Synthetic · 403 · plan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"vehicles\": [\n    {\n      \"vehicle_id\": \"v1\",\n      \"start\": [\n        49.85,\n        40.37\n      ]\n    }\n  ],\n  \"services\": [\n    {\n      \"id\": 10,\n      \"location\": [\n        49.86,\n        40.4\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/vrp"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Your plan allows up to 1 vehicles per request. Upgrade your plan for more.\"\n}"},{"id":"097d9f26-d071-4b13-b5b9-134b1f491589","name":"Synthetic · 422 · NoNearbyRoad","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"vehicles\": [\n    {\n      \"vehicle_id\": \"v1\",\n      \"start\": [\n        49.85,\n        40.37\n      ]\n    }\n  ],\n  \"services\": [\n    {\n      \"id\": 10,\n      \"location\": [\n        49.86,\n        40.4\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/vrp"},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}"},{"id":"d98e194c-f746-4df8-ac98-3db6362acaf8","name":"Synthetic · 429 · rate","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"vehicles\": [\n    {\n      \"vehicle_id\": \"v1\",\n      \"start\": [\n        49.85,\n        40.37\n      ]\n    }\n  ],\n  \"services\": [\n    {\n      \"id\": 10,\n      \"location\": [\n        49.86,\n        40.4\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/vrp"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"3e3fed46-f30d-44e1-80e7-8bf90d3a15f5","name":"Synthetic · 500 · upstream","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"vehicles\": [\n    {\n      \"vehicle_id\": \"v1\",\n      \"start\": [\n        49.85,\n        40.37\n      ]\n    }\n  ],\n  \"services\": [\n    {\n      \"id\": 10,\n      \"location\": [\n        49.86,\n        40.4\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/vrp"},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"4d307907-6715-49cd-a7c8-01a17b3844f5"},{"name":"Matrix API","id":"9c040f78-8a65-4ea3-8e3b-b1f3c16dffa3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit / 10 cells. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Matrix API calculates travel times and distances between origins and destinations in one request. It supports optimization, dispatch and driver selection. Limits depend on your plan; processing time varies by region, graph cache and matrix size. Validate your expected workload before production.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>profile</strong> (path, required): Transport profile (driving, cycling, walking). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>coordinates</strong> (path, required): Matrix points. Format: lon,lat;lon,lat;lon,lat... Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>annotations</strong> (query, optional): Data to compute: duration (time), distance, or both. Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","osrm","table","v1","driving","49.8516,40.3755;49.8378,40.3892"],"host":["https://osrmroute.com"],"query":[{"disabled":true,"description":{"content":"<p>Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"annotations","value":"duration"}],"variable":[]}},"response":[{"id":"ab176104-b05e-4e29-a89c-c3217eee3ff3","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","table","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"annotations","value":"duration","description":"Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"Ok\",\n  \"durations\": [\n    [\n      0,\n      420\n    ],\n    [\n      430,\n      0\n    ]\n  ],\n  \"distances\": [\n    [\n      0,\n      3200\n    ],\n    [\n      3300,\n      0\n    ]\n  ],\n  \"sources\": [\n    {\n      \"name\": \"Example road\",\n      \"location\": [\n        49.8516,\n        40.3777\n      ],\n      \"distance\": 4.2\n    },\n    {\n      \"name\": \"Second road\",\n      \"location\": [\n        49.86,\n        40.4\n      ],\n      \"distance\": 3\n    }\n  ],\n  \"destinations\": [\n    {\n      \"name\": \"Example road\",\n      \"location\": [\n        49.8516,\n        40.3777\n      ],\n      \"distance\": 4.2\n    },\n    {\n      \"name\": \"Second road\",\n      \"location\": [\n        49.86,\n        40.4\n      ],\n      \"distance\": 3\n    }\n  ]\n}"},{"id":"44348b00-0ea8-4241-8392-13eaba0a5a30","name":"Synthetic · 400 · InvalidQuery","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","table","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"annotations","value":"duration","description":"Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}"},{"id":"e9a99022-2cdd-492e-ac63-3208625f63d8","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","table","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"annotations","value":"duration","description":"Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"659ce9eb-35e0-4bb9-9917-4ed4fb9e3e8b","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","table","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"annotations","value":"duration","description":"Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"986aadfe-f166-4617-a99c-409df4ce596c","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","table","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"annotations","value":"duration","description":"Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"133c4613-8718-401e-9eda-a16f3799ba7b","name":"Synthetic · 422 · ProfileNotAvailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","table","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"annotations","value":"duration","description":"Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}"},{"id":"bef28380-1f3d-4a0f-81dd-6e949651f798","name":"Synthetic · 422 · UnreachablePoints","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","table","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"annotations","value":"duration","description":"Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"UnreachablePoints\",\n  \"error\": \"Some locations are disconnected in this road network.\"\n}"},{"id":"2fc5fbdc-33b3-4c80-be1f-3a805f1d2739","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","table","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"annotations","value":"duration","description":"Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"8c747ddb-d898-4057-ab8e-1f2bc4f2f53c","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","table","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"annotations","value":"duration","description":"Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"9c040f78-8a65-4ea3-8e3b-b1f3c16dffa3"},{"name":"Isochrones API","id":"aad59ac3-b093-4e78-a6b2-09e3d1c1fa24","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/isochrone?point=40.3755,49.8516","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Starter / Pay as you go: up to 15 minutes; Pro: 20; Business: 30; Enterprise: configured limits. Free has no isochrone allowance. 5 credits per successful request.</p>\n<p>The Isochrone API draws reachability polygons: the area you can reach from a point within a given time budget. Feed it a location and a time limit and it returns a polygon (a coverage area) tailored to the transport mode. Use it for site selection, delivery-zone planning, catchment analysis and 'what's within 15 minutes' features.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, required): Center point. Format: lat,lon. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>time_limit</strong> (query, optional): Travel time limit (in seconds). Schema: <code>{\"type\": \"integer\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","isochrone"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Center point. Format: lat,lon. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"point","value":"40.3755,49.8516"},{"disabled":true,"description":{"content":"<p>Travel time limit (in seconds). Schema: {\"type\": \"integer\"}</p>\n","type":"text/plain"},"key":"time_limit","value":"600"}],"variable":[]}},"response":[{"id":"6e702855-1a8a-4a43-98b0-088ed4863b00","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/isochrone?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","isochrone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"},{"key":"time_limit","value":"600","description":"Travel time limit (in seconds). Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"quality\": {\n    \"status\": \"estimated\",\n    \"method\": \"sampled_osrm\",\n    \"sampled_points\": 80,\n    \"reachable_points\": 48,\n    \"covered_bearings\": 16,\n    \"total_bearings\": 16,\n    \"unknown_points\": 0\n  },\n  \"polygons\": [\n    {\n      \"type\": \"Feature\",\n      \"properties\": {\n        \"bucket\": 0,\n        \"time_limit\": 600\n      },\n      \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n          [\n            [\n              49.84,\n              40.37\n            ],\n            [\n              49.87,\n              40.37\n            ],\n            [\n              49.87,\n              40.4\n            ],\n            [\n              49.84,\n              40.37\n            ]\n          ]\n        ]\n      }\n    }\n  ]\n}"},{"id":"c7ccd98a-bbb4-4873-befc-d7440a6fc6fb","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/isochrone?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","isochrone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"},{"key":"time_limit","value":"600","description":"Travel time limit (in seconds). Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"point parameter is required\"\n}"},{"id":"b292fb4a-64fc-4b17-ac41-3af1aba04894","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/isochrone?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","isochrone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"},{"key":"time_limit","value":"600","description":"Travel time limit (in seconds). Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"4aad82fb-c8ea-4362-b2aa-14a3a51e19cf","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/isochrone?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","isochrone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"},{"key":"time_limit","value":"600","description":"Travel time limit (in seconds). Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"d1ca52c9-4927-4eca-8c30-805de1c81eb9","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/isochrone?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","isochrone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"},{"key":"time_limit","value":"600","description":"Travel time limit (in seconds). Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"The Isochrone API is not available on your plan. Upgrade your plan to use it.\"\n}"},{"id":"d8b5edd7-33b2-4ed5-aee0-bcf5e5bddfc7","name":"Synthetic · 422 · ProfileNotAvailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/isochrone?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","isochrone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"},{"key":"time_limit","value":"600","description":"Travel time limit (in seconds). Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}"},{"id":"47beb760-5eb7-4054-b6cd-551469d75895","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/isochrone?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","isochrone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"},{"key":"time_limit","value":"600","description":"Travel time limit (in seconds). Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"7182f9b0-f822-4f25-81d4-800c7176771f","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/isochrone?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","isochrone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"},{"key":"time_limit","value":"600","description":"Travel time limit (in seconds). Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"aad59ac3-b093-4e78-a6b2-09e3d1c1fa24"},{"name":"Map Matching API","id":"3e1fcf2d-e491-4ed9-9a44-3d6d27bc65e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Map Matching API snaps noisy GPS traces to the real road network. Raw tracking coordinates drift off the road; feed the sequence to this endpoint and it returns a clean, road-aligned path with the roads actually travelled. Essential for fleet telematics, trip reconstruction and turning scattered pings into accurate, logical route data.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>profile</strong> (path, required): Transport profile. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>coordinates</strong> (path, required): The sequence of GPS coordinates to snap (lon,lat;lon,lat...) Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>geometries</strong> (query, optional): Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>overview</strong> (query, optional): Geometry precision of the matched route. Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","osrm","match","v1","driving","49.8516,40.3755;49.8378,40.3892"],"host":["https://osrmroute.com"],"query":[{"disabled":true,"description":{"content":"<p>Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"geometries","value":"geojson"},{"disabled":true,"description":{"content":"<p>Geometry precision of the matched route. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"overview","value":"full"}],"variable":[]}},"response":[{"id":"73878d17-7185-4816-948c-b5e7e81dd255","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","match","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"overview","value":"full","description":"Geometry precision of the matched route. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"Ok\",\n  \"matchings\": [\n    {\n      \"distance\": 3200,\n      \"duration\": 420,\n      \"geometry\": {\n        \"type\": \"LineString\",\n        \"coordinates\": [\n          [\n            49.8516,\n            40.3777\n          ],\n          [\n            49.86,\n            40.4\n          ]\n        ]\n      },\n      \"legs\": [\n        {\n          \"distance\": 3200,\n          \"duration\": 420,\n          \"steps\": []\n        }\n      ],\n      \"confidence\": 0.97\n    }\n  ],\n  \"tracepoints\": [\n    {\n      \"name\": \"Example road\",\n      \"location\": [\n        49.8516,\n        40.3777\n      ],\n      \"distance\": 4.2\n    },\n    null\n  ]\n}"},{"id":"5a6c2381-4867-482c-8f86-c602b1df42a7","name":"Synthetic · 400 · InvalidQuery","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","match","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"overview","value":"full","description":"Geometry precision of the matched route. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}"},{"id":"d73227c6-7816-4931-880b-bd3902f2eef3","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","match","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"overview","value":"full","description":"Geometry precision of the matched route. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"50a98b38-ee6f-4710-8d6f-ed66e867b82f","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","match","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"overview","value":"full","description":"Geometry precision of the matched route. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"db132a43-8c10-48a2-9c69-d73c69851933","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","match","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"overview","value":"full","description":"Geometry precision of the matched route. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"cafef084-fa3d-429c-9ae0-839fd811ac04","name":"Synthetic · 422 · ProfileNotAvailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","match","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"overview","value":"full","description":"Geometry precision of the matched route. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}"},{"id":"063ab41f-e98f-4294-b1ea-98deda804786","name":"Synthetic · 422 · NoNearbyRoad","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","match","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"overview","value":"full","description":"Geometry precision of the matched route. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}"},{"id":"b22af82a-8197-4cbf-871d-a24198b31dce","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","match","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"overview","value":"full","description":"Geometry precision of the matched route. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"7e11579d-f003-48bd-a7a8-966465bb6d45","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","match","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"overview","value":"full","description":"Geometry precision of the matched route. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"3e1fcf2d-e491-4ed9-9a44-3d6d27bc65e2"},{"name":"Nearest API","id":"f370f9c4-8b9f-4baa-8208-7cfabbefbc38","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/osrm/nearest/v1/driving/49.8516,40.3755","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Nearest API snaps any coordinate to the closest point on the real road network and returns the matched location. It is the building block for cleaning user input before routing, validating pickup/drop-off points, and finding which road a coordinate belongs to. Fast and precise, it underpins reliable routing pipelines.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>profile</strong> (path, required): Transport profile. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>coordinates</strong> (path, required): The point to search near. Format: lon,lat (a single pair). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>number</strong> (query, optional): The number of nearest road candidates to find. Schema: <code>{\"type\": \"integer\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","osrm","nearest","v1","driving","49.8516,40.3755"],"host":["https://osrmroute.com"],"query":[{"disabled":true,"description":{"content":"<p>The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}</p>\n","type":"text/plain"},"key":"number","value":"1"}],"variable":[]}},"response":[{"id":"97c47403-ea0c-4bbc-ae72-6ff19799b5ad","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/nearest/v1/driving/49.8516,40.3755","host":["https://osrmroute.com"],"path":["api","v1","osrm","nearest","v1","driving","49.8516,40.3755"],"query":[{"key":"number","value":"1","description":"The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"Ok\",\n  \"waypoints\": [\n    {\n      \"name\": \"Example road\",\n      \"location\": [\n        49.8516,\n        40.3777\n      ],\n      \"distance\": 4.2\n    }\n  ]\n}"},{"id":"3be63937-af8b-4c91-b2bb-57816928caae","name":"Synthetic · 400 · InvalidQuery","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/nearest/v1/driving/49.8516,40.3755","host":["https://osrmroute.com"],"path":["api","v1","osrm","nearest","v1","driving","49.8516,40.3755"],"query":[{"key":"number","value":"1","description":"The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}"},{"id":"7cfb06d4-a1a7-44df-a393-bcbd64af9f7a","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/nearest/v1/driving/49.8516,40.3755","host":["https://osrmroute.com"],"path":["api","v1","osrm","nearest","v1","driving","49.8516,40.3755"],"query":[{"key":"number","value":"1","description":"The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"1c70551e-d42a-4dda-ba5d-b759d36b37ba","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/nearest/v1/driving/49.8516,40.3755","host":["https://osrmroute.com"],"path":["api","v1","osrm","nearest","v1","driving","49.8516,40.3755"],"query":[{"key":"number","value":"1","description":"The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"49026731-1c41-476c-8893-b6dc1ffc52f7","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/nearest/v1/driving/49.8516,40.3755","host":["https://osrmroute.com"],"path":["api","v1","osrm","nearest","v1","driving","49.8516,40.3755"],"query":[{"key":"number","value":"1","description":"The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"521110e0-4193-4b99-98be-4f848e197571","name":"Synthetic · 422 · ProfileNotAvailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/nearest/v1/driving/49.8516,40.3755","host":["https://osrmroute.com"],"path":["api","v1","osrm","nearest","v1","driving","49.8516,40.3755"],"query":[{"key":"number","value":"1","description":"The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}"},{"id":"6266638f-0d40-426a-9734-740cc6e3877d","name":"Synthetic · 422 · NoNearbyRoad","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/nearest/v1/driving/49.8516,40.3755","host":["https://osrmroute.com"],"path":["api","v1","osrm","nearest","v1","driving","49.8516,40.3755"],"query":[{"key":"number","value":"1","description":"The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}"},{"id":"6e09899f-39cb-4321-8819-31498a794aae","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/nearest/v1/driving/49.8516,40.3755","host":["https://osrmroute.com"],"path":["api","v1","osrm","nearest","v1","driving","49.8516,40.3755"],"query":[{"key":"number","value":"1","description":"The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"af8c5984-e71c-432b-a2f5-802bb095e396","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/nearest/v1/driving/49.8516,40.3755","host":["https://osrmroute.com"],"path":["api","v1","osrm","nearest","v1","driving","49.8516,40.3755"],"query":[{"key":"number","value":"1","description":"The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"f370f9c4-8b9f-4baa-8208-7cfabbefbc38"},{"name":"Trip API (TSP)","id":"c41cc5dc-0eba-4ba4-b62d-63b8afd2fd1c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 5 credits. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Trip API solves the travelling-salesman problem (TSP): given a set of stops, it orders them into the shortest possible round trip. Perfect for delivery loops, field-service visits and multi-stop errands where the start can be fixed and the vehicle returns to base. One call replaces manual sequencing and cuts total drive time.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>profile</strong> (path, required): Transport profile. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>coordinates</strong> (path, required): Points to visit. Format: lon,lat;lon,lat... Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>geometries</strong> (query, optional): Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>source</strong> (query, optional): The point the route can start from (any or the first point). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>destination</strong> (query, optional): The point the route ends at (any or the last point). Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","osrm","trip","v1","driving","49.8516,40.3755;49.8378,40.3892"],"host":["https://osrmroute.com"],"query":[{"disabled":true,"description":{"content":"<p>Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"geometries","value":"geojson"},{"disabled":true,"description":{"content":"<p>The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"source","value":"any"},{"disabled":true,"description":{"content":"<p>The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"destination","value":"any"}],"variable":[]}},"response":[{"id":"343318a6-9808-4a23-aefe-5cff1650b975","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","trip","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"source","value":"any","description":"The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}","disabled":true},{"key":"destination","value":"any","description":"The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"Ok\",\n  \"trips\": [\n    {\n      \"distance\": 3200,\n      \"duration\": 420,\n      \"geometry\": {\n        \"type\": \"LineString\",\n        \"coordinates\": [\n          [\n            49.8516,\n            40.3777\n          ],\n          [\n            49.86,\n            40.4\n          ]\n        ]\n      },\n      \"legs\": [\n        {\n          \"distance\": 3200,\n          \"duration\": 420,\n          \"steps\": []\n        }\n      ]\n    }\n  ],\n  \"waypoints\": [\n    {\n      \"name\": \"Example road\",\n      \"location\": [\n        49.8516,\n        40.3777\n      ],\n      \"distance\": 4.2,\n      \"trips_index\": 0,\n      \"waypoint_index\": 0\n    }\n  ]\n}"},{"id":"522845be-b302-416f-871e-ec1e9643c239","name":"Synthetic · 400 · InvalidQuery","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","trip","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"source","value":"any","description":"The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}","disabled":true},{"key":"destination","value":"any","description":"The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}"},{"id":"56f20e80-3e0f-4dae-9d79-7e451393bae7","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","trip","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"source","value":"any","description":"The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}","disabled":true},{"key":"destination","value":"any","description":"The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"feef4f32-367e-4e45-b46d-9257af5ac0b4","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","trip","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"source","value":"any","description":"The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}","disabled":true},{"key":"destination","value":"any","description":"The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"f8091e79-10ad-4fe8-a0d7-896d7c9422c3","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","trip","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"source","value":"any","description":"The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}","disabled":true},{"key":"destination","value":"any","description":"The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"1c398cd9-3d46-4696-afa8-348da7feb158","name":"Synthetic · 422 · ProfileNotAvailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","trip","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"source","value":"any","description":"The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}","disabled":true},{"key":"destination","value":"any","description":"The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}"},{"id":"17d0cb7a-7113-4b6c-b653-1e527c72320c","name":"Synthetic · 422 · NoNearbyRoad","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","trip","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"source","value":"any","description":"The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}","disabled":true},{"key":"destination","value":"any","description":"The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}"},{"id":"6b4ade2d-0b29-4c99-b564-ad13513b4f2f","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","trip","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"source","value":"any","description":"The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}","disabled":true},{"key":"destination","value":"any","description":"The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"54557eb9-6e42-410d-836b-edaf8763435c","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892","host":["https://osrmroute.com"],"path":["api","v1","osrm","trip","v1","driving","49.8516,40.3755;49.8378,40.3892"],"query":[{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"source","value":"any","description":"The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}","disabled":true},{"key":"destination","value":"any","description":"The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"c41cc5dc-0eba-4ba4-b62d-63b8afd2fd1c"},{"name":"Directions API / Alternative Routes API","id":"4b849858-3215-4096-b6e8-00fc2b6433b3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Directions API returns turn-by-turn navigation between two or more waypoints. Each step comes with human-readable text, distance, duration, maneuver type and the exact location — ready to render in a navigation UI. It supports driving, cycling and walking, plus alternative routes in one call.</p>\n<p>The Alternative Routes API computes up to three genuinely different routes between your points in a single request. Ideal for giving drivers a choice, avoiding a blocked road, or comparing a fast vs. shorter path — each option includes full geometry, distance and duration.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, required): Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: <code>{\"type\": \"array\", \"items\": {\"type\": \"string\"}}</code></li>\n<li><strong>profile</strong> (query, optional): Travel mode: driving, cycling or walking. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>alternatives</strong> (query, optional): Number of alternative routes to also return (0–3). Schema: <code>{\"type\": \"integer\"}</code></li>\n<li><strong>lang</strong> (query, optional): Language code for the instruction text. Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","directions"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}</p>\n","type":"text/plain"},"key":"point","value":"40.3777,49.8516"},{"description":{"content":"<p>Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}</p>\n","type":"text/plain"},"key":"point","value":"40.4,49.86"},{"disabled":true,"description":{"content":"<p>Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"profile","value":"driving"},{"disabled":true,"description":{"content":"<p>Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}</p>\n","type":"text/plain"},"key":"alternatives","value":"2"},{"disabled":true,"description":{"content":"<p>Language code for the instruction text. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"lang","value":"en"}],"variable":[]}},"response":[{"id":"17f80fe6-fca1-4d01-8cb1-cf2556109992","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"Ok\",\n  \"profile\": \"driving\",\n  \"routes\": [\n    {\n      \"distance\": 3200,\n      \"duration\": 420,\n      \"geometry\": {\n        \"type\": \"LineString\",\n        \"coordinates\": [\n          [\n            49.8516,\n            40.3777\n          ],\n          [\n            49.86,\n            40.4\n          ]\n        ]\n      },\n      \"instructions\": [\n        {\n          \"text\": \"Continue on Example road\",\n          \"type\": \"continue\",\n          \"modifier\": \"straight\",\n          \"distance\": 300,\n          \"duration\": 40,\n          \"name\": \"Example road\",\n          \"bearing_after\": 90,\n          \"location\": [\n            40.3777,\n            49.8516\n          ]\n        }\n      ]\n    }\n  ],\n  \"waypoints\": [\n    {\n      \"name\": \"Example road\",\n      \"location\": [\n        40.3777,\n        49.8516\n      ]\n    }\n  ]\n}"},{"id":"395a7645-1632-4630-a094-b82eb6174110","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"At least two points must be provided (point=lat,lng repeated).\"\n}"},{"id":"6d3cb85a-e4ca-46fe-9400-bd05f530bd1e","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"56125d6d-9b2e-4861-ab4b-86a82e9cc6ff","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"184e7d0a-5abf-4870-ada9-0c16073df3e4","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"c3750d7e-d082-40e5-aa0f-7d25299451db","name":"Synthetic · 422 · ProfileNotAvailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}"},{"id":"f1ad077e-3736-488e-8698-9faa0cb74587","name":"Synthetic · 422 · NoNearbyRoad","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}"},{"id":"544944e5-9b2e-4e5f-a5ad-41be5e98a2d1","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"3ff79f5d-74bb-4afc-9537-e09b62227dd5","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"4b849858-3215-4096-b6e8-00fc2b6433b3"},{"name":"Snap to Road API","id":"7421c87f-6225-4082-b3a5-7df393330dd9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/snap?point=40.3777,49.8516&point=40.4,49.86","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Snap to Road API takes raw, imprecise GPS points and snaps each one to the closest position on the road network. Perfect for cleaning up tracking data before display, matching pins to streets, or preparing coordinates for routing.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, required): GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: <code>{\"type\": \"array\", \"items\": {\"type\": \"string\"}}</code></li>\n<li><strong>profile</strong> (query, optional): Road network to snap to: driving, cycling or walking. Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","snap"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}</p>\n","type":"text/plain"},"key":"point","value":"40.3777,49.8516"},{"description":{"content":"<p>GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}</p>\n","type":"text/plain"},"key":"point","value":"40.4,49.86"},{"disabled":true,"description":{"content":"<p>Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"profile","value":"driving"}],"variable":[]}},"response":[{"id":"550619ff-7c28-4118-9c5c-4fe25b5f26ea","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/snap?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","snap"],"query":[{"key":"point","value":"40.3777,49.8516","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"Ok\",\n  \"profile\": \"driving\",\n  \"snapped\": [\n    {\n      \"input\": [\n        40.3777,\n        49.8516\n      ],\n      \"snapped\": [\n        40.3778,\n        49.8517\n      ],\n      \"distance\": 14,\n      \"name\": \"Example road\"\n    }\n  ]\n}"},{"id":"67cfdff9-256c-4d69-b826-11b95958c5f4","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/snap?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","snap"],"query":[{"key":"point","value":"40.3777,49.8516","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"At least one point must be provided (point=lat,lng repeated).\"\n}"},{"id":"65217bb3-e4d4-4e66-b50a-0c93a967e99c","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/snap?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","snap"],"query":[{"key":"point","value":"40.3777,49.8516","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"efa63778-878c-421d-9a0b-4914f13890a7","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/snap?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","snap"],"query":[{"key":"point","value":"40.3777,49.8516","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"c264d34d-6898-4825-8a49-eaf55d90ca2a","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/snap?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","snap"],"query":[{"key":"point","value":"40.3777,49.8516","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"93b899a5-53a8-4abc-8184-73f3083f1e85","name":"Synthetic · 422 · ProfileNotAvailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/snap?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","snap"],"query":[{"key":"point","value":"40.3777,49.8516","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}"},{"id":"3d9f7da6-3cc6-43f0-bffe-be2eda1b1dbd","name":"Synthetic · 422 · NoNearbyRoad","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/snap?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","snap"],"query":[{"key":"point","value":"40.3777,49.8516","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}"},{"id":"f902726a-879d-4e77-a3fa-d773646de71e","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/snap?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","snap"],"query":[{"key":"point","value":"40.3777,49.8516","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"ae2e0e45-55cb-47df-9048-d5ab2931b10e","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/snap?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","snap"],"query":[{"key":"point","value":"40.3777,49.8516","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"7421c87f-6225-4082-b3a5-7df393330dd9"},{"name":"Alternative routes","id":"4927a9e1-9147-48b6-b6c3-c1551360c0b7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Directions API returns turn-by-turn navigation between two or more waypoints. Each step comes with human-readable text, distance, duration, maneuver type and the exact location — ready to render in a navigation UI. It supports driving, cycling and walking, plus alternative routes in one call.</p>\n<p>The Alternative Routes API computes up to three genuinely different routes between your points in a single request. Ideal for giving drivers a choice, avoiding a blocked road, or comparing a fast vs. shorter path — each option includes full geometry, distance and duration.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, required): Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: <code>{\"type\": \"array\", \"items\": {\"type\": \"string\"}}</code></li>\n<li><strong>profile</strong> (query, optional): Travel mode: driving, cycling or walking. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>alternatives</strong> (query, optional): Number of alternative routes to also return (0–3). Schema: <code>{\"type\": \"integer\"}</code></li>\n<li><strong>lang</strong> (query, optional): Language code for the instruction text. Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","directions"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}</p>\n","type":"text/plain"},"key":"point","value":"40.3777,49.8516"},{"description":{"content":"<p>Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}</p>\n","type":"text/plain"},"key":"point","value":"40.4,49.86"},{"disabled":true,"description":{"content":"<p>Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"profile","value":"driving"},{"description":{"content":"<p>Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}</p>\n","type":"text/plain"},"key":"alternatives","value":"2"},{"disabled":true,"description":{"content":"<p>Language code for the instruction text. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"lang","value":"en"}],"variable":[]}},"response":[{"id":"45843f11-f434-455f-a2cc-df9e4b9ab3a0","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}"},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"Ok\",\n  \"profile\": \"driving\",\n  \"routes\": [\n    {\n      \"distance\": 3200,\n      \"duration\": 420,\n      \"geometry\": {\n        \"type\": \"LineString\",\n        \"coordinates\": [\n          [\n            49.8516,\n            40.3777\n          ],\n          [\n            49.86,\n            40.4\n          ]\n        ]\n      },\n      \"instructions\": [\n        {\n          \"text\": \"Continue on Example road\",\n          \"type\": \"continue\",\n          \"modifier\": \"straight\",\n          \"distance\": 300,\n          \"duration\": 40,\n          \"name\": \"Example road\",\n          \"bearing_after\": 90,\n          \"location\": [\n            40.3777,\n            49.8516\n          ]\n        }\n      ]\n    }\n  ],\n  \"waypoints\": [\n    {\n      \"name\": \"Example road\",\n      \"location\": [\n        40.3777,\n        49.8516\n      ]\n    }\n  ]\n}"},{"id":"a6f4814b-7822-4b08-84aa-d3e11974b10d","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}"},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"At least two points must be provided (point=lat,lng repeated).\"\n}"},{"id":"b41a7b7e-f96f-44fc-a49f-666a07aaf13c","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}"},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"71bbd7d6-1f83-4a5c-a706-07a2bb9101b7","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}"},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"3b81129f-3e5c-426b-a959-3d357a86dc9c","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}"},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"429c6ecf-58d0-4930-ba85-5d183f4f1b3e","name":"Synthetic · 422 · ProfileNotAvailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}"},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}"},{"id":"bade2b7e-00da-4950-a61a-eeb777a8ca6f","name":"Synthetic · 422 · NoNearbyRoad","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}"},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}"},{"id":"b031f69c-dcd3-4263-92f3-226c755269bc","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}"},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"849354c8-5c5c-4645-85b9-f5e4b009396d","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2","host":["https://osrmroute.com"],"path":["api","1","directions"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"profile","value":"driving","description":"Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}","disabled":true},{"key":"alternatives","value":"2","description":"Number of alternative routes to also return (0–3). Schema: {\"type\": \"integer\"}"},{"key":"lang","value":"en","description":"Language code for the instruction text. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"4927a9e1-9147-48b6-b6c3-c1551360c0b7"},{"name":"Route shorthand alias","id":"6d736e94-d262-4b50-8185-537cc5f20a5d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/route/driving/13.405,52.52;13.388,52.517","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Routing API calculates routes on the road network between two or more points and returns geometry, distance, estimated duration and optional instructions. Driving coverage is global; walking and cycling use regional graphs. Response time depends on region, graph cache and request complexity. Test representative journeys for your application.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>profile</strong> (path, required): Transport mode profile. Supported values: driving (car), cycling (bike), walking (pedestrian). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>coordinates</strong> (path, required): Coordinates of the points. Format: lon,lat;lon,lat;lon,lat... (at least 2 points). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>overview</strong> (query, optional): Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>geometries</strong> (query, optional): Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>steps</strong> (query, optional): Whether step-by-step instructions are returned for each turn. Schema: <code>{\"type\": \"boolean\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","route","driving","13.405,52.52;13.388,52.517"],"host":["https://osrmroute.com"],"query":[{"disabled":true,"description":{"content":"<p>Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"overview","value":"full"},{"disabled":true,"description":{"content":"<p>Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"geometries","value":"geojson"},{"disabled":true,"description":{"content":"<p>Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}</p>\n","type":"text/plain"},"key":"steps","value":"true"}],"variable":[]}},"response":[{"id":"acef982d-1fc7-4b0f-8bd5-d93d5c89efea","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/route/driving/13.405,52.52;13.388,52.517","host":["https://osrmroute.com"],"path":["api","v1","route","driving","13.405,52.52;13.388,52.517"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"Ok\",\n  \"routes\": [\n    {\n      \"distance\": 3200,\n      \"duration\": 420,\n      \"geometry\": {\n        \"type\": \"LineString\",\n        \"coordinates\": [\n          [\n            49.8516,\n            40.3777\n          ],\n          [\n            49.86,\n            40.4\n          ]\n        ]\n      },\n      \"legs\": [\n        {\n          \"distance\": 3200,\n          \"duration\": 420,\n          \"steps\": []\n        }\n      ]\n    }\n  ],\n  \"waypoints\": [\n    {\n      \"name\": \"Example road\",\n      \"location\": [\n        49.8516,\n        40.3777\n      ],\n      \"distance\": 4.2\n    }\n  ]\n}"},{"id":"0545e0a3-f330-4a8d-bdec-948102d18d50","name":"Synthetic · 400 · InvalidQuery","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/route/driving/13.405,52.52;13.388,52.517","host":["https://osrmroute.com"],"path":["api","v1","route","driving","13.405,52.52;13.388,52.517"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}"},{"id":"e62bffb1-cc55-418c-b3a5-1621eec7921f","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/route/driving/13.405,52.52;13.388,52.517","host":["https://osrmroute.com"],"path":["api","v1","route","driving","13.405,52.52;13.388,52.517"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"05118ab5-f957-4cac-815b-3cc1af7cc740","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/route/driving/13.405,52.52;13.388,52.517","host":["https://osrmroute.com"],"path":["api","v1","route","driving","13.405,52.52;13.388,52.517"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"8b7ec10e-4d9c-489a-a9c0-469904677fe5","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/route/driving/13.405,52.52;13.388,52.517","host":["https://osrmroute.com"],"path":["api","v1","route","driving","13.405,52.52;13.388,52.517"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"1855994a-4f54-49b8-9d28-dd8da33fa680","name":"Synthetic · 422 · ProfileNotAvailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/route/driving/13.405,52.52;13.388,52.517","host":["https://osrmroute.com"],"path":["api","v1","route","driving","13.405,52.52;13.388,52.517"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}"},{"id":"92027f7b-bec2-4132-927e-6ac294bb04ec","name":"Synthetic · 422 · NoNearbyRoad","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/route/driving/13.405,52.52;13.388,52.517","host":["https://osrmroute.com"],"path":["api","v1","route","driving","13.405,52.52;13.388,52.517"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}"},{"id":"0826d50b-138a-4d57-bc18-33149e5b8018","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/route/driving/13.405,52.52;13.388,52.517","host":["https://osrmroute.com"],"path":["api","v1","route","driving","13.405,52.52;13.388,52.517"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"930886ce-0ea6-4524-aaec-ce806720b543","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/v1/route/driving/13.405,52.52;13.388,52.517","host":["https://osrmroute.com"],"path":["api","v1","route","driving","13.405,52.52;13.388,52.517"],"query":[{"key":"overview","value":"full","description":"Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}","disabled":true},{"key":"geometries","value":"geojson","description":"Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}","disabled":true},{"key":"steps","value":"true","description":"Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"6d736e94-d262-4b50-8185-537cc5f20a5d"}],"id":"5393ba11-f967-4fed-b0ef-895a91c7d9fc","_postman_id":"5393ba11-f967-4fed-b0ef-895a91c7d9fc","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}}},{"name":"02 · Search, geocoding and places","item":[{"name":"Geocoding API","id":"b36aaa45-efe9-4989-84ee-34e8775aa2a3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/geocode?q=Nizami street, Baku","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Geocoding API converts free-text addresses into precise coordinates (forward) and coordinates back into readable addresses (reverse). Forward search runs on a self-hosted Photon engine for fast, typo-tolerant, multilingual autocomplete that covers streets, addresses and points of interest; reverse runs on Nominatim for accurate structured results. Relevance controls — location bias, bounding box, category and strict country and city filters — let you tune results for any use case.</p>\n<p>Without country, search is global. country=AZ restricts results to Azerbaijan; country=AZ&amp;city=Bakı restricts them to Baku in Azerbaijan. No match returns HTTP 200 with an empty list, without expanding to another area. A city without a country or an invalid country code returns HTTP 400 InvalidGeocodeFilter. lat/lon only affect proximity ranking and cannot override these filters. Records without confirmed city metadata are excluded from city-filtered results.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>q</strong> (query, optional): The address to search (e.g. \"Nizami Street, Baku\"). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>reverse</strong> (query, optional): Must be true to perform reverse geocoding (searching from coordinate to address). Schema: <code>{\"type\": \"boolean\"}</code></li>\n<li><strong>point</strong> (query, optional): Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>limit</strong> (query, optional): Maximum number of results to return (1–20, default 5). Schema: <code>{\"type\": \"integer\"}</code></li>\n<li><strong>lang</strong> (query, optional): Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>lat</strong> (query, optional): Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: <code>{\"type\": \"number\"}</code></li>\n<li><strong>lon</strong> (query, optional): Longitude to bias results toward. Pair with lat. Schema: <code>{\"type\": \"number\"}</code></li>\n<li><strong>bbox</strong> (query, optional): Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>osm_tag</strong> (query, optional): Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>country</strong> (query, optional): ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>city</strong> (query, optional): Strict city filter, for example Baku. Requires exactly one country code. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>elastic</strong> (query, optional): Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: <code>{\"type\": \"boolean\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Matching results within all supplied filters. No match returns an empty list; scope is never expanded.</li>\n<li><strong>400</strong>: InvalidGeocodeFilter: invalid country code, or city without exactly one country. Invalid filters do not consume credits.</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","geocode"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"q","value":"Nizami street, Baku"},{"disabled":true,"description":{"content":"<p>Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}</p>\n","type":"text/plain"},"key":"reverse","value":"false"},{"disabled":true,"description":{"content":"<p>Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"point","value":"40.3755,49.8516"},{"disabled":true,"description":{"content":"<p>Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}</p>\n","type":"text/plain"},"key":"limit","value":"5"},{"disabled":true,"description":{"content":"<p>Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"lang","value":"en"},{"disabled":true,"description":{"content":"<p>Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}</p>\n","type":"text/plain"},"key":"lat","value":"40.3755"},{"disabled":true,"description":{"content":"<p>Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}</p>\n","type":"text/plain"},"key":"lon","value":"49.8516"},{"disabled":true,"description":{"content":"<p>Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"bbox","value":"49.75,40.30,49.95,40.45"},{"disabled":true,"description":{"content":"<p>Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"osm_tag","value":"amenity:restaurant"},{"disabled":true,"description":{"content":"<p>ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"country","value":"AZ"},{"disabled":true,"description":{"content":"<p>Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"city","value":"Bakı"},{"disabled":true,"description":{"content":"<p>Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}</p>\n","type":"text/plain"},"key":"elastic","value":"true"}],"variable":[]}},"response":[{"id":"b0ab10e5-510a-42cf-a26c-6af3c684ba58","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?q=Nizami street, Baku","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"},{"key":"reverse","value":"false","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"point","value":"40.3755,49.8516","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"hits\": [\n    {\n      \"name\": \"Nizami Street\",\n      \"city\": \"Baku\",\n      \"country\": \"Azerbaijan\",\n      \"countrycode\": \"AZ\",\n      \"point\": {\n        \"lat\": 40.3777,\n        \"lng\": 49.8516\n      }\n    }\n  ],\n  \"took\": 12\n}"},{"id":"940bd724-1bbf-47e4-85b9-00c12fe629cc","name":"Synthetic · 200 · noMatch","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?q=Nizami street, Baku","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"},{"key":"reverse","value":"false","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"point","value":"40.3755,49.8516","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"hits\": [],\n  \"took\": 1\n}"},{"id":"20ee8514-18b6-4da1-9010-fe8a1529f5c2","name":"Synthetic · 400 · example","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?q=Nizami street, Baku","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"},{"key":"reverse","value":"false","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"point","value":"40.3755,49.8516","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"InvalidGeocodeFilter\",\n  \"error\": \"city requires exactly one country, for example country=AZ&city=Bak\\u0131.\"\n}"},{"id":"3c085131-e442-4e31-aee4-79f0a0c720ee","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?q=Nizami street, Baku","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"},{"key":"reverse","value":"false","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"point","value":"40.3755,49.8516","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"2a7a1dd8-4b30-4600-8ce7-a8711c018d70","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?q=Nizami street, Baku","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"},{"key":"reverse","value":"false","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"point","value":"40.3755,49.8516","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"254ca61b-05cf-46b3-b699-2b6c883efecc","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?q=Nizami street, Baku","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"},{"key":"reverse","value":"false","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"point","value":"40.3755,49.8516","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"12b43f0c-dba3-40f2-a7f7-337681806d61","name":"Synthetic · 422 · NoNearbyAddress","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?q=Nizami street, Baku","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"},{"key":"reverse","value":"false","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"point","value":"40.3755,49.8516","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyAddress\",\n  \"error\": \"No indexed address or place within 1 km.\"\n}"},{"id":"37d68609-46ab-474b-b2a5-6785f604f527","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?q=Nizami street, Baku","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"},{"key":"reverse","value":"false","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"point","value":"40.3755,49.8516","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"b69cbbd6-d37a-4eec-9d62-5211438c24dc","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?q=Nizami street, Baku","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"},{"key":"reverse","value":"false","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"point","value":"40.3755,49.8516","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"b36aaa45-efe9-4989-84ee-34e8775aa2a3"},{"name":"Places API","id":"ee9cb4c9-4b27-4963-afe6-9e73e03f6013","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/places?point=40.3755,49.8516","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Places API discovers businesses and points of interest around any location — cafes, shops, hotels, ATMs, pharmacies and more. Provide a centre point, a radius and an optional category filter, and it returns nearby POIs sorted by distance, each with its name, type, address and exact coordinates. It runs on fresh OpenStreetMap data, so results stay current as the map evolves.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, required): Center coordinate lat,lng to search around (required). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>radius</strong> (query, optional): Search radius in kilometers (0.05–20, default 1). Schema: <code>{\"type\": \"number\"}</code></li>\n<li><strong>category</strong> (query, optional): OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>limit</strong> (query, optional): Max results to return (1–50, default 10). Schema: <code>{\"type\": \"integer\"}</code></li>\n<li><strong>lang</strong> (query, optional): Preferred language for names (e.g. en, az, ru). Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n<li><strong>502</strong>: Error Codes (HTTP 502)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","places"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"point","value":"40.3755,49.8516"},{"disabled":true,"description":{"content":"<p>Search radius in kilometers (0.05–20, default 1). Schema: {\"type\": \"number\"}</p>\n","type":"text/plain"},"key":"radius","value":"1"},{"disabled":true,"description":{"content":"<p>OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"category","value":"amenity:cafe"},{"disabled":true,"description":{"content":"<p>Max results to return (1–50, default 10). Schema: {\"type\": \"integer\"}</p>\n","type":"text/plain"},"key":"limit","value":"5"},{"disabled":true,"description":{"content":"<p>Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"lang","value":"en"}],"variable":[]}},"response":[{"id":"806dae9a-2723-44e3-b54d-73493966e30b","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/places?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","places"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"},{"key":"radius","value":"1","description":"Search radius in kilometers (0.05–20, default 1). Schema: {\"type\": \"number\"}","disabled":true},{"key":"category","value":"amenity:cafe","description":"OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Max results to return (1–50, default 10). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"places\": [\n    {\n      \"name\": \"Example cafe\",\n      \"category\": \"amenity\",\n      \"type\": \"cafe\",\n      \"distance_m\": 85,\n      \"point\": {\n        \"lat\": 40.3777,\n        \"lng\": 49.8516\n      }\n    }\n  ],\n  \"took\": 12\n}"},{"id":"b2a242dd-4a0d-412c-8ce2-0e5684ff9f06","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/places?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","places"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"},{"key":"radius","value":"1","description":"Search radius in kilometers (0.05–20, default 1). Schema: {\"type\": \"number\"}","disabled":true},{"key":"category","value":"amenity:cafe","description":"OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Max results to return (1–50, default 10). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"The \\\"point\\\" parameter (lat,lng) is required.\"\n}"},{"id":"0dd65c30-3553-4243-a9fd-30bd94fb0757","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/places?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","places"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"},{"key":"radius","value":"1","description":"Search radius in kilometers (0.05–20, default 1). Schema: {\"type\": \"number\"}","disabled":true},{"key":"category","value":"amenity:cafe","description":"OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Max results to return (1–50, default 10). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"d50708e7-b299-47fa-a24d-9de04f3b7fa8","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/places?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","places"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"},{"key":"radius","value":"1","description":"Search radius in kilometers (0.05–20, default 1). Schema: {\"type\": \"number\"}","disabled":true},{"key":"category","value":"amenity:cafe","description":"OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Max results to return (1–50, default 10). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"f7fff89f-a263-4a3d-913b-382ede4d2093","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/places?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","places"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"},{"key":"radius","value":"1","description":"Search radius in kilometers (0.05–20, default 1). Schema: {\"type\": \"number\"}","disabled":true},{"key":"category","value":"amenity:cafe","description":"OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Max results to return (1–50, default 10). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"95b8b7ca-172f-45c6-be14-3272cde091a6","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/places?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","places"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"},{"key":"radius","value":"1","description":"Search radius in kilometers (0.05–20, default 1). Schema: {\"type\": \"number\"}","disabled":true},{"key":"category","value":"amenity:cafe","description":"OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Max results to return (1–50, default 10). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"725d5297-2de9-46db-a947-8f02fbc84032","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/places?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","places"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"},{"key":"radius","value":"1","description":"Search radius in kilometers (0.05–20, default 1). Schema: {\"type\": \"number\"}","disabled":true},{"key":"category","value":"amenity:cafe","description":"OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Max results to return (1–50, default 10). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"},{"id":"7c3caf18-dee3-45f9-bc08-febe3872337b","name":"Synthetic · 502 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/places?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","places"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"},{"key":"radius","value":"1","description":"Search radius in kilometers (0.05–20, default 1). Schema: {\"type\": \"number\"}","disabled":true},{"key":"category","value":"amenity:cafe","description":"OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}","disabled":true},{"key":"limit","value":"5","description":"Max results to return (1–50, default 10). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":502,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Places service unavailable.\"\n}"}],"_postman_id":"ee9cb4c9-4b27-4963-afe6-9e73e03f6013"},{"name":"Autocomplete API","id":"82eec02b-93e4-40ce-9a32-9b619c0bf84e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Autocomplete API returns fast, typo-tolerant place suggestions as the user types. Each suggestion includes a ready-to-display label, its category and coordinates, so you can power a search box in a few lines. Bias results toward the user with lat/lon, restrict them with a bounding box, or filter by place type.</p>\n<p>Without country, search is global. country=AZ restricts results to Azerbaijan; country=AZ&amp;city=Bakı restricts them to Baku in Azerbaijan. No match returns HTTP 200 with an empty list, without expanding to another area. A city without a country or an invalid country code returns HTTP 400 InvalidGeocodeFilter. lat/lon only affect proximity ranking and cannot override these filters. Records without confirmed city metadata are excluded from city-filtered results.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>q</strong> (query, required): Search text — partial input is fine. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>limit</strong> (query, optional): Maximum number of suggestions to return (1–15). Schema: <code>{\"type\": \"integer\"}</code></li>\n<li><strong>lang</strong> (query, optional): Language code for result labels. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>lat</strong> (query, optional): Latitude to bias results toward (optional). Schema: <code>{\"type\": \"number\"}</code></li>\n<li><strong>lon</strong> (query, optional): Longitude to bias results toward (optional). Schema: <code>{\"type\": \"number\"}</code></li>\n<li><strong>country</strong> (query, optional): ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>city</strong> (query, optional): Strict city filter, for example Baku. Requires exactly one country code. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>osm_tag</strong> (query, optional): Filter suggestions by OSM type, e.g. place:city. Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Matching results within all supplied filters. No match returns an empty list; scope is never expanded.</li>\n<li><strong>400</strong>: InvalidGeocodeFilter: invalid country code, or city without exactly one country. Invalid filters do not consume credits.</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","autocomplete"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Search text — partial input is fine. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"q","value":"Nizami street, Baku"},{"disabled":true,"description":{"content":"<p>Maximum number of suggestions to return (1–15). Schema: {\"type\": \"integer\"}</p>\n","type":"text/plain"},"key":"limit","value":"5"},{"disabled":true,"description":{"content":"<p>Language code for result labels. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"lang","value":"en"},{"description":{"content":"<p>Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}</p>\n","type":"text/plain"},"key":"lat","value":"40.3755"},{"description":{"content":"<p>Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}</p>\n","type":"text/plain"},"key":"lon","value":"49.8516"},{"disabled":true,"description":{"content":"<p>ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"country","value":"AZ"},{"disabled":true,"description":{"content":"<p>Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"city","value":"Bakı"},{"disabled":true,"description":{"content":"<p>Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"osm_tag","value":"amenity:restaurant"}],"variable":[]}},"response":[{"id":"8b35d831-a45a-4ada-80fe-19da2d56f531","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","autocomplete"],"query":[{"key":"q","value":"Nizami street, Baku","description":"Search text — partial input is fine. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of suggestions to return (1–15). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for result labels. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"suggestions\": [\n    {\n      \"name\": \"Nizami Street\",\n      \"city\": \"Baku\",\n      \"country\": \"Azerbaijan\",\n      \"countrycode\": \"AZ\",\n      \"point\": {\n        \"lat\": 40.3777,\n        \"lng\": 49.8516\n      },\n      \"label\": \"Nizami Street, Baku, Azerbaijan\"\n    }\n  ],\n  \"took\": 12\n}"},{"id":"bb8077fb-0951-4acb-b18c-27d3a2099fb0","name":"Synthetic · 200 · noMatch","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","autocomplete"],"query":[{"key":"q","value":"Nizami street, Baku","description":"Search text — partial input is fine. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of suggestions to return (1–15). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for result labels. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"suggestions\": [],\n  \"took\": 1\n}"},{"id":"5c7e855b-9a26-4c3e-86d2-f0c77b0e2428","name":"Synthetic · 400 · example","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","autocomplete"],"query":[{"key":"q","value":"Nizami street, Baku","description":"Search text — partial input is fine. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of suggestions to return (1–15). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for result labels. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"InvalidGeocodeFilter\",\n  \"error\": \"city requires exactly one country, for example country=AZ&city=Bak\\u0131.\"\n}"},{"id":"66290f25-f34d-43d8-bb97-1de28cd595ad","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","autocomplete"],"query":[{"key":"q","value":"Nizami street, Baku","description":"Search text — partial input is fine. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of suggestions to return (1–15). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for result labels. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"dcf758ce-3cdb-4771-9630-9a2d13c27ea0","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","autocomplete"],"query":[{"key":"q","value":"Nizami street, Baku","description":"Search text — partial input is fine. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of suggestions to return (1–15). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for result labels. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"ea162536-4069-4482-aed0-c1f70387732a","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","autocomplete"],"query":[{"key":"q","value":"Nizami street, Baku","description":"Search text — partial input is fine. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of suggestions to return (1–15). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for result labels. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"387043c1-9717-40f5-be06-0b551b75ca8a","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","autocomplete"],"query":[{"key":"q","value":"Nizami street, Baku","description":"Search text — partial input is fine. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of suggestions to return (1–15). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for result labels. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"beef3636-4178-4a58-9c4e-c957faaf1236","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","autocomplete"],"query":[{"key":"q","value":"Nizami street, Baku","description":"Search text — partial input is fine. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of suggestions to return (1–15). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for result labels. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"82eec02b-93e4-40ce-9a32-9b619c0bf84e"},{"name":"Batch Geocoding API","id":"6ba8e8d2-f0dc-49af-8f2d-975bddaa0353","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"queries\": [\n    \"Nizami k\\u00fc\\u00e7\\u0259si 10\",\n    \"28 May, Bak\\u0131\"\n  ],\n  \"lang\": \"az\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geocode/batch","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit / query. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Batch Geocoding API turns a list of address strings into coordinates in one call — up to 100 per request. Results are returned in the same order as the input, each with the best matches, so it slots neatly into data pipelines, spreadsheet imports and one-off migrations. Photon powers matching, with a Nominatim fallback for messy input.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>queries</code></td>\n<td>array</td>\n<td>yes</td>\n<td>Array of address strings to geocode (max 100).</td>\n</tr>\n<tr>\n<td><code>lang</code></td>\n<td>string</td>\n<td>no</td>\n<td>Language code for result labels.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>no</td>\n<td>Maximum matches to return per query (1–5).</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"queries\": {\n      \"type\": \"array\",\n      \"items\": {},\n      \"description\": \"Array of address strings to geocode (max 100).\"\n    },\n    \"lang\": {\n      \"type\": \"string\",\n      \"description\": \"Language code for result labels.\",\n      \"example\": \"en\"\n    },\n    \"limit\": {\n      \"type\": \"integer\",\n      \"description\": \"Maximum matches to return per query (1\\u20135).\",\n      \"example\": 5\n    }\n  },\n  \"required\": [\n    \"queries\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","geocode","batch"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"213aa19f-ba2a-428d-9185-33cc64740979","name":"Synthetic · 200 · success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"queries\": [\n    \"Nizami k\\u00fc\\u00e7\\u0259si 10\",\n    \"28 May, Bak\\u0131\"\n  ],\n  \"lang\": \"az\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geocode/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"query\": \"Baku\",\n      \"hits\": [\n        {\n          \"name\": \"Nizami Street\",\n          \"city\": \"Baku\",\n          \"country\": \"Azerbaijan\",\n          \"countrycode\": \"AZ\",\n          \"point\": {\n            \"lat\": 40.3777,\n            \"lng\": 49.8516\n          }\n        }\n      ]\n    }\n  ],\n  \"count\": 1,\n  \"took\": 12\n}"},{"id":"5f3dffa8-0f6e-44ee-977d-5af8f3749cab","name":"Synthetic · 400 · invalid","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"queries\": [\n    \"Nizami k\\u00fc\\u00e7\\u0259si 10\",\n    \"28 May, Bak\\u0131\"\n  ],\n  \"lang\": \"az\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geocode/batch"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"A maximum of 100 queries can be geocoded per batch request.\"\n}"},{"id":"e1f414f8-4aad-4a2c-89f6-66f10c9812e0","name":"Synthetic · 401 · auth","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"queries\": [\n    \"Nizami k\\u00fc\\u00e7\\u0259si 10\",\n    \"28 May, Bak\\u0131\"\n  ],\n  \"lang\": \"az\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geocode/batch"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"42790c56-937d-4138-8699-e32ea3b175c8","name":"Synthetic · 402 · balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"queries\": [\n    \"Nizami k\\u00fc\\u00e7\\u0259si 10\",\n    \"28 May, Bak\\u0131\"\n  ],\n  \"lang\": \"az\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geocode/batch"},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"53ff2633-f20a-4711-82ed-e54706e8bf36","name":"Synthetic · 403 · plan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"queries\": [\n    \"Nizami k\\u00fc\\u00e7\\u0259si 10\",\n    \"28 May, Bak\\u0131\"\n  ],\n  \"lang\": \"az\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geocode/batch"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"61fbf95a-c6bf-494c-be45-2449140ca4ec","name":"Synthetic · 429 · rate","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"queries\": [\n    \"Nizami k\\u00fc\\u00e7\\u0259si 10\",\n    \"28 May, Bak\\u0131\"\n  ],\n  \"lang\": \"az\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geocode/batch"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"b429e05d-7826-4e31-bd91-38e29bed639b","name":"Synthetic · 500 · upstream","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"queries\": [\n    \"Nizami k\\u00fc\\u00e7\\u0259si 10\",\n    \"28 May, Bak\\u0131\"\n  ],\n  \"lang\": \"az\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geocode/batch"},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"6ba8e8d2-f0dc-49af-8f2d-975bddaa0353"},{"name":"Read source place attributes","id":"58eabe15-8083-41a7-acb6-0c59e599a3d0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/places/details","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: see operation description below. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>Places scope; one credit. Read one OpenStreetMap object by its search result ID. Source object cached for one hour. Missing attributes and open_now remain null. Source timestamp reflects the OSM object edit, not independent business verification. Twenty calls per minute per key; source cache misses share a global thirty-per-minute limit. Failed lookups are refunded.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>yes</td>\n<td>osm:N:123, osm:W:123 or osm:R:123 from a search result {\"maxLength\": 24}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"maxLength\": 24,\n      \"description\": \"osm:N:123, osm:W:123 or osm:R:123 from a search result\"\n    }\n  },\n  \"required\": [\n    \"id\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>402</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>422</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>502</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","places","details"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"1ababcc3-79cf-429f-8557-5ddeeec7d0a5","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/places/details"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"place\": {\n    \"id\": \"osm:N:1\",\n    \"name\": \"Example cafe\",\n    \"details\": {\n      \"phone\": null,\n      \"website\": null,\n      \"opening_hours\": null,\n      \"wheelchair\": null,\n      \"source\": \"openstreetmap\",\n      \"license\": \"ODbL-1.0\",\n      \"observed_at\": null,\n      \"source_updated_at\": null,\n      \"open_now\": null\n    }\n  },\n  \"retrieval\": \"source_object_with_one_hour_cache\"\n}"},{"id":"f2f2c5af-b190-4144-b0ab-7700f40bf2ba","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/places/details"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"58eabe15-8083-41a7-acb6-0c59e599a3d0"},{"name":"Natural language place search","id":"8c8dfba9-43b2-4e89-a40c-fedf82c70ea4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"q\": \"cafes near Berlin\",\n  \"ai\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/natural","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>2 ordinary credits. ai=false uses constrained English parsing on eligible credit plans. ai=true requires active Business, enabled AI service and one of 1,000 shared AI operations per billing month. Enterprise AI is contract-specific; do not assume enabled.</p>\n<p>2 credits; both geocode and places scopes. ai=true enables AI-assisted interpretation for active Business only: 1,000 shared operations/month, 10 requests/minute/account, 2 concurrent, no rollover or automatic overage. Failed operations refund quota and credits. Prompts up to 1,000 characters in AI mode (200 otherwise). Missing or unsupported requirements return 422. Otherwise constrained English grammar: cafes/restaurants/pharmacies/parking/fuel/charging stations near PLACE [within N km]. Use near me with center. Radius 100–5000 m. Up to ten candidates, straight-line distances, not exhaustive. Unsupported conditions return 422.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>q</code></td>\n<td>string</td>\n<td>yes</td>\n<td>{\"minLength\": 1, \"maxLength\": 1000}</td>\n</tr>\n<tr>\n<td><code>ai</code></td>\n<td>boolean</td>\n<td>no</td>\n<td>{\"default\": false}</td>\n</tr>\n<tr>\n<td><code>center</code></td>\n<td>array</td>\n<td>no</td>\n<td>Longitude then latitude; longitude ±180, latitude ±85. {\"minItems\": 2, \"maxItems\": 2}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"q\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 1000\n    },\n    \"ai\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"center\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"items\": {\n        \"type\": \"number\"\n      },\n      \"description\": \"Longitude then latitude; longitude \\u00b1180, latitude \\u00b185.\"\n    }\n  },\n  \"required\": [\n    \"q\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>402</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>422</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>502</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","search","natural"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"1971201d-553f-49da-891b-211342268fad","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"q\": \"cafes near Berlin\",\n  \"ai\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/natural"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"intent\": {\n    \"category\": \"cafe\",\n    \"center\": [\n      13.405,\n      52.52\n    ],\n    \"radius_meters\": 1000,\n    \"resolved_location\": \"Berlin\"\n  },\n  \"places\": [],\n  \"interpretation\": \"constrained_english_grammar\",\n  \"distance_model\": \"straight_line\",\n  \"exhaustive\": false,\n  \"candidate_limit\": 10\n}"},{"id":"4da07cc3-3653-4d04-8299-ea10c163e717","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"q\": \"cafes near Berlin\",\n  \"ai\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/natural"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"8c8dfba9-43b2-4e89-a40c-fedf82c70ea4"},{"name":"Find stops with calculated road detours","id":"5181d8ee-f43c-4b92-b95a-878ebe8da2ec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"start\": [\n    13.405,\n    52.52\n  ],\n  \"end\": [\n    13.388,\n    52.517\n  ],\n  \"category\": \"cafe\",\n  \"max_detour_seconds\": 600,\n  \"limit\": 5\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/places/along-route","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: see operation description below. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>Requires both places and route scopes. 14 credits per successful compound query. Driving only, baseline at most 200 km. Samples five positions, searches within 2 km, checks at most eight unique candidates. Sampled discovery is not exhaustive; duration excludes live traffic.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>start</code></td>\n<td>array</td>\n<td>yes</td>\n<td>Longitude then latitude; longitude ±180, latitude ±85. {\"minItems\": 2, \"maxItems\": 2}</td>\n</tr>\n<tr>\n<td><code>end</code></td>\n<td>array</td>\n<td>yes</td>\n<td>Longitude then latitude; longitude ±180, latitude ±85. {\"minItems\": 2, \"maxItems\": 2}</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>string</td>\n<td>yes</td>\n<td>{\"enum\": [\"fuel\", \"charging_station\", \"restaurant\", \"cafe\", \"parking\", \"pharmacy\"]}</td>\n</tr>\n<tr>\n<td><code>max_detour_seconds</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 1800, \"default\": 600}</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 1, \"maximum\": 8, \"default\": 5}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"start\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"items\": {\n        \"type\": \"number\"\n      },\n      \"description\": \"Longitude then latitude; longitude \\u00b1180, latitude \\u00b185.\"\n    },\n    \"end\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"items\": {\n        \"type\": \"number\"\n      },\n      \"description\": \"Longitude then latitude; longitude \\u00b1180, latitude \\u00b185.\"\n    },\n    \"category\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"fuel\",\n        \"charging_station\",\n        \"restaurant\",\n        \"cafe\",\n        \"parking\",\n        \"pharmacy\"\n      ]\n    },\n    \"max_detour_seconds\": {\n      \"type\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 1800,\n      \"default\": 600\n    },\n    \"limit\": {\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"maximum\": 8,\n      \"default\": 5\n    }\n  },\n  \"required\": [\n    \"start\",\n    \"end\",\n    \"category\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>402</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>422</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>502</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","places","along-route"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"8dd42d9f-3dd4-44b9-a6b7-e8baadc96a97","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"start\": [\n    13.405,\n    52.52\n  ],\n  \"end\": [\n    13.388,\n    52.517\n  ],\n  \"category\": \"cafe\",\n  \"max_detour_seconds\": 600,\n  \"limit\": 5\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/places/along-route"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"places\": [],\n  \"baseline\": {\n    \"duration_seconds\": 300,\n    \"distance_meters\": 2000\n  },\n  \"discovery\": {\n    \"method\": \"sampled_nearby\",\n    \"sample_count\": 5,\n    \"radius_meters\": 2000,\n    \"candidates_found\": 0,\n    \"candidates_checked\": 0,\n    \"exhaustive\": false\n  },\n  \"duration_model\": \"road_network_without_live_traffic\"\n}"},{"id":"8a5bf032-ade3-4eec-a32e-505a9a010cb0","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"start\": [\n    13.405,\n    52.52\n  ],\n  \"end\": [\n    13.388,\n    52.517\n  ],\n  \"category\": \"cafe\",\n  \"max_detour_seconds\": 600,\n  \"limit\": 5\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/places/along-route"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"5181d8ee-f43c-4b92-b95a-878ebe8da2ec"},{"name":"Search using address components","id":"198db25a-5a6b-494a-a0d8-0e27d2a7b78e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"street\": \"Friedrichstrasse\",\n  \"city\": \"Berlin\",\n  \"countrycode\": \"DE\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/structured","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: see operation description below. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>Geocode scope. 1 credit. Components form a Photon text query. Results include literal normalized component comparison and source-field precision; this is not surveyed positional accuracy or guaranteed address validation. Include street, city or postcode.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>housenumber</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 100}</td>\n</tr>\n<tr>\n<td><code>street</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 100}</td>\n</tr>\n<tr>\n<td><code>city</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 100}</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 100}</td>\n</tr>\n<tr>\n<td><code>postcode</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 100}</td>\n</tr>\n<tr>\n<td><code>countrycode</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 2}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"housenumber\": {\n      \"type\": \"string\",\n      \"maxLength\": 100\n    },\n    \"street\": {\n      \"type\": \"string\",\n      \"maxLength\": 100\n    },\n    \"city\": {\n      \"type\": \"string\",\n      \"maxLength\": 100\n    },\n    \"state\": {\n      \"type\": \"string\",\n      \"maxLength\": 100\n    },\n    \"postcode\": {\n      \"type\": \"string\",\n      \"maxLength\": 100\n    },\n    \"countrycode\": {\n      \"type\": \"string\",\n      \"maxLength\": 2\n    }\n  },\n  \"required\": []\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>402</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>422</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>502</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","search","structured"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"c58090aa-63fc-412b-b2ab-062d567f8af9","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"street\": \"Friedrichstrasse\",\n  \"city\": \"Berlin\",\n  \"countrycode\": \"DE\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/structured"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"features\": [],\n  \"search_method\": \"composed_address_query\"\n}"},{"id":"55175a60-9068-4549-be7a-abc72626dee1","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"street\": \"Friedrichstrasse\",\n  \"city\": \"Berlin\",\n  \"countrycode\": \"DE\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/structured"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"198db25a-5a6b-494a-a0d8-0e27d2a7b78e"},{"name":"Get place suggestions and retrieval tokens","id":"12daf767-76ff-42b4-a7f6-84c9c12cacf4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"q\": \"Paris\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/suggest","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: see operation description below. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>Geocode scope. 1 credit. Tokens are owner-bound and expire after ten minutes. Use POST body; do not place tokens in URLs.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>q</code></td>\n<td>string</td>\n<td>yes</td>\n<td>{\"minLength\": 1, \"maxLength\": 200}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"q\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200\n    }\n  },\n  \"required\": [\n    \"q\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>402</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>422</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>502</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","search","suggest"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"6129e5bc-0380-44db-9fb2-73743b61dd6a","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"q\": \"Paris\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/suggest"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"suggestions\": [\n    {\n      \"id\": \"osm:N:1\",\n      \"name\": \"Example cafe\",\n      \"address\": {\n        \"city\": \"Berlin\",\n        \"countrycode\": \"de\"\n      },\n      \"token\": \"EXAMPLE_ONLY_NOT_A_VALID_TOKEN\"\n    }\n  ],\n  \"expires_in_seconds\": 600\n}"},{"id":"173f68bf-f547-4897-845c-593549f937e2","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"q\": \"Paris\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/suggest"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"12daf767-76ff-42b4-a7f6-84c9c12cacf4"},{"name":"Retrieve a signed suggestion snapshot","id":"e4af4108-f209-4f7e-ad83-8782f1c6c3b2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"token\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/retrieve","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: see operation description below. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>Geocode scope. 1 credit. Returns the suggestion snapshot, not a new live provider lookup. Token must belong to the current key owner and be unexpired.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>token</code></td>\n<td>string</td>\n<td>yes</td>\n<td>{\"maxLength\": 16384}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"token\": {\n      \"type\": \"string\",\n      \"maxLength\": 16384\n    }\n  },\n  \"required\": [\n    \"token\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>402</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>422</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>502</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","search","retrieve"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"fd3b3823-bb9e-453b-bfd2-fa79f51c9be3","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"token\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/retrieve"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"place\": {\n    \"id\": \"osm:N:1\",\n    \"name\": \"Example cafe\",\n    \"point\": [\n      13.405,\n      52.52\n    ],\n    \"address\": {\n      \"city\": \"Berlin\",\n      \"countrycode\": \"de\"\n    }\n  },\n  \"retrieval\": \"signed_suggestion_snapshot\"\n}"},{"id":"f9925481-087b-44ca-9c16-42afbab31b47","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"token\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/search/retrieve"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"e4af4108-f209-4f7e-ad83-8782f1c6c3b2"},{"name":"Reverse geocoding","id":"7aa6393d-e420-4ea6-9df7-664f0217489e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/geocode?reverse=true&point=48.8566,2.3522","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Geocoding API converts free-text addresses into precise coordinates (forward) and coordinates back into readable addresses (reverse). Forward search runs on a self-hosted Photon engine for fast, typo-tolerant, multilingual autocomplete that covers streets, addresses and points of interest; reverse runs on Nominatim for accurate structured results. Relevance controls — location bias, bounding box, category and strict country and city filters — let you tune results for any use case.</p>\n<p>Without country, search is global. country=AZ restricts results to Azerbaijan; country=AZ&amp;city=Bakı restricts them to Baku in Azerbaijan. No match returns HTTP 200 with an empty list, without expanding to another area. A city without a country or an invalid country code returns HTTP 400 InvalidGeocodeFilter. lat/lon only affect proximity ranking and cannot override these filters. Records without confirmed city metadata are excluded from city-filtered results.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>q</strong> (query, optional): The address to search (e.g. \"Nizami Street, Baku\"). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>reverse</strong> (query, optional): Must be true to perform reverse geocoding (searching from coordinate to address). Schema: <code>{\"type\": \"boolean\"}</code></li>\n<li><strong>point</strong> (query, optional): Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>limit</strong> (query, optional): Maximum number of results to return (1–20, default 5). Schema: <code>{\"type\": \"integer\"}</code></li>\n<li><strong>lang</strong> (query, optional): Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>lat</strong> (query, optional): Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: <code>{\"type\": \"number\"}</code></li>\n<li><strong>lon</strong> (query, optional): Longitude to bias results toward. Pair with lat. Schema: <code>{\"type\": \"number\"}</code></li>\n<li><strong>bbox</strong> (query, optional): Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>osm_tag</strong> (query, optional): Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>country</strong> (query, optional): ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>city</strong> (query, optional): Strict city filter, for example Baku. Requires exactly one country code. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>elastic</strong> (query, optional): Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: <code>{\"type\": \"boolean\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Matching results within all supplied filters. No match returns an empty list; scope is never expanded.</li>\n<li><strong>400</strong>: InvalidGeocodeFilter: invalid country code, or city without exactly one country. Invalid filters do not consume credits.</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","geocode"],"host":["https://osrmroute.com"],"query":[{"disabled":true,"description":{"content":"<p>The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"q","value":"Nizami street, Baku"},{"description":{"content":"<p>Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}</p>\n","type":"text/plain"},"key":"reverse","value":"true"},{"description":{"content":"<p>Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"point","value":"48.8566,2.3522"},{"disabled":true,"description":{"content":"<p>Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}</p>\n","type":"text/plain"},"key":"limit","value":"5"},{"disabled":true,"description":{"content":"<p>Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"lang","value":"en"},{"disabled":true,"description":{"content":"<p>Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}</p>\n","type":"text/plain"},"key":"lat","value":"40.3755"},{"disabled":true,"description":{"content":"<p>Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}</p>\n","type":"text/plain"},"key":"lon","value":"49.8516"},{"disabled":true,"description":{"content":"<p>Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"bbox","value":"49.75,40.30,49.95,40.45"},{"disabled":true,"description":{"content":"<p>Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"osm_tag","value":"amenity:restaurant"},{"disabled":true,"description":{"content":"<p>ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"country","value":"AZ"},{"disabled":true,"description":{"content":"<p>Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"city","value":"Bakı"},{"disabled":true,"description":{"content":"<p>Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}</p>\n","type":"text/plain"},"key":"elastic","value":"true"}],"variable":[]}},"response":[{"id":"2fd584bf-41da-4986-8321-24eaa7ec653b","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?reverse=true&point=48.8566,2.3522","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}","disabled":true},{"key":"reverse","value":"true","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"},{"key":"point","value":"48.8566,2.3522","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"hits\": [\n    {\n      \"name\": \"Nizami Street\",\n      \"city\": \"Baku\",\n      \"country\": \"Azerbaijan\",\n      \"countrycode\": \"AZ\",\n      \"point\": {\n        \"lat\": 40.3777,\n        \"lng\": 49.8516\n      }\n    }\n  ],\n  \"took\": 12\n}"},{"id":"d020f6f9-9808-4380-949f-08a62ec2b900","name":"Synthetic · 200 · noMatch","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?reverse=true&point=48.8566,2.3522","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}","disabled":true},{"key":"reverse","value":"true","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"},{"key":"point","value":"48.8566,2.3522","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"hits\": [],\n  \"took\": 1\n}"},{"id":"336f5a27-42c6-48a3-a5db-8c4b1e174e66","name":"Synthetic · 400 · example","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?reverse=true&point=48.8566,2.3522","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}","disabled":true},{"key":"reverse","value":"true","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"},{"key":"point","value":"48.8566,2.3522","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"InvalidGeocodeFilter\",\n  \"error\": \"city requires exactly one country, for example country=AZ&city=Bak\\u0131.\"\n}"},{"id":"ba4da9ab-3b0d-47fe-8c6d-77aeb796abf2","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?reverse=true&point=48.8566,2.3522","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}","disabled":true},{"key":"reverse","value":"true","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"},{"key":"point","value":"48.8566,2.3522","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"2b53502e-1e18-4f97-9b6c-ba25dc53cb21","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?reverse=true&point=48.8566,2.3522","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}","disabled":true},{"key":"reverse","value":"true","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"},{"key":"point","value":"48.8566,2.3522","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"040770f3-9bd8-459f-96fa-423237785d4d","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?reverse=true&point=48.8566,2.3522","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}","disabled":true},{"key":"reverse","value":"true","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"},{"key":"point","value":"48.8566,2.3522","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"5bdeabdf-814b-4581-85df-1b7869d9d404","name":"Synthetic · 422 · NoNearbyAddress","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?reverse=true&point=48.8566,2.3522","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}","disabled":true},{"key":"reverse","value":"true","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"},{"key":"point","value":"48.8566,2.3522","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"NoNearbyAddress\",\n  \"error\": \"No indexed address or place within 1 km.\"\n}"},{"id":"8515228d-7061-4d87-a0ca-df0bf7b00f4f","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?reverse=true&point=48.8566,2.3522","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}","disabled":true},{"key":"reverse","value":"true","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"},{"key":"point","value":"48.8566,2.3522","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"4da27a00-4b2f-4095-acdb-4c2af3eaf5c7","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/geocode?reverse=true&point=48.8566,2.3522","host":["https://osrmroute.com"],"path":["api","1","geocode"],"query":[{"key":"q","value":"Nizami street, Baku","description":"The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}","disabled":true},{"key":"reverse","value":"true","description":"Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"},{"key":"point","value":"48.8566,2.3522","description":"Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"},{"key":"limit","value":"5","description":"Maximum number of results to return (1–20, default 5). Schema: {\"type\": \"integer\"}","disabled":true},{"key":"lang","value":"en","description":"Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}","disabled":true},{"key":"lat","value":"40.3755","description":"Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}","disabled":true},{"key":"lon","value":"49.8516","description":"Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}","disabled":true},{"key":"bbox","value":"49.75,40.30,49.95,40.45","description":"Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}","disabled":true},{"key":"osm_tag","value":"amenity:restaurant","description":"Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}","disabled":true},{"key":"country","value":"AZ","description":"ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}","disabled":true},{"key":"city","value":"Bakı","description":"Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}","disabled":true},{"key":"elastic","value":"true","description":"Elastic (fuzzy, high-recall) search — default true. Tolerates typos, missing diacritics (ə↔e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"7aa6393d-e420-4ea6-9df7-664f0217489e"}],"id":"38fb87ad-4a01-435b-8008-a524d414eebe","_postman_id":"38fb87ad-4a01-435b-8008-a524d414eebe","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}}},{"name":"03 · Geospatial utilities","item":[{"name":"Location Clustering","id":"5eb2e274-05b1-49b8-be77-55d721d4513e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    [\n      49.85,\n      40.37\n    ],\n    [\n      49.86,\n      40.4\n    ],\n    [\n      49.83,\n      40.39\n    ]\n  ],\n  \"clusters\": 2\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/cluster","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 3 credits. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Location Clustering API groups large sets of locations into balanced clusters by proximity. Give it hundreds of points and a target number of groups, and it partitions them into compact, well-separated clusters — perfect for splitting deliveries across drivers, defining service territories or pre-grouping stops before optimisation.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>customers</code></td>\n<td>array</td>\n<td>yes</td>\n<td>Customer coordinates and weights to be clustered.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"customers\": {\n      \"type\": \"array\",\n      \"items\": {},\n      \"description\": \"Customer coordinates and weights to be clustered.\"\n    }\n  },\n  \"required\": [\n    \"customers\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","cluster"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"986b1f8b-839d-44f3-91c9-e2e72a890990","name":"Synthetic · 200 · success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    [\n      49.85,\n      40.37\n    ],\n    [\n      49.86,\n      40.4\n    ],\n    [\n      49.83,\n      40.39\n    ]\n  ],\n  \"clusters\": 2\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/cluster"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"finished\",\n  \"job_id\": \"cluster-1234567890\",\n  \"processing_time\": 0,\n  \"no_clusters\": 1,\n  \"clusters\": [\n    {\n      \"ids\": [\n        \"s1\",\n        \"s2\"\n      ],\n      \"center\": [\n        40.385,\n        49.855\n      ],\n      \"size\": 2\n    }\n  ]\n}"},{"id":"308e5492-401f-4686-892c-e0efc7f0a312","name":"Synthetic · 400 · invalid","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    [\n      49.85,\n      40.37\n    ],\n    [\n      49.86,\n      40.4\n    ],\n    [\n      49.83,\n      40.39\n    ]\n  ],\n  \"clusters\": 2\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/cluster"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Provide a \\\"customers\\\" array with valid coordinates.\"\n}"},{"id":"de928272-115a-45a6-85b4-45130bdf9c85","name":"Synthetic · 401 · auth","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    [\n      49.85,\n      40.37\n    ],\n    [\n      49.86,\n      40.4\n    ],\n    [\n      49.83,\n      40.39\n    ]\n  ],\n  \"clusters\": 2\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/cluster"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"9f19537e-85a3-4b67-a24c-186b9408a166","name":"Synthetic · 402 · balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    [\n      49.85,\n      40.37\n    ],\n    [\n      49.86,\n      40.4\n    ],\n    [\n      49.83,\n      40.39\n    ]\n  ],\n  \"clusters\": 2\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/cluster"},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"c7d71703-9a36-4718-88ab-5f3cde4348fa","name":"Synthetic · 403 · plan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    [\n      49.85,\n      40.37\n    ],\n    [\n      49.86,\n      40.4\n    ],\n    [\n      49.83,\n      40.39\n    ]\n  ],\n  \"clusters\": 2\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/cluster"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"cffce6de-9897-4542-96cd-d287d021c1db","name":"Synthetic · 429 · rate","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    [\n      49.85,\n      40.37\n    ],\n    [\n      49.86,\n      40.4\n    ],\n    [\n      49.83,\n      40.39\n    ]\n  ],\n  \"clusters\": 2\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/cluster"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"a95c868a-ef3f-4821-8d7c-2868396ef5b3","name":"Synthetic · 500 · upstream","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customers\": [\n    [\n      49.85,\n      40.37\n    ],\n    [\n      49.86,\n      40.4\n    ],\n    [\n      49.83,\n      40.39\n    ]\n  ],\n  \"clusters\": 2\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/cluster"},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"5eb2e274-05b1-49b8-be77-55d721d4513e"},{"name":"Timezone API","id":"3bae230e-2e93-4c26-9089-608b6bd281e8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Timezone API returns the IANA time zone (e.g. Asia/Baku) for any coordinate worldwide, along with the current UTC offset, whether daylight saving is in effect, the zone abbreviation and the local time. Pass an optional timestamp to resolve the offset for a past or future moment. Backed by a global dataset — it works anywhere, not just our map coverage.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, required): Coordinate as lat,lng. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>lat</strong> (query, optional): Latitude (alternative to point). Schema: <code>{\"type\": \"number\"}</code></li>\n<li><strong>lon</strong> (query, optional): Longitude (alternative to point). Schema: <code>{\"type\": \"number\"}</code></li>\n<li><strong>timestamp</strong> (query, optional): Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: <code>{\"type\": \"integer\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","timezone"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Coordinate as lat,lng. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"point","value":"40.3755,49.8516"},{"description":{"content":"<p>Latitude (alternative to point). Schema: {\"type\": \"number\"}</p>\n","type":"text/plain"},"key":"lat","value":"40.3755"},{"description":{"content":"<p>Longitude (alternative to point). Schema: {\"type\": \"number\"}</p>\n","type":"text/plain"},"key":"lon","value":"49.8516"},{"disabled":true,"description":{"content":"<p>Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}</p>\n","type":"text/plain"},"key":"timestamp","value":"now"}],"variable":[]}},"response":[{"id":"341d64b1-0419-46b5-a4c4-0ac2133d73dc","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","timezone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"lat","value":"40.3755","description":"Latitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"timestamp","value":"now","description":"Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"timezone\": \"Asia/Baku\",\n  \"point\": {\n    \"lat\": 40.3777,\n    \"lng\": 49.8516\n  },\n  \"utc_offset\": \"+04:00\",\n  \"utc_offset_seconds\": 14400,\n  \"dst\": false,\n  \"abbreviation\": \"GMT+4\",\n  \"local_time\": \"2026-01-01T16:00:00\",\n  \"utc_time\": \"2026-01-01T12:00:00.000Z\"\n}"},{"id":"f3d2bcdc-a15b-4a19-ad07-2af969310086","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","timezone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"lat","value":"40.3755","description":"Latitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"timestamp","value":"now","description":"Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Provide a valid coordinate via point=lat,lng or lat= & lon=.\"\n}"},{"id":"a488bf79-99cd-4656-a1f0-5ecde78d392a","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","timezone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"lat","value":"40.3755","description":"Latitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"timestamp","value":"now","description":"Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"df93d127-6052-420b-b655-5a0f0eb61253","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","timezone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"lat","value":"40.3755","description":"Latitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"timestamp","value":"now","description":"Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"bac0e0a7-0db9-442d-9811-372f3c6f6bdc","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","timezone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"lat","value":"40.3755","description":"Latitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"timestamp","value":"now","description":"Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"c7cfe1ff-5fef-4d00-a32d-f76a883c1697","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","timezone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"lat","value":"40.3755","description":"Latitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"timestamp","value":"now","description":"Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"da8d713c-8c2b-4195-8158-2692399a75ae","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516","host":["https://osrmroute.com"],"path":["api","1","timezone"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"lat","value":"40.3755","description":"Latitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"lon","value":"49.8516","description":"Longitude (alternative to point). Schema: {\"type\": \"number\"}"},{"key":"timestamp","value":"now","description":"Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"3bae230e-2e93-4c26-9089-608b6bd281e8"},{"name":"Elevation API","id":"54e77e1c-7fb3-4b72-959d-fc30dc0414b2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit / 10 points. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Elevation API returns the height above sea level (metres) for any coordinate on Earth, using global SRTM data. Query a single point, a batch of points, or a full route/track for an elevation profile — send up to 100 points via GET or 1000 via POST. Values are bilinearly interpolated for smooth results; ocean returns 0.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, required): Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: <code>{\"type\": \"array\", \"items\": {\"type\": \"string\"}}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","elevation"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}</p>\n","type":"text/plain"},"key":"point","value":"40.3777,49.8516"},{"description":{"content":"<p>Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}</p>\n","type":"text/plain"},"key":"point","value":"40.4,49.86"}],"variable":[]}},"response":[{"id":"9526300e-fdcb-4d75-bed8-e0c0d8340124","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","elevation"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"point\": {\n        \"lat\": 40.3777,\n        \"lng\": 49.8516\n      },\n      \"elevation\": null\n    }\n  ],\n  \"unit\": \"meters\"\n}"},{"id":"3b97ebd7-c34a-4aaf-98a2-734ae66bc2a9","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","elevation"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"A maximum of 100 points can be queried per GET request; use POST for larger batches.\"\n}"},{"id":"438fa229-5cb4-4656-9275-e3fbcc012a2d","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","elevation"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"9e15e48a-d597-4fb4-9f36-aa69f8754ee5","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","elevation"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"241eea25-1e27-471e-885e-5c88365dac55","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","elevation"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"7af67de5-e6c5-484a-b430-ce3bedea0134","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","elevation"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"e79ab392-a089-4591-aa78-fdb655a182a2","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86","host":["https://osrmroute.com"],"path":["api","1","elevation"],"query":[{"key":"point","value":"40.3777,49.8516","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"},{"key":"point","value":"40.4,49.86","description":"Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"54e77e1c-7fb3-4b72-959d-fc30dc0414b2"},{"name":"Boundary Lookup API","id":"a2a68027-de20-45da-bb40-3e698e1a6eb9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/boundary?point=40.3755,49.8516","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Boundary Lookup API tells you which administrative areas a coordinate falls in — country, state, county, city and district — from self-hosted OSM data. Optionally return the containing boundary as GeoJSON to draw it on a map. Perfect for regional pricing, compliance, territory assignment and analytics.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, required): Coordinate as lat,lng. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>polygon</strong> (query, optional): Set true to also return the boundary as GeoJSON. Schema: <code>{\"type\": \"boolean\"}</code></li>\n<li><strong>lang</strong> (query, optional): Language code for place names. Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>422</strong>: Error Codes (HTTP 422)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","boundary"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Coordinate as lat,lng. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"point","value":"40.3755,49.8516"},{"disabled":true,"description":{"content":"<p>Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}</p>\n","type":"text/plain"},"key":"polygon","value":"false"},{"disabled":true,"description":{"content":"<p>Language code for place names. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"lang","value":"en"}],"variable":[]}},"response":[{"id":"5bb41cbf-c891-4b2f-b58d-70a0ff42a6e6","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/boundary?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","boundary"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"polygon","value":"false","description":"Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for place names. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"point\": {\n    \"lat\": 40.3777,\n    \"lng\": 49.8516\n  },\n  \"display_name\": \"Baku, Azerbaijan\",\n  \"boundary_scope\": \"city\",\n  \"country\": \"Azerbaijan\",\n  \"countrycode\": \"AZ\",\n  \"city\": \"Baku\",\n  \"boundary\": {\n    \"type\": \"Polygon\",\n    \"coordinates\": [\n      [\n        [\n          49.84,\n          40.37\n        ],\n        [\n          49.87,\n          40.37\n        ],\n        [\n          49.87,\n          40.4\n        ],\n        [\n          49.84,\n          40.37\n        ]\n      ]\n    ]\n  }\n}"},{"id":"f1741b61-446f-49d7-accb-f5f20ded9da5","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/boundary?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","boundary"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"polygon","value":"false","description":"Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for place names. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Provide a valid coordinate via point=lat,lng or lat= & lon=.\"\n}"},{"id":"d10ca8a4-d8e1-4205-8878-3d5e2b0e764b","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/boundary?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","boundary"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"polygon","value":"false","description":"Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for place names. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"fd003c0a-0a52-406d-9707-a9f35796323b","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/boundary?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","boundary"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"polygon","value":"false","description":"Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for place names. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"9a3a899e-1afa-42b6-abd3-f5436943b552","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/boundary?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","boundary"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"polygon","value":"false","description":"Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for place names. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"1d9cebe4-60fe-4820-9849-fdbacf58ac41","name":"Synthetic · 422 · BoundaryCoverageUnavailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/boundary?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","boundary"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"polygon","value":"false","description":"Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for place names. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"BoundaryCoverageUnavailable\",\n  \"error\": \"Detailed administrative boundary data is not available at this coordinate.\"\n}"},{"id":"f03a2b1e-46c2-45f6-8f3e-8d9f3e3ef488","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/boundary?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","boundary"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"polygon","value":"false","description":"Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for place names. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"0ed9463a-dfd6-41d5-a2f9-a9fcd2955be2","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/boundary?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","boundary"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"polygon","value":"false","description":"Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}","disabled":true},{"key":"lang","value":"en","description":"Language code for place names. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"a2a68027-de20-45da-bb40-3e698e1a6eb9"},{"name":"Geofencing API","id":"6e61e510-f953-4d84-9813-35b1a7eecacd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fences\": [\n    {\n      \"id\": \"zone1\",\n      \"polygon\": [\n        [\n          40.4,\n          49.85\n        ],\n        [\n          40.43,\n          49.85\n        ],\n        [\n          40.43,\n          49.9\n        ],\n        [\n          40.4,\n          49.9\n        ]\n      ]\n    }\n  ],\n  \"points\": [\n    [\n      40.41,\n      49.87\n    ],\n    [\n      40.5,\n      50.1\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geofence","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit / 100 points. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Geofencing API checks, in a single request, which of your zones each point is inside. Define fences as polygons or as a center + radius, then send a batch of points; the response lists the matching fence ids per point. Pure geometry, computed in-house with no rate-dependent upstreams — ideal for delivery zones, alerts and access control.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>fences</code></td>\n<td>array</td>\n<td>yes</td>\n<td>Array of fences: '{' id?, polygon:[[lat,lng],...] '}' or '{' id?, center:[lat,lng], radius_m '}'. Up to 100.</td>\n</tr>\n<tr>\n<td><code>points</code></td>\n<td>array</td>\n<td>yes</td>\n<td>Array of [lat,lng] points to test (up to 1000).</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"fences\": {\n      \"type\": \"array\",\n      \"items\": {},\n      \"description\": \"Array of fences: '{' id?, polygon:[[lat,lng],...] '}' or '{' id?, center:[lat,lng], radius_m '}'. Up to 100.\"\n    },\n    \"points\": {\n      \"type\": \"array\",\n      \"items\": {},\n      \"description\": \"Array of [lat,lng] points to test (up to 1000).\",\n      \"example\": [\n        [\n          40.3755,\n          49.8516\n        ],\n        [\n          40.3892,\n          49.8378\n        ]\n      ]\n    }\n  },\n  \"required\": [\n    \"fences\",\n    \"points\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","geofence"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"82ee5e2f-679d-4f11-81ff-efd48a0bb214","name":"Synthetic · 200 · success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fences\": [\n    {\n      \"id\": \"zone1\",\n      \"polygon\": [\n        [\n          40.4,\n          49.85\n        ],\n        [\n          40.43,\n          49.85\n        ],\n        [\n          40.43,\n          49.9\n        ],\n        [\n          40.4,\n          49.9\n        ]\n      ]\n    }\n  ],\n  \"points\": [\n    [\n      40.41,\n      49.87\n    ],\n    [\n      40.5,\n      50.1\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geofence"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"point\": {\n        \"lat\": 40.3777,\n        \"lng\": 49.8516\n      },\n      \"inside\": [\n        \"depot\"\n      ]\n    }\n  ],\n  \"count\": 1,\n  \"took\": 1\n}"},{"id":"aabc2dd7-b1ff-42c8-9c3a-aa7017f1cef2","name":"Synthetic · 400 · invalid","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fences\": [\n    {\n      \"id\": \"zone1\",\n      \"polygon\": [\n        [\n          40.4,\n          49.85\n        ],\n        [\n          40.43,\n          49.85\n        ],\n        [\n          40.43,\n          49.9\n        ],\n        [\n          40.4,\n          49.9\n        ]\n      ]\n    }\n  ],\n  \"points\": [\n    [\n      40.41,\n      49.87\n    ],\n    [\n      40.5,\n      50.1\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geofence"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Limits: up to 100 fences and 1000 points per request.\"\n}"},{"id":"1aefbd28-37b2-43a1-a7a6-3744019f4475","name":"Synthetic · 401 · auth","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fences\": [\n    {\n      \"id\": \"zone1\",\n      \"polygon\": [\n        [\n          40.4,\n          49.85\n        ],\n        [\n          40.43,\n          49.85\n        ],\n        [\n          40.43,\n          49.9\n        ],\n        [\n          40.4,\n          49.9\n        ]\n      ]\n    }\n  ],\n  \"points\": [\n    [\n      40.41,\n      49.87\n    ],\n    [\n      40.5,\n      50.1\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geofence"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"6ddaf3e8-c2f4-4ab1-830b-d70df9bdd9a2","name":"Synthetic · 402 · balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fences\": [\n    {\n      \"id\": \"zone1\",\n      \"polygon\": [\n        [\n          40.4,\n          49.85\n        ],\n        [\n          40.43,\n          49.85\n        ],\n        [\n          40.43,\n          49.9\n        ],\n        [\n          40.4,\n          49.9\n        ]\n      ]\n    }\n  ],\n  \"points\": [\n    [\n      40.41,\n      49.87\n    ],\n    [\n      40.5,\n      50.1\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geofence"},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"342c7ca9-44d0-43b3-8532-6302e2e18058","name":"Synthetic · 403 · plan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fences\": [\n    {\n      \"id\": \"zone1\",\n      \"polygon\": [\n        [\n          40.4,\n          49.85\n        ],\n        [\n          40.43,\n          49.85\n        ],\n        [\n          40.43,\n          49.9\n        ],\n        [\n          40.4,\n          49.9\n        ]\n      ]\n    }\n  ],\n  \"points\": [\n    [\n      40.41,\n      49.87\n    ],\n    [\n      40.5,\n      50.1\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geofence"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"46a5e84a-dc61-48b2-8d55-6a3c8ca85249","name":"Synthetic · 429 · rate","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fences\": [\n    {\n      \"id\": \"zone1\",\n      \"polygon\": [\n        [\n          40.4,\n          49.85\n        ],\n        [\n          40.43,\n          49.85\n        ],\n        [\n          40.43,\n          49.9\n        ],\n        [\n          40.4,\n          49.9\n        ]\n      ]\n    }\n  ],\n  \"points\": [\n    [\n      40.41,\n      49.87\n    ],\n    [\n      40.5,\n      50.1\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geofence"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"f652f211-4425-4134-8967-d757e58fe6dc","name":"Synthetic · 500 · upstream","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fences\": [\n    {\n      \"id\": \"zone1\",\n      \"polygon\": [\n        [\n          40.4,\n          49.85\n        ],\n        [\n          40.43,\n          49.85\n        ],\n        [\n          40.43,\n          49.9\n        ],\n        [\n          40.4,\n          49.9\n        ]\n      ]\n    }\n  ],\n  \"points\": [\n    [\n      40.41,\n      49.87\n    ],\n    [\n      40.5,\n      50.1\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geofence"},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"6e61e510-f953-4d84-9813-35b1a7eecacd"},{"name":"Elevation Profile API","id":"43979a33-0a67-4674-a11a-6cbd7907b96d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    [\n      40.37,\n      49.85\n    ],\n    [\n      40.8,\n      48.9\n    ],\n    [\n      41.3,\n      48.05\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/elevation/profile","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit / 10 points. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Elevation Profile API takes a path — a points array or an encoded polyline — and returns the elevation at every point, plus total ascent, total descent, min/max elevation and cumulative distance. Perfect for cycling, hiking and running apps that need a climb profile. Global SRTM data, so it works anywhere.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>points</code></td>\n<td>array</td>\n<td>no</td>\n<td>Array of [lat,lng] points forming the path (&gt;=2, up to 2000).</td>\n</tr>\n<tr>\n<td><code>polyline</code></td>\n<td>string</td>\n<td>no</td>\n<td>Encoded polyline as an alternative to points.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"points\": {\n      \"type\": \"array\",\n      \"items\": {},\n      \"description\": \"Array of [lat,lng] points forming the path (&gt;=2, up to 2000).\",\n      \"example\": [\n        [\n          40.3755,\n          49.8516\n        ],\n        [\n          40.3892,\n          49.8378\n        ]\n      ]\n    },\n    \"polyline\": {\n      \"type\": \"string\",\n      \"description\": \"Encoded polyline as an alternative to points.\"\n    }\n  }\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","elevation","profile"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"c1eb099c-b81e-4d14-aee6-fb963f6b8070","name":"Synthetic · 200 · success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    [\n      40.37,\n      49.85\n    ],\n    [\n      40.8,\n      48.9\n    ],\n    [\n      41.3,\n      48.05\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/elevation/profile"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"profile\": [\n    {\n      \"point\": {\n        \"lat\": 40.3777,\n        \"lng\": 49.8516\n      },\n      \"elevation\": null,\n      \"distance\": 0\n    },\n    {\n      \"point\": {\n        \"lat\": 40.4,\n        \"lng\": 49.86\n      },\n      \"elevation\": null,\n      \"distance\": 2590\n    }\n  ],\n  \"total_ascent\": 0,\n  \"total_descent\": 0,\n  \"min_elevation\": null,\n  \"max_elevation\": null,\n  \"distance\": 2590,\n  \"unit\": \"meters\",\n  \"took\": 12\n}"},{"id":"f11cb87a-69f2-4729-ae46-858c1c13e717","name":"Synthetic · 400 · invalid","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    [\n      40.37,\n      49.85\n    ],\n    [\n      40.8,\n      48.9\n    ],\n    [\n      41.3,\n      48.05\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/elevation/profile"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"A maximum of 2000 points is allowed per request.\"\n}"},{"id":"673a5232-4bee-45bb-9143-a873614f2ef2","name":"Synthetic · 401 · auth","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    [\n      40.37,\n      49.85\n    ],\n    [\n      40.8,\n      48.9\n    ],\n    [\n      41.3,\n      48.05\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/elevation/profile"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"c00c5234-981a-452d-b00e-9c21796d9f6c","name":"Synthetic · 402 · balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    [\n      40.37,\n      49.85\n    ],\n    [\n      40.8,\n      48.9\n    ],\n    [\n      41.3,\n      48.05\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/elevation/profile"},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"1c023da1-1843-41fe-ae2a-ee9911d075eb","name":"Synthetic · 403 · plan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    [\n      40.37,\n      49.85\n    ],\n    [\n      40.8,\n      48.9\n    ],\n    [\n      41.3,\n      48.05\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/elevation/profile"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"57400bc2-04d6-4be4-a2a2-8c25e41086a5","name":"Synthetic · 429 · rate","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    [\n      40.37,\n      49.85\n    ],\n    [\n      40.8,\n      48.9\n    ],\n    [\n      41.3,\n      48.05\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/elevation/profile"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"12550cb1-4998-41be-b29b-9283e247c747","name":"Synthetic · 500 · upstream","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    [\n      40.37,\n      49.85\n    ],\n    [\n      40.8,\n      48.9\n    ],\n    [\n      41.3,\n      48.05\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/elevation/profile"},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"43979a33-0a67-4674-a11a-6cbd7907b96d"},{"name":"Solar API","id":"fd87ce29-eef0-4460-a679-adce222b835e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/solar?point=40.3755,49.8516","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Solar API returns sunrise, sunset, civil dawn and dusk, solar noon, golden hour and total day length for any coordinate and date. Pure astronomy — no map data — so it works everywhere. Ideal for solar planning, photography, agriculture and smart-home automation.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, required): Coordinate as lat,lng. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>date</strong> (query, optional): Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","solar"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Coordinate as lat,lng. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"point","value":"40.3755,49.8516"},{"disabled":true,"description":{"content":"<p>Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"date","value":"today"}],"variable":[]}},"response":[{"id":"769f34b0-ce26-4dd2-9dbc-7936fce8a24b","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/solar?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","solar"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"date","value":"today","description":"Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"point\": {\n    \"lat\": 40.3777,\n    \"lng\": 49.8516\n  },\n  \"date\": \"2026-01-01\",\n  \"sunrise\": \"2026-01-01T04:00:00.000Z\",\n  \"sunset\": \"2026-01-01T13:00:00.000Z\",\n  \"solar_noon\": \"2026-01-01T08:30:00.000Z\",\n  \"day_length_seconds\": 32400\n}"},{"id":"a4e391fd-a082-45c6-9535-1f58f14ecdfc","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/solar?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","solar"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"date","value":"today","description":"Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Provide a valid coordinate via point=lat,lng or lat= & lon=.\"\n}"},{"id":"a8f56dc2-e538-4722-804a-7f6bdbeec897","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/solar?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","solar"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"date","value":"today","description":"Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"b807b5fe-7a29-4b66-8b32-a9bc03b78116","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/solar?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","solar"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"date","value":"today","description":"Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"ed41a791-ab97-4386-8464-ffe223d44620","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/solar?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","solar"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"date","value":"today","description":"Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"e5bf2b7f-21c6-4416-bc7f-a831106b4605","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/solar?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","solar"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"date","value":"today","description":"Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"e0941488-4b06-4519-b870-95d75fdebcd2","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/solar?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","solar"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng. Schema: {\"type\": \"string\"}"},{"key":"date","value":"today","description":"Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"fd87ce29-eef0-4460-a679-adce222b835e"},{"name":"Geometry Utilities API","id":"ef1c86a1-a761-4d55-9c39-ad8c43e5a047","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"op\": \"distance\",\n  \"from\": [\n    40.37,\n    49.85\n  ],\n  \"to\": [\n    40.4,\n    49.86\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geometry","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Geometry Utilities API is spatial math as a service: distance and bearing between points, a destination from a bearing and distance, midpoints, path length, polygon area, centroids, Douglas–Peucker simplification and Google polyline encode/decode. One endpoint, pick the operation with the op field. Pure computation, works worldwide.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>op</code></td>\n<td>string</td>\n<td>yes</td>\n<td>Operation: distance, bearing, destination, midpoint, length, area, centroid, simplify, polyline_encode or polyline_decode.</td>\n</tr>\n<tr>\n<td><code>from</code></td>\n<td>array</td>\n<td>no</td>\n<td>Start point [lat,lng] (for distance/bearing/destination/midpoint).</td>\n</tr>\n<tr>\n<td><code>to</code></td>\n<td>array</td>\n<td>no</td>\n<td>End point [lat,lng] (for distance/bearing/midpoint).</td>\n</tr>\n<tr>\n<td><code>path</code></td>\n<td>array</td>\n<td>no</td>\n<td>Array of [lat,lng] (for length/simplify/polyline_encode).</td>\n</tr>\n<tr>\n<td><code>polygon</code></td>\n<td>array</td>\n<td>no</td>\n<td>Array of [lat,lng] ring (for area).</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"op\": {\n      \"type\": \"string\",\n      \"description\": \"Operation: distance, bearing, destination, midpoint, length, area, centroid, simplify, polyline_encode or polyline_decode.\",\n      \"example\": \"distance\"\n    },\n    \"from\": {\n      \"type\": \"array\",\n      \"items\": {},\n      \"description\": \"Start point [lat,lng] (for distance/bearing/destination/midpoint).\",\n      \"example\": \"[lat,lng]\"\n    },\n    \"to\": {\n      \"type\": \"array\",\n      \"items\": {},\n      \"description\": \"End point [lat,lng] (for distance/bearing/midpoint).\",\n      \"example\": \"[lat,lng]\"\n    },\n    \"path\": {\n      \"type\": \"array\",\n      \"items\": {},\n      \"description\": \"Array of [lat,lng] (for length/simplify/polyline_encode).\"\n    },\n    \"polygon\": {\n      \"type\": \"array\",\n      \"items\": {},\n      \"description\": \"Array of [lat,lng] ring (for area).\"\n    }\n  },\n  \"required\": [\n    \"op\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","geometry"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"cfcb8448-c0c4-4f94-8d1d-21f5174a5f7a","name":"Synthetic · 200 · success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"op\": \"distance\",\n  \"from\": [\n    40.37,\n    49.85\n  ],\n  \"to\": [\n    40.4,\n    49.86\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geometry"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"op\": \"distance\",\n  \"distance\": 2590.25,\n  \"unit\": \"meters\"\n}"},{"id":"487604d0-9270-4a0a-ba19-42ab23987859","name":"Synthetic · 400 · invalid","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"op\": \"distance\",\n  \"from\": [\n    40.37,\n    49.85\n  ],\n  \"to\": [\n    40.4,\n    49.86\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geometry"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid geometry input for the requested op.\"\n}"},{"id":"1e614892-682a-4943-afb8-4876046e07ba","name":"Synthetic · 401 · auth","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"op\": \"distance\",\n  \"from\": [\n    40.37,\n    49.85\n  ],\n  \"to\": [\n    40.4,\n    49.86\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geometry"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"55e04be1-0a7a-4457-b762-ceec7038c58c","name":"Synthetic · 402 · balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"op\": \"distance\",\n  \"from\": [\n    40.37,\n    49.85\n  ],\n  \"to\": [\n    40.4,\n    49.86\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geometry"},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"0ecd141b-de0e-4f4c-8382-e94419a57880","name":"Synthetic · 403 · plan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"op\": \"distance\",\n  \"from\": [\n    40.37,\n    49.85\n  ],\n  \"to\": [\n    40.4,\n    49.86\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geometry"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"479a2079-5d89-4557-9cdc-8e900ced1c81","name":"Synthetic · 429 · rate","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"op\": \"distance\",\n  \"from\": [\n    40.37,\n    49.85\n  ],\n  \"to\": [\n    40.4,\n    49.86\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geometry"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"c18db6d9-f60b-476f-8cb2-cfe12c4752f9","name":"Synthetic · 500 · upstream","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"op\": \"distance\",\n  \"from\": [\n    40.37,\n    49.85\n  ],\n  \"to\": [\n    40.4,\n    49.86\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/1/geometry"},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"ef1c86a1-a761-4d55-9c39-ad8c43e5a047"},{"name":"Coordinate Conversion API","id":"8af23fdc-74c1-4d1a-a415-8627d81ef916","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/convert?point=40.3755,49.8516","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Coordinate Conversion API converts latitude/longitude into UTM and MGRS grid references, and back from MGRS to a coordinate. Useful for surveying, GIS, logistics and defence workflows that speak grid systems. Pure math, global coverage.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, required): Coordinate as lat,lng to convert to UTM/MGRS. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>mgrs</strong> (query, optional): MGRS string to reverse-convert into a coordinate. Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","convert"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"point","value":"40.3755,49.8516"},{"disabled":true,"description":{"content":"<p>MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"mgrs","value":"example"}],"variable":[]}},"response":[{"id":"9567ac9c-07c3-4da5-9a3d-5454a7018922","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/convert?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","convert"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"},{"key":"mgrs","value":"example","description":"MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"point\": {\n    \"lat\": 40.3777,\n    \"lng\": 49.8516\n  },\n  \"mgrs\": \"39TVE0247470007\",\n  \"utm\": {\n    \"zone\": 39,\n    \"band\": \"T\",\n    \"easting\": 402475,\n    \"northing\": 4470007,\n    \"hemisphere\": \"N\"\n  }\n}"},{"id":"5b031670-d32d-4802-b6e2-ce4a452cbc5d","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/convert?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","convert"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"},{"key":"mgrs","value":"example","description":"MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Provide point=lat,lng (or lat= & lon=), or mgrs= to reverse-convert.\"\n}"},{"id":"339506fc-cfeb-4b06-96dd-806097d5a789","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/convert?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","convert"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"},{"key":"mgrs","value":"example","description":"MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"213cffa1-1242-45e9-afce-41af9e5b9903","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/convert?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","convert"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"},{"key":"mgrs","value":"example","description":"MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"5fbd884c-5fc1-485b-90f5-3ce308e32dda","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/convert?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","convert"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"},{"key":"mgrs","value":"example","description":"MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"6c28c64d-f7c4-437a-88e8-94d73d3c9f0c","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/convert?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","convert"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"},{"key":"mgrs","value":"example","description":"MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"7eb9fe60-9065-49c2-aa41-eb1e1e48290d","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/convert?point=40.3755,49.8516","host":["https://osrmroute.com"],"path":["api","1","convert"],"query":[{"key":"point","value":"40.3755,49.8516","description":"Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"},{"key":"mgrs","value":"example","description":"MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"8af23fdc-74c1-4d1a-a415-8627d81ef916"},{"name":"Country Info API","id":"17ecca5d-b9ce-4e82-9357-a77291b4754b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/country?code=AZ","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>The Country Info API returns rich metadata for any country — currency (code, name, symbol), international calling code, official languages, capital, region, flag and population — looked up by ISO 3166 code or name. Backed by a global static dataset, available worldwide.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>code</strong> (query, optional): ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>name</strong> (query, optional): Country name as an alternative to code. Schema: <code>{\"type\": \"string\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Successful response</li>\n<li><strong>400</strong>: Error Codes (HTTP 400)</li>\n<li><strong>401</strong>: Error Codes (HTTP 401)</li>\n<li><strong>402</strong>: Error Codes (HTTP 402)</li>\n<li><strong>403</strong>: Error Codes (HTTP 403)</li>\n<li><strong>404</strong>: Error Codes (HTTP 404)</li>\n<li><strong>429</strong>: Error Codes (HTTP 429)</li>\n<li><strong>500</strong>: Error Codes (HTTP 500)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","country"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"code","value":"AZ"},{"disabled":true,"description":{"content":"<p>Country name as an alternative to code. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"name","value":"Azerbaijan"}],"variable":[]}},"response":[{"id":"5a021ead-1706-4b2d-97d8-0ffbb384b2b8","name":"Synthetic · 200 · success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/country?code=AZ","host":["https://osrmroute.com"],"path":["api","1","country"],"query":[{"key":"code","value":"AZ","description":"ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"},{"key":"name","value":"Azerbaijan","description":"Country name as an alternative to code. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"name\": \"Azerbaijan\",\n  \"official_name\": \"Republic of Azerbaijan\",\n  \"cca2\": \"AZ\",\n  \"cca3\": \"AZE\",\n  \"capital\": \"Baku\",\n  \"region\": \"Asia\",\n  \"subregion\": \"Western Asia\",\n  \"currency\": {\n    \"code\": \"AZN\",\n    \"name\": \"Azerbaijani manat\",\n    \"symbol\": \"\\u20bc\"\n  },\n  \"calling_code\": \"+994\",\n  \"languages\": [\n    \"Azerbaijani\"\n  ],\n  \"flag\": \"\\ud83c\\udde6\\ud83c\\uddff\",\n  \"latlng\": [\n    40.5,\n    47.5\n  ]\n}"},{"id":"b46c03e7-eb49-4f64-85ce-5bfe4540ec38","name":"Synthetic · 400 · invalid","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/country?code=AZ","host":["https://osrmroute.com"],"path":["api","1","country"],"query":[{"key":"code","value":"AZ","description":"ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"},{"key":"name","value":"Azerbaijan","description":"Country name as an alternative to code. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Provide code=ISO2/ISO3 or name=CountryName.\"\n}"},{"id":"7e5e7ac2-ab64-4dbe-a9f4-64d07e4034e2","name":"Synthetic · 401 · auth","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/country?code=AZ","host":["https://osrmroute.com"],"path":["api","1","country"],"query":[{"key":"code","value":"AZ","description":"ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"},{"key":"name","value":"Azerbaijan","description":"Country name as an alternative to code. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Invalid API Key\"\n}"},{"id":"b6e03abf-c6b8-49fa-a443-15709d50c610","name":"Synthetic · 402 · balance","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/country?code=AZ","host":["https://osrmroute.com"],"path":["api","1","country"],"query":[{"key":"code","value":"AZ","description":"ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"},{"key":"name","value":"Azerbaijan","description":"Country name as an alternative to code. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}"},{"id":"8a3c48d9-d4b2-4579-b320-d6a977e229d8","name":"Synthetic · 403 · plan","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/country?code=AZ","host":["https://osrmroute.com"],"path":["api","1","country"],"query":[{"key":"code","value":"AZ","description":"ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"},{"key":"name","value":"Azerbaijan","description":"Country name as an alternative to code. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"This API Key is disabled\"\n}"},{"id":"47aeedf7-0fa2-48a2-93b1-f85ef4b98251","name":"Synthetic · 404 · country","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/country?code=AZ","host":["https://osrmroute.com"],"path":["api","1","country"],"query":[{"key":"code","value":"AZ","description":"ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"},{"key":"name","value":"Azerbaijan","description":"Country name as an alternative to code. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Country not found.\"\n}"},{"id":"4b3c5c5b-edec-4c3f-ac04-9505ed9c3438","name":"Synthetic · 429 · rate","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/country?code=AZ","host":["https://osrmroute.com"],"path":["api","1","country"],"query":[{"key":"code","value":"AZ","description":"ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"},{"key":"name","value":"Azerbaijan","description":"Country name as an alternative to code. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}"},{"id":"5eb527bc-980d-4823-84a4-f39e3a38d268","name":"Synthetic · 500 · upstream","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/country?code=AZ","host":["https://osrmroute.com"],"path":["api","1","country"],"query":[{"key":"code","value":"AZ","description":"ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"},{"key":"name","value":"Azerbaijan","description":"Country name as an alternative to code. Schema: {\"type\": \"string\"}","disabled":true}]}},"status":"Response","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Internal Server Error\"\n}"}],"_postman_id":"17ecca5d-b9ce-4e82-9357-a77291b4754b"}],"id":"54c161bd-f25c-4c69-ab30-ea67246cbe7d","_postman_id":"54c161bd-f25c-4c69-ab30-ea67246cbe7d","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}}},{"name":"04 · Maps and Studio","item":[{"name":"Preview style commands","id":"766f5889-7c32-47ed-af3e-73b0c4240dd2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"prompt\": \"dark; water #123456; hide buildings\",\n  \"ai\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/preview","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>ai=true enables Business AI (1,000 shared operations/month, maximum prompt 1,000 characters; 500 otherwise). Preview uses one AI operation and zero API credits. Requires provider activation. Explicit studio scope. Zero credits; five requests per minute. Semicolon-separated English commands: dark; water #123456; hide buildings. Presets, palette colors and layer visibility only. Does not save or publish. Omitted design starts with the default design.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>prompt</code></td>\n<td>string</td>\n<td>yes</td>\n<td>{\"minLength\": 1, \"maxLength\": 1000}</td>\n</tr>\n<tr>\n<td><code>ai</code></td>\n<td>boolean</td>\n<td>no</td>\n<td>{\"default\": false}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"prompt\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 1000\n    },\n    \"ai\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"design\": {\n      \"type\": \"object\"\n    }\n  },\n  \"required\": [\n    \"prompt\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>402</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>422</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>502</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","preview"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"bfcc8458-f903-4ed1-bb88-91a7f9142867","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"prompt\": \"dark; water #123456; hide buildings\",\n  \"ai\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/preview"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"design\": {\n    \"preset\": \"dark\",\n    \"colors\": {\n      \"land\": \"#f1f3f5\",\n      \"water\": \"#123456\",\n      \"park\": \"#c9dfc6\",\n      \"road\": \"#ffffff\",\n      \"highway\": \"#edc779\",\n      \"building\": \"#d9dee3\",\n      \"label\": \"#334155\"\n    },\n    \"visible\": {\n      \"roads\": true,\n      \"buildings\": false,\n      \"parks\": true,\n      \"labels\": true,\n      \"pois\": true,\n      \"boundaries\": true\n    },\n    \"center\": [\n      49.8671,\n      40.4093\n    ],\n    \"zoom\": 11,\n    \"overlays\": []\n  },\n  \"changes\": [\n    \"preset:dark\",\n    \"colors.water:#123456\",\n    \"visible.buildings:false\"\n  ],\n  \"saved\": false,\n  \"method\": \"explicit_style_commands\"\n}"},{"id":"c72f5aed-d10e-487c-97e6-f8e898e6e8d6","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"prompt\": \"dark; water #123456; hide buildings\",\n  \"ai\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/preview"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"766f5889-7c32-47ed-af3e-73b0c4240dd2"},{"name":"Render a PNG map","id":"e967e4a9-f276-44a9-9ab0-82200903feb6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"center\": [\n    13.405,\n    52.52\n  ],\n  \"zoom\": 12,\n  \"width\": 512,\n  \"height\": 512,\n  \"style\": \"light\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/maps/static","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: see operation description below. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>Maps scope. 4 credits per successful image. Simplified cartographic renderer using OSRMRoute palettes and OpenFreeMap/OpenMapTiles/OSM data; not full Studio layer/effect parity. Attribution is included.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>center</code></td>\n<td>array</td>\n<td>yes</td>\n<td>Longitude then latitude; longitude ±180, latitude ±85. {\"minItems\": 2, \"maxItems\": 2}</td>\n</tr>\n<tr>\n<td><code>zoom</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 1, \"maximum\": 14, \"default\": 12}</td>\n</tr>\n<tr>\n<td><code>width</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 128, \"maximum\": 512, \"default\": 512}</td>\n</tr>\n<tr>\n<td><code>height</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 128, \"maximum\": 512, \"default\": 512}</td>\n</tr>\n<tr>\n<td><code>style</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"enum\": [\"light\", \"dark\", \"navigation\", \"minimal\"], \"default\": \"light\"}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"center\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"items\": {\n        \"type\": \"number\"\n      },\n      \"description\": \"Longitude then latitude; longitude \\u00b1180, latitude \\u00b185.\"\n    },\n    \"zoom\": {\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"maximum\": 14,\n      \"default\": 12\n    },\n    \"width\": {\n      \"type\": \"integer\",\n      \"minimum\": 128,\n      \"maximum\": 512,\n      \"default\": 512\n    },\n    \"height\": {\n      \"type\": \"integer\",\n      \"minimum\": 128,\n      \"maximum\": 512,\n      \"default\": 512\n    },\n    \"style\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"light\",\n        \"dark\",\n        \"navigation\",\n        \"minimal\"\n      ],\n      \"default\": \"light\"\n    }\n  },\n  \"required\": [\n    \"center\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: PNG image</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>402</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>422</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>502</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","maps","static"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"32e040e7-7abd-4047-a82c-f56d731eefd5","name":"PNG response — use Send and Download","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"center\": [\n    13.405,\n    52.52\n  ],\n  \"zoom\": 12,\n  \"width\": 512,\n  \"height\": 512,\n  \"style\": \"light\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/maps/static"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"image/png"}],"cookie":[],"responseTime":null,"body":"[Binary PNG response; not JSON]"},{"id":"44b5a7b3-269b-4edd-a544-cba577dbdc37","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"center\": [\n    13.405,\n    52.52\n  ],\n  \"zoom\": 12,\n  \"width\": 512,\n  \"height\": 512,\n  \"style\": \"light\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/maps/static"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"e967e4a9-f276-44a9-9ab0-82200903feb6"},{"name":"Query an owned map dataset","id":"255fb7d8-8e78-4f17-a7b2-4f51e451ddd4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"point\": [\n    13.405,\n    52.52\n  ],\n  \"radius\": 1000,\n  \"limit\": 10\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/maps/datasets//query","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: see operation description below. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>Maps scope. 1 credit per successful query, including empty results. Returns nearest points with estimated local equirectangular distances. Only the key owner can access the dataset. Polygon holes are excluded.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>id</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"format\": \"uuid\"}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>point</code></td>\n<td>array</td>\n<td>yes</td>\n<td>Longitude then latitude; longitude ±180, latitude ±85. {\"minItems\": 2, \"maxItems\": 2}</td>\n</tr>\n<tr>\n<td><code>radius</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 50000, \"default\": 0}</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 1, \"maximum\": 50, \"default\": 10}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"point\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"items\": {\n        \"type\": \"number\"\n      },\n      \"description\": \"Longitude then latitude; longitude \\u00b1180, latitude \\u00b185.\"\n    },\n    \"radius\": {\n      \"type\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 50000,\n      \"default\": 0\n    },\n    \"limit\": {\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"maximum\": 50,\n      \"default\": 10\n    }\n  },\n  \"required\": [\n    \"point\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>402</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>422</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>502</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","maps","datasets","","query"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"edb8764d-75f0-43cf-af6a-c184db678333","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"point\": [\n    13.405,\n    52.52\n  ],\n  \"radius\": 1000,\n  \"limit\": 10\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/maps/datasets//query"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"FeatureCollection\",\n  \"features\": [],\n  \"returned\": 0,\n  \"matched\": 0,\n  \"distance_model\": \"local_equirectangular\",\n  \"distance_units\": \"meters\"\n}"},{"id":"2f266884-de4d-4994-b163-c2a42cd658ee","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"point\": [\n    13.405,\n    52.52\n  ],\n  \"radius\": 1000,\n  \"limit\": 10\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/maps/datasets//query"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"255fb7d8-8e78-4f17-a7b2-4f51e451ddd4"},{"name":"List owned Studio resources","id":"fac9de92-7b1f-47cf-bf56-e4b8f8837234","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/studio/styles","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required, even for otherwise unrestricted keys. Management requests do not consume request credits; rate and workspace limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Owned styles (maximum 50) or dataset metadata (maximum 10)</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","styles"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"8aaae298-2bda-467c-a90e-8f713dd2c77a","name":"Synthetic abbreviated success","originalRequest":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"styles\": []\n}"},{"id":"2a3f55d1-6225-4c0e-ad5b-cf6f9034f572","name":"Synthetic · missing authentication","originalRequest":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"fac9de92-7b1f-47cf-bf56-e4b8f8837234"},{"name":"Manage owned styles or datasets","id":"011bd42c-ce0c-4971-8d77-0af945669652","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"create\",\n  \"name\": \"Berlin demo\",\n  \"design\": {\n    \"preset\": \"light\",\n    \"colors\": {\n      \"land\": \"#f1f3f5\",\n      \"water\": \"#a9d8ed\",\n      \"park\": \"#c9dfc6\",\n      \"road\": \"#ffffff\",\n      \"highway\": \"#edc779\",\n      \"building\": \"#d9dee3\",\n      \"label\": \"#334155\"\n    },\n    \"visible\": {\n      \"roads\": true,\n      \"buildings\": true,\n      \"parks\": true,\n      \"labels\": true,\n      \"pois\": true,\n      \"boundaries\": true\n    },\n    \"center\": [\n      49.8671,\n      40.4093\n    ],\n    \"zoom\": 11,\n    \"overlays\": []\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Existing style changes require id and current revision; publish requires confirmPublic. Datasets: create or delete with confirmDelete. Dataset replacement is immutable; referenced datasets cannot be deleted. No request credits; management limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n<tr>\n<td><code>revision</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 80}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmPublic</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmDelete</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\"\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"revision\": {\n      \"type\": \"integer\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"maxLength\": 80\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"data\": {\n      \"type\": \"object\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"required\": [\n    \"action\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Updated or deleted</li>\n<li><strong>201</strong>: Created</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>409</strong>: Revision conflict, workspace quota or dataset in use</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","styles"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"6807c0df-d6ed-44fe-af85-7e424c85ef3e","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"create\",\n  \"name\": \"Berlin demo\",\n  \"design\": {\n    \"preset\": \"light\",\n    \"colors\": {\n      \"land\": \"#f1f3f5\",\n      \"water\": \"#a9d8ed\",\n      \"park\": \"#c9dfc6\",\n      \"road\": \"#ffffff\",\n      \"highway\": \"#edc779\",\n      \"building\": \"#d9dee3\",\n      \"label\": \"#334155\"\n    },\n    \"visible\": {\n      \"roads\": true,\n      \"buildings\": true,\n      \"parks\": true,\n      \"labels\": true,\n      \"pois\": true,\n      \"boundaries\": true\n    },\n    \"center\": [\n      49.8671,\n      40.4093\n    ],\n    \"zoom\": 11,\n    \"overlays\": []\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"style\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"name\": \"Berlin demo\",\n    \"draft\": {\n      \"preset\": \"light\",\n      \"colors\": {\n        \"land\": \"#f1f3f5\",\n        \"water\": \"#a9d8ed\",\n        \"park\": \"#c9dfc6\",\n        \"road\": \"#ffffff\",\n        \"highway\": \"#edc779\",\n        \"building\": \"#d9dee3\",\n        \"label\": \"#334155\"\n      },\n      \"visible\": {\n        \"roads\": true,\n        \"buildings\": true,\n        \"parks\": true,\n        \"labels\": true,\n        \"pois\": true,\n        \"boundaries\": true\n      },\n      \"center\": [\n        49.8671,\n        40.4093\n      ],\n      \"zoom\": 11,\n      \"overlays\": []\n    },\n    \"revision\": 1,\n    \"public_id\": null\n  }\n}"},{"id":"eda681d8-d11c-4745-a58f-de9df9e3116e","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"create\",\n  \"name\": \"Berlin demo\",\n  \"design\": {\n    \"preset\": \"light\",\n    \"colors\": {\n      \"land\": \"#f1f3f5\",\n      \"water\": \"#a9d8ed\",\n      \"park\": \"#c9dfc6\",\n      \"road\": \"#ffffff\",\n      \"highway\": \"#edc779\",\n      \"building\": \"#d9dee3\",\n      \"label\": \"#334155\"\n    },\n    \"visible\": {\n      \"roads\": true,\n      \"buildings\": true,\n      \"parks\": true,\n      \"labels\": true,\n      \"pois\": true,\n      \"boundaries\": true\n    },\n    \"center\": [\n      49.8671,\n      40.4093\n    ],\n    \"zoom\": 11,\n    \"overlays\": []\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"011bd42c-ce0c-4971-8d77-0af945669652"},{"name":"Style · save","id":"7a619299-0628-4364-abb1-ada49efb6382","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"save\",\n  \"id\": \"\",\n  \"revision\": 1,\n  \"name\": \"Berlin demo\",\n  \"design\": {\n    \"preset\": \"light\",\n    \"colors\": {\n      \"land\": \"#f1f3f5\",\n      \"water\": \"#a9d8ed\",\n      \"park\": \"#c9dfc6\",\n      \"road\": \"#ffffff\",\n      \"highway\": \"#edc779\",\n      \"building\": \"#d9dee3\",\n      \"label\": \"#334155\"\n    },\n    \"visible\": {\n      \"roads\": true,\n      \"buildings\": true,\n      \"parks\": true,\n      \"labels\": true,\n      \"pois\": true,\n      \"boundaries\": true\n    },\n    \"center\": [\n      49.8671,\n      40.4093\n    ],\n    \"zoom\": 11,\n    \"overlays\": []\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Existing style changes require id and current revision; publish requires confirmPublic. Datasets: create or delete with confirmDelete. Dataset replacement is immutable; referenced datasets cannot be deleted. No request credits; management limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n<tr>\n<td><code>revision</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 80}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmPublic</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmDelete</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\"\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"revision\": {\n      \"type\": \"integer\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"maxLength\": 80\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"data\": {\n      \"type\": \"object\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"required\": [\n    \"action\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Updated or deleted</li>\n<li><strong>201</strong>: Created</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>409</strong>: Revision conflict, workspace quota or dataset in use</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","styles"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"1419a0ac-38c8-4d2c-bd01-8cd13c74e39d","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"save\",\n  \"id\": \"\",\n  \"revision\": 1,\n  \"name\": \"Berlin demo\",\n  \"design\": {\n    \"preset\": \"light\",\n    \"colors\": {\n      \"land\": \"#f1f3f5\",\n      \"water\": \"#a9d8ed\",\n      \"park\": \"#c9dfc6\",\n      \"road\": \"#ffffff\",\n      \"highway\": \"#edc779\",\n      \"building\": \"#d9dee3\",\n      \"label\": \"#334155\"\n    },\n    \"visible\": {\n      \"roads\": true,\n      \"buildings\": true,\n      \"parks\": true,\n      \"labels\": true,\n      \"pois\": true,\n      \"boundaries\": true\n    },\n    \"center\": [\n      49.8671,\n      40.4093\n    ],\n    \"zoom\": 11,\n    \"overlays\": []\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"style\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"name\": \"Berlin demo\",\n    \"draft\": {\n      \"preset\": \"light\",\n      \"colors\": {\n        \"land\": \"#f1f3f5\",\n        \"water\": \"#a9d8ed\",\n        \"park\": \"#c9dfc6\",\n        \"road\": \"#ffffff\",\n        \"highway\": \"#edc779\",\n        \"building\": \"#d9dee3\",\n        \"label\": \"#334155\"\n      },\n      \"visible\": {\n        \"roads\": true,\n        \"buildings\": true,\n        \"parks\": true,\n        \"labels\": true,\n        \"pois\": true,\n        \"boundaries\": true\n      },\n      \"center\": [\n        49.8671,\n        40.4093\n      ],\n      \"zoom\": 11,\n      \"overlays\": []\n    },\n    \"revision\": 1,\n    \"public_id\": null\n  }\n}"}],"_postman_id":"7a619299-0628-4364-abb1-ada49efb6382"},{"name":"Style · autosave","id":"81f19114-1c41-47c1-aad3-a99e04bdcc8a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"autosave\",\n  \"id\": \"\",\n  \"revision\": 1,\n  \"name\": \"Berlin demo\",\n  \"design\": {\n    \"preset\": \"light\",\n    \"colors\": {\n      \"land\": \"#f1f3f5\",\n      \"water\": \"#a9d8ed\",\n      \"park\": \"#c9dfc6\",\n      \"road\": \"#ffffff\",\n      \"highway\": \"#edc779\",\n      \"building\": \"#d9dee3\",\n      \"label\": \"#334155\"\n    },\n    \"visible\": {\n      \"roads\": true,\n      \"buildings\": true,\n      \"parks\": true,\n      \"labels\": true,\n      \"pois\": true,\n      \"boundaries\": true\n    },\n    \"center\": [\n      49.8671,\n      40.4093\n    ],\n    \"zoom\": 11,\n    \"overlays\": []\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Existing style changes require id and current revision; publish requires confirmPublic. Datasets: create or delete with confirmDelete. Dataset replacement is immutable; referenced datasets cannot be deleted. No request credits; management limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n<tr>\n<td><code>revision</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 80}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmPublic</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmDelete</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\"\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"revision\": {\n      \"type\": \"integer\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"maxLength\": 80\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"data\": {\n      \"type\": \"object\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"required\": [\n    \"action\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Updated or deleted</li>\n<li><strong>201</strong>: Created</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>409</strong>: Revision conflict, workspace quota or dataset in use</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","styles"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"854b130c-5dbd-41fb-9ed9-d9e98e02ee6b","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"autosave\",\n  \"id\": \"\",\n  \"revision\": 1,\n  \"name\": \"Berlin demo\",\n  \"design\": {\n    \"preset\": \"light\",\n    \"colors\": {\n      \"land\": \"#f1f3f5\",\n      \"water\": \"#a9d8ed\",\n      \"park\": \"#c9dfc6\",\n      \"road\": \"#ffffff\",\n      \"highway\": \"#edc779\",\n      \"building\": \"#d9dee3\",\n      \"label\": \"#334155\"\n    },\n    \"visible\": {\n      \"roads\": true,\n      \"buildings\": true,\n      \"parks\": true,\n      \"labels\": true,\n      \"pois\": true,\n      \"boundaries\": true\n    },\n    \"center\": [\n      49.8671,\n      40.4093\n    ],\n    \"zoom\": 11,\n    \"overlays\": []\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"style\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"name\": \"Berlin demo\",\n    \"draft\": {\n      \"preset\": \"light\",\n      \"colors\": {\n        \"land\": \"#f1f3f5\",\n        \"water\": \"#a9d8ed\",\n        \"park\": \"#c9dfc6\",\n        \"road\": \"#ffffff\",\n        \"highway\": \"#edc779\",\n        \"building\": \"#d9dee3\",\n        \"label\": \"#334155\"\n      },\n      \"visible\": {\n        \"roads\": true,\n        \"buildings\": true,\n        \"parks\": true,\n        \"labels\": true,\n        \"pois\": true,\n        \"boundaries\": true\n      },\n      \"center\": [\n        49.8671,\n        40.4093\n      ],\n      \"zoom\": 11,\n      \"overlays\": []\n    },\n    \"revision\": 1,\n    \"public_id\": null\n  }\n}"}],"_postman_id":"81f19114-1c41-47c1-aad3-a99e04bdcc8a"},{"name":"Style · duplicate","id":"05e84051-93fc-4819-9f54-ecbe1145ad0b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"duplicate\",\n  \"id\": \"\",\n  \"revision\": 1,\n  \"name\": \"Berlin demo\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Existing style changes require id and current revision; publish requires confirmPublic. Datasets: create or delete with confirmDelete. Dataset replacement is immutable; referenced datasets cannot be deleted. No request credits; management limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n<tr>\n<td><code>revision</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 80}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmPublic</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmDelete</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\"\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"revision\": {\n      \"type\": \"integer\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"maxLength\": 80\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"data\": {\n      \"type\": \"object\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"required\": [\n    \"action\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Updated or deleted</li>\n<li><strong>201</strong>: Created</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>409</strong>: Revision conflict, workspace quota or dataset in use</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","styles"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"3542357f-ecf8-4c41-8921-faedfeaf19eb","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"duplicate\",\n  \"id\": \"\",\n  \"revision\": 1,\n  \"name\": \"Berlin demo\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"style\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"name\": \"Berlin demo\",\n    \"draft\": {\n      \"preset\": \"light\",\n      \"colors\": {\n        \"land\": \"#f1f3f5\",\n        \"water\": \"#a9d8ed\",\n        \"park\": \"#c9dfc6\",\n        \"road\": \"#ffffff\",\n        \"highway\": \"#edc779\",\n        \"building\": \"#d9dee3\",\n        \"label\": \"#334155\"\n      },\n      \"visible\": {\n        \"roads\": true,\n        \"buildings\": true,\n        \"parks\": true,\n        \"labels\": true,\n        \"pois\": true,\n        \"boundaries\": true\n      },\n      \"center\": [\n        49.8671,\n        40.4093\n      ],\n      \"zoom\": 11,\n      \"overlays\": []\n    },\n    \"revision\": 1,\n    \"public_id\": null\n  }\n}"}],"_postman_id":"05e84051-93fc-4819-9f54-ecbe1145ad0b"},{"name":"Style · restore","id":"220aacb3-92cc-4f05-85fe-82c28b384b11","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"restore\",\n  \"id\": \"\",\n  \"revision\": 1,\n  \"version\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Existing style changes require id and current revision; publish requires confirmPublic. Datasets: create or delete with confirmDelete. Dataset replacement is immutable; referenced datasets cannot be deleted. No request credits; management limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n<tr>\n<td><code>revision</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 80}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmPublic</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmDelete</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\"\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"revision\": {\n      \"type\": \"integer\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"maxLength\": 80\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"data\": {\n      \"type\": \"object\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"required\": [\n    \"action\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Updated or deleted</li>\n<li><strong>201</strong>: Created</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>409</strong>: Revision conflict, workspace quota or dataset in use</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","styles"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"52bf050c-bb8a-442a-b42c-4bdb3fd9b8fa","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"restore\",\n  \"id\": \"\",\n  \"revision\": 1,\n  \"version\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"style\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"name\": \"Berlin demo\",\n    \"draft\": {\n      \"preset\": \"light\",\n      \"colors\": {\n        \"land\": \"#f1f3f5\",\n        \"water\": \"#a9d8ed\",\n        \"park\": \"#c9dfc6\",\n        \"road\": \"#ffffff\",\n        \"highway\": \"#edc779\",\n        \"building\": \"#d9dee3\",\n        \"label\": \"#334155\"\n      },\n      \"visible\": {\n        \"roads\": true,\n        \"buildings\": true,\n        \"parks\": true,\n        \"labels\": true,\n        \"pois\": true,\n        \"boundaries\": true\n      },\n      \"center\": [\n        49.8671,\n        40.4093\n      ],\n      \"zoom\": 11,\n      \"overlays\": []\n    },\n    \"revision\": 1,\n    \"public_id\": null\n  }\n}"}],"_postman_id":"220aacb3-92cc-4f05-85fe-82c28b384b11"},{"name":"Style · publish","id":"ae7d7f87-1eb8-4e8e-838c-2a50ed9f8760","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"publish\",\n  \"id\": \"\",\n  \"revision\": 1,\n  \"confirmPublic\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Existing style changes require id and current revision; publish requires confirmPublic. Datasets: create or delete with confirmDelete. Dataset replacement is immutable; referenced datasets cannot be deleted. No request credits; management limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n<tr>\n<td><code>revision</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 80}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmPublic</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmDelete</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\"\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"revision\": {\n      \"type\": \"integer\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"maxLength\": 80\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"data\": {\n      \"type\": \"object\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"required\": [\n    \"action\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Updated or deleted</li>\n<li><strong>201</strong>: Created</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>409</strong>: Revision conflict, workspace quota or dataset in use</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","styles"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"74e52923-1073-41d9-8a28-8ea5f372e95f","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"publish\",\n  \"id\": \"\",\n  \"revision\": 1,\n  \"confirmPublic\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"style\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"name\": \"Berlin demo\",\n    \"draft\": {\n      \"preset\": \"light\",\n      \"colors\": {\n        \"land\": \"#f1f3f5\",\n        \"water\": \"#a9d8ed\",\n        \"park\": \"#c9dfc6\",\n        \"road\": \"#ffffff\",\n        \"highway\": \"#edc779\",\n        \"building\": \"#d9dee3\",\n        \"label\": \"#334155\"\n      },\n      \"visible\": {\n        \"roads\": true,\n        \"buildings\": true,\n        \"parks\": true,\n        \"labels\": true,\n        \"pois\": true,\n        \"boundaries\": true\n      },\n      \"center\": [\n        49.8671,\n        40.4093\n      ],\n      \"zoom\": 11,\n      \"overlays\": []\n    },\n    \"revision\": 1,\n    \"public_id\": null\n  }\n}"}],"_postman_id":"ae7d7f87-1eb8-4e8e-838c-2a50ed9f8760"},{"name":"Style · unpublish","id":"f6f51048-efe7-4bad-a873-d20638491151","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"unpublish\",\n  \"id\": \"\",\n  \"revision\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Existing style changes require id and current revision; publish requires confirmPublic. Datasets: create or delete with confirmDelete. Dataset replacement is immutable; referenced datasets cannot be deleted. No request credits; management limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n<tr>\n<td><code>revision</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 80}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmPublic</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmDelete</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\"\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"revision\": {\n      \"type\": \"integer\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"maxLength\": 80\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"data\": {\n      \"type\": \"object\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"required\": [\n    \"action\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Updated or deleted</li>\n<li><strong>201</strong>: Created</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>409</strong>: Revision conflict, workspace quota or dataset in use</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","styles"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"d030eb65-191f-4eaa-858d-9ca682f24911","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"unpublish\",\n  \"id\": \"\",\n  \"revision\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"style\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"name\": \"Berlin demo\",\n    \"draft\": {\n      \"preset\": \"light\",\n      \"colors\": {\n        \"land\": \"#f1f3f5\",\n        \"water\": \"#a9d8ed\",\n        \"park\": \"#c9dfc6\",\n        \"road\": \"#ffffff\",\n        \"highway\": \"#edc779\",\n        \"building\": \"#d9dee3\",\n        \"label\": \"#334155\"\n      },\n      \"visible\": {\n        \"roads\": true,\n        \"buildings\": true,\n        \"parks\": true,\n        \"labels\": true,\n        \"pois\": true,\n        \"boundaries\": true\n      },\n      \"center\": [\n        49.8671,\n        40.4093\n      ],\n      \"zoom\": 11,\n      \"overlays\": []\n    },\n    \"revision\": 1,\n    \"public_id\": null\n  }\n}"}],"_postman_id":"f6f51048-efe7-4bad-a873-d20638491151"},{"name":"Style · delete","id":"28f76686-69d4-4104-a597-5e99ba7a9f1d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"delete\",\n  \"id\": \"\",\n  \"revision\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Existing style changes require id and current revision; publish requires confirmPublic. Datasets: create or delete with confirmDelete. Dataset replacement is immutable; referenced datasets cannot be deleted. No request credits; management limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n<tr>\n<td><code>revision</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 80}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmPublic</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmDelete</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\"\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"revision\": {\n      \"type\": \"integer\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"maxLength\": 80\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"data\": {\n      \"type\": \"object\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"required\": [\n    \"action\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Updated or deleted</li>\n<li><strong>201</strong>: Created</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>409</strong>: Revision conflict, workspace quota or dataset in use</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","styles"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"a9014f3f-8d65-41c0-afd7-fea2fe2fd6ce","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"delete\",\n  \"id\": \"\",\n  \"revision\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/styles"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"style\": null\n}"}],"_postman_id":"28f76686-69d4-4104-a597-5e99ba7a9f1d"},{"name":"List owned datasets","id":"f1e538a9-7981-4250-86de-536f7914f814","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/studio/datasets","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required, even for otherwise unrestricted keys. Management requests do not consume request credits; rate and workspace limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Owned styles (maximum 50) or dataset metadata (maximum 10)</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","datasets"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"aebbfba7-21da-4faa-b8c9-7758514acfb8","name":"Synthetic abbreviated success","originalRequest":{"method":"GET","header":[],"url":"https://osrmroute.com/api/v1/studio/datasets"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"datasets\": []\n}"}],"_postman_id":"f1e538a9-7981-4250-86de-536f7914f814"},{"name":"Dataset · create","id":"11b9bb0c-dcea-46ca-b664-db664fb4e50c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"create\",\n  \"name\": \"Berlin points\",\n  \"data\": {\n    \"type\": \"FeatureCollection\",\n    \"features\": [\n      {\n        \"type\": \"Feature\",\n        \"properties\": {\n          \"name\": \"Berlin\"\n        },\n        \"geometry\": {\n          \"type\": \"Point\",\n          \"coordinates\": [\n            13.405,\n            52.52\n          ]\n        }\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/datasets","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Existing style changes require id and current revision; publish requires confirmPublic. Datasets: create or delete with confirmDelete. Dataset replacement is immutable; referenced datasets cannot be deleted. No request credits; management limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n<tr>\n<td><code>revision</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 80}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmPublic</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmDelete</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\"\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"revision\": {\n      \"type\": \"integer\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"maxLength\": 80\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"data\": {\n      \"type\": \"object\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"required\": [\n    \"action\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Updated or deleted</li>\n<li><strong>201</strong>: Created</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>409</strong>: Revision conflict, workspace quota or dataset in use</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","datasets"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"cfaad921-cf62-434e-8326-bf2c273aae50","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"create\",\n  \"name\": \"Berlin points\",\n  \"data\": {\n    \"type\": \"FeatureCollection\",\n    \"features\": [\n      {\n        \"type\": \"Feature\",\n        \"properties\": {\n          \"name\": \"Berlin\"\n        },\n        \"geometry\": {\n          \"type\": \"Point\",\n          \"coordinates\": [\n            13.405,\n            52.52\n          ]\n        }\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/datasets"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"dataset\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"name\": \"Berlin points\",\n    \"feature_count\": 1,\n    \"vertex_count\": 1\n  }\n}"}],"_postman_id":"11b9bb0c-dcea-46ca-b664-db664fb4e50c"},{"name":"Dataset · delete","id":"61705963-9b3b-40bc-9257-b0bb4e57fcd1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"delete\",\n  \"id\": \"\",\n  \"confirmDelete\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/datasets","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Explicit studio scope; management/preview use zero API credits. ai=true requires active Business (1,000 shared AI operations per billing month) and enabled AI service. Enterprise AI is contract-specific; do not assume enabled. Workspace and rate limits apply.</p>\n<p>Explicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Existing style changes require id and current revision; publish requires confirmPublic. Datasets: create or delete with confirmDelete. Dataset replacement is immutable; referenced datasets cannot be deleted. No request credits; management limits apply.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>resource</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"enum\": [\"styles\", \"datasets\"]}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>string</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n<tr>\n<td><code>revision</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"maxLength\": 80}</td>\n</tr>\n<tr>\n<td><code>design</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td>object</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmPublic</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>confirmDelete</code></td>\n<td>boolean</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\"\n    },\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"revision\": {\n      \"type\": \"integer\"\n    },\n    \"name\": {\n      \"type\": \"string\",\n      \"maxLength\": 80\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"data\": {\n      \"type\": \"object\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"required\": [\n    \"action\"\n  ]\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Updated or deleted</li>\n<li><strong>201</strong>: Created</li>\n<li><strong>400</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>401</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>403</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>404</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>409</strong>: Revision conflict, workspace quota or dataset in use</li>\n<li><strong>413</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>429</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n<li><strong>503</strong>: Request rejected, quota exhausted, or upstream unavailable. Failed operations are not charged.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","studio","datasets"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"99632b29-f3e0-48c9-8bb3-1fc4f9d3c2d5","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"action\": \"delete\",\n  \"id\": \"\",\n  \"confirmDelete\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/studio/datasets"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"deleted\": true\n}"}],"_postman_id":"61705963-9b3b-40bc-9257-b0bb4e57fcd1"},{"name":"Basemap style","id":"d0515475-e752-40c3-a822-cbd5a2b954ba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"https://osrmroute.com/api/basemaps/light","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>style path: light, dark, navigation or minimal. Public style JSON; no API credits. Geographic attribution must remain visible.</p>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","urlObject":{"path":["api","basemaps","light"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"dbd130f8-c765-4c76-bb2c-8ea1db0f49c9","name":"Synthetic abbreviated success","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"https://osrmroute.com/api/basemaps/light"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"version\": 8,\n  \"name\": \"Example style\",\n  \"sources\": {},\n  \"layers\": []\n}"}],"_postman_id":"d0515475-e752-40c3-a822-cbd5a2b954ba"},{"name":"Published Studio style","id":"c3821678-0bff-4380-af17-9e61df324b4a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"https://osrmroute.com/api/map-styles/","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>public_style_id: returned by a published style; optional version query pins a revision. Origin allowlist still applies. No API credits; unpublished/deleted styles return 404.</p>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","urlObject":{"path":["api","map-styles",""],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"6c4b9b79-87bc-4f72-879b-09d91af645d5","name":"Synthetic abbreviated success","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"https://osrmroute.com/api/map-styles/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"version\": 8,\n  \"name\": \"Example style\",\n  \"sources\": {},\n  \"layers\": []\n}"}],"_postman_id":"c3821678-0bff-4380-af17-9e61df324b4a"},{"name":"Published dataset vector tile","id":"0a128e16-a94a-4e81-b06d-3cf9cd3fe740","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"https://osrmroute.com/api/map-styles//tiles//12/2200/1343","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>public_style_id and dataset_id must reference a published style dataset. z/x/y are Web Mercator tile coordinates. Origin policy applies. Binary MVT, not JSON; no ordinary request credits. Renderer normally follows this URL from the style. Never publish private map tokens.</p>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","urlObject":{"path":["api","map-styles","","tiles","","12","2200","1343"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"0f432c27-46f3-4473-81ed-88a297d1a69d","name":"Binary vector tile","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"https://osrmroute.com/api/map-styles//tiles//12/2200/1343"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"application/vnd.mapbox-vector-tile"}],"cookie":[],"responseTime":null,"body":"[Binary vector tile]"}],"_postman_id":"0a128e16-a94a-4e81-b06d-3cf9cd3fe740"}],"id":"681fd433-d36a-46bd-9a8c-d66c2bcc881c","_postman_id":"681fd433-d36a-46bd-9a8c-d66c2bcc881c","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}}},{"name":"05 · Road data and speed limits","item":[{"name":"Get the mapped passenger-car speed limit for a road near a coordinate","id":"9b5594c9-a445-48d4-8d87-ca79d6938134","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/1/speed-limit?point=25.381245183194284,51.51926522703756","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Free (non-commercial testing), Starter, Pro, Business, Pay as you go, or configured Enterprise; service scopes, balance and plan complexity limits apply. Cost: 1 credit. See the current <a href=\"https://osrmroute.com/pricing\">pricing page</a>; an API key does not bypass plan limits.</p>\n<p>Explicit OpenStreetMap road limits for Qatar, Azerbaijan and the indexed Prague area. Returns null for missing, ambiguous, direction-dependent, variable or conditional rules. Does not infer a limit from nearby unverified signs or OSRM travel speeds. One credit per successful lookup, including unknown results. Invalid queries, unavailable coverage and server failures are refunded.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>point</strong> (query, optional): Latitude,longitude. Supply point or both lat and lon. Schema: <code>{\"type\": \"string\"}</code></li>\n<li><strong>lat</strong> (query, optional):  Schema: <code>{\"type\": \"number\", \"minimum\": -90, \"maximum\": 90}</code></li>\n<li><strong>lon</strong> (query, optional):  Schema: <code>{\"type\": \"number\", \"minimum\": -180, \"maximum\": 180}</code></li>\n<li><strong>heading</strong> (query, optional): Travel heading in degrees clockwise from north; used for carriageway and direction selection. Schema: <code>{\"type\": \"number\", \"minimum\": 0, \"maximum\": 360, \"exclusiveMaximum\": true}</code></li>\n<li><strong>radius</strong> (query, optional): Maximum road matching distance in metres. Schema: <code>{\"type\": \"number\", \"minimum\": 5, \"maximum\": 100, \"default\": 35}</code></li>\n<li><strong>osm_way_id</strong> (query, optional): Optional road identity to resolve nearby roads. The way must still be inside the radius and compatible with heading. Schema: <code>{\"type\": \"string\", \"pattern\": \"^[1-9]\\\\d{0,17}$\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Road lookup result; speed_limit is nullable and expressed in km/h. Source metadata identifies the mapped rule.</li>\n<li><strong>400</strong>: InvalidSpeedLimitQuery. Invalid coordinates or parameters; no credits consumed.</li>\n<li><strong>401</strong>: Missing or invalid API key</li>\n<li><strong>403</strong>: Key access restrictions</li>\n<li><strong>422</strong>: SpeedLimitCoverageUnavailable. Outside the indexed countries/areas; no credits consumed.</li>\n<li><strong>429</strong>: Rate or credit limit exceeded</li>\n<li><strong>503</strong>: SpeedLimitServiceUnavailable. No credits consumed.</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","1","speed-limit"],"host":["https://osrmroute.com"],"query":[{"description":{"content":"<p>Latitude,longitude. Supply point or both lat and lon. Schema: {\"type\": \"string\"}</p>\n","type":"text/plain"},"key":"point","value":"25.381245183194284,51.51926522703756"},{"disabled":true,"description":{"content":"<p> Schema: {\"type\": \"number\", \"minimum\": -90, \"maximum\": 90}</p>\n","type":"text/plain"},"key":"lat","value":"-90"},{"disabled":true,"description":{"content":"<p> Schema: {\"type\": \"number\", \"minimum\": -180, \"maximum\": 180}</p>\n","type":"text/plain"},"key":"lon","value":"-180"},{"disabled":true,"description":{"content":"<p>Travel heading in degrees clockwise from north; used for carriageway and direction selection. Schema: {\"type\": \"number\", \"minimum\": 0, \"maximum\": 360, \"exclusiveMaximum\": true}</p>\n","type":"text/plain"},"key":"heading","value":"0"},{"disabled":true,"description":{"content":"<p>Maximum road matching distance in metres. Schema: {\"type\": \"number\", \"minimum\": 5, \"maximum\": 100, \"default\": 35}</p>\n","type":"text/plain"},"key":"radius","value":"35"},{"disabled":true,"description":{"content":"<p>Optional road identity to resolve nearby roads. The way must still be inside the radius and compatible with heading. Schema: {\"type\": \"string\", \"pattern\": \"^[1-9]\\d{0,17}$\"}</p>\n","type":"text/plain"},"key":"osm_way_id","value":"example"}],"variable":[]}},"response":[{"id":"b1dc25a6-f25c-4b6a-9397-3bd905ea8857","name":"Synthetic abbreviated success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/speed-limit?point=25.381245183194284,51.51926522703756","host":["https://osrmroute.com"],"path":["api","1","speed-limit"],"query":[{"key":"point","value":"25.381245183194284,51.51926522703756","description":"Latitude,longitude. Supply point or both lat and lon. Schema: {\"type\": \"string\"}"},{"key":"lat","value":"-90","description":" Schema: {\"type\": \"number\", \"minimum\": -90, \"maximum\": 90}","disabled":true},{"key":"lon","value":"-180","description":" Schema: {\"type\": \"number\", \"minimum\": -180, \"maximum\": 180}","disabled":true},{"key":"heading","value":"0","description":"Travel heading in degrees clockwise from north; used for carriageway and direction selection. Schema: {\"type\": \"number\", \"minimum\": 0, \"maximum\": 360, \"exclusiveMaximum\": true}","disabled":true},{"key":"radius","value":"35","description":"Maximum road matching distance in metres. Schema: {\"type\": \"number\", \"minimum\": 5, \"maximum\": 100, \"default\": 35}","disabled":true},{"key":"osm_way_id","value":"example","description":"Optional road identity to resolve nearby roads. The way must still be inside the radius and compatible with heading. Schema: {\"type\": \"string\", \"pattern\": \"^[1-9]\\\\d{0,17}$\"}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"unknown\",\n  \"speed_limit\": null,\n  \"unit\": \"km/h\",\n  \"reason\": \"No explicit speed limit is mapped on this road.\"\n}"},{"id":"55755e75-daab-49f0-8589-03de597583e3","name":"Synthetic · missing authentication","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/1/speed-limit?point=25.381245183194284,51.51926522703756","host":["https://osrmroute.com"],"path":["api","1","speed-limit"],"query":[{"key":"point","value":"25.381245183194284,51.51926522703756","description":"Latitude,longitude. Supply point or both lat and lon. Schema: {\"type\": \"string\"}"},{"key":"lat","value":"-90","description":" Schema: {\"type\": \"number\", \"minimum\": -90, \"maximum\": 90}","disabled":true},{"key":"lon","value":"-180","description":" Schema: {\"type\": \"number\", \"minimum\": -180, \"maximum\": 180}","disabled":true},{"key":"heading","value":"0","description":"Travel heading in degrees clockwise from north; used for carriageway and direction selection. Schema: {\"type\": \"number\", \"minimum\": 0, \"maximum\": 360, \"exclusiveMaximum\": true}","disabled":true},{"key":"radius","value":"35","description":"Maximum road matching distance in metres. Schema: {\"type\": \"number\", \"minimum\": 5, \"maximum\": 100, \"default\": 35}","disabled":true},{"key":"osm_way_id","value":"example","description":"Optional road identity to resolve nearby roads. The way must still be inside the radius and compatible with heading. Schema: {\"type\": \"string\", \"pattern\": \"^[1-9]\\\\d{0,17}$\"}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"9b5594c9-a445-48d4-8d87-ca79d6938134"},{"name":"Road data: lookup","id":"0dc640f6-674c-49b7-85a7-611bde709396","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/lookup","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Business: 100,000 road-data operations per billing month and 120 requests/minute shared across keys. Enterprise: separately provisioned contract. No ordinary API credits. Lookup/page = 1 operation; batch = point count; usage is free. Other plans are not entitled.</p>\n<p>Business: 100,000 operations per billing month, 120 requests/minute shared across account keys. Enterprise requires an operator-provisioned contract. One lookup/page = one operation; batch = number of points. Usage reads are free. Failed batches refund all points; a successful unknown limit or empty in-coverage page counts. No ordinary API-credit charge. Signs are source observations and do not override OSM speed limits.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>lat</code></td>\n<td>number</td>\n<td>yes</td>\n<td>{\"minimum\": -90, \"maximum\": 90}</td>\n</tr>\n<tr>\n<td><code>lon</code></td>\n<td>number</td>\n<td>yes</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>heading</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 360}</td>\n</tr>\n<tr>\n<td><code>radius</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": 5, \"maximum\": 100, \"default\": 35}</td>\n</tr>\n<tr>\n<td><code>osm_way_id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"pattern\": \"^[1-9][0-9]{0,17}$\"}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"lat\",\n    \"lon\"\n  ],\n  \"properties\": {\n    \"lat\": {\n      \"type\": \"number\",\n      \"minimum\": -90,\n      \"maximum\": 90\n    },\n    \"lon\": {\n      \"type\": \"number\",\n      \"minimum\": -180,\n      \"maximum\": 180\n    },\n    \"heading\": {\n      \"type\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 360,\n      \"exclusiveMaximum\": true\n    },\n    \"radius\": {\n      \"type\": \"number\",\n      \"minimum\": 5,\n      \"maximum\": 100,\n      \"default\": 35\n    },\n    \"osm_way_id\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[1-9][0-9]{0,17}$\"\n    }\n  }\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>401</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>403</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>413</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>422</strong>: Outside available source coverage (not charged)</li>\n<li><strong>429</strong>: Monthly quota, request rate or concurrency limit</li>\n<li><strong>503</strong>: Request rejected or unavailable (not charged)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","roads","lookup"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"25c1b0f9-1953-4703-8f0e-2af2a757576c","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/lookup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"status\": \"unknown\",\n    \"speed_limit\": null,\n    \"unit\": \"km/h\",\n    \"reason\": \"No explicit speed limit is mapped on this road.\"\n  },\n  \"operations\": 1\n}"},{"id":"b17ad0f3-2c44-4d5f-8ca5-9e45a3005500","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/lookup"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"0dc640f6-674c-49b7-85a7-611bde709396"},{"name":"Road data: batch","id":"fbf0e5e8-f23f-4b66-9cec-f66897f6d95d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    {\n      \"lat\": 50.087,\n      \"lon\": 14.421\n    },\n    {\n      \"lat\": 50.088,\n      \"lon\": 14.422\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/batch","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Business: 100,000 road-data operations per billing month and 120 requests/minute shared across keys. Enterprise: separately provisioned contract. No ordinary API credits. Lookup/page = 1 operation; batch = point count; usage is free. Other plans are not entitled.</p>\n<p>Business: 100,000 operations per billing month, 120 requests/minute shared across account keys. Enterprise requires an operator-provisioned contract. One lookup/page = one operation; batch = number of points. Usage reads are free. Failed batches refund all points; a successful unknown limit or empty in-coverage page counts. No ordinary API-credit charge. Signs are source observations and do not override OSM speed limits.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>points</code></td>\n<td>array</td>\n<td>yes</td>\n<td>{\"minItems\": 1, \"maxItems\": 50}</td>\n</tr>\n<tr>\n<td><code>points[].lat</code></td>\n<td>number</td>\n<td>yes</td>\n<td>{\"minimum\": -90, \"maximum\": 90}</td>\n</tr>\n<tr>\n<td><code>points[].lon</code></td>\n<td>number</td>\n<td>yes</td>\n<td>{\"minimum\": -180, \"maximum\": 180}</td>\n</tr>\n<tr>\n<td><code>points[].heading</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": 0, \"maximum\": 360}</td>\n</tr>\n<tr>\n<td><code>points[].radius</code></td>\n<td>number</td>\n<td>no</td>\n<td>{\"minimum\": 5, \"maximum\": 100, \"default\": 35}</td>\n</tr>\n<tr>\n<td><code>points[].osm_way_id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"pattern\": \"^[1-9][0-9]{0,17}$\"}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"points\"\n  ],\n  \"properties\": {\n    \"points\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"maxItems\": 50,\n      \"items\": {\n        \"type\": \"object\",\n        \"additionalProperties\": false,\n        \"required\": [\n          \"lat\",\n          \"lon\"\n        ],\n        \"properties\": {\n          \"lat\": {\n            \"type\": \"number\",\n            \"minimum\": -90,\n            \"maximum\": 90\n          },\n          \"lon\": {\n            \"type\": \"number\",\n            \"minimum\": -180,\n            \"maximum\": 180\n          },\n          \"heading\": {\n            \"type\": \"number\",\n            \"minimum\": 0,\n            \"maximum\": 360,\n            \"exclusiveMaximum\": true\n          },\n          \"radius\": {\n            \"type\": \"number\",\n            \"minimum\": 5,\n            \"maximum\": 100,\n            \"default\": 35\n          },\n          \"osm_way_id\": {\n            \"type\": \"string\",\n            \"pattern\": \"^[1-9][0-9]{0,17}$\"\n          }\n        }\n      }\n    }\n  }\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>401</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>403</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>413</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>422</strong>: Outside available source coverage (not charged)</li>\n<li><strong>429</strong>: Monthly quota, request rate or concurrency limit</li>\n<li><strong>503</strong>: Request rejected or unavailable (not charged)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","roads","batch"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"93062ba7-8b5c-4f13-980c-3f0569867026","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    {\n      \"lat\": 50.087,\n      \"lon\": 14.421\n    },\n    {\n      \"lat\": 50.088,\n      \"lon\": 14.422\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"results\": [\n      {\n        \"status\": \"unknown\",\n        \"speed_limit\": null,\n        \"unit\": \"km/h\",\n        \"reason\": \"No explicit speed limit is mapped on this road.\"\n      },\n      {\n        \"status\": \"unknown\",\n        \"speed_limit\": null,\n        \"unit\": \"km/h\",\n        \"reason\": \"No explicit speed limit is mapped on this road.\"\n      }\n    ]\n  },\n  \"operations\": 2\n}"},{"id":"96fd5849-c963-4d78-92a1-d6d2fa78f76e","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"points\": [\n    {\n      \"lat\": 50.087,\n      \"lon\": 14.421\n    },\n    {\n      \"lat\": 50.088,\n      \"lon\": 14.422\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/batch"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"fbf0e5e8-f23f-4b66-9cec-f66897f6d95d"},{"name":"Road data: signs","id":"3034d418-b2c2-4cea-bb81-501e6230cbe2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"country\": \"CZ\",\n  \"bbox\": [\n    14.42,\n    50.08,\n    14.44,\n    50.09\n  ],\n  \"limit\": 10\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/signs","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Business: 100,000 road-data operations per billing month and 120 requests/minute shared across keys. Enterprise: separately provisioned contract. No ordinary API credits. Lookup/page = 1 operation; batch = point count; usage is free. Other plans are not entitled.</p>\n<p>Business: 100,000 operations per billing month, 120 requests/minute shared across account keys. Enterprise requires an operator-provisioned contract. One lookup/page = one operation; batch = number of points. Usage reads are free. Failed batches refund all points; a successful unknown limit or empty in-coverage page counts. No ordinary API-credit charge. Signs are source observations and do not override OSM speed limits.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>country</code></td>\n<td>string</td>\n<td>yes</td>\n<td>{\"pattern\": \"^[A-Z]{2}$\"}</td>\n</tr>\n<tr>\n<td><code>bbox</code></td>\n<td>array</td>\n<td>yes</td>\n<td>west,south,east,north; maximum width 0.05 degrees and height 0.025 degrees; latitude within ±85; no antimeridian crossing; center must match country. More than 10,000 candidates returns 422; reduce the window. {\"minItems\": 4, \"maxItems\": 4}</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>no</td>\n<td>{\"minimum\": 1, \"maximum\": 100, \"default\": 100}</td>\n</tr>\n<tr>\n<td><code>cursor</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"pattern\": \"^[0-9]{1,30}$\"}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"country\",\n    \"bbox\"\n  ],\n  \"properties\": {\n    \"country\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Z]{2}$\"\n    },\n    \"bbox\": {\n      \"type\": \"array\",\n      \"minItems\": 4,\n      \"maxItems\": 4,\n      \"items\": {\n        \"type\": \"number\"\n      },\n      \"description\": \"west,south,east,north; maximum width 0.05 degrees and height 0.025 degrees; latitude within \\u00b185; no antimeridian crossing; center must match country. More than 10,000 candidates returns 422; reduce the window.\"\n    },\n    \"limit\": {\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"maximum\": 100,\n      \"default\": 100\n    },\n    \"cursor\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[0-9]{1,30}$\"\n    }\n  }\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>401</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>403</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>413</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>422</strong>: Outside available source coverage (not charged)</li>\n<li><strong>429</strong>: Monthly quota, request rate or concurrency limit</li>\n<li><strong>503</strong>: Request rejected or unavailable (not charged)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","roads","signs"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"49869c8b-903f-4bd0-8069-887903b0a98a","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"country\": \"CZ\",\n  \"bbox\": [\n    14.42,\n    50.08,\n    14.44,\n    50.09\n  ],\n  \"limit\": 10\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/signs"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"observations\": [],\n    \"next_cursor\": null,\n    \"coverage\": \"partial_source_observations\",\n    \"attribution\": \"Mapillary\",\n    \"attribution_url\": \"https://www.mapillary.com/\"\n  },\n  \"operations\": 1\n}"},{"id":"ce011ccd-4140-4d30-8c32-81444a48d7ed","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"country\": \"CZ\",\n  \"bbox\": [\n    14.42,\n    50.08,\n    14.44,\n    50.09\n  ],\n  \"limit\": 10\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/signs"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"3034d418-b2c2-4cea-bb81-501e6230cbe2"},{"name":"Road data: usage","id":"8e9e82e0-7562-4183-baf4-c0c5c5e92ceb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/usage","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Business: 100,000 road-data operations per billing month and 120 requests/minute shared across keys. Enterprise: separately provisioned contract. No ordinary API credits. Lookup/page = 1 operation; batch = point count; usage is free. Other plans are not entitled.</p>\n<p>Business: 100,000 operations per billing month, 120 requests/minute shared across account keys. Enterprise requires an operator-provisioned contract. One lookup/page = one operation; batch = number of points. Usage reads are free. Failed batches refund all points; a successful unknown limit or empty in-coverage page counts. No ordinary API-credit charge. Signs are source observations and do not override OSM speed limits.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"additionalProperties\": false\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Success</li>\n<li><strong>400</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>401</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>403</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>413</strong>: Request rejected or unavailable (not charged)</li>\n<li><strong>422</strong>: Outside available source coverage (not charged)</li>\n<li><strong>429</strong>: Monthly quota, request rate or concurrency limit</li>\n<li><strong>503</strong>: Request rejected or unavailable (not charged)</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","v1","roads","usage"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"a7046a18-97b5-4b65-abe5-53cc2caec0b1","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/usage"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"limit\": 100000,\n  \"used\": 0,\n  \"reserved\": 0,\n  \"remaining\": 100000,\n  \"requests_per_minute\": 120,\n  \"resets_at\": \"2026-11-01T00:00:00.000Z\"\n}"},{"id":"d59cb392-6e10-4714-9e2a-848a6299b5f8","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/v1/roads/usage"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"8e9e82e0-7562-4183-baf4-c0c5c5e92ceb"}],"id":"d337f6c9-0274-470a-a930-9f6e87508e10","_postman_id":"d337f6c9-0274-470a-a930-9f6e87508e10","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}}},{"name":"06 · Jobs, sandbox and source metadata","item":[{"name":"Queue an encrypted, expiring job","id":"2b845c76-250e-4210-b46c-6701a8b11ac3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Idempotency-Key","value":""},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operation\": \"geocode_batch\",\n  \"input\": {\n    \"queries\": [\n      \"Berlin, Germany\"\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/jobs","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Eligible underlying API plan and scopes required. Job management adds no API credits; normal credits charged when work dispatches. Idempotency prevents duplicate queueing, not permission to replay unknown outcomes.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>Idempotency-Key</strong> (header, required):  Schema: <code>{\"type\": \"string\", \"minLength\": 16, \"maxLength\": 100}</code></li>\n</ul>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>operation</code></td>\n<td>string</td>\n<td>yes</td>\n<td>{\"enum\": [\"geocode_batch\", \"matrix\", \"optimize\"]}</td>\n</tr>\n<tr>\n<td><code>input</code></td>\n<td>object</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td><code>webhook_id</code></td>\n<td>string</td>\n<td>no</td>\n<td>{\"format\": \"uuid\"}</td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"required\": [\n    \"operation\",\n    \"input\"\n  ],\n  \"properties\": {\n    \"operation\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"geocode_batch\",\n        \"matrix\",\n        \"optimize\"\n      ]\n    },\n    \"input\": {\n      \"type\": \"object\"\n    },\n    \"webhook_id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    }\n  }\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>202</strong>: Queued or idempotent replay; credits reserved only at normal gateway dispatch</li>\n<li><strong>409</strong>: Idempotency payload conflict</li>\n<li><strong>429</strong>: Active-job or request limit</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","jobs"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"8b9fa011-3e67-4f1c-90b1-3b1494895f62","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Idempotency-Key","value":""},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operation\": \"geocode_batch\",\n  \"input\": {\n    \"queries\": [\n      \"Berlin, Germany\"\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/jobs"},"status":"Accepted","code":202,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"job\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"state\": \"queued\"\n  },\n  \"poll_url\": \"/api/jobs/00000000-0000-4000-8000-000000000001\",\n  \"billing\": \"Normal gateway credits are reserved only when the worker dispatches. An unknown outcome is never automatically retried.\"\n}"},{"id":"8185c0f6-749d-41a7-adca-ba1688d09305","name":"Synthetic · missing authentication","originalRequest":{"method":"POST","header":[{"key":"Idempotency-Key","value":""},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operation\": \"geocode_batch\",\n  \"input\": {\n    \"queries\": [\n      \"Berlin, Germany\"\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/jobs"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"2b845c76-250e-4210-b46c-6701a8b11ac3"},{"name":"List jobs created by this API key","id":"98791899-5ebd-4b09-b7ae-9f989009a297","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/jobs","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Eligible underlying API plan and scopes required. Job management adds no API credits; normal credits charged when work dispatches. Idempotency prevents duplicate queueing, not permission to replay unknown outcomes.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Last 50 jobs</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","jobs"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"6320f4a0-3817-4bd1-89db-8c6fdc5c070a","name":"Synthetic abbreviated success","originalRequest":{"method":"GET","header":[],"url":"https://osrmroute.com/api/jobs"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jobs\": []\n}"},{"id":"8d53f38b-63e9-4971-b8c7-8bc56e83355b","name":"Synthetic · missing authentication","originalRequest":{"method":"GET","header":[],"url":"https://osrmroute.com/api/jobs"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"98791899-5ebd-4b09-b7ae-9f989009a297"},{"name":"Read job status or encrypted result before 24-hour expiry","id":"7cc14925-2ed9-47e6-b0ce-b9451d971cc7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/jobs/","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Eligible underlying API plan and scopes required. Job management adds no API credits; normal credits charged when work dispatches. Idempotency prevents duplicate queueing, not permission to replay unknown outcomes.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>id</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"format\": \"uuid\"}</code></li>\n<li><strong>result</strong> (query, optional):  Schema: <code>{\"type\": \"integer\", \"enum\": [0, 1]}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Job status or completed result</li>\n<li><strong>409</strong>: Result not ready</li>\n<li><strong>410</strong>: Job expired</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","jobs",""],"host":["https://osrmroute.com"],"query":[{"disabled":true,"description":{"content":"<p> Schema: {\"type\": \"integer\", \"enum\": [0, 1]}</p>\n","type":"text/plain"},"key":"result","value":"0"}],"variable":[]}},"response":[{"id":"31b9aa1b-edb4-44ec-ad0b-c140a745ff30","name":"Synthetic abbreviated success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/jobs/","host":["https://osrmroute.com"],"path":["api","jobs",""],"query":[{"key":"result","value":"0","description":" Schema: {\"type\": \"integer\", \"enum\": [0, 1]}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"job\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"state\": \"queued\"\n  }\n}"},{"id":"058b3c8c-a1a0-4bfd-a18e-ab6fd14b9d5c","name":"Synthetic · missing authentication","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://osrmroute.com/api/jobs/","host":["https://osrmroute.com"],"path":["api","jobs",""],"query":[{"key":"result","value":"0","description":" Schema: {\"type\": \"integer\", \"enum\": [0, 1]}","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"7cc14925-2ed9-47e6-b0ce-b9451d971cc7"},{"name":"Cancel a queued job; running work cannot be cancelled","id":"13017db0-38f0-41b6-abb3-778f05abe377","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://osrmroute.com/api/jobs/","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Eligible underlying API plan and scopes required. Job management adds no API credits; normal credits charged when work dispatches. Idempotency prevents duplicate queueing, not permission to replay unknown outcomes.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<ul>\n<li><strong>id</strong> (path, required):  Schema: <code>{\"type\": \"string\", \"format\": \"uuid\"}</code></li>\n</ul>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Queued job cancelled</li>\n<li><strong>409</strong>: Only queued jobs can be cancelled</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n<p><strong>Changes account data. Send individually after reviewing the action. Do not run this entire collection against production.</strong></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","jobs",""],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"c086e8ca-cc37-45b0-ac16-2ba5b0a51438","name":"Synthetic abbreviated success","originalRequest":{"method":"DELETE","header":[],"url":"https://osrmroute.com/api/jobs/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"ok\": true\n}"},{"id":"726fbc8f-f4d3-4469-ad2c-9ffe1b3a9669","name":"Synthetic · missing authentication","originalRequest":{"method":"DELETE","header":[],"url":"https://osrmroute.com/api/jobs/"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"13017db0-38f0-41b6-abb3-778f05abe377"},{"name":"Deterministic zero-credit fixture; requires sandbox key","id":"2f1aa0d0-11ed-4120-8a00-bb9f413379b8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operation\": \"geocode\",\n  \"input\": {\n    \"q\": \"Berlin\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/sandbox","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Sandbox key required, zero credits, deterministic fixtures only.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"json-body\">JSON body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Rules</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>operation</code></td>\n<td>string</td>\n<td>yes</td>\n<td>{\"enum\": [\"route\", \"matrix\", \"geocode\", \"vrp\"]}</td>\n</tr>\n<tr>\n<td><code>input</code></td>\n<td>object</td>\n<td>yes</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Full JSON Schema:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"required\": [\n    \"operation\",\n    \"input\"\n  ],\n  \"properties\": {\n    \"operation\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"route\",\n        \"matrix\",\n        \"geocode\",\n        \"vrp\"\n      ]\n    },\n    \"input\": {\n      \"type\": \"object\"\n    }\n  }\n}\n</code></pre>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Fixture only; not for navigation; no live search or optimization</li>\n<li><strong>403</strong>: Wrong environment or service scope</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","urlObject":{"path":["api","sandbox"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"1308a218-527d-4283-8972-dc17607a991a","name":"Synthetic abbreviated success","originalRequest":{"auth":{"type":"bearer","bearer":{"token":""}},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operation\": \"geocode\",\n  \"input\": {\n    \"q\": \"Berlin\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/sandbox"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"sandbox\": true,\n  \"source\": \"deterministic_fixture\",\n  \"billed_credits\": 0,\n  \"not_for_navigation\": true,\n  \"hits\": [\n    {\n      \"name\": \"Fixture \\u00b7 Bak\\u0131\",\n      \"point\": {\n        \"lat\": 40.4093,\n        \"lng\": 49.8671\n      },\n      \"confidence\": null\n    }\n  ]\n}"},{"id":"a12955c8-faa7-43f6-adec-af1918feb8a4","name":"Synthetic · missing authentication","originalRequest":{"auth":{"type":"bearer","bearer":{"token":""}},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operation\": \"geocode\",\n  \"input\": {\n    \"q\": \"Berlin\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/sandbox"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"2f1aa0d0-11ed-4120-8a00-bb9f413379b8"},{"name":"Dated dataset estimates and evidence review counts; info scope","id":"ff2ab62f-c4b3-44c3-beda-256e6825b246","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://osrmroute.com/api/source-metadata","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>Authenticated info scope. No ordinary API credits; 30 requests/minute per key.</p>\n<p>Does not expose or infer posted legal speed limits. Unavailable evidence stays unknown.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><strong>200</strong>: Source coverage and freshness metadata</li>\n</ul>\n<p>Saved examples are synthetic and abbreviated, not measurements of current coverage or a promise of live success. Fill local variables with IDs returned by your own requests. Do not publish populated keys or tokens. Optional query parameters are initially disabled; enable only what your request needs.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","source-metadata"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"b1643dd4-45e8-4cde-8550-6f4fc50ae20b","name":"Synthetic abbreviated success","originalRequest":{"method":"GET","header":[],"url":"https://osrmroute.com/api/source-metadata"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"snapshot\": null,\n  \"reviews\": [],\n  \"legal_rule_publication\": false,\n  \"notice\": \"Source coverage and reviewed evidence only. Missing evidence remains unknown; no inferred posted speed limits.\"\n}"},{"id":"6d19146a-382f-45d9-9a6f-ff6dd7ad2ce1","name":"Synthetic · missing authentication","originalRequest":{"method":"GET","header":[],"url":"https://osrmroute.com/api/source-metadata"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/problem+json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_key\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"code\": \"invalid_key\",\n  \"error\": \"invalid_key\"\n}"}],"_postman_id":"ff2ab62f-c4b3-44c3-beda-256e6825b246"}],"id":"f8e9608c-8396-47d4-ac25-851923d22cfa","_postman_id":"f8e9608c-8396-47d4-ac25-851923d22cfa","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}}},{"name":"07 · Remote MCP","item":[{"name":"initialize","id":"fd329b06-879e-4058-81ce-a04415e5425b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"initialize\",\n  \"params\": {\n    \"protocolVersion\": \"2025-06-18\",\n    \"capabilities\": {},\n    \"clientInfo\": {\n      \"name\": \"postman\",\n      \"version\": \"1.0.0\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"24d81693-6135-4291-98bf-54ed49d831e3","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"initialize\",\n  \"params\": {\n    \"protocolVersion\": \"2025-06-18\",\n    \"capabilities\": {},\n    \"clientInfo\": {\n      \"name\": \"postman\",\n      \"version\": \"1.0.0\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {\n    \"protocolVersion\": \"2025-06-18\",\n    \"capabilities\": {\n      \"tools\": {}\n    },\n    \"serverInfo\": {\n      \"name\": \"osrmroute\",\n      \"version\": \"1.1.0\"\n    }\n  }\n}"}],"_postman_id":"fd329b06-879e-4058-81ce-a04415e5425b"},{"name":"ping","id":"26644c73-805f-40ed-8782-ac6d43e18a79","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"ping\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"0d3ed71c-9c60-47f4-90b9-031b7c254beb","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"ping\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {}\n}"}],"_postman_id":"26644c73-805f-40ed-8782-ac6d43e18a79"},{"name":"tools/list","id":"bd8deeb6-c814-42d9-bbd9-d774528774cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools/list\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"e4230893-a07a-4ae8-bc32-532d34666637","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools/list\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {\n    \"tools\": [\n      {\n        \"name\": \"place_details\",\n        \"description\": \"Read source attributes by an OSM search result ID. One credit, one-hour source cache.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"maxLength\": 24\n            }\n          },\n          \"required\": [\n            \"id\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"get_route\",\n        \"description\": \"Route between coordinates using the selected travel profile.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"profile\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"driving\",\n                \"cycling\",\n                \"walking\"\n              ]\n            },\n            \"coordinates\": {\n              \"type\": \"array\",\n              \"minItems\": 2,\n              \"maxItems\": 25,\n              \"items\": {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                }\n              }\n            }\n          },\n          \"required\": [\n            \"coordinates\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"distance_matrix\",\n        \"description\": \"Compute road-network durations and distances between coordinates.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"profile\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"driving\",\n                \"cycling\",\n                \"walking\"\n              ]\n            },\n            \"coordinates\": {\n              \"type\": \"array\",\n              \"minItems\": 2,\n              \"maxItems\": 25,\n              \"items\": {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                }\n              }\n            }\n          },\n          \"required\": [\n            \"coordinates\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"reverse_geocode\",\n        \"description\": \"Find the nearest address.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"lat\": {\n              \"type\": \"number\",\n              \"minimum\": -90,\n              \"maximum\": 90\n            },\n            \"lon\": {\n              \"type\": \"number\",\n              \"minimum\": -180,\n              \"maximum\": 180\n            }\n          },\n          \"required\": [\n            \"lat\",\n            \"lon\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"autocomplete_address\",\n        \"description\": \"Complete a partial address.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"q\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 200\n            }\n          },\n          \"required\": [\n            \"q\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"get_timezone\",\n        \"description\": \"Get the timezone at a coordinate.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"lat\": {\n              \"type\": \"number\",\n              \"minimum\": -90,\n              \"maximum\": 90\n            },\n            \"lon\": {\n              \"type\": \"number\",\n              \"minimum\": -180,\n              \"maximum\": 180\n            }\n          },\n          \"required\": [\n            \"lat\",\n            \"lon\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"get_isochrone\",\n        \"description\": \"Get the area reachable within a time budget.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"point\": {\n              \"type\": \"string\",\n              \"description\": \"latitude,longitude\"\n            },\n            \"time_limit\": {\n              \"type\": \"integer\",\n              \"minimum\": 60,\n              \"maximum\": 3600\n            }\n          },\n          \"required\": [\n            \"point\",\n            \"time_limit\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"optimize_route\",\n        \"description\": \"Optimize delivery stops across vehicles.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"vehicles\": {\n              \"type\": \"array\",\n              \"minItems\": 1,\n              \"maxItems\": 20,\n              \"items\": {\n                \"type\": \"object\"\n              }\n            },\n            \"services\": {\n              \"type\": \"array\",\n              \"minItems\": 1,\n              \"maxItems\": 100,\n              \"items\": {\n                \"type\": \"object\"\n              }\n            }\n          },\n          \"required\": [\n            \"vehicles\",\n            \"services\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"geocode_address\",\n        \"description\": \"Find an address. Uses geocode credits.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"q\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 200\n            }\n          },\n          \"required\": [\n            \"q\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"natural_search\",\n        \"description\": \"Find cafes, restaurants, pharmacies, parking, fuel or charging stations near a place. Set ai=true for Business AI (1,000/month). Otherwise constrained English; no live availability.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"q\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 1000\n            },\n            \"center\": {\n              \"type\": \"array\",\n              \"minItems\": 2,\n              \"maxItems\": 2,\n              \"items\": {\n                \"type\": \"number\"\n              }\n            },\n            \"ai\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"q\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"suggest_addresses\",\n        \"description\": \"Get address suggestions and owner-bound retrieval tokens.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"q\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 200\n            }\n          },\n          \"required\": [\n            \"q\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"retrieve_place\",\n        \"description\": \"Retrieve a suggestion snapshot within ten minutes.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"token\": {\n              \"type\": \"string\",\n              \"maxLength\": 16384\n            }\n          },\n          \"required\": [\n            \"token\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"structured_geocode\",\n        \"description\": \"Search an address using separate components.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"housenumber\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 200\n            },\n            \"street\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 200\n            },\n            \"city\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 200\n            },\n            \"state\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 200\n            },\n            \"postcode\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 200\n            },\n            \"countrycode\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 200\n            }\n          },\n          \"required\": [],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"places_along_route\",\n        \"description\": \"Discover places with bounded driving detours. 14 credits; not exhaustive or live traffic.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"start\": {\n              \"type\": \"array\",\n              \"minItems\": 2,\n              \"maxItems\": 2,\n              \"items\": {\n                \"type\": \"number\"\n              }\n            },\n            \"end\": {\n              \"type\": \"array\",\n              \"minItems\": 2,\n              \"maxItems\": 2,\n              \"items\": {\n                \"type\": \"number\"\n              }\n            },\n            \"category\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"cafe\",\n                \"restaurant\",\n                \"pharmacy\",\n                \"parking\",\n                \"fuel\",\n                \"charging_station\"\n              ]\n            },\n            \"max_detour_seconds\": {\n              \"type\": \"number\",\n              \"minimum\": 0,\n              \"maximum\": 1800\n            },\n            \"limit\": {\n              \"type\": \"integer\",\n              \"minimum\": 1,\n              \"maximum\": 8\n            }\n          },\n          \"required\": [\n            \"start\",\n            \"end\",\n            \"category\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"static_map\",\n        \"description\": \"Render a PNG map. 4 credits.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"center\": {\n              \"type\": \"array\",\n              \"minItems\": 2,\n              \"maxItems\": 2,\n              \"items\": {\n                \"type\": \"number\"\n              }\n            },\n            \"zoom\": {\n              \"type\": \"integer\",\n              \"minimum\": 1,\n              \"maximum\": 14\n            },\n            \"width\": {\n              \"type\": \"integer\",\n              \"minimum\": 128,\n              \"maximum\": 512\n            },\n            \"height\": {\n              \"type\": \"integer\",\n              \"minimum\": 128,\n              \"maximum\": 512\n            },\n            \"style\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"light\",\n                \"dark\",\n                \"navigation\",\n                \"minimal\"\n              ]\n            }\n          },\n          \"required\": [\n            \"center\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"list_styles\",\n        \"description\": \"List your styles. Requires explicit studio scope.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {},\n          \"required\": [],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"list_datasets\",\n        \"description\": \"List your datasets. Requires explicit studio scope.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {},\n          \"required\": [],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      },\n      {\n        \"name\": \"preview_style\",\n        \"description\": \"Preview style commands without saving or publishing. Requires studio scope. ai=true uses the Business monthly AI quota.\",\n        \"inputSchema\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"prompt\": {\n              \"type\": \"string\",\n              \"maxLength\": 1000\n            },\n            \"design\": {\n              \"type\": \"object\"\n            },\n            \"ai\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"prompt\"\n          ],\n          \"additionalProperties\": false\n        },\n        \"annotations\": {\n          \"readOnlyHint\": true,\n          \"destructiveHint\": false,\n          \"openWorldHint\": true\n        }\n      }\n    ]\n  }\n}"}],"_postman_id":"bd8deeb6-c814-42d9-bbd9-d774528774cf"},{"name":"Tool · place_details","id":"1ad1710d-0f7b-451f-9ff1-dd901a2a5997","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"place_details\",\n    \"arguments\": {\n      \"id\": \"\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Read source attributes by an OSM search result ID. One credit, one-hour source cache.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"maxLength\": 24\n    }\n  },\n  \"required\": [\n    \"id\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"2b77f756-b6db-4673-ba40-1b9612fb14ac","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"place_details\",\n    \"arguments\": {\n      \"id\": \"\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"place\\\": {\\\"id\\\": \\\"osm:N:1\\\", \\\"name\\\": \\\"Example cafe\\\", \\\"details\\\": {\\\"phone\\\": null, \\\"website\\\": null, \\\"opening_hours\\\": null, \\\"wheelchair\\\": null, \\\"source\\\": \\\"openstreetmap\\\", \\\"license\\\": \\\"ODbL-1.0\\\", \\\"observed_at\\\": null, \\\"source_updated_at\\\": null, \\\"open_now\\\": null}}, \\\"retrieval\\\": \\\"source_object_with_one_hour_cache\\\"}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"1ad1710d-0f7b-451f-9ff1-dd901a2a5997"},{"name":"Tool · get_route","id":"6a5d08a5-e338-4f7a-9db0-7b2e80b657d3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"get_route\",\n    \"arguments\": {\n      \"coordinates\": [\n        [\n          13.405,\n          52.52\n        ],\n        [\n          13.388,\n          52.517\n        ]\n      ]\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Route between coordinates using the selected travel profile.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"profile\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"driving\",\n        \"cycling\",\n        \"walking\"\n      ]\n    },\n    \"coordinates\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 25,\n      \"items\": {\n        \"type\": \"array\",\n        \"minItems\": 2,\n        \"maxItems\": 2,\n        \"items\": {\n          \"type\": \"number\"\n        }\n      }\n    }\n  },\n  \"required\": [\n    \"coordinates\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"127e896b-6b56-4105-b933-e03bf6122380","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"get_route\",\n    \"arguments\": {\n      \"coordinates\": [\n        [\n          13.405,\n          52.52\n        ],\n        [\n          13.388,\n          52.517\n        ]\n      ]\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"code\\\": \\\"Ok\\\", \\\"routes\\\": [{\\\"distance\\\": 3200, \\\"duration\\\": 420, \\\"geometry\\\": {\\\"type\\\": \\\"LineString\\\", \\\"coordinates\\\": [[49.8516, 40.3777], [49.86, 40.4]]}, \\\"legs\\\": [{\\\"distance\\\": 3200, \\\"duration\\\": 420, \\\"steps\\\": []}]}], \\\"waypoints\\\": [{\\\"name\\\": \\\"Example road\\\", \\\"location\\\": [49.8516, 40.3777], \\\"distance\\\": 4.2}]}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"6a5d08a5-e338-4f7a-9db0-7b2e80b657d3"},{"name":"Tool · distance_matrix","id":"74b4a5d9-6547-4ef8-9d07-a4d17c9bd448","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"distance_matrix\",\n    \"arguments\": {\n      \"coordinates\": [\n        [\n          13.405,\n          52.52\n        ],\n        [\n          13.388,\n          52.517\n        ]\n      ]\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Compute road-network durations and distances between coordinates.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"profile\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"driving\",\n        \"cycling\",\n        \"walking\"\n      ]\n    },\n    \"coordinates\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 25,\n      \"items\": {\n        \"type\": \"array\",\n        \"minItems\": 2,\n        \"maxItems\": 2,\n        \"items\": {\n          \"type\": \"number\"\n        }\n      }\n    }\n  },\n  \"required\": [\n    \"coordinates\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"63bbcb64-a6b0-4182-970f-d6c4f3a8bbf1","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"distance_matrix\",\n    \"arguments\": {\n      \"coordinates\": [\n        [\n          13.405,\n          52.52\n        ],\n        [\n          13.388,\n          52.517\n        ]\n      ]\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"code\\\": \\\"Ok\\\", \\\"durations\\\": [[0, 420], [430, 0]], \\\"distances\\\": [[0, 3200], [3300, 0]], \\\"sources\\\": [{\\\"name\\\": \\\"Example road\\\", \\\"location\\\": [49.8516, 40.3777], \\\"distance\\\": 4.2}, {\\\"name\\\": \\\"Second road\\\", \\\"location\\\": [49.86, 40.4], \\\"distance\\\": 3}], \\\"destinations\\\": [{\\\"name\\\": \\\"Example road\\\", \\\"location\\\": [49.8516, 40.3777], \\\"distance\\\": 4.2}, {\\\"name\\\": \\\"Second road\\\", \\\"location\\\": [49.86, 40.4], \\\"distance\\\": 3}]}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"74b4a5d9-6547-4ef8-9d07-a4d17c9bd448"},{"name":"Tool · reverse_geocode","id":"6775f07f-a6ff-4cce-b43c-31b6e78a3a0f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"reverse_geocode\",\n    \"arguments\": {\n      \"lat\": 52.52,\n      \"lon\": 13.405\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Find the nearest address.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"lat\": {\n      \"type\": \"number\",\n      \"minimum\": -90,\n      \"maximum\": 90\n    },\n    \"lon\": {\n      \"type\": \"number\",\n      \"minimum\": -180,\n      \"maximum\": 180\n    }\n  },\n  \"required\": [\n    \"lat\",\n    \"lon\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"e9710d90-d8b2-4da7-ae20-2b350eb4d3a7","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"reverse_geocode\",\n    \"arguments\": {\n      \"lat\": 52.52,\n      \"lon\": 13.405\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"hits\\\": [{\\\"name\\\": \\\"Nizami Street\\\", \\\"city\\\": \\\"Baku\\\", \\\"country\\\": \\\"Azerbaijan\\\", \\\"countrycode\\\": \\\"AZ\\\", \\\"point\\\": {\\\"lat\\\": 40.3777, \\\"lng\\\": 49.8516}}], \\\"took\\\": 12}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"6775f07f-a6ff-4cce-b43c-31b6e78a3a0f"},{"name":"Tool · autocomplete_address","id":"4760755f-face-4488-bcce-827654351d7d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"autocomplete_address\",\n    \"arguments\": {\n      \"q\": \"Berlin\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Complete a partial address.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"q\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200\n    }\n  },\n  \"required\": [\n    \"q\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"ba0d79b4-237f-4ce5-b444-6f73e0a8c453","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"autocomplete_address\",\n    \"arguments\": {\n      \"q\": \"Berlin\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"suggestions\\\": [{\\\"name\\\": \\\"Nizami Street\\\", \\\"city\\\": \\\"Baku\\\", \\\"country\\\": \\\"Azerbaijan\\\", \\\"countrycode\\\": \\\"AZ\\\", \\\"point\\\": {\\\"lat\\\": 40.3777, \\\"lng\\\": 49.8516}, \\\"label\\\": \\\"Nizami Street, Baku, Azerbaijan\\\"}], \\\"took\\\": 12}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"4760755f-face-4488-bcce-827654351d7d"},{"name":"Tool · get_timezone","id":"f653b127-f0f9-41f2-a7ad-2b6b837254c6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"get_timezone\",\n    \"arguments\": {\n      \"lat\": 52.52,\n      \"lon\": 13.405\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Get the timezone at a coordinate.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"lat\": {\n      \"type\": \"number\",\n      \"minimum\": -90,\n      \"maximum\": 90\n    },\n    \"lon\": {\n      \"type\": \"number\",\n      \"minimum\": -180,\n      \"maximum\": 180\n    }\n  },\n  \"required\": [\n    \"lat\",\n    \"lon\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"04042bf3-eb80-4bb7-873c-4a9ed9fcf939","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"get_timezone\",\n    \"arguments\": {\n      \"lat\": 52.52,\n      \"lon\": 13.405\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"timezone\\\": \\\"Asia/Baku\\\", \\\"point\\\": {\\\"lat\\\": 40.3777, \\\"lng\\\": 49.8516}, \\\"utc_offset\\\": \\\"+04:00\\\", \\\"utc_offset_seconds\\\": 14400, \\\"dst\\\": false, \\\"abbreviation\\\": \\\"GMT+4\\\", \\\"local_time\\\": \\\"2026-01-01T16:00:00\\\", \\\"utc_time\\\": \\\"2026-01-01T12:00:00.000Z\\\"}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"f653b127-f0f9-41f2-a7ad-2b6b837254c6"},{"name":"Tool · get_isochrone","id":"cafda1aa-b0d1-4077-9086-95a8abe7ee8f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"get_isochrone\",\n    \"arguments\": {\n      \"point\": \"52.52,13.405\",\n      \"time_limit\": 600\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Get the area reachable within a time budget.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"point\": {\n      \"type\": \"string\",\n      \"description\": \"latitude,longitude\"\n    },\n    \"time_limit\": {\n      \"type\": \"integer\",\n      \"minimum\": 60,\n      \"maximum\": 3600\n    }\n  },\n  \"required\": [\n    \"point\",\n    \"time_limit\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"30623f09-8bf4-4698-bd35-2a16f74a6d88","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"get_isochrone\",\n    \"arguments\": {\n      \"point\": \"52.52,13.405\",\n      \"time_limit\": 600\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"quality\\\": {\\\"status\\\": \\\"estimated\\\", \\\"method\\\": \\\"sampled_osrm\\\", \\\"sampled_points\\\": 80, \\\"reachable_points\\\": 48, \\\"covered_bearings\\\": 16, \\\"total_bearings\\\": 16, \\\"unknown_points\\\": 0}, \\\"polygons\\\": [{\\\"type\\\": \\\"Feature\\\", \\\"properties\\\": {\\\"bucket\\\": 0, \\\"time_limit\\\": 600}, \\\"geometry\\\": {\\\"type\\\": \\\"Polygon\\\", \\\"coordinates\\\": [[[49.84, 40.37], [49.87, 40.37], [49.87, 40.4], [49.84, 40.37]]]}}]}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"cafda1aa-b0d1-4077-9086-95a8abe7ee8f"},{"name":"Tool · optimize_route","id":"4dcb7f03-e1fb-4228-ace7-da52fca18d16","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"optimize_route\",\n    \"arguments\": {\n      \"vehicles\": [\n        {\n          \"vehicle_id\": \"vehicle-1\",\n          \"start_address\": {\n            \"location_id\": \"depot\",\n            \"lat\": 52.52,\n            \"lon\": 13.405\n          }\n        }\n      ],\n      \"services\": [\n        {\n          \"id\": \"stop-1\",\n          \"address\": {\n            \"location_id\": \"stop-1\",\n            \"lat\": 52.517,\n            \"lon\": 13.388\n          }\n        }\n      ]\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Optimize delivery stops across vehicles.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"vehicles\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"maxItems\": 20,\n      \"items\": {\n        \"type\": \"object\"\n      }\n    },\n    \"services\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"maxItems\": 100,\n      \"items\": {\n        \"type\": \"object\"\n      }\n    }\n  },\n  \"required\": [\n    \"vehicles\",\n    \"services\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"f23235a2-3fbd-4059-a266-3452874f5cef","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"optimize_route\",\n    \"arguments\": {\n      \"vehicles\": [\n        {\n          \"vehicle_id\": \"vehicle-1\",\n          \"start_address\": {\n            \"location_id\": \"depot\",\n            \"lat\": 52.52,\n            \"lon\": 13.405\n          }\n        }\n      ],\n      \"services\": [\n        {\n          \"id\": \"stop-1\",\n          \"address\": {\n            \"location_id\": \"stop-1\",\n            \"lat\": 52.517,\n            \"lon\": 13.388\n          }\n        }\n      ]\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"status\\\": \\\"finished\\\", \\\"job_id\\\": \\\"opt-1234567890\\\", \\\"processing_time\\\": 0, \\\"solution\\\": {\\\"unassigned\\\": [], \\\"quality\\\": {\\\"solver\\\": \\\"vroom\\\", \\\"version\\\": \\\"1.15.0\\\", \\\"constraints_verified\\\": true, \\\"optimality_proven\\\": false}, \\\"costs\\\": 420, \\\"distance\\\": 3200, \\\"time\\\": 420, \\\"no_vehicles\\\": 1, \\\"no_unassigned\\\": 0, \\\"routes\\\": [{\\\"vehicle_id\\\": \\\"v1\\\", \\\"distance\\\": 3200, \\\"transport_time\\\": 420, \\\"activities\\\": [{\\\"type\\\": \\\"start\\\", \\\"location_id\\\": \\\"depot\\\", \\\"end_time\\\": 0}, {\\\"type\\\": \\\"service\\\", \\\"id\\\": 10, \\\"location_id\\\": \\\"stop_1\\\", \\\"arr_time\\\": 200, \\\"end_time\\\": 200}, {\\\"type\\\": \\\"end\\\", \\\"location_id\\\": \\\"depot\\\", \\\"arr_time\\\": 420}]}]}}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"4dcb7f03-e1fb-4228-ace7-da52fca18d16"},{"name":"Tool · geocode_address","id":"18263fba-b5e1-48df-a7ad-4660a5af6152","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"geocode_address\",\n    \"arguments\": {\n      \"q\": \"Berlin\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Find an address. Uses geocode credits.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"q\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200\n    }\n  },\n  \"required\": [\n    \"q\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"e4271402-6959-47dd-b370-0fa652b4d687","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"geocode_address\",\n    \"arguments\": {\n      \"q\": \"Berlin\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"hits\\\": [{\\\"name\\\": \\\"Nizami Street\\\", \\\"city\\\": \\\"Baku\\\", \\\"country\\\": \\\"Azerbaijan\\\", \\\"countrycode\\\": \\\"AZ\\\", \\\"point\\\": {\\\"lat\\\": 40.3777, \\\"lng\\\": 49.8516}}], \\\"took\\\": 12}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"18263fba-b5e1-48df-a7ad-4660a5af6152"},{"name":"Tool · natural_search","id":"301aad04-b604-4ceb-8a1c-56fc0038e1c8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"natural_search\",\n    \"arguments\": {\n      \"q\": \"cafes near Berlin\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Find cafes, restaurants, pharmacies, parking, fuel or charging stations near a place. Set ai=true for Business AI (1,000/month). Otherwise constrained English; no live availability.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"q\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 1000\n    },\n    \"center\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"items\": {\n        \"type\": \"number\"\n      }\n    },\n    \"ai\": {\n      \"type\": \"boolean\"\n    }\n  },\n  \"required\": [\n    \"q\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"7ec998df-949f-4d0d-b205-7bcf69bcf92d","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"natural_search\",\n    \"arguments\": {\n      \"q\": \"cafes near Berlin\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"intent\\\": {\\\"category\\\": \\\"cafe\\\", \\\"center\\\": [13.405, 52.52], \\\"radius_meters\\\": 1000, \\\"resolved_location\\\": \\\"Berlin\\\"}, \\\"places\\\": [], \\\"interpretation\\\": \\\"constrained_english_grammar\\\", \\\"distance_model\\\": \\\"straight_line\\\", \\\"exhaustive\\\": false, \\\"candidate_limit\\\": 10}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"301aad04-b604-4ceb-8a1c-56fc0038e1c8"},{"name":"Tool · suggest_addresses","id":"b0ca4d58-d484-47ca-86f8-528d299aa765","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"suggest_addresses\",\n    \"arguments\": {\n      \"q\": \"Berlin\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Get address suggestions and owner-bound retrieval tokens.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"q\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200\n    }\n  },\n  \"required\": [\n    \"q\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"689a1ecd-7b4e-47a7-9345-647342259232","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"suggest_addresses\",\n    \"arguments\": {\n      \"q\": \"Berlin\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"suggestions\\\": [{\\\"id\\\": \\\"osm:N:1\\\", \\\"name\\\": \\\"Example cafe\\\", \\\"address\\\": {\\\"city\\\": \\\"Berlin\\\", \\\"countrycode\\\": \\\"de\\\"}, \\\"token\\\": \\\"EXAMPLE_ONLY_NOT_A_VALID_TOKEN\\\"}], \\\"expires_in_seconds\\\": 600}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"b0ca4d58-d484-47ca-86f8-528d299aa765"},{"name":"Tool · retrieve_place","id":"f67e2541-33a1-473d-a206-1c57479141ec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"retrieve_place\",\n    \"arguments\": {\n      \"token\": \"\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Retrieve a suggestion snapshot within ten minutes.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"token\": {\n      \"type\": \"string\",\n      \"maxLength\": 16384\n    }\n  },\n  \"required\": [\n    \"token\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"bcf72635-3c2b-4eb5-9d5a-d13427d81677","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"retrieve_place\",\n    \"arguments\": {\n      \"token\": \"\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"place\\\": {\\\"id\\\": \\\"osm:N:1\\\", \\\"name\\\": \\\"Example cafe\\\", \\\"point\\\": [13.405, 52.52], \\\"address\\\": {\\\"city\\\": \\\"Berlin\\\", \\\"countrycode\\\": \\\"de\\\"}}, \\\"retrieval\\\": \\\"signed_suggestion_snapshot\\\"}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"f67e2541-33a1-473d-a206-1c57479141ec"},{"name":"Tool · structured_geocode","id":"f384844a-1c03-4cff-a231-c8a559910276","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"structured_geocode\",\n    \"arguments\": {\n      \"city\": \"Berlin\",\n      \"countrycode\": \"DE\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Search an address using separate components.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"housenumber\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200\n    },\n    \"street\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200\n    },\n    \"city\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200\n    },\n    \"state\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200\n    },\n    \"postcode\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200\n    },\n    \"countrycode\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200\n    }\n  },\n  \"required\": [],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"fb16e70b-5957-4954-8f8e-9e6b55ad3bf7","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"structured_geocode\",\n    \"arguments\": {\n      \"city\": \"Berlin\",\n      \"countrycode\": \"DE\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"features\\\": [], \\\"search_method\\\": \\\"composed_address_query\\\"}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"f384844a-1c03-4cff-a231-c8a559910276"},{"name":"Tool · places_along_route","id":"3f9aedc6-0665-4023-8176-a812a1299cc2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"places_along_route\",\n    \"arguments\": {\n      \"start\": [\n        13.405,\n        52.52\n      ],\n      \"end\": [\n        13.388,\n        52.517\n      ],\n      \"category\": \"cafe\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Discover places with bounded driving detours. 14 credits; not exhaustive or live traffic.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"start\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"items\": {\n        \"type\": \"number\"\n      }\n    },\n    \"end\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"items\": {\n        \"type\": \"number\"\n      }\n    },\n    \"category\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"cafe\",\n        \"restaurant\",\n        \"pharmacy\",\n        \"parking\",\n        \"fuel\",\n        \"charging_station\"\n      ]\n    },\n    \"max_detour_seconds\": {\n      \"type\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 1800\n    },\n    \"limit\": {\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"maximum\": 8\n    }\n  },\n  \"required\": [\n    \"start\",\n    \"end\",\n    \"category\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"bcab1f4a-0439-4bf4-a973-5c0cffb593f8","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"places_along_route\",\n    \"arguments\": {\n      \"start\": [\n        13.405,\n        52.52\n      ],\n      \"end\": [\n        13.388,\n        52.517\n      ],\n      \"category\": \"cafe\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"places\\\": [], \\\"baseline\\\": {\\\"duration_seconds\\\": 300, \\\"distance_meters\\\": 2000}, \\\"discovery\\\": {\\\"method\\\": \\\"sampled_nearby\\\", \\\"sample_count\\\": 5, \\\"radius_meters\\\": 2000, \\\"candidates_found\\\": 0, \\\"candidates_checked\\\": 0, \\\"exhaustive\\\": false}, \\\"duration_model\\\": \\\"road_network_without_live_traffic\\\"}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"3f9aedc6-0665-4023-8176-a812a1299cc2"},{"name":"Tool · static_map","id":"3b526b3a-fd74-4530-a158-3dcdcf8d0e4f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"static_map\",\n    \"arguments\": {\n      \"center\": [\n        13.405,\n        52.52\n      ]\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Render a PNG map. 4 credits.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"center\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 2,\n      \"items\": {\n        \"type\": \"number\"\n      }\n    },\n    \"zoom\": {\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"maximum\": 14\n    },\n    \"width\": {\n      \"type\": \"integer\",\n      \"minimum\": 128,\n      \"maximum\": 512\n    },\n    \"height\": {\n      \"type\": \"integer\",\n      \"minimum\": 128,\n      \"maximum\": 512\n    },\n    \"style\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"light\",\n        \"dark\",\n        \"navigation\",\n        \"minimal\"\n      ]\n    }\n  },\n  \"required\": [\n    \"center\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"2cb2344f-ef37-4c4f-b5c7-be456c502d5d","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"static_map\",\n    \"arguments\": {\n      \"center\": [\n        13.405,\n        52.52\n      ]\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"image\",\n        \"mimeType\": \"image/png\",\n        \"data\": \"EXAMPLE_BINARY_BASE64_OMITTED\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"3b526b3a-fd74-4530-a158-3dcdcf8d0e4f"},{"name":"Tool · list_styles","id":"bada03aa-7c7c-4ac9-9a7d-b13666999bd8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"list_styles\",\n    \"arguments\": {}\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>List your styles. Requires explicit studio scope.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {},\n  \"required\": [],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"d8b09c28-f321-4ccc-9d72-589dda1bcda8","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"list_styles\",\n    \"arguments\": {}\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"styles\\\": []}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"bada03aa-7c7c-4ac9-9a7d-b13666999bd8"},{"name":"Tool · list_datasets","id":"cbb08800-8c7e-4b0c-b20c-bb8e85f79162","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"list_datasets\",\n    \"arguments\": {}\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>List your datasets. Requires explicit studio scope.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {},\n  \"required\": [],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"e3f2b323-c304-4ac0-8a4d-7161d954d4a1","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"list_datasets\",\n    \"arguments\": {}\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"datasets\\\": []}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"cbb08800-8c7e-4b0c-b20c-bb8e85f79162"},{"name":"Tool · preview_style","id":"7aa885a9-58f4-4c4b-a81f-e33f1878840d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"preview_style\",\n    \"arguments\": {\n      \"prompt\": \"dark; water #123456\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Preview style commands without saving or publishing. Requires studio scope. ai=true uses the Business monthly AI quota.</p>\n<h3 id=\"arguments\">Arguments</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"prompt\": {\n      \"type\": \"string\",\n      \"maxLength\": 1000\n    },\n    \"design\": {\n      \"type\": \"object\"\n    },\n    \"ai\": {\n      \"type\": \"boolean\"\n    }\n  },\n  \"required\": [\n    \"prompt\"\n  ],\n  \"additionalProperties\": false\n}\n</code></pre>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"6f32b41e-5680-4b86-bc4c-33c536f144c9","name":"Synthetic abbreviated success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"preview_style\",\n    \"arguments\": {\n      \"prompt\": \"dark; water #123456\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"design\\\": {\\\"preset\\\": \\\"dark\\\", \\\"colors\\\": {\\\"land\\\": \\\"#f1f3f5\\\", \\\"water\\\": \\\"#123456\\\", \\\"park\\\": \\\"#c9dfc6\\\", \\\"road\\\": \\\"#ffffff\\\", \\\"highway\\\": \\\"#edc779\\\", \\\"building\\\": \\\"#d9dee3\\\", \\\"label\\\": \\\"#334155\\\"}, \\\"visible\\\": {\\\"roads\\\": true, \\\"buildings\\\": false, \\\"parks\\\": true, \\\"labels\\\": true, \\\"pois\\\": true, \\\"boundaries\\\": true}, \\\"center\\\": [49.8671, 40.4093], \\\"zoom\\\": 11, \\\"overlays\\\": []}, \\\"changes\\\": [\\\"preset:dark\\\", \\\"colors.water:#123456\\\", \\\"visible.buildings:false\\\"], \\\"saved\\\": false, \\\"method\\\": \\\"explicit_style_commands\\\"}\"\n      }\n    ],\n    \"isError\": false\n  }\n}"}],"_postman_id":"7aa885a9-58f4-4c4b-a81f-e33f1878840d"},{"name":"notifications/initialized","id":"012aa9d7-8ecc-4459-9b34-8616114cedca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"method\": \"notifications/initialized\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"1a46917a-0806-4399-a6ab-a0bf64ec3d5c","name":"Accepted notification (empty body)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"method\": \"notifications/initialized\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"Accepted","code":202,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"012aa9d7-8ecc-4459-9b34-8616114cedca"},{"name":"notifications/cancelled","id":"4a96fb44-c134-4937-b5f2-112fcf2629bc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"method\": \"notifications/cancelled\",\n  \"params\": {\n    \"requestId\": 2,\n    \"reason\": \"Client no longer needs the result\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>MCP uses the underlying API scopes, plan limits and credits, with 60 requests/minute per key. Initialize/ping/tool discovery do not call paid tools. Bearer key required. Browser Origin, when present, must match osrmroute.com. JSON-RPC errors can use HTTP 200; inspect error and tool isError. Tools are read-only; previews do not publish. See <a href=\"https://osrmroute.com/docs/automation#mcp\">https://osrmroute.com/docs/automation#mcp</a>.</p>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}},"urlObject":{"path":["api","mcp"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"23e960ee-d529-4997-b766-03e55fd46ae9","name":"Accepted notification (empty body)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json, text/event-stream"},{"key":"MCP-Protocol-Version","value":"2025-06-18"}],"body":{"mode":"raw","raw":"{\n  \"jsonrpc\": \"2.0\",\n  \"method\": \"notifications/cancelled\",\n  \"params\": {\n    \"requestId\": 2,\n    \"reason\": \"Client no longer needs the result\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mcp"},"status":"Accepted","code":202,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"4a96fb44-c134-4937-b5f2-112fcf2629bc"}],"id":"82e35738-0625-4733-a28c-47966b5c346b","_postman_id":"82e35738-0625-4733-a28c-47966b5c346b","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}}},{"name":"08 · Native mobile access","item":[{"name":"Request device challenge","id":"8fe00317-c2c8-459a-8491-f295e2d9caf7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"app_id\": \"\",\n  \"key_id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mobile/challenge","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>No separate mobile credits; successful API calls consume the linked key allowance and application caps. Register an enabled app and complete provider verification first. No private API key is sent to these endpoints. Real Play Integrity / App Attest proof must come from the registered physical device; Postman cannot create it. Challenge expires in 120 seconds and is single-use. Access token expires in 300 seconds. See <a href=\"https://osrmroute.com/docs/mobile\">https://osrmroute.com/docs/mobile</a>.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<p>app_id: registered app UUID; key_id: device installation/App Attest key (16–256 characters). Token exchange additionally requires challenge_id, challenge and proof, bound to osrmroute-mobile-v1 + app + challenge ID + nonce + key ID joined with newline. Failure responses use {error: code}, e.g. mobile_challenge_expired (401), mobile_app_unavailable (403), mobile_rate_limited (429), mobile_access_unavailable (503).</p>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","urlObject":{"path":["api","mobile","challenge"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"5972f499-ad7a-4b37-a637-921d394f5220","name":"Synthetic abbreviated success","originalRequest":{"auth":{"type":"noauth"},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"app_id\": \"\",\n  \"key_id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mobile/challenge"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"challenge\": \"EXAMPLE_ONLY\",\n  \"challenge_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"enrolled\": false\n}"}],"_postman_id":"8fe00317-c2c8-459a-8491-f295e2d9caf7"},{"name":"Exchange real device proof","id":"a86a5a68-eb81-4009-9255-5448483b90d3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"app_id\": \"\",\n  \"key_id\": \"\",\n  \"challenge_id\": \"\",\n  \"challenge\": \"\",\n  \"proof\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mobile/token","description":"<h3 id=\"plan-and-metering\">Plan and metering</h3>\n<p>No separate mobile credits; successful API calls consume the linked key allowance and application caps. Register an enabled app and complete provider verification first. No private API key is sent to these endpoints. Real Play Integrity / App Attest proof must come from the registered physical device; Postman cannot create it. Challenge expires in 120 seconds and is single-use. Access token expires in 300 seconds. See <a href=\"https://osrmroute.com/docs/mobile\">https://osrmroute.com/docs/mobile</a>.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<p>app_id: registered app UUID; key_id: device installation/App Attest key (16–256 characters). Token exchange additionally requires challenge_id, challenge and proof, bound to osrmroute-mobile-v1 + app + challenge ID + nonce + key ID joined with newline. Failure responses use {error: code}, e.g. mobile_challenge_expired (401), mobile_app_unavailable (403), mobile_rate_limited (429), mobile_access_unavailable (503).</p>\n<p>Saved responses are synthetic, not live results. Use local variables only.</p>\n","urlObject":{"path":["api","mobile","token"],"host":["https://osrmroute.com"],"query":[],"variable":[]}},"response":[{"id":"ccffd4a8-80e4-4b0d-bd14-d90cffca5658","name":"Synthetic abbreviated success","originalRequest":{"auth":{"type":"noauth"},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"app_id\": \"\",\n  \"key_id\": \"\",\n  \"challenge_id\": \"\",\n  \"challenge\": \"\",\n  \"proof\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://osrmroute.com/api/mobile/token"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"access_token\": \"EXAMPLE_ONLY_NOT_A_VALID_TOKEN\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 300\n}"}],"_postman_id":"a86a5a68-eb81-4009-9255-5448483b90d3"}],"id":"7a5bad6b-2d80-4f19-8b43-afcc67b41e95","_postman_id":"7a5bad6b-2d80-4f19-8b43-afcc67b41e95","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","id":"fde39f5f-ef3d-4c2a-adec-5ba9fe59ace2","name":"OSRMRoute · API Reference","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]}},"variable":[{"key":"base_url","value":"https://osrmroute.com"},{"key":"api_key","value":""},{"key":"sandbox_key","value":""},{"key":"job_id","value":""},{"key":"dataset_id","value":""},{"key":"style_id","value":""},{"key":"public_style_id","value":""},{"key":"revision","value":"1"},{"key":"version","value":"1"},{"key":"suggestion_token","value":""},{"key":"place_id","value":""},{"key":"mobile_app_id","value":""},{"key":"device_key_id","value":""},{"key":"challenge_id","value":""},{"key":"challenge","value":""},{"key":"device_proof","value":""},{"key":"mobile_token","value":""},{"key":"idempotency_key","value":""}]}