{
  "info": {
    "name": "OSRMRoute \u00b7 API Reference",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": "Complete public developer API reference. Quick start remains a separate 16-request collection.\n\nFork this collection; keep api_key and returned tokens local or in Postman Vault. base_url defaults to https://osrmroute.com. 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.\n\n### Plans (contract snapshot 19 October 2026)\n| Plan | USD/month | Daily credits | Requests/min | Route points | Vehicles | Isochrone minutes |\n| --- | --- | --- | --- | --- | --- | --- |\n| Free | 0 | 1000 | 60 | 5 | 1 | 0 |\n| Starter | 65 | 5000 | 100 | 30 | 2 | 15 |\n| Pro | 189 | 15000 | 400 | 80 | 10 | 20 |\n| Business | 459 | 50000 | 1000 | 200 | 20 | 30 |\n| Pay as you go | Custom / see pricing | 1000 | 100 | 30 | 2 | 15 |\n| Enterprise | Custom / see pricing | Custom / see pricing | Custom / see pricing | Custom / see pricing | Custom / see pricing | Custom / see pricing |\n\nPay 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 https://osrmroute.com/pricing 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.\n\nCoverage: 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.\n\nResponse examples are synthetic and sometimes abbreviated; not captured customer data or assertions of current source coverage. Device proofs cannot be simulated in Postman.\n\nDocs: https://osrmroute.com/docs \u00b7 Source: https://github.com/Mammadoff/osrmroute-examples"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://osrmroute.com",
      "type": "string"
    },
    {
      "key": "api_key",
      "value": "",
      "type": "string"
    },
    {
      "key": "sandbox_key",
      "value": "",
      "type": "string"
    },
    {
      "key": "job_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "dataset_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "style_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "public_style_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "revision",
      "value": "1",
      "type": "string"
    },
    {
      "key": "version",
      "value": "1",
      "type": "string"
    },
    {
      "key": "suggestion_token",
      "value": "",
      "type": "string"
    },
    {
      "key": "place_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "mobile_app_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "device_key_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "challenge_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "challenge",
      "value": "",
      "type": "string"
    },
    {
      "key": "device_proof",
      "value": "",
      "type": "string"
    },
    {
      "key": "mobile_token",
      "value": "",
      "type": "string"
    },
    {
      "key": "idempotency_key",
      "value": "",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "01 \u00b7 Routing and optimization",
      "item": [
        {
          "name": "Routing API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "osrm",
                "route",
                "v1",
                "driving",
                "49.8516,40.3755;49.8378,40.3892"
              ],
              "query": [
                {
                  "key": "overview",
                  "value": "full",
                  "disabled": true,
                  "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "geometries",
                  "value": "geojson",
                  "disabled": true,
                  "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "steps",
                  "value": "true",
                  "disabled": true,
                  "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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.\n\n### Parameters\n- **profile** (path, required): Transport mode profile. Supported values: driving (car), cycling (bike), walking (pedestrian). Schema: `{\"type\": \"string\"}`\n- **coordinates** (path, required): Coordinates of the points. Format: lon,lat;lon,lat;lon,lat... (at least 2 points). Schema: `{\"type\": \"string\"}`\n- **overview** (query, optional): Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: `{\"type\": \"string\"}`\n- **geometries** (query, optional): Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: `{\"type\": \"string\"}`\n- **steps** (query, optional): Whether step-by-step instructions are returned for each turn. Schema: `{\"type\": \"boolean\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "route",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 InvalidQuery",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "route",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "route",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "route",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "route",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 ProfileNotAvailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "route",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyRoad",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "route",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "route",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/route/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "route",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/v1/osrm/route/v1/{profile}/{coordinates}"
        },
        {
          "name": "Route Optimization API",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/1/vrp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "vrp"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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) \u2014 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.\n\n### Parameters\n\n### JSON body\n| Field | Type | Required | Rules |\n| --- | --- | --- | --- |\n| `profile` | string | no | Shared driving/cycling/walking profile, including documented aliases. {\"default\": \"driving\"} |\n| `services` | array | no |  {\"maxItems\": 250} |\n| `services[].id` | object | no |  |\n| `services[].address` | object | no |  |\n| `services[].location` | object | no |  |\n| `services[].lat` | number | no |  {\"minimum\": -90, \"maximum\": 90} |\n| `services[].latitude` | number | no |  {\"minimum\": -90, \"maximum\": 90} |\n| `services[].lon` | number | no |  {\"minimum\": -180, \"maximum\": 180} |\n| `services[].lng` | number | no |  {\"minimum\": -180, \"maximum\": 180} |\n| `services[].longitude` | number | no |  {\"minimum\": -180, \"maximum\": 180} |\n| `services[].duration` | integer | no |  {\"minimum\": 0, \"maximum\": 2147483647} |\n| `services[].service` | integer | no |  {\"minimum\": 0, \"maximum\": 2147483647} |\n| `services[].time_windows` | array | no |  {\"minItems\": 1, \"maxItems\": 8} |\n| `services[].size` | array | no |  {\"minItems\": 1, \"maxItems\": 8} |\n| `services[].delivery` | array | no |  {\"minItems\": 1, \"maxItems\": 8} |\n| `services[].pickup` | array | no |  {\"minItems\": 1, \"maxItems\": 8} |\n| `services[].skills` | array | no |  {\"maxItems\": 64} |\n| `shipments` | array | no |  {\"maxItems\": 125} |\n| `shipments[].pickup` | object | yes |  |\n| `shipments[].pickup.id` | object | no |  |\n| `shipments[].pickup.address` | object | no |  |\n| `shipments[].pickup.location` | object | no |  |\n| `shipments[].pickup.lat` | number | no |  {\"minimum\": -90, \"maximum\": 90} |\n| `shipments[].pickup.latitude` | number | no |  {\"minimum\": -90, \"maximum\": 90} |\n| `shipments[].pickup.lon` | number | no |  {\"minimum\": -180, \"maximum\": 180} |\n| `shipments[].pickup.lng` | number | no |  {\"minimum\": -180, \"maximum\": 180} |\n| `shipments[].pickup.longitude` | number | no |  {\"minimum\": -180, \"maximum\": 180} |\n| `shipments[].pickup.duration` | integer | no |  {\"minimum\": 0, \"maximum\": 2147483647} |\n| `shipments[].pickup.service` | integer | no |  {\"minimum\": 0, \"maximum\": 2147483647} |\n| `shipments[].pickup.time_windows` | array | no |  {\"minItems\": 1, \"maxItems\": 8} |\n| `shipments[].delivery` | object | yes |  |\n| `shipments[].delivery.id` | object | no |  |\n| `shipments[].delivery.address` | object | no |  |\n| `shipments[].delivery.location` | object | no |  |\n| `shipments[].delivery.lat` | number | no |  {\"minimum\": -90, \"maximum\": 90} |\n| `shipments[].delivery.latitude` | number | no |  {\"minimum\": -90, \"maximum\": 90} |\n| `shipments[].delivery.lon` | number | no |  {\"minimum\": -180, \"maximum\": 180} |\n| `shipments[].delivery.lng` | number | no |  {\"minimum\": -180, \"maximum\": 180} |\n| `shipments[].delivery.longitude` | number | no |  {\"minimum\": -180, \"maximum\": 180} |\n| `shipments[].delivery.duration` | integer | no |  {\"minimum\": 0, \"maximum\": 2147483647} |\n| `shipments[].delivery.service` | integer | no |  {\"minimum\": 0, \"maximum\": 2147483647} |\n| `shipments[].delivery.time_windows` | array | no |  {\"minItems\": 1, \"maxItems\": 8} |\n| `shipments[].amount` | array | no |  {\"minItems\": 1, \"maxItems\": 8} |\n| `shipments[].skills` | array | no |  {\"maxItems\": 64} |\n| `vehicles` | array | no |  {\"minItems\": 1, \"maxItems\": 100} |\n| `vehicles[].id` | object | no |  |\n| `vehicles[].vehicle_id` | object | no |  |\n| `vehicles[].start` | object | no |  |\n| `vehicles[].start_address` | object | no |  |\n| `vehicles[].address` | object | no |  |\n| `vehicles[].end` | object | no |  |\n| `vehicles[].end_address` | object | no |  |\n| `vehicles[].return_to_depot` | boolean | no |  {\"default\": true} |\n| `vehicles[].capacity` | array | no |  {\"minItems\": 1, \"maxItems\": 8} |\n| `vehicles[].skills` | array | no |  {\"maxItems\": 64} |\n| `vehicles[].time_window` | object | no |  |\n| `vehicles[].earliest_start` | integer | no |  {\"minimum\": 0, \"maximum\": 2147483647} |\n| `vehicles[].latest_end` | integer | no |  {\"minimum\": 0, \"maximum\": 2147483647} |\n| `vehicles[].profile` | string | no | If present, must match the shared profile. |\n\nFull JSON Schema:\n```json\n{\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```\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/vrp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "vrp"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 InvalidOptimizationInput",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/vrp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "vrp"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"InvalidOptimizationInput\",\n  \"error\": \"At least one service with valid coordinates is required.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/vrp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "vrp"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/vrp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "vrp"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/vrp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "vrp"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Your plan allows up to 1 vehicles per request. Upgrade your plan for more.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyRoad",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/vrp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "vrp"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/vrp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "vrp"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/vrp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "vrp"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/1/vrp"
        },
        {
          "name": "Matrix API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "osrm",
                "table",
                "v1",
                "driving",
                "49.8516,40.3755;49.8378,40.3892"
              ],
              "query": [
                {
                  "key": "annotations",
                  "value": "duration",
                  "disabled": true,
                  "description": "Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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.\n\n### Parameters\n- **profile** (path, required): Transport profile (driving, cycling, walking). Schema: `{\"type\": \"string\"}`\n- **coordinates** (path, required): Matrix points. Format: lon,lat;lon,lat;lon,lat... Schema: `{\"type\": \"string\"}`\n- **annotations** (query, optional): Data to compute: duration (time), distance, or both. Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "table",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "annotations",
                      "value": "duration",
                      "disabled": true,
                      "description": "Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 InvalidQuery",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "table",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "annotations",
                      "value": "duration",
                      "disabled": true,
                      "description": "Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "table",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "annotations",
                      "value": "duration",
                      "disabled": true,
                      "description": "Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "table",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "annotations",
                      "value": "duration",
                      "disabled": true,
                      "description": "Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "table",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "annotations",
                      "value": "duration",
                      "disabled": true,
                      "description": "Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 ProfileNotAvailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "table",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "annotations",
                      "value": "duration",
                      "disabled": true,
                      "description": "Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 UnreachablePoints",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "table",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "annotations",
                      "value": "duration",
                      "disabled": true,
                      "description": "Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"UnreachablePoints\",\n  \"error\": \"Some locations are disconnected in this road network.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "table",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "annotations",
                      "value": "duration",
                      "disabled": true,
                      "description": "Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/table/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "table",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "annotations",
                      "value": "duration",
                      "disabled": true,
                      "description": "Data to compute: duration (time), distance, or both. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/v1/osrm/table/v1/{profile}/{coordinates}"
        },
        {
          "name": "Isochrones API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/isochrone?point=40.3755,49.8516",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "isochrone"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "40.3755,49.8516",
                  "disabled": false,
                  "description": "Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "time_limit",
                  "value": "600",
                  "disabled": true,
                  "description": "Travel time limit (in seconds). Schema: {\"type\": \"integer\"}"
                }
              ]
            },
            "description": "### Plan and metering\nStarter / 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.\n\nThe 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.\n\n### Parameters\n- **point** (query, required): Center point. Format: lat,lon. Schema: `{\"type\": \"string\"}`\n- **time_limit** (query, optional): Travel time limit (in seconds). Schema: `{\"type\": \"integer\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/isochrone?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "isochrone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "time_limit",
                      "value": "600",
                      "disabled": true,
                      "description": "Travel time limit (in seconds). Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/isochrone?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "isochrone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "time_limit",
                      "value": "600",
                      "disabled": true,
                      "description": "Travel time limit (in seconds). Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"point parameter is required\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/isochrone?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "isochrone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "time_limit",
                      "value": "600",
                      "disabled": true,
                      "description": "Travel time limit (in seconds). Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/isochrone?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "isochrone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "time_limit",
                      "value": "600",
                      "disabled": true,
                      "description": "Travel time limit (in seconds). Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/isochrone?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "isochrone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "time_limit",
                      "value": "600",
                      "disabled": true,
                      "description": "Travel time limit (in seconds). Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"The Isochrone API is not available on your plan. Upgrade your plan to use it.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 ProfileNotAvailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/isochrone?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "isochrone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "time_limit",
                      "value": "600",
                      "disabled": true,
                      "description": "Travel time limit (in seconds). Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/isochrone?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "isochrone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "time_limit",
                      "value": "600",
                      "disabled": true,
                      "description": "Travel time limit (in seconds). Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/isochrone?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "isochrone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center point. Format: lat,lon. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "time_limit",
                      "value": "600",
                      "disabled": true,
                      "description": "Travel time limit (in seconds). Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/isochrone"
        },
        {
          "name": "Map Matching API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "osrm",
                "match",
                "v1",
                "driving",
                "49.8516,40.3755;49.8378,40.3892"
              ],
              "query": [
                {
                  "key": "geometries",
                  "value": "geojson",
                  "disabled": true,
                  "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "overview",
                  "value": "full",
                  "disabled": true,
                  "description": "Geometry precision of the matched route. Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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.\n\n### Parameters\n- **profile** (path, required): Transport profile. Schema: `{\"type\": \"string\"}`\n- **coordinates** (path, required): The sequence of GPS coordinates to snap (lon,lat;lon,lat...) Schema: `{\"type\": \"string\"}`\n- **geometries** (query, optional): Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: `{\"type\": \"string\"}`\n- **overview** (query, optional): Geometry precision of the matched route. Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "match",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Geometry precision of the matched route. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 InvalidQuery",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "match",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Geometry precision of the matched route. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "match",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Geometry precision of the matched route. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "match",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Geometry precision of the matched route. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "match",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Geometry precision of the matched route. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 ProfileNotAvailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "match",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Geometry precision of the matched route. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyRoad",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "match",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Geometry precision of the matched route. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "match",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Geometry precision of the matched route. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/match/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "match",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Geometry precision of the matched route. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/v1/osrm/match/v1/{profile}/{coordinates}"
        },
        {
          "name": "Nearest API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/osrm/nearest/v1/driving/49.8516,40.3755",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "osrm",
                "nearest",
                "v1",
                "driving",
                "49.8516,40.3755"
              ],
              "query": [
                {
                  "key": "number",
                  "value": "1",
                  "disabled": true,
                  "description": "The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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.\n\n### Parameters\n- **profile** (path, required): Transport profile. Schema: `{\"type\": \"string\"}`\n- **coordinates** (path, required): The point to search near. Format: lon,lat (a single pair). Schema: `{\"type\": \"string\"}`\n- **number** (query, optional): The number of nearest road candidates to find. Schema: `{\"type\": \"integer\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/nearest/v1/driving/49.8516,40.3755",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "nearest",
                    "v1",
                    "driving",
                    "49.8516,40.3755"
                  ],
                  "query": [
                    {
                      "key": "number",
                      "value": "1",
                      "disabled": true,
                      "description": "The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 InvalidQuery",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/nearest/v1/driving/49.8516,40.3755",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "nearest",
                    "v1",
                    "driving",
                    "49.8516,40.3755"
                  ],
                  "query": [
                    {
                      "key": "number",
                      "value": "1",
                      "disabled": true,
                      "description": "The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/nearest/v1/driving/49.8516,40.3755",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "nearest",
                    "v1",
                    "driving",
                    "49.8516,40.3755"
                  ],
                  "query": [
                    {
                      "key": "number",
                      "value": "1",
                      "disabled": true,
                      "description": "The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/nearest/v1/driving/49.8516,40.3755",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "nearest",
                    "v1",
                    "driving",
                    "49.8516,40.3755"
                  ],
                  "query": [
                    {
                      "key": "number",
                      "value": "1",
                      "disabled": true,
                      "description": "The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/nearest/v1/driving/49.8516,40.3755",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "nearest",
                    "v1",
                    "driving",
                    "49.8516,40.3755"
                  ],
                  "query": [
                    {
                      "key": "number",
                      "value": "1",
                      "disabled": true,
                      "description": "The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 ProfileNotAvailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/nearest/v1/driving/49.8516,40.3755",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "nearest",
                    "v1",
                    "driving",
                    "49.8516,40.3755"
                  ],
                  "query": [
                    {
                      "key": "number",
                      "value": "1",
                      "disabled": true,
                      "description": "The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyRoad",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/nearest/v1/driving/49.8516,40.3755",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "nearest",
                    "v1",
                    "driving",
                    "49.8516,40.3755"
                  ],
                  "query": [
                    {
                      "key": "number",
                      "value": "1",
                      "disabled": true,
                      "description": "The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/nearest/v1/driving/49.8516,40.3755",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "nearest",
                    "v1",
                    "driving",
                    "49.8516,40.3755"
                  ],
                  "query": [
                    {
                      "key": "number",
                      "value": "1",
                      "disabled": true,
                      "description": "The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/nearest/v1/driving/49.8516,40.3755",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "nearest",
                    "v1",
                    "driving",
                    "49.8516,40.3755"
                  ],
                  "query": [
                    {
                      "key": "number",
                      "value": "1",
                      "disabled": true,
                      "description": "The number of nearest road candidates to find. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/v1/osrm/nearest/v1/{profile}/{coordinates}"
        },
        {
          "name": "Trip API (TSP)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "osrm",
                "trip",
                "v1",
                "driving",
                "49.8516,40.3755;49.8378,40.3892"
              ],
              "query": [
                {
                  "key": "geometries",
                  "value": "geojson",
                  "disabled": true,
                  "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "source",
                  "value": "any",
                  "disabled": true,
                  "description": "The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "destination",
                  "value": "any",
                  "disabled": true,
                  "description": "The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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.\n\n### Parameters\n- **profile** (path, required): Transport profile. Schema: `{\"type\": \"string\"}`\n- **coordinates** (path, required): Points to visit. Format: lon,lat;lon,lat... Schema: `{\"type\": \"string\"}`\n- **geometries** (query, optional): Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: `{\"type\": \"string\"}`\n- **source** (query, optional): The point the route can start from (any or the first point). Schema: `{\"type\": \"string\"}`\n- **destination** (query, optional): The point the route ends at (any or the last point). Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "trip",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "source",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "destination",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 InvalidQuery",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "trip",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "source",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "destination",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "trip",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "source",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "destination",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "trip",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "source",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "destination",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "trip",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "source",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "destination",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 ProfileNotAvailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "trip",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "source",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "destination",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyRoad",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "trip",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "source",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "destination",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "trip",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "source",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "destination",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/osrm/trip/v1/driving/49.8516,40.3755;49.8378,40.3892",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "osrm",
                    "trip",
                    "v1",
                    "driving",
                    "49.8516,40.3755;49.8378,40.3892"
                  ],
                  "query": [
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "source",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route can start from (any or the first point). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "destination",
                      "value": "any",
                      "disabled": true,
                      "description": "The point the route ends at (any or the last point). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/v1/osrm/trip/v1/{profile}/{coordinates}"
        },
        {
          "name": "Directions API / Alternative Routes API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "directions"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "40.3777,49.8516",
                  "disabled": false,
                  "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",
                  "disabled": false,
                  "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                },
                {
                  "key": "profile",
                  "value": "driving",
                  "disabled": true,
                  "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "alternatives",
                  "value": "2",
                  "disabled": true,
                  "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                },
                {
                  "key": "lang",
                  "value": "en",
                  "disabled": true,
                  "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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 \u2014 ready to render in a navigation UI. It supports driving, cycling and walking, plus alternative routes in one call.\n\nThe 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 \u2014 each option includes full geometry, distance and duration.\n\n### Parameters\n- **point** (query, required): Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: `{\"type\": \"array\", \"items\": {\"type\": \"string\"}}`\n- **profile** (query, optional): Travel mode: driving, cycling or walking. Schema: `{\"type\": \"string\"}`\n- **alternatives** (query, optional): Number of alternative routes to also return (0\u20133). Schema: `{\"type\": \"integer\"}`\n- **lang** (query, optional): Language code for the instruction text. Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": true,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": true,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"At least two points must be provided (point=lat,lng repeated).\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": true,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": true,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": true,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 ProfileNotAvailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": true,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyRoad",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": true,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": true,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": true,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/directions"
        },
        {
          "name": "Snap to Road API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/snap?point=40.3777,49.8516&point=40.4,49.86",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "snap"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "40.3777,49.8516",
                  "disabled": false,
                  "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",
                  "disabled": false,
                  "description": "GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                },
                {
                  "key": "profile",
                  "value": "driving",
                  "disabled": true,
                  "description": "Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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.\n\n### Parameters\n- **point** (query, required): GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: `{\"type\": \"array\", \"items\": {\"type\": \"string\"}}`\n- **profile** (query, optional): Road network to snap to: driving, cycling or walking. Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/snap?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "snap"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/snap?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "snap"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"At least one point must be provided (point=lat,lng repeated).\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/snap?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "snap"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/snap?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "snap"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/snap?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "snap"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 ProfileNotAvailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/snap?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "snap"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyRoad",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/snap?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "snap"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/snap?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "snap"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/snap?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "snap"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "GPS point as lat,lng. Repeat the parameter for each point (maximum 100). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Road network to snap to: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/snap"
        },
        {
          "name": "Alternative routes",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "directions"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "40.3777,49.8516",
                  "disabled": false,
                  "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",
                  "disabled": false,
                  "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                },
                {
                  "key": "profile",
                  "value": "driving",
                  "disabled": true,
                  "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "alternatives",
                  "value": "2",
                  "disabled": false,
                  "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                },
                {
                  "key": "lang",
                  "value": "en",
                  "disabled": true,
                  "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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 \u2014 ready to render in a navigation UI. It supports driving, cycling and walking, plus alternative routes in one call.\n\nThe 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 \u2014 each option includes full geometry, distance and duration.\n\n### Parameters\n- **point** (query, required): Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: `{\"type\": \"array\", \"items\": {\"type\": \"string\"}}`\n- **profile** (query, optional): Travel mode: driving, cycling or walking. Schema: `{\"type\": \"string\"}`\n- **alternatives** (query, optional): Number of alternative routes to also return (0\u20133). Schema: `{\"type\": \"integer\"}`\n- **lang** (query, optional): Language code for the instruction text. Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": false,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": false,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"At least two points must be provided (point=lat,lng repeated).\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": false,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": false,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": false,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 ProfileNotAvailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": false,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyRoad",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": false,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": false,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/directions?point=40.3777,49.8516&point=40.4,49.86&alternatives=2",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "directions"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Waypoint as lat,lng. Repeat the parameter for each stop (minimum 2). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    },
                    {
                      "key": "profile",
                      "value": "driving",
                      "disabled": true,
                      "description": "Travel mode: driving, cycling or walking. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "alternatives",
                      "value": "2",
                      "disabled": false,
                      "description": "Number of alternative routes to also return (0\u20133). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for the instruction text. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/directions"
        },
        {
          "name": "Route shorthand alias",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/route/driving/13.405,52.52;13.388,52.517",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "route",
                "driving",
                "13.405,52.52;13.388,52.517"
              ],
              "query": [
                {
                  "key": "overview",
                  "value": "full",
                  "disabled": true,
                  "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "geometries",
                  "value": "geojson",
                  "disabled": true,
                  "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "steps",
                  "value": "true",
                  "disabled": true,
                  "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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.\n\n### Parameters\n- **profile** (path, required): Transport mode profile. Supported values: driving (car), cycling (bike), walking (pedestrian). Schema: `{\"type\": \"string\"}`\n- **coordinates** (path, required): Coordinates of the points. Format: lon,lat;lon,lat;lon,lat... (at least 2 points). Schema: `{\"type\": \"string\"}`\n- **overview** (query, optional): Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: `{\"type\": \"string\"}`\n- **geometries** (query, optional): Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: `{\"type\": \"string\"}`\n- **steps** (query, optional): Whether step-by-step instructions are returned for each turn. Schema: `{\"type\": \"boolean\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/route/driving/13.405,52.52;13.388,52.517",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "route",
                    "driving",
                    "13.405,52.52;13.388,52.517"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 InvalidQuery",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/route/driving/13.405,52.52;13.388,52.517",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "route",
                    "driving",
                    "13.405,52.52;13.388,52.517"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"InvalidQuery\",\n  \"error\": \"Coordinates must be finite longitude,latitude pairs.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/route/driving/13.405,52.52;13.388,52.517",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "route",
                    "driving",
                    "13.405,52.52;13.388,52.517"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/route/driving/13.405,52.52;13.388,52.517",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "route",
                    "driving",
                    "13.405,52.52;13.388,52.517"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/route/driving/13.405,52.52;13.388,52.517",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "route",
                    "driving",
                    "13.405,52.52;13.388,52.517"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 ProfileNotAvailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/route/driving/13.405,52.52;13.388,52.517",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "route",
                    "driving",
                    "13.405,52.52;13.388,52.517"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"ProfileNotAvailable\",\n  \"error\": \"This travel profile is not available at one or more coordinates. No driving fallback was used.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyRoad",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/route/driving/13.405,52.52;13.388,52.517",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "route",
                    "driving",
                    "13.405,52.52;13.388,52.517"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyRoad\",\n  \"error\": \"No connected route within 2000 metres of the requested coordinates.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/route/driving/13.405,52.52;13.388,52.517",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "route",
                    "driving",
                    "13.405,52.52;13.388,52.517"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/route/driving/13.405,52.52;13.388,52.517",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "route",
                    "driving",
                    "13.405,52.52;13.388,52.517"
                  ],
                  "query": [
                    {
                      "key": "overview",
                      "value": "full",
                      "disabled": true,
                      "description": "Detail level of the returned route geometry: simplified, full (full geometry), false (no geometry). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "geometries",
                      "value": "geojson",
                      "disabled": true,
                      "description": "Geometry format: geojson (GeoJSON object), polyline (encoded string). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "steps",
                      "value": "true",
                      "disabled": true,
                      "description": "Whether step-by-step instructions are returned for each turn. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/v1/osrm/route/v1/{profile}/{coordinates}"
        },
        {
          "name": "Truck route with per-request dimensions and weight",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/truck/route",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "truck",
                "route"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"points\": [\n    [\n      49.8671,\n      40.4093\n    ],\n    [\n      49.849,\n      40.378\n    ]\n  ],\n  \"vehicle\": {\n    \"height_m\": 4,\n    \"width_m\": 2.55,\n    \"length_m\": 16.5,\n    \"weight_t\": 30,\n    \"axle_load_t\": 10,\n    \"axle_count\": 5\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nRoute scope; one credit per successful route. Requires all vehicle fields, including loaded weight and maximum loaded axle weight in metric tonnes. 2\u201320 longitude/latitude points, also subject to plan limits; at most 1,000 km and 250 m snapping. 10 requests/minute/key; 16 KiB body. Supported countries (ISO 3166-1 alpha-2): AZ, AM, GE, KZ, KG, TJ, TM, UZ, MN, TR, IR, IQ, SY, JO, LB, IL, PS, YE, SA, AE, QA, KW, BH, OM, AF, PK. Uses static OSM truck access and dimension restrictions. Conditional restrictions, hazardous goods and live traffic are outside this release. Follow posted road signs and local rules. Failed requests are refunded.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"points\",\n    \"vehicle\"\n  ],\n  \"properties\": {\n    \"points\": {\n      \"type\": \"array\",\n      \"minItems\": 2,\n      \"maxItems\": 20,\n      \"items\": {\n        \"type\": \"array\",\n        \"minItems\": 2,\n        \"maxItems\": 2,\n        \"items\": {\n          \"type\": \"number\"\n        }\n      },\n      \"description\": \"[longitude, latitude]; longitude \u00b1180, latitude \u00b185.\"\n    },\n    \"vehicle\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"height_m\",\n        \"width_m\",\n        \"length_m\",\n        \"weight_t\",\n        \"axle_load_t\",\n        \"axle_count\"\n      ],\n      \"properties\": {\n        \"height_m\": {\n          \"type\": \"number\",\n          \"minimum\": 0.5,\n          \"maximum\": 10,\n          \"description\": \"Loaded external dimension in metres.\"\n        },\n        \"width_m\": {\n          \"type\": \"number\",\n          \"minimum\": 0.5,\n          \"maximum\": 5,\n          \"description\": \"Loaded external dimension in metres.\"\n        },\n        \"length_m\": {\n          \"type\": \"number\",\n          \"minimum\": 1,\n          \"maximum\": 35,\n          \"description\": \"Loaded external dimension in metres.\"\n        },\n        \"weight_t\": {\n          \"type\": \"number\",\n          \"minimum\": 0.1,\n          \"maximum\": 100,\n          \"description\": \"Loaded metric tonnes; axle_load_t is the heaviest axle.\"\n        },\n        \"axle_load_t\": {\n          \"type\": \"number\",\n          \"minimum\": 0.1,\n          \"maximum\": 40,\n          \"description\": \"Loaded metric tonnes; axle_load_t is the heaviest axle.\"\n        },\n        \"axle_count\": {\n          \"type\": \"integer\",\n          \"minimum\": 2,\n          \"maximum\": 20,\n          \"description\": \"Axles including trailers.\"\n        }\n      }\n    }\n  }\n}\n```\n\n### Responses\n- **200**: One GeoJSON route. Distances in metres, duration in estimated seconds. Example geometry is abbreviated.\n- **400**: Invalid input. `truck_invalid_points`, `truck_invalid_vehicle`, `truck_unknown_option`, `truck_inconsistent_axle_load`, `truck_invalid_height_m`, `truck_invalid_width_m`, `truck_invalid_length_m`, `truck_invalid_weight_t`, `truck_invalid_axle_load_t`, `truck_invalid_axle_count` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **402**: Insufficient credits. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. `truck_no_route`, `truck_no_nearby_road`, `truck_outside_coverage`, `truck_route_too_long` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. `rate_limited` Failed operations are not charged.\n- **502**: Invalid or unavailable upstream. `truck_unavailable`, `truck_invalid_response` Failed operations are not charged.\n- **503**: Service temporarily unavailable. `truck_not_configured`, `truck_dataset_expired`, `truck_busy` Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/truck/route",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "truck",
                    "route"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"points\": [\n    [\n      49.8671,\n      40.4093\n    ],\n    [\n      49.849,\n      40.378\n    ]\n  ],\n  \"vehicle\": {\n    \"height_m\": 4,\n    \"width_m\": 2.55,\n    \"length_m\": 16.5,\n    \"weight_t\": 30,\n    \"axle_load_t\": 10,\n    \"axle_count\": 5\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"Ok\",\n  \"profile\": \"truck\",\n  \"vehicle\": {\n    \"height_m\": 4,\n    \"width_m\": 2.55,\n    \"length_m\": 16.5,\n    \"weight_t\": 30,\n    \"axle_load_t\": 10,\n    \"axle_count\": 5\n  },\n  \"routes\": [\n    {\n      \"distance\": 5322.609,\n      \"duration\": 600,\n      \"geometry\": {\n        \"type\": \"LineString\",\n        \"coordinates\": [\n          [\n            49.8671,\n            40.4093\n          ],\n          [\n            49.849,\n            40.378\n          ]\n        ]\n      }\n    }\n  ],\n  \"waypoints\": [\n    {\n      \"location\": [\n        49.8671,\n        40.4093\n      ],\n      \"distance\": 0\n    },\n    {\n      \"location\": [\n        49.849,\n        40.378\n      ],\n      \"distance\": 0\n    }\n  ],\n  \"attribution\": \"\u00a9 OpenStreetMap contributors (ODbL)\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/truck/route",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "truck",
                    "route"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"points\": [\n    [\n      49.8671,\n      40.4093\n    ],\n    [\n      49.849,\n      40.378\n    ]\n  ],\n  \"vehicle\": {\n    \"height_m\": 4,\n    \"width_m\": 2.55,\n    \"length_m\": 16.5,\n    \"weight_t\": 30,\n    \"axle_load_t\": 10,\n    \"axle_count\": 5\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"truck_invalid_points\",\n  \"code\": \"truck_invalid_points\",\n  \"problem_code\": \"truck_invalid_points\",\n  \"type\": \"https://osrmroute.com/docs/platform#truck_invalid_points\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"truck_invalid_points\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 422",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/truck/route",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "truck",
                    "route"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"points\": [\n    [\n      49.8671,\n      40.4093\n    ],\n    [\n      49.849,\n      40.378\n    ]\n  ],\n  \"vehicle\": {\n    \"height_m\": 4,\n    \"width_m\": 2.55,\n    \"length_m\": 16.5,\n    \"weight_t\": 30,\n    \"axle_load_t\": 10,\n    \"axle_count\": 5\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"truck_no_route\",\n  \"code\": \"truck_no_route\",\n  \"problem_code\": \"truck_no_route\",\n  \"type\": \"https://osrmroute.com/docs/platform#truck_no_route\",\n  \"title\": \"Request failed\",\n  \"status\": 422,\n  \"detail\": \"truck_no_route\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 429",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/truck/route",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "truck",
                    "route"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"points\": [\n    [\n      49.8671,\n      40.4093\n    ],\n    [\n      49.849,\n      40.378\n    ]\n  ],\n  \"vehicle\": {\n    \"height_m\": 4,\n    \"width_m\": 2.55,\n    \"length_m\": 16.5,\n    \"weight_t\": 30,\n    \"axle_load_t\": 10,\n    \"axle_count\": 5\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"code\": \"rate_limited\",\n  \"problem_code\": \"rate_limited\",\n  \"type\": \"https://osrmroute.com/docs/platform#rate_limited\",\n  \"title\": \"Request failed\",\n  \"status\": 429,\n  \"detail\": \"rate_limited\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 502",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/truck/route",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "truck",
                    "route"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"points\": [\n    [\n      49.8671,\n      40.4093\n    ],\n    [\n      49.849,\n      40.378\n    ]\n  ],\n  \"vehicle\": {\n    \"height_m\": 4,\n    \"width_m\": 2.55,\n    \"length_m\": 16.5,\n    \"weight_t\": 30,\n    \"axle_load_t\": 10,\n    \"axle_count\": 5\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"truck_unavailable\",\n  \"code\": \"truck_unavailable\",\n  \"problem_code\": \"truck_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#truck_unavailable\",\n  \"title\": \"Service unavailable\",\n  \"status\": 502,\n  \"detail\": \"truck_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 503",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/truck/route",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "truck",
                    "route"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"points\": [\n    [\n      49.8671,\n      40.4093\n    ],\n    [\n      49.849,\n      40.378\n    ]\n  ],\n  \"vehicle\": {\n    \"height_m\": 4,\n    \"width_m\": 2.55,\n    \"length_m\": 16.5,\n    \"weight_t\": 30,\n    \"axle_load_t\": 10,\n    \"axle_count\": 5\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"truck_not_configured\",\n  \"code\": \"truck_not_configured\",\n  \"problem_code\": \"truck_not_configured\",\n  \"type\": \"https://osrmroute.com/docs/platform#truck_not_configured\",\n  \"title\": \"Service unavailable\",\n  \"status\": 503,\n  \"detail\": \"truck_not_configured\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/truck/route"
        }
      ]
    },
    {
      "name": "02 \u00b7 Search, geocoding and places",
      "item": [
        {
          "name": "Geocoding API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/geocode?q=Nizami street, Baku",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "geocode"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "Nizami street, Baku",
                  "disabled": false,
                  "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "reverse",
                  "value": "false",
                  "disabled": true,
                  "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                },
                {
                  "key": "point",
                  "value": "40.3755,49.8516",
                  "disabled": true,
                  "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "limit",
                  "value": "5",
                  "disabled": true,
                  "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                },
                {
                  "key": "lang",
                  "value": "en",
                  "disabled": true,
                  "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "lat",
                  "value": "40.3755",
                  "disabled": true,
                  "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                },
                {
                  "key": "lon",
                  "value": "49.8516",
                  "disabled": true,
                  "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                },
                {
                  "key": "bbox",
                  "value": "49.75,40.30,49.95,40.45",
                  "disabled": true,
                  "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "osm_tag",
                  "value": "amenity:restaurant",
                  "disabled": true,
                  "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "country",
                  "value": "AZ",
                  "disabled": true,
                  "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "city",
                  "value": "Bak\u0131",
                  "disabled": true,
                  "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "elastic",
                  "value": "true",
                  "disabled": true,
                  "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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 \u2014 location bias, bounding box, category and strict country and city filters \u2014 let you tune results for any use case.\n\nWithout country, search is global. country=AZ restricts results to Azerbaijan; country=AZ&city=Bak\u0131 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.\n\n### Parameters\n- **q** (query, optional): The address to search (e.g. \"Nizami Street, Baku\"). Schema: `{\"type\": \"string\"}`\n- **reverse** (query, optional): Must be true to perform reverse geocoding (searching from coordinate to address). Schema: `{\"type\": \"boolean\"}`\n- **point** (query, optional): Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: `{\"type\": \"string\"}`\n- **limit** (query, optional): Maximum number of results to return (1\u201320, default 5). Schema: `{\"type\": \"integer\"}`\n- **lang** (query, optional): Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: `{\"type\": \"string\"}`\n- **lat** (query, optional): Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: `{\"type\": \"number\"}`\n- **lon** (query, optional): Longitude to bias results toward. Pair with lat. Schema: `{\"type\": \"number\"}`\n- **bbox** (query, optional): Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: `{\"type\": \"string\"}`\n- **osm_tag** (query, optional): Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: `{\"type\": \"string\"}`\n- **country** (query, optional): ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: `{\"type\": \"string\"}`\n- **city** (query, optional): Strict city filter, for example Baku. Requires exactly one country code. Schema: `{\"type\": \"string\"}`\n- **elastic** (query, optional): Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: `{\"type\": \"boolean\"}`\n\n### Responses\n- **200**: Matching results within all supplied filters. No match returns an empty list; scope is never expanded.\n- **400**: InvalidGeocodeFilter: invalid country code, or city without exactly one country. Invalid filters do not consume credits.\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?q=Nizami street, Baku",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "false",
                      "disabled": true,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": true,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 200 \u00b7 noMatch",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?q=Nizami street, Baku",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "false",
                      "disabled": true,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": true,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"hits\": [],\n  \"took\": 1\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?q=Nizami street, Baku",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "false",
                      "disabled": true,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": true,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"InvalidGeocodeFilter\",\n  \"error\": \"city requires exactly one country, for example country=AZ&city=Bak\\u0131.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?q=Nizami street, Baku",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "false",
                      "disabled": true,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": true,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?q=Nizami street, Baku",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "false",
                      "disabled": true,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": true,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?q=Nizami street, Baku",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "false",
                      "disabled": true,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": true,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyAddress",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?q=Nizami street, Baku",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "false",
                      "disabled": true,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": true,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyAddress\",\n  \"error\": \"No indexed address or place within 1 km.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?q=Nizami street, Baku",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "false",
                      "disabled": true,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": true,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?q=Nizami street, Baku",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "false",
                      "disabled": true,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": true,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/geocode"
        },
        {
          "name": "Places API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/places?point=40.3755,49.8516",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "places"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "40.3755,49.8516",
                  "disabled": false,
                  "description": "Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "radius",
                  "value": "1",
                  "disabled": true,
                  "description": "Search radius in kilometers (0.05\u201320, default 1). Schema: {\"type\": \"number\"}"
                },
                {
                  "key": "category",
                  "value": "amenity:cafe",
                  "disabled": true,
                  "description": "OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "limit",
                  "value": "5",
                  "disabled": true,
                  "description": "Max results to return (1\u201350, default 10). Schema: {\"type\": \"integer\"}"
                },
                {
                  "key": "lang",
                  "value": "en",
                  "disabled": true,
                  "description": "Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe Places API discovers businesses and points of interest around any location \u2014 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.\n\n### Parameters\n- **point** (query, required): Center coordinate lat,lng to search around (required). Schema: `{\"type\": \"string\"}`\n- **radius** (query, optional): Search radius in kilometers (0.05\u201320, default 1). Schema: `{\"type\": \"number\"}`\n- **category** (query, optional): OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: `{\"type\": \"string\"}`\n- **limit** (query, optional): Max results to return (1\u201350, default 10). Schema: `{\"type\": \"integer\"}`\n- **lang** (query, optional): Preferred language for names (e.g. en, az, ru). Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n- **502**: Error Codes (HTTP 502)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/places?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "places"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "radius",
                      "value": "1",
                      "disabled": true,
                      "description": "Search radius in kilometers (0.05\u201320, default 1). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "category",
                      "value": "amenity:cafe",
                      "disabled": true,
                      "description": "OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Max results to return (1\u201350, default 10). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/places?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "places"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "radius",
                      "value": "1",
                      "disabled": true,
                      "description": "Search radius in kilometers (0.05\u201320, default 1). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "category",
                      "value": "amenity:cafe",
                      "disabled": true,
                      "description": "OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Max results to return (1\u201350, default 10). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"The \\\"point\\\" parameter (lat,lng) is required.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/places?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "places"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "radius",
                      "value": "1",
                      "disabled": true,
                      "description": "Search radius in kilometers (0.05\u201320, default 1). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "category",
                      "value": "amenity:cafe",
                      "disabled": true,
                      "description": "OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Max results to return (1\u201350, default 10). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/places?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "places"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "radius",
                      "value": "1",
                      "disabled": true,
                      "description": "Search radius in kilometers (0.05\u201320, default 1). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "category",
                      "value": "amenity:cafe",
                      "disabled": true,
                      "description": "OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Max results to return (1\u201350, default 10). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/places?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "places"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "radius",
                      "value": "1",
                      "disabled": true,
                      "description": "Search radius in kilometers (0.05\u201320, default 1). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "category",
                      "value": "amenity:cafe",
                      "disabled": true,
                      "description": "OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Max results to return (1\u201350, default 10). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/places?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "places"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "radius",
                      "value": "1",
                      "disabled": true,
                      "description": "Search radius in kilometers (0.05\u201320, default 1). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "category",
                      "value": "amenity:cafe",
                      "disabled": true,
                      "description": "OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Max results to return (1\u201350, default 10). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/places?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "places"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "radius",
                      "value": "1",
                      "disabled": true,
                      "description": "Search radius in kilometers (0.05\u201320, default 1). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "category",
                      "value": "amenity:cafe",
                      "disabled": true,
                      "description": "OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Max results to return (1\u201350, default 10). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 502 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/places?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "places"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Center coordinate lat,lng to search around (required). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "radius",
                      "value": "1",
                      "disabled": true,
                      "description": "Search radius in kilometers (0.05\u201320, default 1). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "category",
                      "value": "amenity:cafe",
                      "disabled": true,
                      "description": "OSM tag filter, e.g. amenity:cafe, shop, tourism:hotel. Prefix with ! to exclude. Empty = all POIs. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Max results to return (1\u201350, default 10). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for names (e.g. en, az, ru). Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Places service unavailable.\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/places"
        },
        {
          "name": "Autocomplete API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "autocomplete"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "Nizami street, Baku",
                  "disabled": false,
                  "description": "Search text \u2014 partial input is fine. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "limit",
                  "value": "5",
                  "disabled": true,
                  "description": "Maximum number of suggestions to return (1\u201315). Schema: {\"type\": \"integer\"}"
                },
                {
                  "key": "lang",
                  "value": "en",
                  "disabled": true,
                  "description": "Language code for result labels. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "lat",
                  "value": "40.3755",
                  "disabled": false,
                  "description": "Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                },
                {
                  "key": "lon",
                  "value": "49.8516",
                  "disabled": false,
                  "description": "Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                },
                {
                  "key": "country",
                  "value": "AZ",
                  "disabled": true,
                  "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "city",
                  "value": "Bak\u0131",
                  "disabled": true,
                  "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "osm_tag",
                  "value": "amenity:restaurant",
                  "disabled": true,
                  "description": "Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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.\n\nWithout country, search is global. country=AZ restricts results to Azerbaijan; country=AZ&city=Bak\u0131 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.\n\n### Parameters\n- **q** (query, required): Search text \u2014 partial input is fine. Schema: `{\"type\": \"string\"}`\n- **limit** (query, optional): Maximum number of suggestions to return (1\u201315). Schema: `{\"type\": \"integer\"}`\n- **lang** (query, optional): Language code for result labels. Schema: `{\"type\": \"string\"}`\n- **lat** (query, optional): Latitude to bias results toward (optional). Schema: `{\"type\": \"number\"}`\n- **lon** (query, optional): Longitude to bias results toward (optional). Schema: `{\"type\": \"number\"}`\n- **country** (query, optional): ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: `{\"type\": \"string\"}`\n- **city** (query, optional): Strict city filter, for example Baku. Requires exactly one country code. Schema: `{\"type\": \"string\"}`\n- **osm_tag** (query, optional): Filter suggestions by OSM type, e.g. place:city. Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Matching results within all supplied filters. No match returns an empty list; scope is never expanded.\n- **400**: InvalidGeocodeFilter: invalid country code, or city without exactly one country. Invalid filters do not consume credits.\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "autocomplete"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "Search text \u2014 partial input is fine. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of suggestions to return (1\u201315). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for result labels. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 200 \u00b7 noMatch",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "autocomplete"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "Search text \u2014 partial input is fine. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of suggestions to return (1\u201315). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for result labels. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"suggestions\": [],\n  \"took\": 1\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "autocomplete"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "Search text \u2014 partial input is fine. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of suggestions to return (1\u201315). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for result labels. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"InvalidGeocodeFilter\",\n  \"error\": \"city requires exactly one country, for example country=AZ&city=Bak\\u0131.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "autocomplete"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "Search text \u2014 partial input is fine. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of suggestions to return (1\u201315). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for result labels. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "autocomplete"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "Search text \u2014 partial input is fine. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of suggestions to return (1\u201315). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for result labels. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "autocomplete"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "Search text \u2014 partial input is fine. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of suggestions to return (1\u201315). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for result labels. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "autocomplete"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "Search text \u2014 partial input is fine. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of suggestions to return (1\u201315). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for result labels. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/autocomplete?q=Nizami street, Baku&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "autocomplete"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": false,
                      "description": "Search text \u2014 partial input is fine. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of suggestions to return (1\u201315). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for result labels. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude to bias results toward (optional). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter suggestions by OSM type, e.g. place:city. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/autocomplete"
        },
        {
          "name": "Batch Geocoding API",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/1/geocode/batch",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "geocode",
                "batch"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe Batch Geocoding API turns a list of address strings into coordinates in one call \u2014 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.\n\n### Parameters\n\n### JSON body\n| Field | Type | Required | Rules |\n| --- | --- | --- | --- |\n| `queries` | array | yes | Array of address strings to geocode (max 100). |\n| `lang` | string | no | Language code for result labels. |\n| `limit` | integer | no | Maximum matches to return per query (1\u20135). |\n\nFull JSON Schema:\n```json\n{\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```\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"A maximum of 100 queries can be geocoded per batch request.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/1/geocode/batch"
        },
        {
          "name": "Read source place attributes",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/places/details",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "places",
                "details"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"id\": \"{{place_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nPlaces scope; one credit. Read one OpenStreetMap object by its search result ID. Source object cached for one hour. Body limit 1 KiB. 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.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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```\n\n### Responses\n- **200**: Success. Examples are illustrative; results vary with input and source data.\n- **400**: Invalid input. `invalid_place_id` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **402**: Insufficient credits. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `place_not_found` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **502**: Invalid or unavailable upstream. `invalid_place_response` Failed operations are not charged.\n- **503**: Service temporarily unavailable. `place_source_busy` Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/places/details",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "places",
                    "details"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"id\": \"{{place_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"place\": {\n    \"id\": \"osm:N:123\",\n    \"name\": \"Example place\",\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\": \"2026-10-19T00:00:00Z\",\n      \"source_updated_at\": null,\n      \"open_now\": null\n    },\n    \"source_url\": \"https://www.openstreetmap.org/node/123\"\n  },\n  \"retrieval\": \"source_object_with_one_hour_cache\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/places/details",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "places",
                    "details"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"id\": \"{{place_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_place_id\",\n  \"code\": \"invalid_place_id\",\n  \"problem_code\": \"invalid_place_id\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_place_id\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_place_id\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 404",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/places/details",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "places",
                    "details"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"id\": \"{{place_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"place_not_found\",\n  \"code\": \"place_not_found\",\n  \"problem_code\": \"place_not_found\",\n  \"type\": \"https://osrmroute.com/docs/platform#place_not_found\",\n  \"title\": \"Request failed\",\n  \"status\": 404,\n  \"detail\": \"place_not_found\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 502",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/places/details",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "places",
                    "details"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"id\": \"{{place_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_place_response\",\n  \"code\": \"invalid_place_response\",\n  \"problem_code\": \"invalid_place_response\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_place_response\",\n  \"title\": \"Service unavailable\",\n  \"status\": 502,\n  \"detail\": \"invalid_place_response\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 503",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/places/details",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "places",
                    "details"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"id\": \"{{place_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"place_source_busy\",\n  \"code\": \"place_source_busy\",\n  \"problem_code\": \"place_source_busy\",\n  \"type\": \"https://osrmroute.com/docs/platform#place_source_busy\",\n  \"title\": \"Service unavailable\",\n  \"status\": 503,\n  \"detail\": \"place_source_busy\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/places/details"
        },
        {
          "name": "Natural language place search",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/search/natural",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "search",
                "natural"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"q\": \"cafes near Berlin\",\n  \"ai\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\n2 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\u20135000 m. Up to ten candidates, straight-line distances, not exhaustive. Unsupported conditions return 422. Search requests share 60/minute/key and a 24 KiB body limit.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n    }\n  },\n  \"required\": [\n    \"q\"\n  ]\n}\n```\n\n### Responses\n- **200**: Success. Examples are illustrative; results vary with input and source data.\n- **400**: Invalid input. `invalid_query`, `invalid_coordinate`, `invalid_ai_prompt` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **402**: Insufficient credits. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. `ai_business_required`, `ai_billing_period_unavailable` Failed operations are not charged.\n- **404**: Resource not found. See the returned error code. Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. `unsupported_search_query`, `unsupported_search_condition`, `search_center_required`, `search_location_not_found` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. `ai_quota_exhausted`, `ai_rate_limited`, `ai_concurrency_limited` Failed operations are not charged.\n- **502**: Invalid or unavailable upstream. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. `ai_not_configured`, `ai_operation_expired` Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/natural",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "natural"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"q\": \"cafes near Berlin\",\n  \"ai\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"intent\": {\n    \"category\": \"cafe\",\n    \"center\": [\n      49.8671,\n      40.4093\n    ],\n    \"radius_meters\": 2000,\n    \"resolved_location\": null\n  },\n  \"places\": [],\n  \"interpretation\": \"constrained_english_grammar\",\n  \"distance_model\": \"straight_line\",\n  \"exhaustive\": false,\n  \"candidate_limit\": 10\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/natural",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "natural"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"q\": \"cafes near Berlin\",\n  \"ai\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_query\",\n  \"code\": \"invalid_query\",\n  \"problem_code\": \"invalid_query\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_query\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_query\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 403",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/natural",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "natural"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"q\": \"cafes near Berlin\",\n  \"ai\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"ai_business_required\",\n  \"code\": \"ai_business_required\",\n  \"problem_code\": \"ai_business_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#ai_business_required\",\n  \"title\": \"Request failed\",\n  \"status\": 403,\n  \"detail\": \"ai_business_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 422",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/natural",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "natural"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"q\": \"cafes near Berlin\",\n  \"ai\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"unsupported_search_query\",\n  \"code\": \"unsupported_search_query\",\n  \"problem_code\": \"unsupported_search_query\",\n  \"type\": \"https://osrmroute.com/docs/platform#unsupported_search_query\",\n  \"title\": \"Request failed\",\n  \"status\": 422,\n  \"detail\": \"unsupported_search_query\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 429",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/natural",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "natural"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"q\": \"cafes near Berlin\",\n  \"ai\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"ai_quota_exhausted\",\n  \"code\": \"ai_quota_exhausted\",\n  \"problem_code\": \"ai_quota_exhausted\",\n  \"type\": \"https://osrmroute.com/docs/platform#ai_quota_exhausted\",\n  \"title\": \"Request failed\",\n  \"status\": 429,\n  \"detail\": \"ai_quota_exhausted\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 503",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/natural",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "natural"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"q\": \"cafes near Berlin\",\n  \"ai\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"ai_not_configured\",\n  \"code\": \"ai_not_configured\",\n  \"problem_code\": \"ai_not_configured\",\n  \"type\": \"https://osrmroute.com/docs/platform#ai_not_configured\",\n  \"title\": \"Service unavailable\",\n  \"status\": 503,\n  \"detail\": \"ai_not_configured\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/search/natural"
        },
        {
          "name": "Find stops with calculated road detours",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/places/along-route",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "places",
                "along-route"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nRequires both places and route scopes. 14 credits per successful compound query; 10 requests/minute/key, 2 KiB body. 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.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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, latitude] in decimal degrees. Request bounds: 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, latitude] in decimal degrees. Request bounds: 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```\n\n### Responses\n- **200**: Success. Examples are illustrative; results vary with input and source data.\n- **400**: Invalid input. `invalid_coordinate`, `invalid_category`, `invalid_detour`, `invalid_limit` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **402**: Insufficient credits. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. See the returned error code. Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. `route_too_long` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **502**: Invalid or unavailable upstream. `routing_unavailable`, `places_unavailable` Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/places/along-route",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "places",
                    "along-route"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"places\": [],\n  \"baseline\": {\n    \"duration_seconds\": 600,\n    \"distance_meters\": 5000\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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/places/along-route",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "places",
                    "along-route"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_coordinate\",\n  \"code\": \"invalid_coordinate\",\n  \"problem_code\": \"invalid_coordinate\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_coordinate\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_coordinate\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 422",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/places/along-route",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "places",
                    "along-route"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"route_too_long\",\n  \"code\": \"route_too_long\",\n  \"problem_code\": \"route_too_long\",\n  \"type\": \"https://osrmroute.com/docs/platform#route_too_long\",\n  \"title\": \"Request failed\",\n  \"status\": 422,\n  \"detail\": \"route_too_long\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 502",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/places/along-route",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "places",
                    "along-route"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"routing_unavailable\",\n  \"code\": \"routing_unavailable\",\n  \"problem_code\": \"routing_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#routing_unavailable\",\n  \"title\": \"Service unavailable\",\n  \"status\": 502,\n  \"detail\": \"routing_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/places/along-route"
        },
        {
          "name": "Search using address components",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/search/structured",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "search",
                "structured"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"street\": \"Friedrichstrasse\",\n  \"city\": \"Berlin\",\n  \"countrycode\": \"DE\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nGeocode 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. Search requests share 60/minute/key and a 24 KiB body limit.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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  \"anyOf\": [\n    {\n      \"required\": [\n        \"street\"\n      ]\n    },\n    {\n      \"required\": [\n        \"city\"\n      ]\n    },\n    {\n      \"required\": [\n        \"postcode\"\n      ]\n    }\n  ]\n}\n```\n\n### Responses\n- **200**: Success. Examples are illustrative; results vary with input and source data.\n- **400**: Invalid input. `invalid_search`, `invalid_address_field`, `address_too_broad`, `invalid_countrycode` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **402**: Insufficient credits. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. See the returned error code. Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **502**: Invalid or unavailable upstream. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/structured",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "structured"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"street\": \"Friedrichstrasse\",\n  \"city\": \"Berlin\",\n  \"countrycode\": \"DE\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"features\": [],\n  \"search_method\": \"composed_address_query\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/structured",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "structured"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"street\": \"Friedrichstrasse\",\n  \"city\": \"Berlin\",\n  \"countrycode\": \"DE\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_search\",\n  \"code\": \"invalid_search\",\n  \"problem_code\": \"invalid_search\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_search\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_search\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/search/structured"
        },
        {
          "name": "Get place suggestions and retrieval tokens",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/search/suggest",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "search",
                "suggest"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"q\": \"Paris\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nGeocode scope. 1 credit. Tokens are owner-bound and expire after ten minutes. Use POST body; do not place tokens in URLs. Search requests share 60/minute/key and a 24 KiB body limit.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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```\n\n### Responses\n- **200**: Success. Examples are illustrative; results vary with input and source data.\n- **400**: Invalid input. `invalid_search` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **402**: Insufficient credits. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. See the returned error code. Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **502**: Invalid or unavailable upstream. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. `search_token_unavailable` Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/suggest",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "suggest"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"q\": \"Paris\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"suggestions\": [\n    {\n      \"id\": \"osm:N:123\",\n      \"name\": \"Example place\",\n      \"address\": {\n        \"city\": \"Baku\"\n      },\n      \"token\": \"<opaque token returned by this request>\"\n    }\n  ],\n  \"expires_in_seconds\": 600\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/suggest",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "suggest"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"q\": \"Paris\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_search\",\n  \"code\": \"invalid_search\",\n  \"problem_code\": \"invalid_search\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_search\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_search\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 503",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/suggest",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "suggest"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"q\": \"Paris\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"search_token_unavailable\",\n  \"code\": \"search_token_unavailable\",\n  \"problem_code\": \"search_token_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#search_token_unavailable\",\n  \"title\": \"Service unavailable\",\n  \"status\": 503,\n  \"detail\": \"search_token_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/search/suggest"
        },
        {
          "name": "Retrieve a signed suggestion snapshot",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/search/retrieve",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "search",
                "retrieve"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"token\": \"{{suggestion_token}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nGeocode scope. 1 credit. Returns the suggestion snapshot, not a new live provider lookup. Token must belong to the current key owner and be unexpired. Search requests share 60/minute/key and a 24 KiB body limit.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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```\n\n### Responses\n- **200**: Success. Examples are illustrative; results vary with input and source data.\n- **400**: Invalid input. `invalid_place_token` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **402**: Insufficient credits. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. See the returned error code. Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **502**: Invalid or unavailable upstream. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. `search_token_unavailable` Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/retrieve",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "retrieve"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"{{suggestion_token}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"place\": {\n    \"id\": \"osm:N:123\",\n    \"name\": \"Example place\",\n    \"point\": [\n      49.8671,\n      40.4093\n    ],\n    \"address\": {\n      \"city\": \"Baku\"\n    },\n    \"source\": \"openstreetmap\",\n    \"precision\": \"locality\"\n  },\n  \"retrieval\": \"signed_suggestion_snapshot\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/retrieve",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "retrieve"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"{{suggestion_token}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_place_token\",\n  \"code\": \"invalid_place_token\",\n  \"problem_code\": \"invalid_place_token\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_place_token\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_place_token\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 503",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/search/retrieve",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "search",
                    "retrieve"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"{{suggestion_token}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"search_token_unavailable\",\n  \"code\": \"search_token_unavailable\",\n  \"problem_code\": \"search_token_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#search_token_unavailable\",\n  \"title\": \"Service unavailable\",\n  \"status\": 503,\n  \"detail\": \"search_token_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/search/retrieve"
        },
        {
          "name": "Reverse geocoding",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/geocode?reverse=true&point=48.8566,2.3522",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "geocode"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "Nizami street, Baku",
                  "disabled": true,
                  "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "reverse",
                  "value": "true",
                  "disabled": false,
                  "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                },
                {
                  "key": "point",
                  "value": "48.8566,2.3522",
                  "disabled": false,
                  "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "limit",
                  "value": "5",
                  "disabled": true,
                  "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                },
                {
                  "key": "lang",
                  "value": "en",
                  "disabled": true,
                  "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "lat",
                  "value": "40.3755",
                  "disabled": true,
                  "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                },
                {
                  "key": "lon",
                  "value": "49.8516",
                  "disabled": true,
                  "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                },
                {
                  "key": "bbox",
                  "value": "49.75,40.30,49.95,40.45",
                  "disabled": true,
                  "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "osm_tag",
                  "value": "amenity:restaurant",
                  "disabled": true,
                  "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "country",
                  "value": "AZ",
                  "disabled": true,
                  "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "city",
                  "value": "Bak\u0131",
                  "disabled": true,
                  "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "elastic",
                  "value": "true",
                  "disabled": true,
                  "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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 \u2014 location bias, bounding box, category and strict country and city filters \u2014 let you tune results for any use case.\n\nWithout country, search is global. country=AZ restricts results to Azerbaijan; country=AZ&city=Bak\u0131 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.\n\n### Parameters\n- **q** (query, optional): The address to search (e.g. \"Nizami Street, Baku\"). Schema: `{\"type\": \"string\"}`\n- **reverse** (query, optional): Must be true to perform reverse geocoding (searching from coordinate to address). Schema: `{\"type\": \"boolean\"}`\n- **point** (query, optional): Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: `{\"type\": \"string\"}`\n- **limit** (query, optional): Maximum number of results to return (1\u201320, default 5). Schema: `{\"type\": \"integer\"}`\n- **lang** (query, optional): Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: `{\"type\": \"string\"}`\n- **lat** (query, optional): Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: `{\"type\": \"number\"}`\n- **lon** (query, optional): Longitude to bias results toward. Pair with lat. Schema: `{\"type\": \"number\"}`\n- **bbox** (query, optional): Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: `{\"type\": \"string\"}`\n- **osm_tag** (query, optional): Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: `{\"type\": \"string\"}`\n- **country** (query, optional): ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: `{\"type\": \"string\"}`\n- **city** (query, optional): Strict city filter, for example Baku. Requires exactly one country code. Schema: `{\"type\": \"string\"}`\n- **elastic** (query, optional): Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: `{\"type\": \"boolean\"}`\n\n### Responses\n- **200**: Matching results within all supplied filters. No match returns an empty list; scope is never expanded.\n- **400**: InvalidGeocodeFilter: invalid country code, or city without exactly one country. Invalid filters do not consume credits.\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?reverse=true&point=48.8566,2.3522",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": true,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "true",
                      "disabled": false,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "48.8566,2.3522",
                      "disabled": false,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 200 \u00b7 noMatch",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?reverse=true&point=48.8566,2.3522",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": true,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "true",
                      "disabled": false,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "48.8566,2.3522",
                      "disabled": false,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"hits\": [],\n  \"took\": 1\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?reverse=true&point=48.8566,2.3522",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": true,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "true",
                      "disabled": false,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "48.8566,2.3522",
                      "disabled": false,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"InvalidGeocodeFilter\",\n  \"error\": \"city requires exactly one country, for example country=AZ&city=Bak\\u0131.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?reverse=true&point=48.8566,2.3522",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": true,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "true",
                      "disabled": false,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "48.8566,2.3522",
                      "disabled": false,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?reverse=true&point=48.8566,2.3522",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": true,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "true",
                      "disabled": false,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "48.8566,2.3522",
                      "disabled": false,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?reverse=true&point=48.8566,2.3522",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": true,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "true",
                      "disabled": false,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "48.8566,2.3522",
                      "disabled": false,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 NoNearbyAddress",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?reverse=true&point=48.8566,2.3522",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": true,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "true",
                      "disabled": false,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "48.8566,2.3522",
                      "disabled": false,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"NoNearbyAddress\",\n  \"error\": \"No indexed address or place within 1 km.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?reverse=true&point=48.8566,2.3522",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": true,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "true",
                      "disabled": false,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "48.8566,2.3522",
                      "disabled": false,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/geocode?reverse=true&point=48.8566,2.3522",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geocode"
                  ],
                  "query": [
                    {
                      "key": "q",
                      "value": "Nizami street, Baku",
                      "disabled": true,
                      "description": "The address to search (e.g. \"Nizami Street, Baku\"). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "reverse",
                      "value": "true",
                      "disabled": false,
                      "description": "Must be true to perform reverse geocoding (searching from coordinate to address). Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "point",
                      "value": "48.8566,2.3522",
                      "disabled": false,
                      "description": "Coordinate (lat,lng) to reverse geocode into an address. Required when reverse=true. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "limit",
                      "value": "5",
                      "disabled": true,
                      "description": "Maximum number of results to return (1\u201320, default 5). Schema: {\"type\": \"integer\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Preferred language for result names (e.g. en, az, ru). Defaults to en. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude to bias results toward (nearby matches rank first). Pair with lon. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude to bias results toward. Pair with lat. Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "bbox",
                      "value": "49.75,40.30,49.95,40.45",
                      "disabled": true,
                      "description": "Restrict results to a bounding box: minLon,minLat,maxLon,maxLat. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "osm_tag",
                      "value": "amenity:restaurant",
                      "disabled": true,
                      "description": "Filter by OSM tag, e.g. place (settlements) or amenity:cafe. Prefix with ! to exclude. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "country",
                      "value": "AZ",
                      "disabled": true,
                      "description": "ISO 3166-1 alpha-2 country code, for example AZ. Returns results only within that country. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "city",
                      "value": "Bak\u0131",
                      "disabled": true,
                      "description": "Strict city filter, for example Baku. Requires exactly one country code. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "elastic",
                      "value": "true",
                      "disabled": true,
                      "description": "Elastic (fuzzy, high-recall) search \u2014 default true. Tolerates typos, missing diacritics (\u0259\u2194e), reordered words, generic words (metro, rayonu) and house numbers. Set false for strict exact matching. Schema: {\"type\": \"boolean\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/geocode"
        }
      ]
    },
    {
      "name": "03 \u00b7 Geospatial utilities",
      "item": [
        {
          "name": "Location Clustering",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/1/cluster",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "cluster"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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 \u2014 perfect for splitting deliveries across drivers, defining service territories or pre-grouping stops before optimisation.\n\n### Parameters\n\n### JSON body\n| Field | Type | Required | Rules |\n| --- | --- | --- | --- |\n| `customers` | array | yes | Customer coordinates and weights to be clustered. |\n\nFull JSON Schema:\n```json\n{\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```\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/cluster",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "cluster"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/cluster",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "cluster"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Provide a \\\"customers\\\" array with valid coordinates.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/cluster",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "cluster"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/cluster",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "cluster"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/cluster",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "cluster"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/cluster",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "cluster"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/cluster",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "cluster"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/1/cluster"
        },
        {
          "name": "Timezone API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "timezone"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "40.3755,49.8516",
                  "disabled": false,
                  "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "lat",
                  "value": "40.3755",
                  "disabled": false,
                  "description": "Latitude (alternative to point). Schema: {\"type\": \"number\"}"
                },
                {
                  "key": "lon",
                  "value": "49.8516",
                  "disabled": false,
                  "description": "Longitude (alternative to point). Schema: {\"type\": \"number\"}"
                },
                {
                  "key": "timestamp",
                  "value": "now",
                  "disabled": true,
                  "description": "Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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 \u2014 it works anywhere, not just our map coverage.\n\n### Parameters\n- **point** (query, required): Coordinate as lat,lng. Schema: `{\"type\": \"string\"}`\n- **lat** (query, optional): Latitude (alternative to point). Schema: `{\"type\": \"number\"}`\n- **lon** (query, optional): Longitude (alternative to point). Schema: `{\"type\": \"number\"}`\n- **timestamp** (query, optional): Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: `{\"type\": \"integer\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "timezone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "timestamp",
                      "value": "now",
                      "disabled": true,
                      "description": "Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "timezone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "timestamp",
                      "value": "now",
                      "disabled": true,
                      "description": "Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Provide a valid coordinate via point=lat,lng or lat= & lon=.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "timezone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "timestamp",
                      "value": "now",
                      "disabled": true,
                      "description": "Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "timezone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "timestamp",
                      "value": "now",
                      "disabled": true,
                      "description": "Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "timezone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "timestamp",
                      "value": "now",
                      "disabled": true,
                      "description": "Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "timezone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "timestamp",
                      "value": "now",
                      "disabled": true,
                      "description": "Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/timezone?point=40.3755,49.8516&lat=40.3755&lon=49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "timezone"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": false,
                      "description": "Latitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": false,
                      "description": "Longitude (alternative to point). Schema: {\"type\": \"number\"}"
                    },
                    {
                      "key": "timestamp",
                      "value": "now",
                      "disabled": true,
                      "description": "Unix time (seconds) or ISO date to resolve the offset for; defaults to now. Schema: {\"type\": \"integer\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/timezone"
        },
        {
          "name": "Elevation API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "elevation"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "40.3777,49.8516",
                  "disabled": false,
                  "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",
                  "disabled": false,
                  "description": "Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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 \u2014 send up to 100 points via GET or 1000 via POST. Values are bilinearly interpolated for smooth results; ocean returns 0.\n\n### Parameters\n- **point** (query, required): Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: `{\"type\": \"array\", \"items\": {\"type\": \"string\"}}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"results\": [\n    {\n      \"point\": {\n        \"lat\": 40.3777,\n        \"lng\": 49.8516\n      },\n      \"elevation\": null\n    }\n  ],\n  \"unit\": \"meters\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "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,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"A maximum of 100 points can be queried per GET request; use POST for larger batches.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "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,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation?point=40.3777,49.8516&point=40.4,49.86",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3777,49.8516",
                      "disabled": false,
                      "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",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Repeat for each point (up to 100 on GET). Schema: {\"type\": \"array\", \"items\": {\"type\": \"string\"}}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/elevation"
        },
        {
          "name": "Boundary Lookup API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/boundary?point=40.3755,49.8516",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "boundary"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "40.3755,49.8516",
                  "disabled": false,
                  "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "polygon",
                  "value": "false",
                  "disabled": true,
                  "description": "Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}"
                },
                {
                  "key": "lang",
                  "value": "en",
                  "disabled": true,
                  "description": "Language code for place names. Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe Boundary Lookup API tells you which administrative areas a coordinate falls in \u2014 country, state, county, city and district \u2014 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.\n\n### Parameters\n- **point** (query, required): Coordinate as lat,lng. Schema: `{\"type\": \"string\"}`\n- **polygon** (query, optional): Set true to also return the boundary as GeoJSON. Schema: `{\"type\": \"boolean\"}`\n- **lang** (query, optional): Language code for place names. Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **422**: Error Codes (HTTP 422)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/boundary?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "boundary"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "polygon",
                      "value": "false",
                      "disabled": true,
                      "description": "Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for place names. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/boundary?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "boundary"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "polygon",
                      "value": "false",
                      "disabled": true,
                      "description": "Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for place names. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Provide a valid coordinate via point=lat,lng or lat= & lon=.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/boundary?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "boundary"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "polygon",
                      "value": "false",
                      "disabled": true,
                      "description": "Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for place names. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/boundary?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "boundary"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "polygon",
                      "value": "false",
                      "disabled": true,
                      "description": "Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for place names. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/boundary?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "boundary"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "polygon",
                      "value": "false",
                      "disabled": true,
                      "description": "Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for place names. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 422 \u00b7 BoundaryCoverageUnavailable",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/boundary?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "boundary"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "polygon",
                      "value": "false",
                      "disabled": true,
                      "description": "Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for place names. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"code\": \"BoundaryCoverageUnavailable\",\n  \"error\": \"Detailed administrative boundary data is not available at this coordinate.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/boundary?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "boundary"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "polygon",
                      "value": "false",
                      "disabled": true,
                      "description": "Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for place names. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/boundary?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "boundary"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "polygon",
                      "value": "false",
                      "disabled": true,
                      "description": "Set true to also return the boundary as GeoJSON. Schema: {\"type\": \"boolean\"}"
                    },
                    {
                      "key": "lang",
                      "value": "en",
                      "disabled": true,
                      "description": "Language code for place names. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/boundary"
        },
        {
          "name": "Geofencing API",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/1/geofence",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "geofence"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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 \u2014 ideal for delivery zones, alerts and access control.\n\n### Parameters\n\n### JSON body\n| Field | Type | Required | Rules |\n| --- | --- | --- | --- |\n| `fences` | array | yes | Array of fences: '{' id?, polygon:[[lat,lng],...] '}' or '{' id?, center:[lat,lng], radius_m '}'. Up to 100. |\n| `points` | array | yes | Array of [lat,lng] points to test (up to 1000). |\n\nFull JSON Schema:\n```json\n{\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```\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geofence",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geofence"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geofence",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geofence"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Limits: up to 100 fences and 1000 points per request.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geofence",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geofence"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geofence",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geofence"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geofence",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geofence"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geofence",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geofence"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geofence",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geofence"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/1/geofence"
        },
        {
          "name": "Elevation Profile API",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/1/elevation/profile",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "elevation",
                "profile"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe Elevation Profile API takes a path \u2014 a points array or an encoded polyline \u2014 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.\n\n### Parameters\n\n### JSON body\n| Field | Type | Required | Rules |\n| --- | --- | --- | --- |\n| `points` | array | no | Array of [lat,lng] points forming the path (>=2, up to 2000). |\n| `polyline` | string | no | Encoded polyline as an alternative to points. |\n\nFull JSON Schema:\n```json\n{\n  \"type\": \"object\",\n  \"properties\": {\n    \"points\": {\n      \"type\": \"array\",\n      \"items\": {},\n      \"description\": \"Array of [lat,lng] points forming the path (>=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```\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation/profile",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation",
                    "profile"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation/profile",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation",
                    "profile"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"A maximum of 2000 points is allowed per request.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation/profile",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation",
                    "profile"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation/profile",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation",
                    "profile"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation/profile",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation",
                    "profile"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation/profile",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation",
                    "profile"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/elevation/profile",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "elevation",
                    "profile"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/1/elevation/profile"
        },
        {
          "name": "Solar API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/solar?point=40.3755,49.8516",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "solar"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "40.3755,49.8516",
                  "disabled": false,
                  "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "date",
                  "value": "today",
                  "disabled": true,
                  "description": "Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe Solar API returns sunrise, sunset, civil dawn and dusk, solar noon, golden hour and total day length for any coordinate and date. Pure astronomy \u2014 no map data \u2014 so it works everywhere. Ideal for solar planning, photography, agriculture and smart-home automation.\n\n### Parameters\n- **point** (query, required): Coordinate as lat,lng. Schema: `{\"type\": \"string\"}`\n- **date** (query, optional): Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/solar?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "solar"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "date",
                      "value": "today",
                      "disabled": true,
                      "description": "Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/solar?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "solar"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "date",
                      "value": "today",
                      "disabled": true,
                      "description": "Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Provide a valid coordinate via point=lat,lng or lat= & lon=.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/solar?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "solar"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "date",
                      "value": "today",
                      "disabled": true,
                      "description": "Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/solar?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "solar"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "date",
                      "value": "today",
                      "disabled": true,
                      "description": "Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/solar?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "solar"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "date",
                      "value": "today",
                      "disabled": true,
                      "description": "Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/solar?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "solar"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "date",
                      "value": "today",
                      "disabled": true,
                      "description": "Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/solar?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "solar"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "date",
                      "value": "today",
                      "disabled": true,
                      "description": "Date (YYYY-MM-DD) to compute times for; defaults to today. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/solar"
        },
        {
          "name": "Geometry Utilities API",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/1/geometry",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "geometry"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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\u2013Peucker simplification and Google polyline encode/decode. One endpoint, pick the operation with the op field. Pure computation, works worldwide.\n\n### Parameters\n\n### JSON body\n| Field | Type | Required | Rules |\n| --- | --- | --- | --- |\n| `op` | string | yes | Operation: distance, bearing, destination, midpoint, length, area, centroid, simplify, polyline_encode or polyline_decode. |\n| `from` | array | no | Start point [lat,lng] (for distance/bearing/destination/midpoint). |\n| `to` | array | no | End point [lat,lng] (for distance/bearing/midpoint). |\n| `path` | array | no | Array of [lat,lng] (for length/simplify/polyline_encode). |\n| `polygon` | array | no | Array of [lat,lng] ring (for area). |\n\nFull JSON Schema:\n```json\n{\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```\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geometry",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geometry"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"op\": \"distance\",\n  \"distance\": 2590.25,\n  \"unit\": \"meters\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geometry",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geometry"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid geometry input for the requested op.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geometry",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geometry"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geometry",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geometry"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geometry",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geometry"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geometry",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geometry"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/1/geometry",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "geometry"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/1/geometry"
        },
        {
          "name": "Coordinate Conversion API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/convert?point=40.3755,49.8516",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "convert"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "40.3755,49.8516",
                  "disabled": false,
                  "description": "Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "mgrs",
                  "value": "39TVE0251070068",
                  "disabled": true,
                  "description": "MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "lat",
                  "value": "40.3755",
                  "disabled": true,
                  "description": "Latitude in degrees; supply together with lon when point and mgrs are absent."
                },
                {
                  "key": "lon",
                  "value": "49.8516",
                  "disabled": true,
                  "description": "Longitude in degrees; supply together with lat when point and mgrs are absent."
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe 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.\n\n### Parameters\n- **point** (query, optional): Coordinate as lat,lng to convert to UTM/MGRS. Schema: `{\"type\": \"string\"}`\n- **mgrs** (query, optional): MGRS string to reverse-convert into a coordinate. Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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.\n\n### Input alternatives\nSupply point=lat,lng, both lat and lon, or mgrs for reverse conversion. A nonempty mgrs takes precedence. Reverse conversion returns the MGRS cell centre without utm. The saved reverse example includes the exact mgrs-only request.\n- **lat**, **lon** (query, optional numbers): supply both when point and mgrs are absent."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/convert?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "convert"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "mgrs",
                      "value": "39TVE0251070068",
                      "disabled": true,
                      "description": "MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude in degrees; supply together with lon when point and mgrs are absent."
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude in degrees; supply together with lat when point and mgrs are absent."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"point\": {\n    \"lat\": 40.3755,\n    \"lng\": 49.8516\n  },\n  \"mgrs\": \"39TVE0251070068\",\n  \"utm\": {\n    \"zone\": 39,\n    \"band\": \"T\",\n    \"easting\": 402511,\n    \"northing\": 4470068,\n    \"hemisphere\": \"N\"\n  }\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/convert?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "convert"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "mgrs",
                      "value": "39TVE0251070068",
                      "disabled": true,
                      "description": "MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude in degrees; supply together with lon when point and mgrs are absent."
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude in degrees; supply together with lat when point and mgrs are absent."
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Provide point=lat,lng (or lat= & lon=), or mgrs= to reverse-convert.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/convert?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "convert"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "mgrs",
                      "value": "39TVE0251070068",
                      "disabled": true,
                      "description": "MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude in degrees; supply together with lon when point and mgrs are absent."
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude in degrees; supply together with lat when point and mgrs are absent."
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/convert?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "convert"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "mgrs",
                      "value": "39TVE0251070068",
                      "disabled": true,
                      "description": "MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude in degrees; supply together with lon when point and mgrs are absent."
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude in degrees; supply together with lat when point and mgrs are absent."
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/convert?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "convert"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "mgrs",
                      "value": "39TVE0251070068",
                      "disabled": true,
                      "description": "MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude in degrees; supply together with lon when point and mgrs are absent."
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude in degrees; supply together with lat when point and mgrs are absent."
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/convert?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "convert"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "mgrs",
                      "value": "39TVE0251070068",
                      "disabled": true,
                      "description": "MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude in degrees; supply together with lon when point and mgrs are absent."
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude in degrees; supply together with lat when point and mgrs are absent."
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/convert?point=40.3755,49.8516",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "convert"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "40.3755,49.8516",
                      "disabled": false,
                      "description": "Coordinate as lat,lng to convert to UTM/MGRS. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "mgrs",
                      "value": "39TVE0251070068",
                      "disabled": true,
                      "description": "MGRS string to reverse-convert into a coordinate. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "40.3755",
                      "disabled": true,
                      "description": "Latitude in degrees; supply together with lon when point and mgrs are absent."
                    },
                    {
                      "key": "lon",
                      "value": "49.8516",
                      "disabled": true,
                      "description": "Longitude in degrees; supply together with lat when point and mgrs are absent."
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 200 \u00b7 reverse MGRS",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/convert?mgrs=39TVE0251070068",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "convert"
                  ],
                  "query": [
                    {
                      "key": "mgrs",
                      "value": "39TVE0251070068",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"mgrs\": \"39TVE0251070068\",\n  \"point\": {\n    \"lat\": 40.37550134596607,\n    \"lng\": 49.851595067884034\n  }\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/convert"
        },
        {
          "name": "Country Info API",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/country?code=AZ",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "country"
              ],
              "query": [
                {
                  "key": "code",
                  "value": "AZ",
                  "disabled": false,
                  "description": "ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "name",
                  "value": "Azerbaijan",
                  "disabled": true,
                  "description": "Country name as an alternative to code. Schema: {\"type\": \"string\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nThe Country Info API returns rich metadata for any country \u2014 currency (code, name, symbol), international calling code, official languages, capital, region, flag and population \u2014 looked up by ISO 3166 code or name. Backed by a global static dataset, available worldwide.\n\n### Parameters\n- **code** (query, optional): ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: `{\"type\": \"string\"}`\n- **name** (query, optional): Country name as an alternative to code. Schema: `{\"type\": \"string\"}`\n\n### Responses\n- **200**: Successful response\n- **400**: Error Codes (HTTP 400)\n- **401**: Error Codes (HTTP 401)\n- **402**: Error Codes (HTTP 402)\n- **403**: Error Codes (HTTP 403)\n- **404**: Error Codes (HTTP 404)\n- **429**: Error Codes (HTTP 429)\n- **500**: Error Codes (HTTP 500)\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic \u00b7 200 \u00b7 success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/country?code=AZ",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "country"
                  ],
                  "query": [
                    {
                      "key": "code",
                      "value": "AZ",
                      "disabled": false,
                      "description": "ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "name",
                      "value": "Azerbaijan",
                      "disabled": true,
                      "description": "Country name as an alternative to code. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 400 \u00b7 invalid",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/country?code=AZ",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "country"
                  ],
                  "query": [
                    {
                      "key": "code",
                      "value": "AZ",
                      "disabled": false,
                      "description": "ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "name",
                      "value": "Azerbaijan",
                      "disabled": true,
                      "description": "Country name as an alternative to code. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Provide code=ISO2/ISO3 or name=CountryName.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 401 \u00b7 auth",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/country?code=AZ",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "country"
                  ],
                  "query": [
                    {
                      "key": "code",
                      "value": "AZ",
                      "disabled": false,
                      "description": "ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "name",
                      "value": "Azerbaijan",
                      "disabled": true,
                      "description": "Country name as an alternative to code. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Invalid API Key\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 402 \u00b7 balance",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/country?code=AZ",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "country"
                  ],
                  "query": [
                    {
                      "key": "code",
                      "value": "AZ",
                      "disabled": false,
                      "description": "ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "name",
                      "value": "Azerbaijan",
                      "disabled": true,
                      "description": "Country name as an alternative to code. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 402,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Insufficient balance: this request costs 1 credit and your balance is 0 credits. Top up your account to continue.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 403 \u00b7 plan",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/country?code=AZ",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "country"
                  ],
                  "query": [
                    {
                      "key": "code",
                      "value": "AZ",
                      "disabled": false,
                      "description": "ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "name",
                      "value": "Azerbaijan",
                      "disabled": true,
                      "description": "Country name as an alternative to code. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"This API Key is disabled\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 404 \u00b7 country",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/country?code=AZ",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "country"
                  ],
                  "query": [
                    {
                      "key": "code",
                      "value": "AZ",
                      "disabled": false,
                      "description": "ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "name",
                      "value": "Azerbaijan",
                      "disabled": true,
                      "description": "Country name as an alternative to code. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Country not found.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 429 \u00b7 rate",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/country?code=AZ",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "country"
                  ],
                  "query": [
                    {
                      "key": "code",
                      "value": "AZ",
                      "disabled": false,
                      "description": "ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "name",
                      "value": "Azerbaijan",
                      "disabled": true,
                      "description": "Country name as an alternative to code. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Rate limit exceeded: more than 60 requests per minute. Please slow down.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 500 \u00b7 upstream",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/country?code=AZ",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "country"
                  ],
                  "query": [
                    {
                      "key": "code",
                      "value": "AZ",
                      "disabled": false,
                      "description": "ISO 3166 alpha-2 or alpha-3 country code (e.g. AZ or AZE). Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "name",
                      "value": "Azerbaijan",
                      "disabled": true,
                      "description": "Country name as an alternative to code. Schema: {\"type\": \"string\"}"
                    }
                  ]
                }
              },
              "status": "Response",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Internal Server Error\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/country"
        }
      ]
    },
    {
      "name": "04 \u00b7 Maps and Studio",
      "item": [
        {
          "name": "Preview style commands",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/preview",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "preview"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"prompt\": \"dark; water #123456; hide buildings\",\n  \"ai\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nai=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.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    }\n  },\n  \"required\": [\n    \"prompt\"\n  ]\n}\n```\n\n### Responses\n- **200**: Success. Examples are illustrative; results vary with input and source data.\n- **400**: Invalid input. `invalid_query` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **402**: Insufficient credits. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. See the returned error code. Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. `unsupported_style_command` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **502**: Invalid or unavailable upstream. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/preview",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "preview"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"prompt\": \"dark; water #123456; hide buildings\",\n  \"ai\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"design\": {\n    \"preset\": \"dark\",\n    \"colors\": {\n      \"land\": \"#101c2b\",\n      \"water\": \"#123456\",\n      \"park\": \"#18382f\",\n      \"road\": \"#40536a\",\n      \"highway\": \"#6295b5\",\n      \"building\": \"#26364b\",\n      \"label\": \"#c7d9e9\"\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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/preview",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "preview"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"prompt\": \"dark; water #123456; hide buildings\",\n  \"ai\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_query\",\n  \"code\": \"invalid_query\",\n  \"problem_code\": \"invalid_query\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_query\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_query\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 422",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/preview",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "preview"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"prompt\": \"dark; water #123456; hide buildings\",\n  \"ai\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"unsupported_style_command\",\n  \"code\": \"unsupported_style_command\",\n  \"problem_code\": \"unsupported_style_command\",\n  \"type\": \"https://osrmroute.com/docs/platform#unsupported_style_command\",\n  \"title\": \"Request failed\",\n  \"status\": 422,\n  \"detail\": \"unsupported_style_command\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/preview"
        },
        {
          "name": "Render a PNG map",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/maps/static",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "maps",
                "static"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nMaps scope. 4 credits per successful image; 10 requests/minute/key, 2 KiB body. Simplified cartographic renderer using OSRMRoute palettes and OpenFreeMap/OpenMapTiles/OSM data; not full Studio layer/effect parity. Attribution is included.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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, latitude] in decimal degrees. Request bounds: 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```\n\n### Responses\n- **200**: PNG image\n- **400**: Invalid input. `invalid_center`, `invalid_zoom`, `invalid_dimensions`, `invalid_style` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **402**: Insufficient credits. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. See the returned error code. Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. `map_too_complex` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **502**: Invalid or unavailable upstream. `invalid_tile_source` Failed operations are not charged.\n- **503**: Service temporarily unavailable. `renderer_busy` Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/maps/static",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "maps",
                    "static"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_center\",\n  \"code\": \"invalid_center\",\n  \"problem_code\": \"invalid_center\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_center\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_center\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 422",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/maps/static",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "maps",
                    "static"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"map_too_complex\",\n  \"code\": \"map_too_complex\",\n  \"problem_code\": \"map_too_complex\",\n  \"type\": \"https://osrmroute.com/docs/platform#map_too_complex\",\n  \"title\": \"Request failed\",\n  \"status\": 422,\n  \"detail\": \"map_too_complex\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 502",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/maps/static",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "maps",
                    "static"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_tile_source\",\n  \"code\": \"invalid_tile_source\",\n  \"problem_code\": \"invalid_tile_source\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_tile_source\",\n  \"title\": \"Service unavailable\",\n  \"status\": 502,\n  \"detail\": \"invalid_tile_source\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 503",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/maps/static",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "maps",
                    "static"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"renderer_busy\",\n  \"code\": \"renderer_busy\",\n  \"problem_code\": \"renderer_busy\",\n  \"type\": \"https://osrmroute.com/docs/platform#renderer_busy\",\n  \"title\": \"Service unavailable\",\n  \"status\": 503,\n  \"detail\": \"renderer_busy\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/maps/static"
        },
        {
          "name": "Query an owned map dataset",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/maps/datasets/{{dataset_id}}/query",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "maps",
                "datasets",
                "{{dataset_id}}",
                "query"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"point\": [\n    13.405,\n    52.52\n  ],\n  \"radius\": 1000,\n  \"limit\": 10\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nMaps 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. Sixty requests/minute/key, 2 KiB body. Polygon holes are excluded.\n\n### Parameters\n- `id` (path, required):  {\"type\":\"string\",\"format\":\"uuid\"}\n\n### JSON body schema\n```json\n{\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, latitude] in decimal degrees. Request bounds: 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```\n\n### Responses\n- **200**: Success. Examples are illustrative; results vary with input and source data.\n- **400**: Invalid input. `invalid_query`, `invalid_point`, `invalid_radius`, `invalid_limit` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **402**: Insufficient credits. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `dataset_not_found` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. `unsupported_geometry` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **502**: Invalid or unavailable upstream. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/maps/datasets/{{dataset_id}}/query",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "maps",
                    "datasets",
                    "{{dataset_id}}",
                    "query"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"point\": [\n    13.405,\n    52.52\n  ],\n  \"radius\": 1000,\n  \"limit\": 10\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"type\": \"FeatureCollection\",\n  \"features\": [],\n  \"returned\": 0,\n  \"matched\": 0,\n  \"distance_model\": \"local_equirectangular\",\n  \"distance_units\": \"meters\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/maps/datasets/{{dataset_id}}/query",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "maps",
                    "datasets",
                    "{{dataset_id}}",
                    "query"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"point\": [\n    13.405,\n    52.52\n  ],\n  \"radius\": 1000,\n  \"limit\": 10\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_query\",\n  \"code\": \"invalid_query\",\n  \"problem_code\": \"invalid_query\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_query\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_query\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 404",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/maps/datasets/{{dataset_id}}/query",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "maps",
                    "datasets",
                    "{{dataset_id}}",
                    "query"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"point\": [\n    13.405,\n    52.52\n  ],\n  \"radius\": 1000,\n  \"limit\": 10\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"dataset_not_found\",\n  \"code\": \"dataset_not_found\",\n  \"problem_code\": \"dataset_not_found\",\n  \"type\": \"https://osrmroute.com/docs/platform#dataset_not_found\",\n  \"title\": \"Request failed\",\n  \"status\": 404,\n  \"detail\": \"dataset_not_found\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 422",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/maps/datasets/{{dataset_id}}/query",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "maps",
                    "datasets",
                    "{{dataset_id}}",
                    "query"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"point\": [\n    13.405,\n    52.52\n  ],\n  \"radius\": 1000,\n  \"limit\": 10\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"unsupported_geometry\",\n  \"code\": \"unsupported_geometry\",\n  \"problem_code\": \"unsupported_geometry\",\n  \"type\": \"https://osrmroute.com/docs/platform#unsupported_geometry\",\n  \"title\": \"Request failed\",\n  \"status\": 422,\n  \"detail\": \"unsupported_geometry\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/maps/datasets/{id}/query"
        },
        {
          "name": "List owned Studio resources",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/styles",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "styles"
              ],
              "query": []
            },
            "description": "### Plan and metering\nExplicit studio scope required, even for otherwise unrestricted keys. Management requests do not consume request credits; rate and workspace limits apply.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### Responses\n- **200**: Owned styles (maximum 50) or datasets (maximum 10). Thirty reads/minute/key.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"styles\": []\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 missing authentication",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/v1/studio/{resource}"
        },
        {
          "name": "Manage owned styles or datasets",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/styles",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "styles"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nExplicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Up to 50 styles, 50 published releases per style and 10 datasets per workspace; 5 writes/minute/key. 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. Style errors may use code access_denied; HTTP status and detail distinguish invalid actions, missing resources and revision conflicts.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"create\",\n        \"save\",\n        \"autosave\",\n        \"duplicate\",\n        \"restore\",\n        \"publish\",\n        \"unpublish\",\n        \"delete\"\n      ]\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    },\n    \"data\": {\n      \"type\": \"object\",\n      \"description\": \"GeoJSON FeatureCollection: up to 10,000 features, 50,000 vertices and 2 MiB. Point, LineString, Polygon and Multi* geometries; longitude \u00b1180, latitude \u00b185.051129. Coordinates have exactly two numbers.\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"anyOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"data\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"save\",\n            \"autosave\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"duplicate\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"restore\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"version\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"publish\"\n          ]\n        },\n        \"confirmPublic\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"confirmPublic\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unpublish\",\n            \"delete\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"delete\"\n          ]\n        },\n        \"confirmDelete\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"confirmDelete\"\n      ]\n    }\n  ],\n  \"required\": [\n    \"action\"\n  ]\n}\n```\n\n### Responses\n- **200**: Updated or deleted. Style deletion returns style: null; dataset deletion returns deleted: true.\n- **201**: Created style or dataset\n- **400**: Invalid input. `access_denied`, `invalid_design`, `invalid_dataset` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `access_denied`, `dataset_not_found` Failed operations are not charged.\n- **409**: Conflict. `access_denied`, `dataset_limit`, `dataset_in_use` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 missing authentication",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/{resource}"
        },
        {
          "name": "Style \u00b7 save",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/styles",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "styles"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"save\",\n  \"id\": \"{{style_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"
                }
              }
            },
            "description": "### Plan and metering\nExplicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Up to 50 styles, 50 published releases per style and 10 datasets per workspace; 5 writes/minute/key. 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. Style errors may use code access_denied; HTTP status and detail distinguish invalid actions, missing resources and revision conflicts.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"create\",\n        \"save\",\n        \"autosave\",\n        \"duplicate\",\n        \"restore\",\n        \"publish\",\n        \"unpublish\",\n        \"delete\"\n      ]\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    },\n    \"data\": {\n      \"type\": \"object\",\n      \"description\": \"GeoJSON FeatureCollection: up to 10,000 features, 50,000 vertices and 2 MiB. Point, LineString, Polygon and Multi* geometries; longitude \u00b1180, latitude \u00b185.051129. Coordinates have exactly two numbers.\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"anyOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"data\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"save\",\n            \"autosave\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"duplicate\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"restore\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"version\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"publish\"\n          ]\n        },\n        \"confirmPublic\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"confirmPublic\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unpublish\",\n            \"delete\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"delete\"\n          ]\n        },\n        \"confirmDelete\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"confirmDelete\"\n      ]\n    }\n  ],\n  \"required\": [\n    \"action\"\n  ]\n}\n```\n\n### Responses\n- **200**: Updated or deleted. Style deletion returns style: null; dataset deletion returns deleted: true.\n- **201**: Created style or dataset\n- **400**: Invalid input. `access_denied`, `invalid_design`, `invalid_dataset` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `access_denied`, `dataset_not_found` Failed operations are not charged.\n- **409**: Conflict. `access_denied`, `dataset_limit`, `dataset_in_use` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"action\": \"save\",\n  \"id\": \"{{style_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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/{resource}"
        },
        {
          "name": "Style \u00b7 autosave",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/styles",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "styles"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"autosave\",\n  \"id\": \"{{style_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"
                }
              }
            },
            "description": "### Plan and metering\nExplicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Up to 50 styles, 50 published releases per style and 10 datasets per workspace; 5 writes/minute/key. 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. Style errors may use code access_denied; HTTP status and detail distinguish invalid actions, missing resources and revision conflicts.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"create\",\n        \"save\",\n        \"autosave\",\n        \"duplicate\",\n        \"restore\",\n        \"publish\",\n        \"unpublish\",\n        \"delete\"\n      ]\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    },\n    \"data\": {\n      \"type\": \"object\",\n      \"description\": \"GeoJSON FeatureCollection: up to 10,000 features, 50,000 vertices and 2 MiB. Point, LineString, Polygon and Multi* geometries; longitude \u00b1180, latitude \u00b185.051129. Coordinates have exactly two numbers.\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"anyOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"data\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"save\",\n            \"autosave\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"duplicate\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"restore\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"version\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"publish\"\n          ]\n        },\n        \"confirmPublic\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"confirmPublic\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unpublish\",\n            \"delete\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"delete\"\n          ]\n        },\n        \"confirmDelete\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"confirmDelete\"\n      ]\n    }\n  ],\n  \"required\": [\n    \"action\"\n  ]\n}\n```\n\n### Responses\n- **200**: Updated or deleted. Style deletion returns style: null; dataset deletion returns deleted: true.\n- **201**: Created style or dataset\n- **400**: Invalid input. `access_denied`, `invalid_design`, `invalid_dataset` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `access_denied`, `dataset_not_found` Failed operations are not charged.\n- **409**: Conflict. `access_denied`, `dataset_limit`, `dataset_in_use` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"action\": \"autosave\",\n  \"id\": \"{{style_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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/{resource}"
        },
        {
          "name": "Style \u00b7 duplicate",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/styles",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "styles"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"duplicate\",\n  \"id\": \"{{style_id}}\",\n  \"revision\": 1,\n  \"name\": \"Berlin demo\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nExplicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Up to 50 styles, 50 published releases per style and 10 datasets per workspace; 5 writes/minute/key. 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. Style errors may use code access_denied; HTTP status and detail distinguish invalid actions, missing resources and revision conflicts.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"create\",\n        \"save\",\n        \"autosave\",\n        \"duplicate\",\n        \"restore\",\n        \"publish\",\n        \"unpublish\",\n        \"delete\"\n      ]\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    },\n    \"data\": {\n      \"type\": \"object\",\n      \"description\": \"GeoJSON FeatureCollection: up to 10,000 features, 50,000 vertices and 2 MiB. Point, LineString, Polygon and Multi* geometries; longitude \u00b1180, latitude \u00b185.051129. Coordinates have exactly two numbers.\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"anyOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"data\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"save\",\n            \"autosave\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"duplicate\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"restore\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"version\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"publish\"\n          ]\n        },\n        \"confirmPublic\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"confirmPublic\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unpublish\",\n            \"delete\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"delete\"\n          ]\n        },\n        \"confirmDelete\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"confirmDelete\"\n      ]\n    }\n  ],\n  \"required\": [\n    \"action\"\n  ]\n}\n```\n\n### Responses\n- **200**: Updated or deleted. Style deletion returns style: null; dataset deletion returns deleted: true.\n- **201**: Created style or dataset\n- **400**: Invalid input. `access_denied`, `invalid_design`, `invalid_dataset` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `access_denied`, `dataset_not_found` Failed operations are not charged.\n- **409**: Conflict. `access_denied`, `dataset_limit`, `dataset_in_use` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"action\": \"duplicate\",\n  \"id\": \"{{style_id}}\",\n  \"revision\": 1,\n  \"name\": \"Berlin demo\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/{resource}"
        },
        {
          "name": "Style \u00b7 restore",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/styles",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "styles"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"restore\",\n  \"id\": \"{{style_id}}\",\n  \"revision\": 1,\n  \"version\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nExplicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Up to 50 styles, 50 published releases per style and 10 datasets per workspace; 5 writes/minute/key. 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. Style errors may use code access_denied; HTTP status and detail distinguish invalid actions, missing resources and revision conflicts.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"create\",\n        \"save\",\n        \"autosave\",\n        \"duplicate\",\n        \"restore\",\n        \"publish\",\n        \"unpublish\",\n        \"delete\"\n      ]\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    },\n    \"data\": {\n      \"type\": \"object\",\n      \"description\": \"GeoJSON FeatureCollection: up to 10,000 features, 50,000 vertices and 2 MiB. Point, LineString, Polygon and Multi* geometries; longitude \u00b1180, latitude \u00b185.051129. Coordinates have exactly two numbers.\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"anyOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"data\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"save\",\n            \"autosave\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"duplicate\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"restore\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"version\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"publish\"\n          ]\n        },\n        \"confirmPublic\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"confirmPublic\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unpublish\",\n            \"delete\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"delete\"\n          ]\n        },\n        \"confirmDelete\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"confirmDelete\"\n      ]\n    }\n  ],\n  \"required\": [\n    \"action\"\n  ]\n}\n```\n\n### Responses\n- **200**: Updated or deleted. Style deletion returns style: null; dataset deletion returns deleted: true.\n- **201**: Created style or dataset\n- **400**: Invalid input. `access_denied`, `invalid_design`, `invalid_dataset` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `access_denied`, `dataset_not_found` Failed operations are not charged.\n- **409**: Conflict. `access_denied`, `dataset_limit`, `dataset_in_use` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"action\": \"restore\",\n  \"id\": \"{{style_id}}\",\n  \"revision\": 1,\n  \"version\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/{resource}"
        },
        {
          "name": "Style \u00b7 publish",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/styles",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "styles"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"publish\",\n  \"id\": \"{{style_id}}\",\n  \"revision\": 1,\n  \"confirmPublic\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nExplicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Up to 50 styles, 50 published releases per style and 10 datasets per workspace; 5 writes/minute/key. 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. Style errors may use code access_denied; HTTP status and detail distinguish invalid actions, missing resources and revision conflicts.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"create\",\n        \"save\",\n        \"autosave\",\n        \"duplicate\",\n        \"restore\",\n        \"publish\",\n        \"unpublish\",\n        \"delete\"\n      ]\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    },\n    \"data\": {\n      \"type\": \"object\",\n      \"description\": \"GeoJSON FeatureCollection: up to 10,000 features, 50,000 vertices and 2 MiB. Point, LineString, Polygon and Multi* geometries; longitude \u00b1180, latitude \u00b185.051129. Coordinates have exactly two numbers.\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"anyOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"data\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"save\",\n            \"autosave\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"duplicate\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"restore\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"version\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"publish\"\n          ]\n        },\n        \"confirmPublic\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"confirmPublic\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unpublish\",\n            \"delete\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"delete\"\n          ]\n        },\n        \"confirmDelete\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"confirmDelete\"\n      ]\n    }\n  ],\n  \"required\": [\n    \"action\"\n  ]\n}\n```\n\n### Responses\n- **200**: Updated or deleted. Style deletion returns style: null; dataset deletion returns deleted: true.\n- **201**: Created style or dataset\n- **400**: Invalid input. `access_denied`, `invalid_design`, `invalid_dataset` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `access_denied`, `dataset_not_found` Failed operations are not charged.\n- **409**: Conflict. `access_denied`, `dataset_limit`, `dataset_in_use` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"action\": \"publish\",\n  \"id\": \"{{style_id}}\",\n  \"revision\": 1,\n  \"confirmPublic\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/{resource}"
        },
        {
          "name": "Style \u00b7 unpublish",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/styles",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "styles"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"unpublish\",\n  \"id\": \"{{style_id}}\",\n  \"revision\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nExplicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Up to 50 styles, 50 published releases per style and 10 datasets per workspace; 5 writes/minute/key. 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. Style errors may use code access_denied; HTTP status and detail distinguish invalid actions, missing resources and revision conflicts.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"create\",\n        \"save\",\n        \"autosave\",\n        \"duplicate\",\n        \"restore\",\n        \"publish\",\n        \"unpublish\",\n        \"delete\"\n      ]\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    },\n    \"data\": {\n      \"type\": \"object\",\n      \"description\": \"GeoJSON FeatureCollection: up to 10,000 features, 50,000 vertices and 2 MiB. Point, LineString, Polygon and Multi* geometries; longitude \u00b1180, latitude \u00b185.051129. Coordinates have exactly two numbers.\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"anyOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"data\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"save\",\n            \"autosave\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"duplicate\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"restore\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"version\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"publish\"\n          ]\n        },\n        \"confirmPublic\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"confirmPublic\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unpublish\",\n            \"delete\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"delete\"\n          ]\n        },\n        \"confirmDelete\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"confirmDelete\"\n      ]\n    }\n  ],\n  \"required\": [\n    \"action\"\n  ]\n}\n```\n\n### Responses\n- **200**: Updated or deleted. Style deletion returns style: null; dataset deletion returns deleted: true.\n- **201**: Created style or dataset\n- **400**: Invalid input. `access_denied`, `invalid_design`, `invalid_dataset` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `access_denied`, `dataset_not_found` Failed operations are not charged.\n- **409**: Conflict. `access_denied`, `dataset_limit`, `dataset_in_use` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"action\": \"unpublish\",\n  \"id\": \"{{style_id}}\",\n  \"revision\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/{resource}"
        },
        {
          "name": "Style \u00b7 delete",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/styles",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "styles"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"delete\",\n  \"id\": \"{{style_id}}\",\n  \"revision\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nExplicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Up to 50 styles, 50 published releases per style and 10 datasets per workspace; 5 writes/minute/key. 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. Style errors may use code access_denied; HTTP status and detail distinguish invalid actions, missing resources and revision conflicts.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"create\",\n        \"save\",\n        \"autosave\",\n        \"duplicate\",\n        \"restore\",\n        \"publish\",\n        \"unpublish\",\n        \"delete\"\n      ]\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    },\n    \"data\": {\n      \"type\": \"object\",\n      \"description\": \"GeoJSON FeatureCollection: up to 10,000 features, 50,000 vertices and 2 MiB. Point, LineString, Polygon and Multi* geometries; longitude \u00b1180, latitude \u00b185.051129. Coordinates have exactly two numbers.\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"anyOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"data\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"save\",\n            \"autosave\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"duplicate\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"restore\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"version\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"publish\"\n          ]\n        },\n        \"confirmPublic\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"confirmPublic\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unpublish\",\n            \"delete\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"delete\"\n          ]\n        },\n        \"confirmDelete\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"confirmDelete\"\n      ]\n    }\n  ],\n  \"required\": [\n    \"action\"\n  ]\n}\n```\n\n### Responses\n- **200**: Updated or deleted. Style deletion returns style: null; dataset deletion returns deleted: true.\n- **201**: Created style or dataset\n- **400**: Invalid input. `access_denied`, `invalid_design`, `invalid_dataset` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `access_denied`, `dataset_not_found` Failed operations are not charged.\n- **409**: Conflict. `access_denied`, `dataset_limit`, `dataset_in_use` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/styles",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "styles"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"action\": \"delete\",\n  \"id\": \"{{style_id}}\",\n  \"revision\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"style\": null\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/{resource}"
        },
        {
          "name": "List owned datasets",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/datasets",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "datasets"
              ],
              "query": []
            },
            "description": "### Plan and metering\nExplicit studio scope required, even for otherwise unrestricted keys. Management requests do not consume request credits; rate and workspace limits apply.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### Responses\n- **200**: Owned styles (maximum 50) or datasets (maximum 10). Thirty reads/minute/key.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/datasets",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "datasets"
                  ],
                  "query": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"datasets\": []\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/v1/studio/{resource}"
        },
        {
          "name": "Dataset \u00b7 create",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/datasets",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "datasets"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nExplicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Up to 50 styles, 50 published releases per style and 10 datasets per workspace; 5 writes/minute/key. 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. Style errors may use code access_denied; HTTP status and detail distinguish invalid actions, missing resources and revision conflicts.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"create\",\n        \"save\",\n        \"autosave\",\n        \"duplicate\",\n        \"restore\",\n        \"publish\",\n        \"unpublish\",\n        \"delete\"\n      ]\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    },\n    \"data\": {\n      \"type\": \"object\",\n      \"description\": \"GeoJSON FeatureCollection: up to 10,000 features, 50,000 vertices and 2 MiB. Point, LineString, Polygon and Multi* geometries; longitude \u00b1180, latitude \u00b185.051129. Coordinates have exactly two numbers.\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"anyOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"data\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"save\",\n            \"autosave\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"duplicate\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"restore\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"version\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"publish\"\n          ]\n        },\n        \"confirmPublic\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"confirmPublic\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unpublish\",\n            \"delete\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"delete\"\n          ]\n        },\n        \"confirmDelete\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"confirmDelete\"\n      ]\n    }\n  ],\n  \"required\": [\n    \"action\"\n  ]\n}\n```\n\n### Responses\n- **200**: Updated or deleted. Style deletion returns style: null; dataset deletion returns deleted: true.\n- **201**: Created style or dataset\n- **400**: Invalid input. `access_denied`, `invalid_design`, `invalid_dataset` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `access_denied`, `dataset_not_found` Failed operations are not charged.\n- **409**: Conflict. `access_denied`, `dataset_limit`, `dataset_in_use` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/datasets",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "datasets"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/{resource}"
        },
        {
          "name": "Dataset \u00b7 delete",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/studio/datasets",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "studio",
                "datasets"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"delete\",\n  \"id\": \"{{dataset_id}}\",\n  \"confirmDelete\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nExplicit studio scope required. Same revisions, ownership, confirmation and quotas as Studio. Styles: create/save/autosave/duplicate/restore/publish/unpublish/delete. Up to 50 styles, 50 published releases per style and 10 datasets per workspace; 5 writes/minute/key. 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. Style errors may use code access_denied; HTTP status and detail distinguish invalid actions, missing resources and revision conflicts.\n\n### Parameters\n- `resource` (path, required):  {\"type\":\"string\",\"enum\":[\"styles\",\"datasets\"]}\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"action\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"create\",\n        \"save\",\n        \"autosave\",\n        \"duplicate\",\n        \"restore\",\n        \"publish\",\n        \"unpublish\",\n        \"delete\"\n      ]\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      \"properties\": {\n        \"preset\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"light\",\n            \"dark\",\n            \"navigation\",\n            \"minimal\"\n          ]\n        },\n        \"colors\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"land\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"water\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"park\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"road\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"highway\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"building\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            },\n            \"label\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n            }\n          },\n          \"required\": [\n            \"land\",\n            \"water\",\n            \"park\",\n            \"road\",\n            \"highway\",\n            \"building\",\n            \"label\"\n          ]\n        },\n        \"visible\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"roads\": {\n              \"type\": \"boolean\"\n            },\n            \"buildings\": {\n              \"type\": \"boolean\"\n            },\n            \"parks\": {\n              \"type\": \"boolean\"\n            },\n            \"labels\": {\n              \"type\": \"boolean\"\n            },\n            \"pois\": {\n              \"type\": \"boolean\"\n            },\n            \"boundaries\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"roads\",\n            \"buildings\",\n            \"parks\",\n            \"labels\",\n            \"pois\",\n            \"boundaries\"\n          ]\n        },\n        \"center\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"maxItems\": 2,\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n        },\n        \"zoom\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 20\n        },\n        \"overlays\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\"\n              },\n              \"name\": {\n                \"type\": \"string\"\n              },\n              \"type\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"point\",\n                  \"line\",\n                  \"polygon\"\n                ]\n              },\n              \"color\": {\n                \"type\": \"string\"\n              },\n              \"visible\": {\n                \"type\": \"boolean\"\n              },\n              \"coordinates\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"array\",\n                  \"minItems\": 2,\n                  \"maxItems\": 2,\n                  \"items\": {\n                    \"type\": \"number\"\n                  },\n                  \"description\": \"[longitude, latitude] in decimal degrees. Request bounds: longitude \u00b1180, latitude \u00b185.\"\n                }\n              }\n            },\n            \"required\": [\n              \"id\",\n              \"name\",\n              \"type\",\n              \"color\",\n              \"visible\",\n              \"coordinates\"\n            ]\n          }\n        },\n        \"datasets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"maxItems\": 5\n        },\n        \"allowedOrigins\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"brand\": {\n          \"type\": \"string\"\n        },\n        \"interactions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"search\": {\n              \"type\": \"boolean\"\n            },\n            \"legend\": {\n              \"type\": \"boolean\"\n            },\n            \"popups\": {\n              \"type\": \"boolean\"\n            },\n            \"clustering\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\n            \"search\",\n            \"legend\",\n            \"popups\"\n          ]\n        },\n        \"categories\": {\n          \"type\": \"object\",\n          \"description\": \"Optional category styling configuration, as returned by Studio.\"\n        }\n      },\n      \"required\": [\n        \"preset\",\n        \"colors\",\n        \"visible\",\n        \"center\",\n        \"zoom\",\n        \"overlays\"\n      ]\n    },\n    \"data\": {\n      \"type\": \"object\",\n      \"description\": \"GeoJSON FeatureCollection: up to 10,000 features, 50,000 vertices and 2 MiB. Point, LineString, Polygon and Multi* geometries; longitude \u00b1180, latitude \u00b185.051129. Coordinates have exactly two numbers.\"\n    },\n    \"confirmPublic\": {\n      \"type\": \"boolean\"\n    },\n    \"confirmDelete\": {\n      \"type\": \"boolean\"\n    },\n    \"version\": {\n      \"type\": \"integer\"\n    }\n  },\n  \"anyOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"create\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"name\",\n        \"data\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"save\",\n            \"autosave\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\",\n        \"design\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"duplicate\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"name\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"restore\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"version\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"publish\"\n          ]\n        },\n        \"confirmPublic\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\",\n        \"confirmPublic\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unpublish\",\n            \"delete\"\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"revision\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"action\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"delete\"\n          ]\n        },\n        \"confirmDelete\": {\n          \"type\": \"boolean\",\n          \"enum\": [\n            true\n          ]\n        }\n      },\n      \"required\": [\n        \"action\",\n        \"id\",\n        \"confirmDelete\"\n      ]\n    }\n  ],\n  \"required\": [\n    \"action\"\n  ]\n}\n```\n\n### Responses\n- **200**: Updated or deleted. Style deletion returns style: null; dataset deletion returns deleted: true.\n- **201**: Created style or dataset\n- **400**: Invalid input. `access_denied`, `invalid_design`, `invalid_dataset` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `access_denied`, `dataset_not_found` Failed operations are not charged.\n- **409**: Conflict. `access_denied`, `dataset_limit`, `dataset_in_use` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/studio/datasets",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "studio",
                    "datasets"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"action\": \"delete\",\n  \"id\": \"{{dataset_id}}\",\n  \"confirmDelete\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"deleted\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/studio/{resource}"
        },
        {
          "name": "Basemap style",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/basemaps/light",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "basemaps",
                "light"
              ]
            },
            "description": "### Plan and metering\nPublic MapLibre style JSON for the authored basemap presets. Zero API credits; cached for five minutes. Keep OpenStreetMap, OpenMapTiles and OpenFreeMap attribution. [Map integration guide](/docs/geospatial#studio-api).\n\n### Parameters\n- `style` (path, required):  {\"type\":\"string\",\"enum\":[\"light\",\"dark\",\"navigation\",\"minimal\"]}\n\n### Responses\n- **200**: MapLibre style, version 8; example is abbreviated.\n- **404**: Unknown basemap style\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/basemaps/light",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "basemaps",
                    "light"
                  ]
                },
                "auth": {
                  "type": "noauth"
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"version\": 8,\n  \"name\": \"Example style (abbreviated)\",\n  \"sources\": {},\n  \"layers\": []\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 404",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/basemaps/light",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "basemaps",
                    "light"
                  ]
                },
                "auth": {
                  "type": "noauth"
                }
              },
              "status": "Error",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"Unknown basemap style\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/basemaps/{style}"
        },
        {
          "name": "Published Studio style",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/map-styles/{{public_style_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "map-styles",
                "{{public_style_id}}"
              ]
            },
            "description": "### Plan and metering\nPublic ID from Studio publication. No API key or API credits. Publication and origin policy are checked on every request, including revalidation. Unpublishing or rotating the public ID revokes this URL. Dataset tile URLs are included in the style. [Map integration guide](/docs/geospatial#studio-api).\n\n### Parameters\n- `id` (path, required): Published public_id for public maps; owned style id for private maps. {\"type\":\"string\",\"format\":\"uuid\"}\n- `version` (query): Optional immutable published revision. The map must remain published; current origin policy still applies. {\"type\":\"integer\",\"minimum\":1,\"maximum\":999999999}\n- `If-None-Match` (header): Previously returned ETag. Access is checked again before a 304 response. {\"type\":\"string\"}\n\n### Responses\n- **200**: Published MapLibre style; example is abbreviated.\n- **304**: Not modified; empty body.\n- **400**: Invalid version, origin restriction, absent/unpublished map, or unavailable renderer.\n- **403**: Invalid version, origin restriction, absent/unpublished map, or unavailable renderer.\n- **404**: Invalid version, origin restriction, absent/unpublished map, or unavailable renderer.\n- **503**: Invalid version, origin restriction, absent/unpublished map, or unavailable renderer.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/map-styles/{{public_style_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "map-styles",
                    "{{public_style_id}}"
                  ]
                },
                "auth": {
                  "type": "noauth"
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"version\": 8,\n  \"name\": \"Example style (abbreviated)\",\n  \"sources\": {},\n  \"layers\": []\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/map-styles/{id}"
        },
        {
          "name": "Published dataset vector tile",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/map-styles/{{public_style_id}}/tiles/{{dataset_id}}/12/2200/1343",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "map-styles",
                "{{public_style_id}}",
                "tiles",
                "{{dataset_id}}",
                "12",
                "2200",
                "1343"
              ]
            },
            "description": "### Plan and metering\nNo API key or API credits. Uses the current publication and origin policy; the dataset must belong to this map. Use the tile URLs returned by the style. Errors have empty bodies.\n\n### Parameters\n- `id` (path, required): Published public_id for public maps; owned style id for private maps. {\"type\":\"string\",\"format\":\"uuid\"}\n- `dataset` (path, required): Dataset referenced by this map and owned by the same workspace. {\"type\":\"string\",\"format\":\"uuid\"}\n- `z` (path, required): Zoom 0\u201314. {\"type\":\"integer\",\"minimum\":0,\"maximum\":14}\n- `x` (path, required): Tile index, 0 through 2^z - 1. {\"type\":\"integer\",\"minimum\":0,\"maximum\":16383}\n- `y` (path, required): Tile index, 0 through 2^z - 1. {\"type\":\"integer\",\"minimum\":0,\"maximum\":16383}\n- `If-None-Match` (header): Previously returned ETag. Access is checked again before a 304 response. {\"type\":\"string\"}\n- `version` (query): Optional immutable published revision. The map must remain published; current origin policy still applies. {\"type\":\"integer\",\"minimum\":1,\"maximum\":999999999}\n\n### Responses\n- **200**: Mapbox vector tile, source-layer objects. An empty tile is a successful zero-byte body.\n- **304**: Not modified; empty body.\n- **400**: Invalid tile/version, denied origin, unavailable publication/dataset, or renderer unavailable; empty body.\n- **403**: Invalid tile/version, denied origin, unavailable publication/dataset, or renderer unavailable; empty body.\n- **404**: Invalid tile/version, denied origin, unavailable publication/dataset, or renderer unavailable; empty body.\n- **503**: Invalid tile/version, denied origin, unavailable publication/dataset, or renderer unavailable; empty body.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "Binary vector tile",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/map-styles/{{public_style_id}}/tiles/{{dataset_id}}/12/2200/1343",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "map-styles",
                    "{{public_style_id}}",
                    "tiles",
                    "{{dataset_id}}",
                    "12",
                    "2200",
                    "1343"
                  ]
                },
                "auth": {
                  "type": "noauth"
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/vnd.mapbox-vector-tile"
                }
              ],
              "body": "[Binary vector tile]",
              "_postman_previewlanguage": "text"
            }
          ],
          "_osrm_operation": "GET /api/map-styles/{id}/tiles/{dataset}/{z}/{x}/{y}"
        },
        {
          "name": "Read an owned private draft style",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/private-maps/{{style_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "private-maps",
                "{{style_id}}"
              ]
            },
            "description": "### Plan and metering\nServer-to-server access to an owned draft. Maps scope and live Bearer key required; query-string keys are rejected. Keep permanent keys on your backend and proxy requests for browser clients. Style and tile requests share 300 requests/minute/key and consume zero API credits. Responses use no-store. [Map integration guide](/docs/geospatial#studio-api).\n\n### Parameters\n- `id` (path, required): Published public_id for public maps; owned style id for private maps. {\"type\":\"string\",\"format\":\"uuid\"}\n\n### Responses\n- **200**: Private MapLibre style; example is abbreviated.\n- **401**: Missing or invalid authentication. `bearer_required` Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `map_not_found` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/private-maps/{{style_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "private-maps",
                    "{{style_id}}"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"version\": 8,\n  \"name\": \"Example style (abbreviated)\",\n  \"sources\": {},\n  \"layers\": []\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 401",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/private-maps/{{style_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "private-maps",
                    "{{style_id}}"
                  ]
                }
              },
              "status": "Error",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"bearer_required\",\n  \"code\": \"bearer_required\",\n  \"problem_code\": \"bearer_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#bearer_required\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"detail\": \"bearer_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 404",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/private-maps/{{style_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "private-maps",
                    "{{style_id}}"
                  ]
                }
              },
              "status": "Error",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"map_not_found\",\n  \"code\": \"map_not_found\",\n  \"problem_code\": \"map_not_found\",\n  \"type\": \"https://osrmroute.com/docs/platform#map_not_found\",\n  \"title\": \"Request failed\",\n  \"status\": 404,\n  \"detail\": \"map_not_found\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/private-maps/{id}"
        },
        {
          "name": "Read an owned private dataset vector tile",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/private-maps/{{style_id}}/tiles/{{dataset_id}}/12/2615/1544",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "private-maps",
                "{{style_id}}",
                "tiles",
                "{{dataset_id}}",
                "12",
                "2615",
                "1544"
              ]
            },
            "description": "### Plan and metering\nServer-to-server access to an owned draft. Maps scope and live Bearer key required; query-string keys are rejected. Keep permanent keys on your backend and proxy requests for browser clients. Style and tile requests share 300 requests/minute/key and consume zero API credits. Responses use no-store. [Map integration guide](/docs/geospatial#studio-api).\n\n### Parameters\n- `id` (path, required): Published public_id for public maps; owned style id for private maps. {\"type\":\"string\",\"format\":\"uuid\"}\n- `dataset` (path, required): Dataset referenced by this map and owned by the same workspace. {\"type\":\"string\",\"format\":\"uuid\"}\n- `z` (path, required): Zoom 0\u201314. {\"type\":\"integer\",\"minimum\":0,\"maximum\":14}\n- `x` (path, required): Tile index, 0 through 2^z - 1. {\"type\":\"integer\",\"minimum\":0,\"maximum\":16383}\n- `y` (path, required): Tile index, 0 through 2^z - 1. {\"type\":\"integer\",\"minimum\":0,\"maximum\":16383}\n- `If-None-Match` (header): Previously returned ETag. Access is checked again before a 304 response. {\"type\":\"string\"}\n\n### Responses\n- **200**: Mapbox vector tile, source-layer objects. An empty tile is a successful zero-byte body.\n- **304**: Not modified; empty body.\n- **400**: Invalid input. `invalid_tile` Failed operations are not charged.\n- **401**: Missing or invalid authentication. `bearer_required` Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `map_not_found`, `dataset_not_found` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/private-maps/{{style_id}}/tiles/{{dataset_id}}/12/2615/1544",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "private-maps",
                    "{{style_id}}",
                    "tiles",
                    "{{dataset_id}}",
                    "12",
                    "2615",
                    "1544"
                  ]
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_tile\",\n  \"code\": \"invalid_tile\",\n  \"problem_code\": \"invalid_tile\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_tile\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_tile\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 401",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/private-maps/{{style_id}}/tiles/{{dataset_id}}/12/2615/1544",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "private-maps",
                    "{{style_id}}",
                    "tiles",
                    "{{dataset_id}}",
                    "12",
                    "2615",
                    "1544"
                  ]
                }
              },
              "status": "Error",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"bearer_required\",\n  \"code\": \"bearer_required\",\n  \"problem_code\": \"bearer_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#bearer_required\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"detail\": \"bearer_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 404",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/private-maps/{{style_id}}/tiles/{{dataset_id}}/12/2615/1544",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "private-maps",
                    "{{style_id}}",
                    "tiles",
                    "{{dataset_id}}",
                    "12",
                    "2615",
                    "1544"
                  ]
                }
              },
              "status": "Error",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"map_not_found\",\n  \"code\": \"map_not_found\",\n  \"problem_code\": \"map_not_found\",\n  \"type\": \"https://osrmroute.com/docs/platform#map_not_found\",\n  \"title\": \"Request failed\",\n  \"status\": 404,\n  \"detail\": \"map_not_found\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/private-maps/{id}/tiles/{dataset}/{z}/{x}/{y}"
        }
      ]
    },
    {
      "name": "05 \u00b7 Road data and speed limits",
      "item": [
        {
          "name": "Get the mapped passenger-car speed limit for a road near a coordinate",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/1/speed-limit?point=25.381245183194284,51.51926522703756",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "1",
                "speed-limit"
              ],
              "query": [
                {
                  "key": "point",
                  "value": "25.381245183194284,51.51926522703756",
                  "disabled": false,
                  "description": "Latitude,longitude. Supply point or both lat and lon. Schema: {\"type\": \"string\"}"
                },
                {
                  "key": "lat",
                  "value": "-90",
                  "disabled": true,
                  "description": " Schema: {\"type\": \"number\", \"minimum\": -90, \"maximum\": 90}"
                },
                {
                  "key": "lon",
                  "value": "-180",
                  "disabled": true,
                  "description": " Schema: {\"type\": \"number\", \"minimum\": -180, \"maximum\": 180}"
                },
                {
                  "key": "heading",
                  "value": "0",
                  "disabled": true,
                  "description": "Travel heading in degrees clockwise from north; used for carriageway and direction selection. Schema: {\"type\": \"number\", \"minimum\": 0, \"maximum\": 360, \"exclusiveMaximum\": true}"
                },
                {
                  "key": "radius",
                  "value": "35",
                  "disabled": true,
                  "description": "Maximum road matching distance in metres. Schema: {\"type\": \"number\", \"minimum\": 5, \"maximum\": 100, \"default\": 35}"
                },
                {
                  "key": "osm_way_id",
                  "value": "example",
                  "disabled": true,
                  "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}$\"}"
                }
              ]
            },
            "description": "### Plan and metering\nFree (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 [pricing page](https://osrmroute.com/pricing); an API key does not bypass plan limits.\n\nExplicit 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.\n\n### Parameters\n- **point** (query, optional): Latitude,longitude. Supply point or both lat and lon. Schema: `{\"type\": \"string\"}`\n- **lat** (query, optional):  Schema: `{\"type\": \"number\", \"minimum\": -90, \"maximum\": 90}`\n- **lon** (query, optional):  Schema: `{\"type\": \"number\", \"minimum\": -180, \"maximum\": 180}`\n- **heading** (query, optional): Travel heading in degrees clockwise from north; used for carriageway and direction selection. Schema: `{\"type\": \"number\", \"minimum\": 0, \"maximum\": 360, \"exclusiveMaximum\": true}`\n- **radius** (query, optional): Maximum road matching distance in metres. Schema: `{\"type\": \"number\", \"minimum\": 5, \"maximum\": 100, \"default\": 35}`\n- **osm_way_id** (query, optional): 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}$\"}`\n\n### Responses\n- **200**: Road lookup result; speed_limit is nullable and expressed in km/h. Source metadata identifies the mapped rule.\n- **400**: InvalidSpeedLimitQuery. Invalid coordinates or parameters; no credits consumed.\n- **401**: Missing or invalid API key\n- **403**: Key access restrictions\n- **422**: SpeedLimitCoverageUnavailable. Outside the indexed countries/areas; no credits consumed.\n- **429**: Rate or credit limit exceeded\n- **503**: SpeedLimitServiceUnavailable. No credits consumed.\n\nSaved 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."
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/speed-limit?point=25.381245183194284,51.51926522703756",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "speed-limit"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "25.381245183194284,51.51926522703756",
                      "disabled": false,
                      "description": "Latitude,longitude. Supply point or both lat and lon. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "-90",
                      "disabled": true,
                      "description": " Schema: {\"type\": \"number\", \"minimum\": -90, \"maximum\": 90}"
                    },
                    {
                      "key": "lon",
                      "value": "-180",
                      "disabled": true,
                      "description": " Schema: {\"type\": \"number\", \"minimum\": -180, \"maximum\": 180}"
                    },
                    {
                      "key": "heading",
                      "value": "0",
                      "disabled": true,
                      "description": "Travel heading in degrees clockwise from north; used for carriageway and direction selection. Schema: {\"type\": \"number\", \"minimum\": 0, \"maximum\": 360, \"exclusiveMaximum\": true}"
                    },
                    {
                      "key": "radius",
                      "value": "35",
                      "disabled": true,
                      "description": "Maximum road matching distance in metres. Schema: {\"type\": \"number\", \"minimum\": 5, \"maximum\": 100, \"default\": 35}"
                    },
                    {
                      "key": "osm_way_id",
                      "value": "example",
                      "disabled": true,
                      "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}$\"}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"unknown\",\n  \"speed_limit\": null,\n  \"unit\": \"km/h\",\n  \"reason\": \"No explicit speed limit is mapped on this road.\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Synthetic \u00b7 missing authentication",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/1/speed-limit?point=25.381245183194284,51.51926522703756",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "1",
                    "speed-limit"
                  ],
                  "query": [
                    {
                      "key": "point",
                      "value": "25.381245183194284,51.51926522703756",
                      "disabled": false,
                      "description": "Latitude,longitude. Supply point or both lat and lon. Schema: {\"type\": \"string\"}"
                    },
                    {
                      "key": "lat",
                      "value": "-90",
                      "disabled": true,
                      "description": " Schema: {\"type\": \"number\", \"minimum\": -90, \"maximum\": 90}"
                    },
                    {
                      "key": "lon",
                      "value": "-180",
                      "disabled": true,
                      "description": " Schema: {\"type\": \"number\", \"minimum\": -180, \"maximum\": 180}"
                    },
                    {
                      "key": "heading",
                      "value": "0",
                      "disabled": true,
                      "description": "Travel heading in degrees clockwise from north; used for carriageway and direction selection. Schema: {\"type\": \"number\", \"minimum\": 0, \"maximum\": 360, \"exclusiveMaximum\": true}"
                    },
                    {
                      "key": "radius",
                      "value": "35",
                      "disabled": true,
                      "description": "Maximum road matching distance in metres. Schema: {\"type\": \"number\", \"minimum\": 5, \"maximum\": 100, \"default\": 35}"
                    },
                    {
                      "key": "osm_way_id",
                      "value": "example",
                      "disabled": true,
                      "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}$\"}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/1/speed-limit"
        },
        {
          "name": "Road data: lookup",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/roads/lookup",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "roads",
                "lookup"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nRequires speed-limit scope and Bearer authentication; no query parameters. Body limit 16 KiB. Usage reads: 60/minute/account. Lookups: Qatar, Azerbaijan and the indexed Prague area. Signs require source activation and return road_signs_unavailable otherwise. 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.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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### Responses\n- **200**: Success. Illustrative response; source coverage and results vary.\n- **400**: Invalid input. `invalid_road_point`, `invalid_road_batch`, `invalid_road_usage` Failed operations are not charged.\n- **401**: Missing or invalid authentication. `bearer_required` Failed operations are not charged.\n- **403**: Scope, account or plan restriction. `road_data_plan_required`, `road_data_subscription_required`, `road_data_contract_required` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. `road_coverage_unavailable`, `road_sign_coverage_unavailable`, `road_sign_window_too_dense` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. `road_data_quota_exhausted`, `road_data_rate_limited`, `road_data_busy` Failed operations are not charged.\n- **503**: Service temporarily unavailable. `road_signs_unavailable`, `road_batch_timeout`, `road_data_operation_expired` Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/lookup",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "lookup"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"data\": {\n    \"point\": {\n      \"lat\": 40.4093,\n      \"lon\": 49.8671\n    },\n    \"country_code\": \"AZ\",\n    \"speed_limit\": null,\n    \"unit\": \"km/h\",\n    \"status\": \"no_matching_road\",\n    \"reason\": \"No compatible road was found inside the requested radius.\",\n    \"road\": null,\n    \"source\": null,\n    \"alternatives\": [],\n    \"attribution\": \"\u00a9 OpenStreetMap contributors (ODbL)\",\n    \"note\": \"Mapped road limit from the source dataset. Unknown, ambiguous, variable and conditional limits return null. Unverified image detections and routing travel speeds are not used as legal road limits.\"\n  },\n  \"operations\": 1\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/lookup",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "lookup"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_road_point\",\n  \"code\": \"invalid_road_point\",\n  \"problem_code\": \"invalid_road_point\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_road_point\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_road_point\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 401",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/lookup",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "lookup"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"bearer_required\",\n  \"code\": \"bearer_required\",\n  \"problem_code\": \"bearer_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#bearer_required\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"detail\": \"bearer_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 403",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/lookup",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "lookup"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_data_plan_required\",\n  \"code\": \"road_data_plan_required\",\n  \"problem_code\": \"road_data_plan_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_data_plan_required\",\n  \"title\": \"Request failed\",\n  \"status\": 403,\n  \"detail\": \"road_data_plan_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 422",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/lookup",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "lookup"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_coverage_unavailable\",\n  \"code\": \"road_coverage_unavailable\",\n  \"problem_code\": \"road_coverage_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_coverage_unavailable\",\n  \"title\": \"Request failed\",\n  \"status\": 422,\n  \"detail\": \"road_coverage_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 429",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/lookup",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "lookup"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_data_quota_exhausted\",\n  \"code\": \"road_data_quota_exhausted\",\n  \"problem_code\": \"road_data_quota_exhausted\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_data_quota_exhausted\",\n  \"title\": \"Request failed\",\n  \"status\": 429,\n  \"detail\": \"road_data_quota_exhausted\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 503",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/lookup",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "lookup"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"lat\": 50.087,\n  \"lon\": 14.421,\n  \"radius\": 35\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_signs_unavailable\",\n  \"code\": \"road_signs_unavailable\",\n  \"problem_code\": \"road_signs_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_signs_unavailable\",\n  \"title\": \"Service unavailable\",\n  \"status\": 503,\n  \"detail\": \"road_signs_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/roads/lookup"
        },
        {
          "name": "Road data: batch",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/roads/batch",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "roads",
                "batch"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nRequires speed-limit scope and Bearer authentication; no query parameters. Body limit 16 KiB. Usage reads: 60/minute/account. Lookups: Qatar, Azerbaijan and the indexed Prague area. Signs require source activation and return road_signs_unavailable otherwise. 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.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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```\n\n### Responses\n- **200**: Success. Illustrative response; source coverage and results vary.\n- **400**: Invalid input. `invalid_road_point`, `invalid_road_batch`, `invalid_road_usage` Failed operations are not charged.\n- **401**: Missing or invalid authentication. `bearer_required` Failed operations are not charged.\n- **403**: Scope, account or plan restriction. `road_data_plan_required`, `road_data_subscription_required`, `road_data_contract_required` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. `road_coverage_unavailable`, `road_sign_coverage_unavailable`, `road_sign_window_too_dense` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. `road_data_quota_exhausted`, `road_data_rate_limited`, `road_data_busy` Failed operations are not charged.\n- **503**: Service temporarily unavailable. `road_signs_unavailable`, `road_batch_timeout`, `road_data_operation_expired` Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"data\": {\n    \"results\": [\n      {\n        \"point\": {\n          \"lat\": 40.4093,\n          \"lon\": 49.8671\n        },\n        \"country_code\": \"AZ\",\n        \"speed_limit\": null,\n        \"unit\": \"km/h\",\n        \"status\": \"no_matching_road\",\n        \"reason\": \"No compatible road was found inside the requested radius.\",\n        \"road\": null,\n        \"source\": null,\n        \"alternatives\": [],\n        \"attribution\": \"\u00a9 OpenStreetMap contributors (ODbL)\",\n        \"note\": \"Mapped road limit from the source dataset. Unknown, ambiguous, variable and conditional limits return null. Unverified image detections and routing travel speeds are not used as legal road limits.\"\n      }\n    ]\n  },\n  \"operations\": 1\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_road_point\",\n  \"code\": \"invalid_road_point\",\n  \"problem_code\": \"invalid_road_point\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_road_point\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_road_point\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 401",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"bearer_required\",\n  \"code\": \"bearer_required\",\n  \"problem_code\": \"bearer_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#bearer_required\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"detail\": \"bearer_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 403",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_data_plan_required\",\n  \"code\": \"road_data_plan_required\",\n  \"problem_code\": \"road_data_plan_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_data_plan_required\",\n  \"title\": \"Request failed\",\n  \"status\": 403,\n  \"detail\": \"road_data_plan_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 422",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_coverage_unavailable\",\n  \"code\": \"road_coverage_unavailable\",\n  \"problem_code\": \"road_coverage_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_coverage_unavailable\",\n  \"title\": \"Request failed\",\n  \"status\": 422,\n  \"detail\": \"road_coverage_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 429",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_data_quota_exhausted\",\n  \"code\": \"road_data_quota_exhausted\",\n  \"problem_code\": \"road_data_quota_exhausted\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_data_quota_exhausted\",\n  \"title\": \"Request failed\",\n  \"status\": 429,\n  \"detail\": \"road_data_quota_exhausted\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 503",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/batch",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "batch"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_signs_unavailable\",\n  \"code\": \"road_signs_unavailable\",\n  \"problem_code\": \"road_signs_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_signs_unavailable\",\n  \"title\": \"Service unavailable\",\n  \"status\": 503,\n  \"detail\": \"road_signs_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/roads/batch"
        },
        {
          "name": "Road data: signs",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/roads/signs",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "roads",
                "signs"
              ],
              "query": []
            },
            "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"
                }
              }
            },
            "description": "### Plan and metering\nRequires speed-limit scope and Bearer authentication; no query parameters. Body limit 16 KiB. Usage reads: 60/minute/account. Lookups: Qatar, Azerbaijan and the indexed Prague area. Signs require source activation and return road_signs_unavailable otherwise. 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.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\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```\n\n### Responses\n- **200**: Success. Illustrative response; source coverage and results vary.\n- **400**: Invalid input. `invalid_road_point`, `invalid_road_batch`, `invalid_road_usage` Failed operations are not charged.\n- **401**: Missing or invalid authentication. `bearer_required` Failed operations are not charged.\n- **403**: Scope, account or plan restriction. `road_data_plan_required`, `road_data_subscription_required`, `road_data_contract_required` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. `road_coverage_unavailable`, `road_sign_coverage_unavailable`, `road_sign_window_too_dense` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. `road_data_quota_exhausted`, `road_data_rate_limited`, `road_data_busy` Failed operations are not charged.\n- **503**: Service temporarily unavailable. `road_signs_unavailable`, `road_batch_timeout`, `road_data_operation_expired` Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/signs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "signs"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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    \"attribution_brand_assets_url\": \"https://www.mapillary.com/press-kit\",\n    \"note\": \"Source observations are not confirmed road rules. No observations does not establish absence of signs. Import time is not observation time.\"\n  },\n  \"operations\": 1\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/signs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "signs"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_road_point\",\n  \"code\": \"invalid_road_point\",\n  \"problem_code\": \"invalid_road_point\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_road_point\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_road_point\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 401",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/signs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "signs"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"bearer_required\",\n  \"code\": \"bearer_required\",\n  \"problem_code\": \"bearer_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#bearer_required\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"detail\": \"bearer_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 403",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/signs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "signs"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_data_plan_required\",\n  \"code\": \"road_data_plan_required\",\n  \"problem_code\": \"road_data_plan_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_data_plan_required\",\n  \"title\": \"Request failed\",\n  \"status\": 403,\n  \"detail\": \"road_data_plan_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 422",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/signs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "signs"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_coverage_unavailable\",\n  \"code\": \"road_coverage_unavailable\",\n  \"problem_code\": \"road_coverage_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_coverage_unavailable\",\n  \"title\": \"Request failed\",\n  \"status\": 422,\n  \"detail\": \"road_coverage_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 429",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/signs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "signs"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_data_quota_exhausted\",\n  \"code\": \"road_data_quota_exhausted\",\n  \"problem_code\": \"road_data_quota_exhausted\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_data_quota_exhausted\",\n  \"title\": \"Request failed\",\n  \"status\": 429,\n  \"detail\": \"road_data_quota_exhausted\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 503",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/signs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "signs"
                  ],
                  "query": []
                },
                "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"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_signs_unavailable\",\n  \"code\": \"road_signs_unavailable\",\n  \"problem_code\": \"road_signs_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_signs_unavailable\",\n  \"title\": \"Service unavailable\",\n  \"status\": 503,\n  \"detail\": \"road_signs_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/roads/signs"
        },
        {
          "name": "Road data: usage",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/roads/usage",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "v1",
                "roads",
                "usage"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nRequires speed-limit scope and Bearer authentication; no query parameters. Body limit 16 KiB. Usage reads: 60/minute/account. Lookups: Qatar, Azerbaijan and the indexed Prague area. Signs require source activation and return road_signs_unavailable otherwise. 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.\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": false\n}\n```\n\n### Responses\n- **200**: Success. Illustrative response; source coverage and results vary.\n- **400**: Invalid input. `invalid_road_point`, `invalid_road_batch`, `invalid_road_usage` Failed operations are not charged.\n- **401**: Missing or invalid authentication. `bearer_required` Failed operations are not charged.\n- **403**: Scope, account or plan restriction. `road_data_plan_required`, `road_data_subscription_required`, `road_data_contract_required` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **422**: Request cannot be fulfilled. `road_coverage_unavailable`, `road_sign_coverage_unavailable`, `road_sign_window_too_dense` Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. `road_data_quota_exhausted`, `road_data_rate_limited`, `road_data_busy` Failed operations are not charged.\n- **503**: Service temporarily unavailable. `road_signs_unavailable`, `road_batch_timeout`, `road_data_operation_expired` Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/usage",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "usage"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"limit\": 100000,\n  \"used\": 100,\n  \"reserved\": 0,\n  \"remaining\": 99900,\n  \"requests_per_minute\": 120,\n  \"resets_at\": \"2026-11-01T00:00:00Z\"\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/usage",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "usage"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_road_point\",\n  \"code\": \"invalid_road_point\",\n  \"problem_code\": \"invalid_road_point\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_road_point\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_road_point\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 401",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/usage",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "usage"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"bearer_required\",\n  \"code\": \"bearer_required\",\n  \"problem_code\": \"bearer_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#bearer_required\",\n  \"title\": \"Request failed\",\n  \"status\": 401,\n  \"detail\": \"bearer_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 403",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/usage",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "usage"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_data_plan_required\",\n  \"code\": \"road_data_plan_required\",\n  \"problem_code\": \"road_data_plan_required\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_data_plan_required\",\n  \"title\": \"Request failed\",\n  \"status\": 403,\n  \"detail\": \"road_data_plan_required\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 422",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/usage",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "usage"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_coverage_unavailable\",\n  \"code\": \"road_coverage_unavailable\",\n  \"problem_code\": \"road_coverage_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_coverage_unavailable\",\n  \"title\": \"Request failed\",\n  \"status\": 422,\n  \"detail\": \"road_coverage_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 429",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/usage",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "usage"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_data_quota_exhausted\",\n  \"code\": \"road_data_quota_exhausted\",\n  \"problem_code\": \"road_data_quota_exhausted\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_data_quota_exhausted\",\n  \"title\": \"Request failed\",\n  \"status\": 429,\n  \"detail\": \"road_data_quota_exhausted\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 503",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/v1/roads/usage",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "roads",
                    "usage"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"road_signs_unavailable\",\n  \"code\": \"road_signs_unavailable\",\n  \"problem_code\": \"road_signs_unavailable\",\n  \"type\": \"https://osrmroute.com/docs/platform#road_signs_unavailable\",\n  \"title\": \"Service unavailable\",\n  \"status\": 503,\n  \"detail\": \"road_signs_unavailable\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/v1/roads/usage"
        }
      ]
    },
    {
      "name": "06 \u00b7 Jobs, sandbox and source metadata",
      "item": [
        {
          "name": "Queue an encrypted, expiring job",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{idempotency_key}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/jobs",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "jobs"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"operation\": \"geocode_batch\",\n  \"input\": {\n    \"queries\": [\n      \"Berlin, Germany\"\n    ]\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "### Plan and metering\nLive key required. Input and result are encrypted at rest and expire after 24 hours. Access is restricted to the creating key. The selected operation requires its normal service scope and plan limits. At most ten active jobs per account and ten creation requests/minute/key. Normal gateway credits are reserved when the worker dispatches; creation and polling do not charge separately. An unknown outcome is not automatically retried. [Background jobs guide](/docs/platform).\n\n### Parameters\n- `Idempotency-Key` (header, required): Reuse for a retry of the same key, operation and normalized input. Changed payload returns 409. {\"type\":\"string\",\"minLength\":16,\"maxLength\":100,\"pattern\":\"^[A-Za-z0-9_-]{16,100}$\"}\n\n### JSON body schema\n```json\n{\n  \"oneOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"operation\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"geocode_batch\"\n          ]\n        },\n        \"input\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"queries\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\",\n                \"minLength\": 1,\n                \"maxLength\": 254\n              },\n              \"minItems\": 1,\n              \"maxItems\": 100\n            },\n            \"lang\": {\n              \"type\": \"string\",\n              \"maxLength\": 8,\n              \"default\": \"en\"\n            }\n          },\n          \"required\": [\n            \"queries\"\n          ]\n        },\n        \"webhook_id\": {\n          \"type\": \"string\",\n          \"format\": \"uuid\",\n          \"description\": \"Optional active webhook owned by this workspace.\"\n        }\n      },\n      \"required\": [\n        \"operation\",\n        \"input\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"operation\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"matrix\"\n          ]\n        },\n        \"input\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"from_points\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"description\": \"[latitude, longitude]; latitude \u00b190, longitude \u00b1180.\"\n              },\n              \"minItems\": 1,\n              \"maxItems\": 100\n            },\n            \"to_points\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"description\": \"[latitude, longitude]; latitude \u00b190, longitude \u00b1180.\"\n              },\n              \"minItems\": 1,\n              \"maxItems\": 100\n            },\n            \"profile\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"driving\",\n                \"cycling\",\n                \"walking\",\n                \"car\",\n                \"bike\",\n                \"foot\"\n              ]\n            }\n          },\n          \"required\": [\n            \"from_points\",\n            \"to_points\"\n          ]\n        },\n        \"webhook_id\": {\n          \"type\": \"string\",\n          \"format\": \"uuid\",\n          \"description\": \"Optional active webhook owned by this workspace.\"\n        }\n      },\n      \"required\": [\n        \"operation\",\n        \"input\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"operation\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"optimize\"\n          ]\n        },\n        \"input\": {\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        \"webhook_id\": {\n          \"type\": \"string\",\n          \"format\": \"uuid\",\n          \"description\": \"Optional active webhook owned by this workspace.\"\n        }\n      },\n      \"required\": [\n        \"operation\",\n        \"input\"\n      ]\n    }\n  ]\n}\n```\n\n### Responses\n- **202**: Queued or idempotent replay. Replay may already have a terminal state.\n- **400**: Invalid input. `invalid_operation`, `invalid_queries`, `invalid_points`, `idempotency_key_required` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `job_not_found`, `webhook_not_found` Failed operations are not charged.\n- **409**: Conflict. `idempotency_payload_conflict`, `result_not_ready`, `only_queued_jobs_can_be_cancelled` Failed operations are not charged.\n- **410**: Expired resource. `job_expired` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. `active_job_limit`, `rate_limited` Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 202",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{idempotency_key}}"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"operation\": \"geocode_batch\",\n  \"input\": {\n    \"queries\": [\n      \"Berlin, Germany\"\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 202,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"job\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"state\": \"queued\",\n    \"replayed\": false\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}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{idempotency_key}}"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"operation\": \"geocode_batch\",\n  \"input\": {\n    \"queries\": [\n      \"Berlin, Germany\"\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_operation\",\n  \"code\": \"invalid_operation\",\n  \"problem_code\": \"invalid_operation\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_operation\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_operation\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 404",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{idempotency_key}}"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"operation\": \"geocode_batch\",\n  \"input\": {\n    \"queries\": [\n      \"Berlin, Germany\"\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"job_not_found\",\n  \"code\": \"job_not_found\",\n  \"problem_code\": \"job_not_found\",\n  \"type\": \"https://osrmroute.com/docs/platform#job_not_found\",\n  \"title\": \"Request failed\",\n  \"status\": 404,\n  \"detail\": \"job_not_found\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 409",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{idempotency_key}}"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"operation\": \"geocode_batch\",\n  \"input\": {\n    \"queries\": [\n      \"Berlin, Germany\"\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"idempotency_payload_conflict\",\n  \"code\": \"idempotency_payload_conflict\",\n  \"problem_code\": \"idempotency_payload_conflict\",\n  \"type\": \"https://osrmroute.com/docs/platform#idempotency_payload_conflict\",\n  \"title\": \"Request failed\",\n  \"status\": 409,\n  \"detail\": \"idempotency_payload_conflict\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 410",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{idempotency_key}}"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"operation\": \"geocode_batch\",\n  \"input\": {\n    \"queries\": [\n      \"Berlin, Germany\"\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 410,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"job_expired\",\n  \"code\": \"job_expired\",\n  \"problem_code\": \"job_expired\",\n  \"type\": \"https://osrmroute.com/docs/platform#job_expired\",\n  \"title\": \"Request failed\",\n  \"status\": 410,\n  \"detail\": \"job_expired\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 429",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Idempotency-Key",
                    "value": "{{idempotency_key}}"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"operation\": \"geocode_batch\",\n  \"input\": {\n    \"queries\": [\n      \"Berlin, Germany\"\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"active_job_limit\",\n  \"code\": \"active_job_limit\",\n  \"problem_code\": \"active_job_limit\",\n  \"type\": \"https://osrmroute.com/docs/platform#active_job_limit\",\n  \"title\": \"Request failed\",\n  \"status\": 429,\n  \"detail\": \"active_job_limit\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/jobs"
        },
        {
          "name": "List jobs created by this API key",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/jobs",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "jobs"
              ],
              "query": []
            },
            "description": "### Plan and metering\nLive key required. Input and result are encrypted at rest and expire after 24 hours. Access is restricted to the creating key. The selected operation requires its normal service scope and plan limits. At most ten active jobs per account and ten creation requests/minute/key. Normal gateway credits are reserved when the worker dispatches; creation and polling do not charge separately. An unknown outcome is not automatically retried. [Background jobs guide](/docs/platform).\n\n### Parameters\n\n\n### Responses\n- **200**: Latest 50 jobs, newest first. No pagination.\n- **400**: Invalid input. `invalid_operation`, `invalid_queries`, `invalid_points`, `idempotency_key_required` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `job_not_found`, `webhook_not_found` Failed operations are not charged.\n- **409**: Conflict. `idempotency_payload_conflict`, `result_not_ready`, `only_queued_jobs_can_be_cancelled` Failed operations are not charged.\n- **410**: Expired resource. `job_expired` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. `active_job_limit`, `rate_limited` Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"jobs\": [\n    {\n      \"id\": \"00000000-0000-4000-8000-000000000001\",\n      \"operation\": \"geocode_batch\",\n      \"state\": \"queued\",\n      \"error_code\": null,\n      \"created_at\": \"2026-10-19T00:00:00Z\",\n      \"expires_at\": \"2026-10-20T00:00:00Z\"\n    }\n  ]\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_operation\",\n  \"code\": \"invalid_operation\",\n  \"problem_code\": \"invalid_operation\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_operation\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_operation\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 404",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                }
              },
              "status": "Error",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"job_not_found\",\n  \"code\": \"job_not_found\",\n  \"problem_code\": \"job_not_found\",\n  \"type\": \"https://osrmroute.com/docs/platform#job_not_found\",\n  \"title\": \"Request failed\",\n  \"status\": 404,\n  \"detail\": \"job_not_found\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 409",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                }
              },
              "status": "Error",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"idempotency_payload_conflict\",\n  \"code\": \"idempotency_payload_conflict\",\n  \"problem_code\": \"idempotency_payload_conflict\",\n  \"type\": \"https://osrmroute.com/docs/platform#idempotency_payload_conflict\",\n  \"title\": \"Request failed\",\n  \"status\": 409,\n  \"detail\": \"idempotency_payload_conflict\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 410",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                }
              },
              "status": "Error",
              "code": 410,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"job_expired\",\n  \"code\": \"job_expired\",\n  \"problem_code\": \"job_expired\",\n  \"type\": \"https://osrmroute.com/docs/platform#job_expired\",\n  \"title\": \"Request failed\",\n  \"status\": 410,\n  \"detail\": \"job_expired\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 429",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs"
                  ],
                  "query": []
                }
              },
              "status": "Error",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"active_job_limit\",\n  \"code\": \"active_job_limit\",\n  \"problem_code\": \"active_job_limit\",\n  \"type\": \"https://osrmroute.com/docs/platform#active_job_limit\",\n  \"title\": \"Request failed\",\n  \"status\": 429,\n  \"detail\": \"active_job_limit\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/jobs"
        },
        {
          "name": "Read job status or encrypted result before 24-hour expiry",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/jobs/{{job_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "jobs",
                "{{job_id}}"
              ],
              "query": [
                {
                  "key": "result",
                  "value": "0",
                  "disabled": true,
                  "description": " Schema: {\"type\": \"integer\", \"enum\": [0, 1]}"
                }
              ]
            },
            "description": "### Plan and metering\nLive key required. Input and result are encrypted at rest and expire after 24 hours. Access is restricted to the creating key. The selected operation requires its normal service scope and plan limits. At most ten active jobs per account and ten creation requests/minute/key. Normal gateway credits are reserved when the worker dispatches; creation and polling do not charge separately. An unknown outcome is not automatically retried. [Background jobs guide](/docs/platform).\n\n### Parameters\n- `id` (path, required):  {\"type\":\"string\",\"format\":\"uuid\"}\n- `result` (query): 1 includes the decrypted stored result for completed/failed jobs; other states return 409. {\"type\":\"integer\",\"enum\":[0,1],\"default\":0}\n\n### Responses\n- **200**: Job status, with result only when requested and available.\n- **400**: Invalid input. `invalid_operation`, `invalid_queries`, `invalid_points`, `idempotency_key_required` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `job_not_found`, `webhook_not_found` Failed operations are not charged.\n- **409**: Conflict. `idempotency_payload_conflict`, `result_not_ready`, `only_queued_jobs_can_be_cancelled` Failed operations are not charged.\n- **410**: Expired resource. `job_expired` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. `active_job_limit`, `rate_limited` Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": [
                    {
                      "key": "result",
                      "value": "0",
                      "disabled": true,
                      "description": " Schema: {\"type\": \"integer\", \"enum\": [0, 1]}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"job\": {\n    \"id\": \"00000000-0000-4000-8000-000000000001\",\n    \"operation\": \"geocode_batch\",\n    \"state\": \"queued\",\n    \"error_code\": null,\n    \"created_at\": \"2026-10-19T00:00:00Z\",\n    \"expires_at\": \"2026-10-20T00:00:00Z\"\n  }\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": [
                    {
                      "key": "result",
                      "value": "0",
                      "disabled": true,
                      "description": " Schema: {\"type\": \"integer\", \"enum\": [0, 1]}"
                    }
                  ]
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_operation\",\n  \"code\": \"invalid_operation\",\n  \"problem_code\": \"invalid_operation\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_operation\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_operation\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 404",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": [
                    {
                      "key": "result",
                      "value": "0",
                      "disabled": true,
                      "description": " Schema: {\"type\": \"integer\", \"enum\": [0, 1]}"
                    }
                  ]
                }
              },
              "status": "Error",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"job_not_found\",\n  \"code\": \"job_not_found\",\n  \"problem_code\": \"job_not_found\",\n  \"type\": \"https://osrmroute.com/docs/platform#job_not_found\",\n  \"title\": \"Request failed\",\n  \"status\": 404,\n  \"detail\": \"job_not_found\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 409",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": [
                    {
                      "key": "result",
                      "value": "0",
                      "disabled": true,
                      "description": " Schema: {\"type\": \"integer\", \"enum\": [0, 1]}"
                    }
                  ]
                }
              },
              "status": "Error",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"idempotency_payload_conflict\",\n  \"code\": \"idempotency_payload_conflict\",\n  \"problem_code\": \"idempotency_payload_conflict\",\n  \"type\": \"https://osrmroute.com/docs/platform#idempotency_payload_conflict\",\n  \"title\": \"Request failed\",\n  \"status\": 409,\n  \"detail\": \"idempotency_payload_conflict\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 410",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": [
                    {
                      "key": "result",
                      "value": "0",
                      "disabled": true,
                      "description": " Schema: {\"type\": \"integer\", \"enum\": [0, 1]}"
                    }
                  ]
                }
              },
              "status": "Error",
              "code": 410,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"job_expired\",\n  \"code\": \"job_expired\",\n  \"problem_code\": \"job_expired\",\n  \"type\": \"https://osrmroute.com/docs/platform#job_expired\",\n  \"title\": \"Request failed\",\n  \"status\": 410,\n  \"detail\": \"job_expired\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 429",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": [
                    {
                      "key": "result",
                      "value": "0",
                      "disabled": true,
                      "description": " Schema: {\"type\": \"integer\", \"enum\": [0, 1]}"
                    }
                  ]
                }
              },
              "status": "Error",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"active_job_limit\",\n  \"code\": \"active_job_limit\",\n  \"problem_code\": \"active_job_limit\",\n  \"type\": \"https://osrmroute.com/docs/platform#active_job_limit\",\n  \"title\": \"Request failed\",\n  \"status\": 429,\n  \"detail\": \"active_job_limit\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/jobs/{id}"
        },
        {
          "name": "Cancel a queued job; running work cannot be cancelled",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/jobs/{{job_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "jobs",
                "{{job_id}}"
              ],
              "query": []
            },
            "description": "### Plan and metering\nLive key required. Input and result are encrypted at rest and expire after 24 hours. Access is restricted to the creating key. The selected operation requires its normal service scope and plan limits. At most ten active jobs per account and ten creation requests/minute/key. Normal gateway credits are reserved when the worker dispatches; creation and polling do not charge separately. An unknown outcome is not automatically retried. [Background jobs guide](/docs/platform). Only queued jobs can be cancelled. Running/terminal or inaccessible jobs return 409.\n\n### Parameters\n- `id` (path, required):  {\"type\":\"string\",\"format\":\"uuid\"}\n\n### Responses\n- **200**: Cancelled\n- **400**: Invalid input. `invalid_operation`, `invalid_queries`, `invalid_points`, `idempotency_key_required` Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **404**: Resource not found. `job_not_found`, `webhook_not_found` Failed operations are not charged.\n- **409**: Conflict. `idempotency_payload_conflict`, `result_not_ready`, `only_queued_jobs_can_be_cancelled` Failed operations are not charged.\n- **410**: Expired resource. `job_expired` Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. `active_job_limit`, `rate_limited` Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"ok\": true\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 400",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": []
                }
              },
              "status": "Error",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_operation\",\n  \"code\": \"invalid_operation\",\n  \"problem_code\": \"invalid_operation\",\n  \"type\": \"https://osrmroute.com/docs/platform#invalid_operation\",\n  \"title\": \"Request failed\",\n  \"status\": 400,\n  \"detail\": \"invalid_operation\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 404",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": []
                }
              },
              "status": "Error",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"job_not_found\",\n  \"code\": \"job_not_found\",\n  \"problem_code\": \"job_not_found\",\n  \"type\": \"https://osrmroute.com/docs/platform#job_not_found\",\n  \"title\": \"Request failed\",\n  \"status\": 404,\n  \"detail\": \"job_not_found\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 409",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": []
                }
              },
              "status": "Error",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"idempotency_payload_conflict\",\n  \"code\": \"idempotency_payload_conflict\",\n  \"problem_code\": \"idempotency_payload_conflict\",\n  \"type\": \"https://osrmroute.com/docs/platform#idempotency_payload_conflict\",\n  \"title\": \"Request failed\",\n  \"status\": 409,\n  \"detail\": \"idempotency_payload_conflict\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 410",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": []
                }
              },
              "status": "Error",
              "code": 410,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"job_expired\",\n  \"code\": \"job_expired\",\n  \"problem_code\": \"job_expired\",\n  \"type\": \"https://osrmroute.com/docs/platform#job_expired\",\n  \"title\": \"Request failed\",\n  \"status\": 410,\n  \"detail\": \"job_expired\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": false\n}",
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Illustrative \u00b7 429",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/jobs/{{job_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "jobs",
                    "{{job_id}}"
                  ],
                  "query": []
                }
              },
              "status": "Error",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/problem+json"
                }
              ],
              "body": "{\n  \"error\": \"active_job_limit\",\n  \"code\": \"active_job_limit\",\n  \"problem_code\": \"active_job_limit\",\n  \"type\": \"https://osrmroute.com/docs/platform#active_job_limit\",\n  \"title\": \"Request failed\",\n  \"status\": 429,\n  \"detail\": \"active_job_limit\",\n  \"instance\": \"urn:uuid:00000000-0000-4000-8000-000000000001\",\n  \"request_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"retryable\": true\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "DELETE /api/jobs/{id}"
        },
        {
          "name": "Deterministic zero-credit fixture; requires sandbox key",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/sandbox",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "sandbox"
              ],
              "query": []
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"operation\": \"geocode\",\n  \"input\": {\n    \"q\": \"Berlin\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{sandbox_key}}",
                  "type": "string"
                }
              ]
            },
            "description": "### Plan and metering\nSandbox key required, with the selected service scope. Live keys are rejected. Sixty requests/minute/key, 24,000-byte body. Fixed geocode or entered-order straight-line route/matrix/VRP fixtures; not live routing, optimization or navigation. Input points use latitude,longitude. [Sandbox guide](/docs/platform).\n\n### Parameters\n\n\n### JSON body schema\n```json\n{\n  \"oneOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"operation\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"geocode\"\n          ]\n        },\n        \"input\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"q\": {\n              \"type\": \"string\",\n              \"minLength\": 1,\n              \"maxLength\": 254\n            }\n          },\n          \"required\": [\n            \"q\"\n          ]\n        }\n      },\n      \"required\": [\n        \"operation\",\n        \"input\"\n      ]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"operation\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"route\",\n            \"matrix\",\n            \"vrp\"\n          ]\n        },\n        \"input\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"points\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"array\",\n                \"minItems\": 2,\n                \"maxItems\": 2,\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"description\": \"[latitude, longitude]; latitude \u00b190, longitude \u00b1180.\"\n              },\n              \"minItems\": 2,\n              \"maxItems\": 20\n            }\n          },\n          \"required\": [\n            \"points\"\n          ]\n        }\n      },\n      \"required\": [\n        \"operation\",\n        \"input\"\n      ]\n    }\n  ]\n}\n```\n\n### Responses\n- **200**: Deterministic fixture; zero credits.\n- **400**: Invalid input. See the returned error code. Failed operations are not charged.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **413**: Payload too large. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/sandbox",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "sandbox"
                  ],
                  "query": []
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"operation\": \"geocode\",\n  \"input\": {\n    \"q\": \"Berlin\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{sandbox_key}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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  \"notice\": \"Fixed example result. This is not a live search result for the submitted address.\"\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/sandbox"
        },
        {
          "name": "Dated dataset estimates and evidence review counts; info scope",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/source-metadata",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "source-metadata"
              ],
              "query": []
            },
            "description": "### Plan and metering\nInfo scope; 30 requests/minute/key, zero API credits. Returns the latest recorded source snapshot, not a live availability check. Snapshot can be null. Does not expose or infer posted legal speed limits. [Data guide](/docs/platform).\n\n### Parameters\n\n\n### Responses\n- **200**: Source snapshot and evidence review counts.\n- **401**: Missing or invalid authentication. See the returned error code. Failed operations are not charged.\n- **403**: Scope, account or plan restriction. See the returned error code. Failed operations are not charged.\n- **429**: Rate, quota or concurrency limit. See the returned error code. Failed operations are not charged.\n- **503**: Service temporarily unavailable. See the returned error code. Failed operations are not charged.\n\nExamples are illustrative, not current measurements. Replace resource variables with IDs from your own workspace. Do not publish credentials."
          },
          "response": [
            {
              "name": "Illustrative \u00b7 200",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/api/source-metadata",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "source-metadata"
                  ],
                  "query": []
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "GET /api/source-metadata"
        }
      ]
    },
    {
      "name": "07 \u00b7 Remote MCP",
      "item": [
        {
          "name": "initialize",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "ping",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"ping\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"ping\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {}\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "tools/list",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools/list\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools/list\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 place_details",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nRead source attributes by an OSM search result ID. One credit, one-hour source cache.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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\": \"{{place_id}}\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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\": \"{{place_id}}\"\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 get_route",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nRoute between coordinates using the selected travel profile.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 distance_matrix",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nCompute road-network durations and distances between coordinates.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 reverse_geocode",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nFind the nearest address.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 autocomplete_address",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nComplete a partial address.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 get_timezone",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nGet the timezone at a coordinate.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 get_isochrone",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nGet the area reachable within a time budget.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 optimize_route",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nOptimize delivery stops across vehicles.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 geocode_address",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nFind an address. Uses geocode credits.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 natural_search",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nFind 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### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 suggest_addresses",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nGet address suggestions and owner-bound retrieval tokens.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 retrieve_place",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nRetrieve a suggestion snapshot within ten minutes.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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\": \"{{suggestion_token}}\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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\": \"{{suggestion_token}}\"\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 structured_geocode",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nSearch an address using separate components.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 places_along_route",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nDiscover places with bounded driving detours. 14 credits; not exhaustive or live traffic.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 static_map",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nRender a PNG map. 4 credits.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 list_styles",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nList your styles. Requires explicit studio scope.\n### Arguments\n```json\n{\n  \"type\": \"object\",\n  \"properties\": {},\n  \"required\": [],\n  \"additionalProperties\": false\n}\n```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 list_datasets",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nList your datasets. Requires explicit studio scope.\n### Arguments\n```json\n{\n  \"type\": \"object\",\n  \"properties\": {},\n  \"required\": [],\n  \"additionalProperties\": false\n}\n```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "Tool \u00b7 preview_style",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nPreview style commands without saving or publishing. Requires studio scope. ai=true uses the Business monthly AI quota.\n### Arguments\n```json\n{\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```\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "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_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "notifications/initialized",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"method\": \"notifications/initialized\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"method\": \"notifications/initialized\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Accepted",
              "code": 202,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "_postman_previewlanguage": "text"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        },
        {
          "name": "notifications/cancelled",
          "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"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mcp",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mcp"
              ]
            },
            "description": "### Plan and metering\nMCP 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 https://osrmroute.com/docs/automation#mcp.\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "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"
                }
              }
            }
          },
          "response": [
            {
              "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"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mcp",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mcp"
                  ]
                },
                "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"
                    }
                  }
                }
              },
              "status": "Accepted",
              "code": 202,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "_postman_previewlanguage": "text"
            }
          ],
          "_osrm_operation": "POST /api/mcp"
        }
      ]
    },
    {
      "name": "08 \u00b7 Native mobile access",
      "item": [
        {
          "name": "Request device challenge",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mobile/challenge",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mobile",
                "challenge"
              ]
            },
            "description": "### Plan and metering\nNo 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 https://osrmroute.com/docs/mobile.\n### Parameters\napp_id: registered app UUID; key_id: device installation/App Attest key (16\u2013256 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).\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"app_id\": \"{{mobile_app_id}}\",\n  \"key_id\": \"{{device_key_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mobile/challenge",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mobile",
                    "challenge"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"app_id\": \"{{mobile_app_id}}\",\n  \"key_id\": \"{{device_key_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "auth": {
                  "type": "noauth"
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"challenge\": \"EXAMPLE_ONLY\",\n  \"challenge_id\": \"00000000-0000-4000-8000-000000000001\",\n  \"enrolled\": false\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mobile/challenge"
        },
        {
          "name": "Exchange real device proof",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/mobile/token",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "mobile",
                "token"
              ]
            },
            "description": "### Plan and metering\nNo 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 https://osrmroute.com/docs/mobile.\n### Parameters\napp_id: registered app UUID; key_id: device installation/App Attest key (16\u2013256 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).\n\nSaved responses are synthetic, not live results. Use local variables only.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"app_id\": \"{{mobile_app_id}}\",\n  \"key_id\": \"{{device_key_id}}\",\n  \"challenge_id\": \"{{challenge_id}}\",\n  \"challenge\": \"{{challenge}}\",\n  \"proof\": \"{{device_proof}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "Synthetic abbreviated success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/api/mobile/token",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "api",
                    "mobile",
                    "token"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"app_id\": \"{{mobile_app_id}}\",\n  \"key_id\": \"{{device_key_id}}\",\n  \"challenge_id\": \"{{challenge_id}}\",\n  \"challenge\": \"{{challenge}}\",\n  \"proof\": \"{{device_proof}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "auth": {
                  "type": "noauth"
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"access_token\": \"EXAMPLE_ONLY_NOT_A_VALID_TOKEN\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 300\n}",
              "_postman_previewlanguage": "json"
            }
          ],
          "_osrm_operation": "POST /api/mobile/token"
        }
      ]
    }
  ]
}
