Navigation | Routing API | Examples | 2GIS Documentation
Routing APInew

Examples

Here are the main scenarios and examples of Routing API requests. Detailed information about request parameters is provided in the API Reference.

To get started with the Routing API, get an API key.

A request example is provided using cURL.

  • walking — start/finish point of the route. A pedestrian path will be added, avoiding obstacles such as buildings.
  • stop — start/finish point of the route. A direct path will be added, ignoring obstacles.
  • pref — intermediate point of the route.

If the starting or ending point of a car route is not located on the road, a path will be added to connect it to the nearest road.

For any type of route, you can specify multiple starting and ending points. This can be useful in cases where a building has multiple entrances and exits. When multiple points are specified, an optimal route will be constructed from one of the starting points to one of the ending points.

{
    "points": [
        {
            "lon": "37.522492",
            "lat": "55.833249",
            "type": "stop"
        },
        {
            "lon": "37.533709",
            "lat": "55.83546",
            "type": "stop"
        }
    ]
}

To distinguish between starting points and ending points in the points array, you can use the start parameter or add intermediate points.

There are the following limitations when using intermediate points:

  • Route calculation with intermediate points is only available within the urban agglomeration.
  • Up to 10 points, including the starting and ending points, are allowed for car and truck routes.
  • Up to 5 points, including the starting and ending points, are allowed for pedestrian routes.
  • Route calculation with intermediate points is not supported for bicycle routes.
{
    "points": [
        {
            "lon": "37.522492",
            "lat": "55.833249",
            "type": "walking",
            "start": true
        },
        {
            "lon": "37.526669",
            "lat": "55.83433",
            "type": "pref"
        },
        {
            "lon": "37.533709",
            "lat": "55.83546",
            "type": "stop"
        }
    ]
}

To calculate a route, send a POST request to /routing/7.0.0/global with the following parameters:

  • points — coordinates for the route:

    • lon — longitude in degrees (required).

    • lat — latitude in degrees (required).

    • type — point type:

      • stop — start/finish point of the route (direct path to the road, ignoring obstacles).
      • walking — start/finish point of the route (pedestrian path to the road).
      • pref — intermediate point of the route.
  • transport — transport type:

    • driving — car.
    • walking — pedestrian.
    • taxi — taxi.
    • bicycle — bicycle.
    • scooter — scooter.
    • emergency — emergency services.
    • truck — truck.

    Route calculation with the emergency transport type is only available for the United Arab Emirates, Oman, and Saudi Arabia.

  • route_mode — route calculation mode:

    • fastest — fastest route considering current traffic conditions or statistical traffic data.
    • shortest — shortest route in distance.
  • traffic_mode — traffic mode:

    • jam — use real-time traffic data.
    • statistics — use historical traffic data.
  • output — result output format:

    • summary — simplified output with only the route duration and length.
    • detailed — full output with the route geometry.

Example request:

curl --location --request POST 'http://routing.api.2gis.com/routing/7.0.0/global?key=API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "points": [
        {
            "type": "stop",
            "lon": 37.582591,
            "lat": 55.775364
        },
        {
            "type": "stop",
            "lon": 37.579206,
            "lat": 55.774362
        }
    ],
    "transport": "driving",
    "route_mode": "fastest",
    "traffic_mode": "jam"
}'

Example response:

response.json
{
    "query": {
        "points": [
            {
                "lat": 55.775364,
                "lon": 37.582591,
                "type": "stop"
            },
            {
                "lat": 55.774362,
                "lon": 37.579206,
                "type": "stop"
            }
        ],
        "route_mode": "fastest",
        "traffic_mode": "jam",
        "transport": "driving"
    },
    "result": [
        {
            "algorithm": "with traffic jams",
            "begin_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.582590 55.775363, 37.583086 55.775486)"
                }
            },
            "end_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.579375 55.774203, 37.579206 55.774362)"
                }
            },
            "filter_road_types": ["highway"],
            "id": "12922704556478677211",
            "maneuvers": [
                {
                    "comment": "start",
                    "icon": "start",
                    "id": "7839320946830305547",
                    "outcoming_path": {
                        "distance": 30,
                        "duration": 9,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 56,
                                "selection": "LINESTRING(37.583086 55.775486, 37.583150 55.775405, 37.583239 55.775297, 37.583253 55.775281, 37.583307 55.775231)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Грузинский Вал"]
                    },
                    "outcoming_path_comment": "30 m straight",
                    "type": "begin"
                },
                {
                    "comment": "Right turn onto Грузинский Вал",
                    "icon": "crossroad_right",
                    "id": "17957498578158685594",
                    "outcoming_path": {
                        "distance": 329,
                        "duration": 70,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 436,
                                "selection": "LINESTRING(37.583307 55.775231, 37.583032 55.775138, 37.581347 55.774564, 37.580879 55.774404, 37.580612 55.774313, 37.580302 55.774207, 37.579955 55.774089)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 159,
                                "selection": "LINESTRING(37.579955 55.774089, 37.579792 55.774034, 37.579402 55.773901, 37.579271 55.773856, 37.578973 55.773755, 37.578732 55.773673)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Грузинский Вал"]
                    },
                    "outcoming_path_comment": "350 m straight",
                    "turn_angle": 89,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn",
                    "icon": "crossroad_right",
                    "id": "9143282890459345824",
                    "outcoming_path": {
                        "distance": 94,
                        "duration": 28,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 169,
                                "selection": "LINESTRING(37.578732 55.773673, 37.578554 55.773830, 37.578479 55.773898, 37.578702 55.773974, 37.579107 55.774112, 37.579313 55.774182, 37.579375 55.774203)",
                                "style": "normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "90 m straight",
                    "turn_angle": 89,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "finish",
                    "icon": "finish",
                    "id": "17223433631698559069",
                    "outcoming_path_comment": "You have arrived!",
                    "type": "end"
                }
            ],
            "reliability": 1.0,
            "route_id": "moscow-cr-mosesd.m9/carrouting/1686720190.966423",
            "total_distance": 453,
            "total_duration": 107,
            "type": "carrouting",
            "ui_total_distance": {
                "unit": "m",
                "value": "450"
            },
            "ui_total_duration": "1 min",
            "waypoints": [
                {
                    "original_point": {
                        "lat": 55.77548696452943,
                        "lon": 37.58308657528283
                    },
                    "projected_point": {
                        "lat": 55.77548696452943,
                        "lon": 37.58308657528283
                    },
                    "transit": false
                },
                {
                    "original_point": {
                        "lat": 55.77420397246263,
                        "lon": 37.57937599417024
                    },
                    "projected_point": {
                        "lat": 55.77420397246263,
                        "lon": 37.57937599417024
                    },
                    "transit": false
                }
            ]
        }
    ],
    "type": "result"
}

To calculate an alternative route in addition to the main route, send a POST request to /routing/7.0.0/global with the following parameters:

  • "output": "detailed": full output format for the results.
  • "alternative": 2: number of alternative routes, ranging from 1 to 2.

To appear in the response, an alternative route must fulfill the folllowing criteria:

  • The alternative route may be longer than the main route, but not by more than 30%.
  • The geometry of the alternative route differs from the main route by at least 10%.

Example request:

curl --location --request POST 'http://routing.api.2gis.com/routing/7.0.0/global?key=API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "points": [
        {
            "type": "stop",
            "lon": 82.93057,
            "lat": 54.943207
        },
        {
            "type": "stop",
            "lon": 82.945039,
            "lat": 55.033879
        }
    ],
    "route_mode": "fastest",
    "traffic_mode": "jam",
    "transport": "driving",
    "output": "detailed",
    "alternative": 2
}'

Example response:

response.json
{
    "query": {
        "alternative": 2,
        "output": "detailed",
        "points": [
            {
                "lat": 54.943207,
                "lon": 82.93057,
                "type": "stop"
            },
            {
                "lat": 55.033879,
                "lon": 82.94503899999999,
                "type": "stop"
            }
        ],
        "route_mode": "fastest",
        "traffic_mode": "jam",
        "transport": "driving"
    },
    "result": [
        {
            "algorithm": "with traffic jams",
            "begin_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(82.930569 54.943206, 82.930842 54.943190)"
                }
            },
            "end_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(82.944667 55.033847, 82.945039 55.033878)"
                }
            },
            "filter_road_types": ["dirt_road", "highway"],
            "id": "11325602023971151826",
            "maneuvers": [
                {
                    "comment": "start",
                    "icon": "start",
                    "id": "13052860446703173951",
                    "outcoming_path": {
                        "distance": 329,
                        "duration": 91,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 577,
                                "selection": "LINESTRING(82.930843 54.943190, 82.930583 54.941787, 82.930465 54.941540, 82.930236 54.941063, 82.930136 54.940856, 82.930100 54.940663, 82.930078 54.940539, 82.930052 54.940402, 82.930025 54.940258)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Петухова"]
                    },
                    "outcoming_path_comment": "350 m straight",
                    "type": "begin"
                },
                {
                    "comment": "Right turn onto Петухова",
                    "icon": "crossroad_right",
                    "id": "1873761371976105797",
                    "outcoming_path": {
                        "distance": 246,
                        "duration": 33,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 429,
                                "selection": "LINESTRING(82.930025 54.940258, 82.928138 54.940373, 82.926186 54.940493)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Петухова"]
                    },
                    "outcoming_path_comment": "250 m straight",
                    "turn_angle": 90,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Северный проезд",
                    "icon": "crossroad_right",
                    "id": "5333495346757176418",
                    "outcoming_path": {
                        "distance": 953,
                        "duration": 145,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 1680,
                                "selection": "LINESTRING(82.926186 54.940493, 82.926323 54.941062, 82.926536 54.941948, 82.926575 54.942112, 82.926654 54.942436, 82.926848 54.943249, 82.926935 54.943560, 82.926991 54.943762, 82.927074 54.944057, 82.927286 54.944818, 82.927337 54.944999, 82.927366 54.945103, 82.927592 54.945913, 82.927713 54.946345, 82.927912 54.947061, 82.927953 54.947208, 82.928015 54.947431, 82.928041 54.947520, 82.928046 54.947541, 82.928140 54.947877, 82.928153 54.947922, 82.928168 54.947978, 82.928186 54.948042, 82.928225 54.948178, 82.928335 54.948574, 82.928389 54.948767, 82.928471 54.949062)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Северный проезд"]
                    },
                    "outcoming_path_comment": "1 km straight",
                    "turn_angle": 92,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Северный проезд",
                    "icon": "crossroad_right",
                    "id": "2009850858667281696",
                    "outcoming_path": {
                        "distance": 2205,
                        "duration": 535,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 1434,
                                "selection": "LINESTRING(82.928471 54.949062, 82.929057 54.949027, 82.929490 54.949001, 82.930030 54.948968, 82.931122 54.948903, 82.931264 54.948895, 82.931758 54.948865, 82.932105 54.948844, 82.932366 54.948828, 82.932931 54.948794, 82.934972 54.948671, 82.935540 54.948637, 82.935764 54.948605, 82.935841 54.948584, 82.935896 54.948561, 82.935941 54.948531, 82.935986 54.948485, 82.936010 54.948440, 82.936027 54.948391, 82.936045 54.948281, 82.936054 54.948143, 82.935994 54.946777, 82.936001 54.946722, 82.936030 54.946674, 82.936078 54.946633, 82.936150 54.946598, 82.936230 54.946584, 82.936634 54.946568, 82.936727 54.946583, 82.936810 54.946610, 82.936890 54.946647, 82.936976 54.946691, 82.937066 54.946755, 82.937123 54.946812, 82.937159 54.946876, 82.937184 54.946954, 82.937197 54.947041, 82.937207 54.947136, 82.937214 54.947227)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 398,
                                "selection": "LINESTRING(82.937214 54.947227, 82.937282 54.948185, 82.937281 54.948237, 82.937264 54.948279, 82.937230 54.948324, 82.936548 54.949191)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 367,
                                "selection": "LINESTRING(82.936548 54.949191, 82.936601 54.949748, 82.936700 54.950438, 82.936715 54.950545, 82.936752 54.950744, 82.936817 54.951081)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 115,
                                "selection": "LINESTRING(82.936817 54.951081, 82.936929 54.951674)",
                                "style": "bridge"
                            },
                            {
                                "color": "slow",
                                "length": 201,
                                "selection": "LINESTRING(82.936929 54.951674, 82.936996 54.952021, 82.937069 54.952408, 82.937126 54.952707)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 288,
                                "selection": "LINESTRING(82.937126 54.952707, 82.937407 54.954184)",
                                "style": "bridge"
                            },
                            {
                                "color": "slow",
                                "length": 863,
                                "selection": "LINESTRING(82.937407 54.954184, 82.937485 54.954594, 82.937750 54.955978, 82.938098 54.958320, 82.938142 54.958616)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 194,
                                "selection": "LINESTRING(82.938142 54.958616, 82.938207 54.959045, 82.938220 54.959368, 82.938236 54.959431, 82.938275 54.959502, 82.938305 54.959535, 82.938333 54.959565, 82.938376 54.959598)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Северный проезд"]
                    },
                    "outcoming_path_comment": "2.2 km straight",
                    "turn_angle": 87,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Мира",
                    "icon": "crossroad_left",
                    "id": "7333802260272816610",
                    "outcoming_path": {
                        "distance": 1200,
                        "duration": 137,
                        "geometry": [
                            {
                                "color": "normal",
                                "length": 798,
                                "selection": "LINESTRING(82.938376 54.959598, 82.938517 54.959681, 82.938351 54.959774, 82.936696 54.960704, 82.936289 54.960933, 82.935824 54.961194, 82.935453 54.961402, 82.934847 54.961742, 82.934020 54.962206, 82.933845 54.962304, 82.933619 54.962437, 82.933537 54.962485)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 366,
                                "selection": "LINESTRING(82.933537 54.962485, 82.933278 54.962638, 82.932931 54.962833, 82.932651 54.962990, 82.931190 54.963809)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 113,
                                "selection": "LINESTRING(82.931190 54.963809, 82.930461 54.964217)",
                                "style": "bridge"
                            },
                            {
                                "color": "fast",
                                "length": 827,
                                "selection": "LINESTRING(82.930461 54.964217, 82.929013 54.965030, 82.928400 54.965373, 82.928009 54.965593, 82.927034 54.966140, 82.926207 54.966603, 82.925351 54.967083, 82.925142 54.967201)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Мира"]
                    },
                    "outcoming_path_comment": "1.2 km straight",
                    "turn_angle": -77,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Slight right turn",
                    "icon": "crossroad_slightly_right",
                    "id": "1585736081693808441",
                    "outcoming_path": {
                        "distance": 4688,
                        "duration": 290,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 3515,
                                "selection": "LINESTRING(82.925142 54.967201, 82.924957 54.967681, 82.924943 54.967716, 82.924913 54.967858, 82.924913 54.968012, 82.924945 54.968134, 82.925011 54.968260, 82.925134 54.968433, 82.925225 54.968520, 82.925354 54.968615, 82.925512 54.968705, 82.925778 54.968812, 82.926102 54.968923, 82.926339 54.968972, 82.926545 54.969009, 82.926733 54.969030, 82.927093 54.969069, 82.928306 54.969036, 82.928411 54.969035, 82.933789 54.969156, 82.938504 54.969262, 82.939928 54.969329, 82.941345 54.969427, 82.942755 54.969558, 82.943189 54.969609, 82.944155 54.969721, 82.945542 54.969916, 82.946915 54.970143, 82.948271 54.970401, 82.949608 54.970689, 82.950924 54.971008, 82.952218 54.971357, 82.952780 54.971505, 82.953416 54.971695)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 4658,
                                "selection": "LINESTRING(82.953416 54.971695, 82.954577 54.972041, 82.956019 54.972529, 82.960531 54.974152, 82.965103 54.975797, 82.969602 54.977416, 82.974388 54.979139, 82.977878 54.980394, 82.979158 54.980904, 82.979677 54.981110, 82.980085 54.981298, 82.983420 54.982832, 82.984286 54.983231, 82.985411 54.983727, 82.986154 54.984060, 82.987713 54.984755, 82.988185 54.984995)",
                                "style": "bridge"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "4.7 km straight",
                    "turn_angle": 34,
                    "turn_direction": "slightly_right",
                    "type": "crossroad"
                },
                {
                    "comment": "Keep left",
                    "icon": "crossroad_keep_left",
                    "id": "17666122577439766473",
                    "outcoming_path": {
                        "distance": 5593,
                        "duration": 1117,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 222,
                                "selection": "LINESTRING(82.988185 54.984995, 82.989071 54.985612, 82.989201 54.985718, 82.989336 54.985841, 82.989402 54.985905)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 1030,
                                "selection": "LINESTRING(82.989402 54.985905, 82.991121 54.987981, 82.991433 54.988357, 82.991535 54.988451, 82.991601 54.988491, 82.991761 54.988548, 82.991939 54.988582, 82.992127 54.988590, 82.992313 54.988572, 82.992486 54.988529, 82.993672 54.988121, 82.993771 54.988073, 82.993870 54.988015, 82.993968 54.987946, 82.994037 54.987874, 82.994071 54.987813, 82.994091 54.987756, 82.994098 54.987686, 82.994086 54.987625, 82.994062 54.987576, 82.994018 54.987526, 82.993965 54.987480, 82.993897 54.987438, 82.993822 54.987398, 82.993739 54.987364, 82.993653 54.987340, 82.993562 54.987322, 82.993440 54.987312)",
                                "style": "bridge"
                            },
                            {
                                "color": "slow",
                                "length": 1212,
                                "selection": "LINESTRING(82.993440 54.987312, 82.993314 54.987316, 82.993209 54.987329, 82.993116 54.987345, 82.993029 54.987367, 82.991312 54.987920, 82.991121 54.987981, 82.989301 54.988567, 82.989020 54.988658, 82.988375 54.988874, 82.987380 54.989166, 82.987325 54.989182, 82.987252 54.989210, 82.987049 54.989286, 82.986765 54.989393, 82.986056 54.989660, 82.985924 54.989709, 82.985176 54.989989, 82.984429 54.990270, 82.984028 54.990421)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 256,
                                "selection": "LINESTRING(82.984028 54.990421, 82.983683 54.990550, 82.983581 54.990589, 82.983307 54.990686, 82.983198 54.990725, 82.982475 54.990979, 82.982073 54.991120)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 79,
                                "selection": "LINESTRING(82.982073 54.991120, 82.981468 54.991333)",
                                "style": "bridge"
                            },
                            {
                                "color": "normal",
                                "length": 182,
                                "selection": "LINESTRING(82.981468 54.991333, 82.980676 54.991611, 82.980379 54.991715, 82.980150 54.991789, 82.980058 54.991818)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 2237,
                                "selection": "LINESTRING(82.980058 54.991818, 82.979217 54.992087, 82.979024 54.992149, 82.977947 54.992525, 82.976971 54.992866, 82.975138 54.993506, 82.973751 54.993990, 82.973374 54.994122, 82.972875 54.994296, 82.969835 54.995358, 82.967946 54.996018, 82.965334 54.996930, 82.964986 54.997052, 82.963968 54.997407, 82.963558 54.997550, 82.963217 54.997669, 82.962865 54.997793)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 837,
                                "selection": "LINESTRING(82.962865 54.997793, 82.960793 54.998515, 82.960359 54.998667, 82.959704 54.998896, 82.959516 54.998962, 82.959072 54.999117, 82.958471 54.999327, 82.957350 54.999717, 82.956751 54.999927, 82.956517 55.000009, 82.956441 55.000041)",
                                "style": "normal"
                            },
                            {
                                "color": "slow-jams",
                                "length": 824,
                                "selection": "LINESTRING(82.956441 55.000041, 82.956111 55.000177, 82.955303 55.000512, 82.953788 55.001140, 82.952472 55.001686, 82.951550 55.002068, 82.951360 55.002146, 82.950881 55.002345, 82.950440 55.002528)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 2302,
                                "selection": "LINESTRING(82.950440 55.002528, 82.949695 55.002837, 82.949195 55.003044, 82.948218 55.003449, 82.948094 55.003501, 82.946611 55.004117, 82.946068 55.004341, 82.945417 55.004611, 82.944596 55.004943, 82.944064 55.005158, 82.943598 55.005347, 82.943480 55.005394, 82.942282 55.005878, 82.941644 55.006136, 82.941006 55.006393, 82.940757 55.006495, 82.939631 55.006958, 82.939100 55.007176, 82.937907 55.007665, 82.937153 55.007975, 82.936276 55.008335, 82.935816 55.008523, 82.935771 55.008542, 82.935056 55.008841, 82.934341 55.009138, 82.933626 55.009437)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 104,
                                "selection": "LINESTRING(82.933626 55.009437, 82.932911 55.009735, 82.932868 55.009753)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 521,
                                "selection": "LINESTRING(82.932868 55.009753, 82.932004 55.010114, 82.931662 55.010260, 82.931139 55.010482, 82.929947 55.010991, 82.929402 55.011223, 82.929307 55.011263, 82.929107 55.011355)",
                                "style": "normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "5.6 km straight",
                    "turn_angle": -8,
                    "turn_direction": "keep_left",
                    "type": "crossroad"
                },
                {
                    "comment": "Keep right on Ипподромская",
                    "icon": "crossroad_keep_right",
                    "id": "7886165098513619760",
                    "outcoming_path": {
                        "distance": 198,
                        "duration": 27,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 346,
                                "selection": "LINESTRING(82.929107 55.011355, 82.928912 55.011445, 82.928715 55.011543, 82.928300 55.011809, 82.928238 55.011856, 82.927908 55.012110, 82.927570 55.012281, 82.927210 55.012445, 82.927148 55.012474, 82.926876 55.012588)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Ипподромская"]
                    },
                    "outcoming_path_comment": "200 m straight",
                    "turn_angle": 2,
                    "turn_direction": "keep_right",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Ипподромская",
                    "icon": "crossroad_right",
                    "id": "1552087784409609663",
                    "outcoming_path": {
                        "distance": 2379,
                        "duration": 233,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 4184,
                                "selection": "LINESTRING(82.926876 55.012588, 82.926804 55.012913, 82.926745 55.013179, 82.926749 55.013291, 82.926802 55.013367, 82.926892 55.013424, 82.927276 55.013570, 82.927374 55.013604, 82.927961 55.013808, 82.928094 55.013865, 82.928344 55.013992, 82.928686 55.014165, 82.929755 55.014754, 82.929793 55.014787, 82.930102 55.015142, 82.930200 55.015241, 82.930359 55.015381, 82.930682 55.015735, 82.930925 55.016002, 82.931159 55.016318, 82.931344 55.016727, 82.931480 55.017078, 82.931515 55.017322, 82.931500 55.017778, 82.931433 55.018096, 82.931405 55.018227, 82.931233 55.018742, 82.931141 55.019019, 82.931018 55.019390, 82.930942 55.019651, 82.930885 55.019847, 82.930836 55.020074, 82.930797 55.020470, 82.930806 55.020694, 82.930813 55.020890, 82.930925 55.021250, 82.931285 55.021852, 82.931516 55.022105, 82.931735 55.022345, 82.931889 55.022463, 82.932498 55.022931, 82.932889 55.023231, 82.933326 55.023566, 82.933377 55.023605, 82.933508 55.023709, 82.934269 55.024309, 82.934764 55.024701, 82.934896 55.024804, 82.935417 55.025216, 82.935582 55.025346, 82.935694 55.025435, 82.936308 55.025919, 82.936990 55.026458, 82.937531 55.026885, 82.937882 55.027162, 82.938538 55.027680, 82.938711 55.027816, 82.939022 55.028063, 82.939647 55.028555, 82.939756 55.028641, 82.939832 55.028701, 82.939972 55.028816, 82.940331 55.029111, 82.940520 55.029292, 82.940700 55.029474, 82.940875 55.029682, 82.941166 55.030077, 82.941312 55.030296, 82.941566 55.030735, 82.941823 55.031179)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Ипподромская"]
                    },
                    "outcoming_path_comment": "2.4 km straight",
                    "turn_angle": 48,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Ядринцевский Конный спуск",
                    "icon": "crossroad_right",
                    "id": "18307446050069083826",
                    "outcoming_path": {
                        "distance": 251,
                        "duration": 45,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 441,
                                "selection": "LINESTRING(82.941823 55.031179, 82.941965 55.031217, 82.942132 55.031494, 82.942233 55.031663, 82.942399 55.031826, 82.942691 55.032319, 82.942770 55.032459, 82.942909 55.032723, 82.943122 55.033086, 82.943219 55.033201, 82.943274 55.033261)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Ядринцевский Конный спуск"]
                    },
                    "outcoming_path_comment": "250 m straight",
                    "turn_angle": 47,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Ядринцевский Конный спуск",
                    "icon": "crossroad_right",
                    "id": "17191986440346677194",
                    "outcoming_path": {
                        "distance": 116,
                        "duration": 23,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 204,
                                "selection": "LINESTRING(82.943274 55.033261, 82.944702 55.032748, 82.944782 55.032729, 82.944841 55.032712)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Ядринцевский Конный спуск"]
                    },
                    "outcoming_path_comment": "100 m straight",
                    "turn_angle": 101,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Sharp left turn onto Военная Горка 5-я линия",
                    "icon": "crossroad_sharply_left",
                    "id": "3411738603527222111",
                    "outcoming_path": {
                        "distance": 102,
                        "duration": 28,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 179,
                                "selection": "LINESTRING(82.944841 55.032712, 82.944857 55.032781, 82.944861 55.032839, 82.944849 55.032917, 82.944808 55.033054, 82.944776 55.033158, 82.944767 55.033296, 82.944787 55.033389, 82.944825 55.033484, 82.944876 55.033552, 82.944936 55.033611)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Военная Горка 5-я линия"]
                    },
                    "outcoming_path_comment": "100 m straight",
                    "turn_angle": -117,
                    "turn_direction": "sharply_left",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn",
                    "icon": "crossroad_left",
                    "id": "10169939594307034555",
                    "outcoming_path": {
                        "distance": 32,
                        "duration": 9,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 56,
                                "selection": "LINESTRING(82.944936 55.033611, 82.944716 55.033753, 82.944675 55.033819, 82.944667 55.033847)",
                                "style": "normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "30 m straight",
                    "turn_angle": -46,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "finish",
                    "icon": "finish",
                    "id": "6148214200347478616",
                    "outcoming_path_comment": "You have arrived!",
                    "type": "end"
                }
            ],
            "reliability": 1.0,
            "route_id": "novosibirsk-cr-mosesd.m9/carrouting/1686720870.383555",
            "total_distance": 18292,
            "total_duration": 2713,
            "type": "carrouting",
            "ui_total_distance": {
                "unit": "km",
                "value": "18"
            },
            "ui_total_duration": "45 min",
            "waypoints": [
                {
                    "original_point": {
                        "lat": 54.94319037327818,
                        "lon": 82.93084305554359
                    },
                    "projected_point": {
                        "lat": 54.94319037327818,
                        "lon": 82.93084305554359
                    },
                    "transit": false
                },
                {
                    "original_point": {
                        "lat": 55.03384772813713,
                        "lon": 82.9446678582716
                    },
                    "projected_point": {
                        "lat": 55.03384772813713,
                        "lon": 82.9446678582716
                    },
                    "transit": false
                }
            ]
        },
        {
            "algorithm": "with traffic jams",
            "begin_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(82.930569 54.943206, 82.930842 54.943190)"
                }
            },
            "end_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(82.944667 55.033847, 82.945039 55.033878)"
                }
            },
            "filter_road_types": ["dirt_road", "highway"],
            "id": "13153972920658021912",
            "maneuvers": [
                {
                    "comment": "start",
                    "icon": "start",
                    "id": "10633552378311928611",
                    "outcoming_path": {
                        "distance": 329,
                        "duration": 92,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 577,
                                "selection": "LINESTRING(82.930843 54.943190, 82.930583 54.941787, 82.930465 54.941540, 82.930236 54.941063, 82.930136 54.940856, 82.930100 54.940663, 82.930078 54.940539, 82.930052 54.940402, 82.930025 54.940258)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Петухова"]
                    },
                    "outcoming_path_comment": "350 m straight",
                    "type": "begin"
                },
                {
                    "comment": "Right turn onto Петухова",
                    "icon": "crossroad_right",
                    "id": "9671200036957121452",
                    "outcoming_path": {
                        "distance": 1994,
                        "duration": 277,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 1617,
                                "selection": "LINESTRING(82.930025 54.940258, 82.928138 54.940373, 82.926186 54.940493, 82.924954 54.940569, 82.921280 54.940795, 82.915576 54.941144)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 1365,
                                "selection": "LINESTRING(82.915576 54.941144, 82.912266 54.941348, 82.911671 54.941384, 82.910257 54.941467, 82.909929 54.941486, 82.909701 54.941500, 82.906981 54.941660, 82.906201 54.941706, 82.905744 54.941733, 82.905333 54.941756, 82.904902 54.941782, 82.903372 54.941872)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 493,
                                "selection": "LINESTRING(82.903372 54.941872, 82.900358 54.942049, 82.899235 54.942115, 82.899188 54.942122, 82.899160 54.942127, 82.899139 54.942134, 82.899067 54.942161, 82.898999 54.942195)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Петухова"]
                    },
                    "outcoming_path_comment": "2 km straight",
                    "turn_angle": 90,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Roundabout, exit 1 to Сибиряков-Гвардейцев",
                    "icon": "ringroad_right_90",
                    "id": "4870511864883504575",
                    "outcoming_path": {
                        "distance": 51,
                        "duration": 9,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 77,
                                "selection": "LINESTRING(82.898999 54.942195, 82.898909 54.942245, 82.898528 54.942490)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 12,
                                "selection": "LINESTRING(82.898528 54.942490, 82.898459 54.942541)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Сибиряков-Гвардейцев"]
                    },
                    "outcoming_path_comment": "50 m straight",
                    "ringroad_exit_number": 1,
                    "turn_angle": 85,
                    "type": "ringroad"
                },
                {
                    "comment": "Exit 1 to Сибиряков-Гвардейцев Street",
                    "icon": "ringroad_exit",
                    "id": "18309287819445443759",
                    "outcoming_path": {
                        "distance": 3359,
                        "duration": 777,
                        "geometry": [
                            {
                                "color": "slow",
                                "length": 2446,
                                "selection": "LINESTRING(82.898459 54.942541, 82.898244 54.942830, 82.898200 54.942942, 82.898201 54.943002, 82.898262 54.943334, 82.898377 54.943951, 82.898464 54.944420, 82.898559 54.944929, 82.898566 54.944970, 82.898621 54.945264, 82.898826 54.946367, 82.898880 54.946660, 82.899129 54.947999, 82.899191 54.948340, 82.899317 54.949033, 82.899438 54.949702, 82.899500 54.950041, 82.899563 54.950388, 82.899636 54.950791, 82.899655 54.950896, 82.899703 54.951160, 82.899833 54.951878, 82.900024 54.952928, 82.900061 54.953134, 82.900133 54.953535, 82.900313 54.954524, 82.900412 54.955067)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 202,
                                "selection": "LINESTRING(82.900412 54.955067, 82.900601 54.956104)",
                                "style": "bridge"
                            },
                            {
                                "color": "slow",
                                "length": 1357,
                                "selection": "LINESTRING(82.900601 54.956104, 82.900703 54.956672, 82.900961 54.958091, 82.901020 54.958416, 82.901130 54.959019, 82.901513 54.961132, 82.901706 54.962233, 82.901835 54.963070)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 187,
                                "selection": "LINESTRING(82.901835 54.963070, 82.901841 54.963178, 82.901852 54.963356, 82.901863 54.963549, 82.901858 54.963951, 82.901857 54.964038)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 924,
                                "selection": "LINESTRING(82.901857 54.964038, 82.901856 54.964175, 82.901847 54.964248, 82.901835 54.964305, 82.901811 54.964361, 82.901781 54.964416, 82.901743 54.964460, 82.901720 54.964477, 82.901582 54.964595, 82.901292 54.964839, 82.901218 54.964922, 82.901144 54.965020, 82.900661 54.966159, 82.899766 54.968249, 82.899753 54.968281, 82.899612 54.968592)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 159,
                                "selection": "LINESTRING(82.899612 54.968592, 82.899251 54.969390)",
                                "style": "bridge"
                            },
                            {
                                "color": "normal",
                                "length": 613,
                                "selection": "LINESTRING(82.899251 54.969390, 82.899077 54.969776, 82.898973 54.969991, 82.898319 54.971347, 82.898145 54.971711, 82.897970 54.972076, 82.897895 54.972234, 82.897809 54.972443)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Сибиряков-Гвардейцев"]
                    },
                    "outcoming_path_comment": "3.4 km straight",
                    "type": "ringroad_exit"
                },
                {
                    "comment": "Right turn onto Немировича-Данченко",
                    "icon": "crossroad_right",
                    "id": "7069387219009011657",
                    "outcoming_path": {
                        "distance": 5404,
                        "duration": 1041,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 775,
                                "selection": "LINESTRING(82.897809 54.972443, 82.898829 54.972499, 82.900354 54.972583, 82.900957 54.972641, 82.901459 54.972724, 82.901687 54.972776, 82.901805 54.972802, 82.902070 54.972866, 82.902352 54.972934, 82.902742 54.973054, 82.902878 54.973106, 82.903144 54.973208, 82.903329 54.973292, 82.904142 54.973715, 82.904177 54.973735)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 336,
                                "selection": "LINESTRING(82.904177 54.973735, 82.904758 54.974059, 82.904768 54.974065, 82.905009 54.974212, 82.905284 54.974374, 82.906309 54.974967)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 372,
                                "selection": "LINESTRING(82.906309 54.974967, 82.906859 54.975293, 82.907441 54.975639, 82.907556 54.975707, 82.908095 54.976027, 82.908634 54.976348)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 2308,
                                "selection": "LINESTRING(82.908634 54.976348, 82.908776 54.976432, 82.909063 54.976602, 82.909484 54.976852, 82.909830 54.977057, 82.910040 54.977182, 82.911098 54.977810, 82.911621 54.978121, 82.911976 54.978406, 82.912040 54.978457, 82.912263 54.978700, 82.912374 54.978850, 82.912446 54.978948, 82.912616 54.979236, 82.912757 54.979544, 82.912836 54.979714, 82.912937 54.980012, 82.912993 54.980278, 82.913085 54.980875, 82.913187 54.981662, 82.913385 54.983182, 82.913529 54.984291, 82.913654 54.985256, 82.913703 54.985635, 82.913753 54.986014, 82.913802 54.986392, 82.913810 54.986567, 82.913848 54.987370)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 948,
                                "selection": "LINESTRING(82.913848 54.987370, 82.913853 54.987456, 82.913853 54.987718, 82.913851 54.987888, 82.913845 54.988424, 82.913840 54.988645, 82.913830 54.989035, 82.913825 54.989268, 82.913808 54.989959, 82.913790 54.990660, 82.913781 54.990801, 82.913765 54.991034, 82.913759 54.991128, 82.913740 54.991412, 82.913735 54.991507, 82.913733 54.991530, 82.913720 54.992005, 82.913716 54.992139, 82.913710 54.992257)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 2056,
                                "selection": "LINESTRING(82.913710 54.992257, 82.913711 54.992323, 82.913767 54.992555, 82.913844 54.992770, 82.913859 54.992803, 82.913932 54.992969, 82.914074 54.993217, 82.914234 54.993454, 82.914402 54.993648, 82.914589 54.993842, 82.914780 54.994009, 82.915048 54.994230, 82.917475 54.995870, 82.917847 54.996121, 82.918159 54.996332, 82.918375 54.996478, 82.918613 54.996639, 82.919622 54.997322, 82.924579 55.000671)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 2069,
                                "selection": "LINESTRING(82.924579 55.000671, 82.927740 55.002808, 82.932077 55.005738, 82.932325 55.005906, 82.932867 55.006273, 82.933410 55.006639, 82.933952 55.007006, 82.934495 55.007373, 82.935038 55.007740, 82.935580 55.008107, 82.936124 55.008473, 82.936407 55.008677, 82.936590 55.008808)",
                                "style": "bridge"
                            },
                            {
                                "color": "normal",
                                "length": 277,
                                "selection": "LINESTRING(82.936590 55.008808, 82.936737 55.008913, 82.938112 55.009938)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 72,
                                "selection": "LINESTRING(82.938112 55.009938, 82.938510 55.010235)",
                                "style": "bridge"
                            },
                            {
                                "color": "normal",
                                "length": 102,
                                "selection": "LINESTRING(82.938510 55.010235, 82.938560 55.010272, 82.938666 55.010351, 82.938775 55.010401, 82.938950 55.010480, 82.938968 55.010488, 82.939065 55.010529, 82.939115 55.010552, 82.939180 55.010591)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 164,
                                "selection": "LINESTRING(82.939180 55.010591, 82.939255 55.010643, 82.939700 55.010995, 82.940052 55.011276)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Немировича-Данченко"]
                    },
                    "outcoming_path_comment": "5.4 km straight",
                    "turn_angle": 99,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Якушева",
                    "icon": "crossroad_right",
                    "id": "6570462503812422496",
                    "outcoming_path": {
                        "distance": 219,
                        "duration": 98,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 389,
                                "selection": "LINESTRING(82.940052 55.011276, 82.940150 55.011234, 82.940246 55.011194, 82.940421 55.011119, 82.940521 55.011076, 82.941055 55.010869, 82.941273 55.010785, 82.941410 55.010738, 82.941485 55.010714, 82.941531 55.010718, 82.941569 55.010729, 82.941592 55.010740, 82.941622 55.010748, 82.941658 55.010749, 82.941715 55.010738, 82.941961 55.010634, 82.942189 55.010539, 82.942878 55.010245, 82.942934 55.010221)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Якушева"]
                    },
                    "outcoming_path_comment": "200 m straight",
                    "turn_angle": 91,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Бориса Богаткова",
                    "icon": "crossroad_left",
                    "id": "11702717959314561370",
                    "outcoming_path": {
                        "distance": 2358,
                        "duration": 451,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 2376,
                                "selection": "LINESTRING(82.942934 55.010221, 82.943136 55.010382, 82.943781 55.010897, 82.943863 55.010963, 82.944281 55.011296, 82.944877 55.011771, 82.945029 55.011893, 82.945192 55.012023, 82.945470 55.012244, 82.945885 55.012576, 82.946027 55.012692, 82.946284 55.012901, 82.946540 55.013108, 82.946662 55.013207, 82.946747 55.013277, 82.946796 55.013323, 82.946846 55.013361, 82.947581 55.013930, 82.947922 55.014195, 82.948042 55.014287, 82.948611 55.014728, 82.948731 55.014821, 82.948840 55.014908, 82.949188 55.015187, 82.950433 55.016187, 82.950573 55.016300, 82.950727 55.016424, 82.950940 55.016595, 82.951542 55.017078, 82.952512 55.017858, 82.952606 55.017934, 82.953347 55.018529, 82.953485 55.018640, 82.953572 55.018704, 82.954440 55.019345, 82.955434 55.020143)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 1234,
                                "selection": "LINESTRING(82.955434 55.020143, 82.956357 55.020886, 82.957134 55.021510, 82.957260 55.021611, 82.957533 55.021830, 82.957713 55.021975, 82.958228 55.022388, 82.959146 55.023126, 82.959629 55.023514, 82.960112 55.023902, 82.960628 55.024316, 82.960997 55.024613, 82.961085 55.024683, 82.961193 55.024770, 82.961876 55.025319)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 544,
                                "selection": "LINESTRING(82.961876 55.025319, 82.962033 55.025409, 82.962753 55.025988, 82.962813 55.026035, 82.963034 55.026214, 82.963155 55.026310, 82.963434 55.026534, 82.964077 55.027052, 82.964744 55.027588)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Бориса Богаткова"]
                    },
                    "outcoming_path_comment": "2.4 km straight",
                    "turn_angle": -91,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Василия Старощука",
                    "icon": "crossroad_left",
                    "id": "4333724055249995167",
                    "outcoming_path": {
                        "distance": 1439,
                        "duration": 193,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 2287,
                                "selection": "LINESTRING(82.964744 55.027588, 82.964595 55.027651, 82.964400 55.027731, 82.964272 55.027780, 82.964014 55.027878, 82.963780 55.027968, 82.963482 55.028082, 82.963336 55.028137, 82.963090 55.028232, 82.962430 55.028483, 82.962346 55.028515, 82.961522 55.028809, 82.961061 55.028974, 82.959469 55.029542, 82.957487 55.030250, 82.956387 55.030643, 82.956117 55.030743, 82.956001 55.030785, 82.955148 55.031101, 82.954796 55.031231, 82.954000 55.031525, 82.953703 55.031635, 82.952958 55.031910, 82.952902 55.031918, 82.952848 55.031920, 82.952798 55.031914, 82.952743 55.031899, 82.952153 55.031685, 82.951734 55.031533, 82.951505 55.031449, 82.951418 55.031424, 82.951337 55.031404, 82.951251 55.031390, 82.951179 55.031383, 82.951095 55.031379, 82.951002 55.031380, 82.950913 55.031387, 82.950809 55.031398, 82.949186 55.031658, 82.948307 55.031799, 82.948068 55.031837, 82.947718 55.031883, 82.947476 55.031915, 82.947090 55.031966, 82.946919 55.031995, 82.946806 55.032017)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 26,
                                "selection": "LINESTRING(82.946806 55.032017, 82.946761 55.032026, 82.946590 55.032071)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 231,
                                "selection": "LINESTRING(82.946590 55.032071, 82.946345 55.032168, 82.945622 55.032434, 82.945409 55.032514, 82.945006 55.032655, 82.944910 55.032692, 82.944841 55.032712)",
                                "style": "living_zone"
                            }
                        ],
                        "names": ["Василия Старощука"]
                    },
                    "outcoming_path_comment": "1.4 km straight",
                    "turn_angle": -89,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Военная Горка 5-я линия",
                    "icon": "crossroad_right",
                    "id": "17276634785659030774",
                    "outcoming_path": {
                        "distance": 102,
                        "duration": 28,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 179,
                                "selection": "LINESTRING(82.944841 55.032712, 82.944857 55.032781, 82.944861 55.032839, 82.944849 55.032917, 82.944808 55.033054, 82.944776 55.033158, 82.944767 55.033296, 82.944787 55.033389, 82.944825 55.033484, 82.944876 55.033552, 82.944936 55.033611)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Военная Горка 5-я линия"]
                    },
                    "outcoming_path_comment": "100 m straight",
                    "turn_angle": 56,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn",
                    "icon": "crossroad_left",
                    "id": "7516549236417761305",
                    "outcoming_path": {
                        "distance": 32,
                        "duration": 9,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 56,
                                "selection": "LINESTRING(82.944936 55.033611, 82.944716 55.033753, 82.944675 55.033819, 82.944667 55.033847)",
                                "style": "normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "30 m straight",
                    "turn_angle": -46,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "finish",
                    "icon": "finish",
                    "id": "6148214200347478616",
                    "outcoming_path_comment": "You have arrived!",
                    "type": "end"
                }
            ],
            "reliability": 1.0,
            "route_id": "novosibirsk-cr-mosesd.m9/carrouting/1686720870.385455",
            "total_distance": 15287,
            "total_duration": 2976,
            "type": "carrouting",
            "ui_total_distance": {
                "unit": "km",
                "value": "15"
            },
            "ui_total_duration": "49 min",
            "waypoints": [
                {
                    "original_point": {
                        "lat": 54.94319037327818,
                        "lon": 82.93084305554359
                    },
                    "projected_point": {
                        "lat": 54.94319037327818,
                        "lon": 82.93084305554359
                    },
                    "transit": false
                },
                {
                    "original_point": {
                        "lat": 55.03384772813713,
                        "lon": 82.9446678582716
                    },
                    "projected_point": {
                        "lat": 55.03384772813713,
                        "lon": 82.9446678582716
                    },
                    "transit": false
                }
            ]
        },
        {
            "algorithm": "with traffic jams",
            "begin_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(82.930569 54.943206, 82.930842 54.943190)"
                }
            },
            "end_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(82.944667 55.033847, 82.945039 55.033878)"
                }
            },
            "filter_road_types": ["dirt_road", "highway"],
            "id": "13227088774468851776",
            "maneuvers": [
                {
                    "comment": "start",
                    "icon": "start",
                    "id": "9777496276174481223",
                    "outcoming_path": {
                        "distance": 329,
                        "duration": 96,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 577,
                                "selection": "LINESTRING(82.930843 54.943190, 82.930583 54.941787, 82.930465 54.941540, 82.930236 54.941063, 82.930136 54.940856, 82.930100 54.940663, 82.930078 54.940539, 82.930052 54.940402, 82.930025 54.940258)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Петухова"]
                    },
                    "outcoming_path_comment": "350 m straight",
                    "type": "begin"
                },
                {
                    "comment": "Right turn onto Петухова",
                    "icon": "crossroad_right",
                    "id": "9785017754291556817",
                    "outcoming_path": {
                        "distance": 246,
                        "duration": 34,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 429,
                                "selection": "LINESTRING(82.930025 54.940258, 82.928138 54.940373, 82.926186 54.940493)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Петухова"]
                    },
                    "outcoming_path_comment": "250 m straight",
                    "turn_angle": 90,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Северный проезд",
                    "icon": "crossroad_right",
                    "id": "17727716718007112926",
                    "outcoming_path": {
                        "distance": 953,
                        "duration": 153,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 1680,
                                "selection": "LINESTRING(82.926186 54.940493, 82.926323 54.941062, 82.926536 54.941948, 82.926575 54.942112, 82.926654 54.942436, 82.926848 54.943249, 82.926935 54.943560, 82.926991 54.943762, 82.927074 54.944057, 82.927286 54.944818, 82.927337 54.944999, 82.927366 54.945103, 82.927592 54.945913, 82.927713 54.946345, 82.927912 54.947061, 82.927953 54.947208, 82.928015 54.947431, 82.928041 54.947520, 82.928046 54.947541, 82.928140 54.947877, 82.928153 54.947922, 82.928168 54.947978, 82.928186 54.948042, 82.928225 54.948178, 82.928335 54.948574, 82.928389 54.948767, 82.928471 54.949062)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Северный проезд"]
                    },
                    "outcoming_path_comment": "1 km straight",
                    "turn_angle": 92,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Северный проезд",
                    "icon": "crossroad_left",
                    "id": "16010522680466587367",
                    "outcoming_path": {
                        "distance": 1831,
                        "duration": 386,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 2714,
                                "selection": "LINESTRING(82.928471 54.949062, 82.927636 54.949113, 82.927578 54.949116, 82.927072 54.949146, 82.926562 54.949177, 82.926480 54.949182, 82.925700 54.949229, 82.925337 54.949251, 82.925111 54.949264, 82.923799 54.949343, 82.923451 54.949364, 82.922829 54.949401, 82.922662 54.949412, 82.921798 54.949463, 82.921394 54.949488, 82.919640 54.949593, 82.919325 54.949612, 82.919085 54.949626, 82.918172 54.949681, 82.917821 54.949702, 82.916990 54.949752, 82.916689 54.949770, 82.916378 54.949789, 82.916200 54.949799, 82.916030 54.949810, 82.915510 54.949841, 82.915322 54.949852, 82.915286 54.949854, 82.914621 54.949894, 82.913656 54.949952, 82.913383 54.949969, 82.912273 54.950035, 82.912181 54.950041, 82.911781 54.950065, 82.911270 54.950095, 82.910930 54.950116, 82.910724 54.950128, 82.909902 54.950177, 82.909598 54.950196, 82.908665 54.950251, 82.908094 54.950285, 82.907903 54.950297, 82.907572 54.950317, 82.907106 54.950345, 82.906698 54.950370, 82.906550 54.950378, 82.906269 54.950395, 82.906084 54.950406, 82.905973 54.950413, 82.905738 54.950427, 82.905548 54.950438, 82.905276 54.950455, 82.904217 54.950518)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 512,
                                "selection": "LINESTRING(82.904217 54.950518, 82.901185 54.950699, 82.899829 54.950780, 82.899636 54.950791)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Северный проезд"]
                    },
                    "outcoming_path_comment": "1.8 km straight",
                    "turn_angle": -93,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Сибиряков-Гвардейцев",
                    "icon": "crossroad_right",
                    "id": "17559710314564836476",
                    "outcoming_path": {
                        "distance": 3148,
                        "duration": 607,
                        "geometry": [
                            {
                                "color": "slow",
                                "length": 833,
                                "selection": "LINESTRING(82.899636 54.950791, 82.899655 54.950896, 82.899703 54.951160, 82.899833 54.951878, 82.900024 54.952928, 82.900061 54.953134, 82.900133 54.953535, 82.900313 54.954524, 82.900412 54.955067)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 202,
                                "selection": "LINESTRING(82.900412 54.955067, 82.900601 54.956104)",
                                "style": "bridge"
                            },
                            {
                                "color": "slow",
                                "length": 1357,
                                "selection": "LINESTRING(82.900601 54.956104, 82.900703 54.956672, 82.900961 54.958091, 82.901020 54.958416, 82.901130 54.959019, 82.901513 54.961132, 82.901706 54.962233, 82.901835 54.963070)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 187,
                                "selection": "LINESTRING(82.901835 54.963070, 82.901841 54.963178, 82.901852 54.963356, 82.901863 54.963549, 82.901858 54.963951, 82.901857 54.964038)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 924,
                                "selection": "LINESTRING(82.901857 54.964038, 82.901856 54.964175, 82.901847 54.964248, 82.901835 54.964305, 82.901811 54.964361, 82.901781 54.964416, 82.901743 54.964460, 82.901720 54.964477, 82.901582 54.964595, 82.901292 54.964839, 82.901218 54.964922, 82.901144 54.965020, 82.900661 54.966159, 82.899766 54.968249, 82.899753 54.968281, 82.899612 54.968592)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 159,
                                "selection": "LINESTRING(82.899612 54.968592, 82.899251 54.969390)",
                                "style": "bridge"
                            },
                            {
                                "color": "normal",
                                "length": 613,
                                "selection": "LINESTRING(82.899251 54.969390, 82.899077 54.969776, 82.898973 54.969991, 82.898319 54.971347, 82.898145 54.971711, 82.897970 54.972076, 82.897895 54.972234, 82.897809 54.972443)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 801,
                                "selection": "LINESTRING(82.897809 54.972443, 82.897779 54.972513, 82.897765 54.972620, 82.897642 54.973451, 82.897609 54.973668, 82.897497 54.974428, 82.897382 54.975201, 82.897315 54.975653, 82.897282 54.975873, 82.897262 54.976005, 82.897221 54.976284, 82.897181 54.976559)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 442,
                                "selection": "LINESTRING(82.897181 54.976559, 82.897169 54.976638, 82.897103 54.977086, 82.896924 54.978291, 82.896867 54.978631, 82.896833 54.978834)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Сибиряков-Гвардейцев"]
                    },
                    "outcoming_path_comment": "3.1 km straight",
                    "turn_angle": 91,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Покрышкина",
                    "icon": "crossroad_left",
                    "id": "15779943918522536763",
                    "outcoming_path": {
                        "distance": 608,
                        "duration": 107,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 94,
                                "selection": "LINESTRING(82.896833 54.978834, 82.896635 54.978939, 82.896195 54.979153)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 977,
                                "selection": "LINESTRING(82.896195 54.979153, 82.896043 54.979227, 82.895591 54.979448, 82.893631 54.980405, 82.893105 54.980661, 82.892015 54.981193, 82.891694 54.981350, 82.891648 54.981372, 82.891285 54.981550, 82.890327 54.982018, 82.889975 54.982189, 82.889924 54.982214, 82.889877 54.982240, 82.889796 54.982286, 82.889737 54.982333, 82.889669 54.982403, 82.889646 54.982474)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Покрышкина"]
                    },
                    "outcoming_path_comment": "600 m straight",
                    "turn_angle": -45,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Roundabout, exit 3 to Титова",
                    "icon": "ringroad_left_45",
                    "id": "12577626952770467547",
                    "outcoming_path": {
                        "distance": 151,
                        "duration": 32,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 49,
                                "selection": "LINESTRING(82.889646 54.982474, 82.889644 54.982545, 82.889652 54.982600, 82.889669 54.982649, 82.889700 54.982728)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 102,
                                "selection": "LINESTRING(82.889700 54.982728, 82.889724 54.982747, 82.889738 54.982758, 82.889770 54.982792, 82.889795 54.982827, 82.889813 54.982863, 82.889824 54.982900, 82.889827 54.982938, 82.889824 54.982975, 82.889813 54.983013, 82.889795 54.983049, 82.889770 54.983084, 82.889738 54.983117, 82.889700 54.983148, 82.889656 54.983176, 82.889607 54.983201)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 116,
                                "selection": "LINESTRING(82.889607 54.983201, 82.889554 54.983223, 82.889497 54.983241, 82.889435 54.983255, 82.889373 54.983266, 82.889308 54.983272, 82.889242 54.983274, 82.889177 54.983272, 82.889112 54.983266, 82.889049 54.983255, 82.888988 54.983241, 82.888931 54.983223, 82.888877 54.983201, 82.888828 54.983176, 82.888784 54.983148, 82.888746 54.983117, 82.888715 54.983084)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Титова"]
                    },
                    "outcoming_path_comment": "150 m straight",
                    "ringroad_exit_number": 3,
                    "turn_angle": -65,
                    "type": "ringroad"
                },
                {
                    "comment": "Exit 3 to Титова Street",
                    "icon": "ringroad_exit",
                    "id": "8977544368460576938",
                    "outcoming_path": {
                        "distance": 1034,
                        "duration": 184,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 66,
                                "selection": "LINESTRING(82.888715 54.983084, 82.888649 54.983041, 82.888589 54.983008, 82.888526 54.982979, 82.888437 54.982943, 82.888342 54.982916, 82.888230 54.982895)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 414,
                                "selection": "LINESTRING(82.888230 54.982895, 82.887935 54.982880, 82.886289 54.982799, 82.885403 54.982755, 82.884517 54.982711)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 21,
                                "selection": "LINESTRING(82.884517 54.982711, 82.884324 54.982702)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 1310,
                                "selection": "LINESTRING(82.884324 54.982702, 82.883068 54.982639, 82.881809 54.982577, 82.880347 54.982503, 82.876072 54.982312, 82.874717 54.982251, 82.873957 54.982217, 82.872588 54.982155)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Титова"]
                    },
                    "outcoming_path_comment": "1 km straight",
                    "type": "ringroad_exit"
                },
                {
                    "comment": "Roundabout, exit 1 to Станиславского",
                    "icon": "ringroad_right_90",
                    "id": "18040688238492347474",
                    "outcoming_path": {
                        "distance": 34,
                        "duration": 6,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 60,
                                "selection": "LINESTRING(82.872588 54.982155, 82.872424 54.982159, 82.872333 54.982165, 82.872257 54.982175, 82.872177 54.982190, 82.872117 54.982206, 82.872073 54.982228)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Станиславского"]
                    },
                    "outcoming_path_comment": "30 m straight",
                    "ringroad_exit_number": 1,
                    "turn_angle": 89,
                    "type": "ringroad"
                },
                {
                    "comment": "Exit 1 to Станиславского Street",
                    "icon": "ringroad_exit",
                    "id": "16664814697538030850",
                    "outcoming_path": {
                        "distance": 1588,
                        "duration": 717,
                        "geometry": [
                            {
                                "color": "normal",
                                "length": 65,
                                "selection": "LINESTRING(82.872073 54.982228, 82.871990 54.982281, 82.871947 54.982315, 82.871905 54.982361, 82.871851 54.982443, 82.871818 54.982528)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 664,
                                "selection": "LINESTRING(82.871818 54.982528, 82.871804 54.982622, 82.871763 54.982906, 82.871626 54.983833, 82.871604 54.983988, 82.871429 54.985188, 82.871318 54.985941)",
                                "style": "normal"
                            },
                            {
                                "color": "slow-jams",
                                "length": 1533,
                                "selection": "LINESTRING(82.871318 54.985941, 82.871307 54.986015, 82.871262 54.986327, 82.871182 54.986872, 82.871098 54.987445, 82.871060 54.987700, 82.871046 54.987797, 82.870958 54.988401, 82.870852 54.989124, 82.870756 54.989781, 82.870661 54.990430, 82.870652 54.990493, 82.870618 54.990721, 82.870542 54.991239, 82.870467 54.991757, 82.870457 54.991824, 82.870165 54.993817)",
                                "style": "normal"
                            },
                            {
                                "color": "slow-jams",
                                "length": 103,
                                "selection": "LINESTRING(82.870165 54.993817, 82.870164 54.993829, 82.870175 54.993920, 82.870214 54.994004, 82.870272 54.994085, 82.870379 54.994333)",
                                "style": "normal"
                            },
                            {
                                "color": "slow",
                                "length": 425,
                                "selection": "LINESTRING(82.870379 54.994333, 82.870509 54.994588, 82.870537 54.994687, 82.870548 54.994797, 82.870545 54.994825, 82.870531 54.994920, 82.870492 54.995030, 82.870424 54.995136, 82.870338 54.995209, 82.870239 54.995324, 82.870096 54.995445, 82.869948 54.995580, 82.869917 54.995660, 82.869807 54.996420)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Станиславского"]
                    },
                    "outcoming_path_comment": "1.6 km straight",
                    "type": "ringroad_exit"
                },
                {
                    "comment": "Roundabout, exit 2 to Энергетиков проезд",
                    "icon": "ringroad_forward",
                    "id": "1024496263231102358",
                    "outcoming_path": {
                        "distance": 243,
                        "duration": 96,
                        "geometry": [
                            {
                                "color": "slow",
                                "length": 100,
                                "selection": "LINESTRING(82.869807 54.996420, 82.869829 54.996482, 82.869906 54.996564, 82.870291 54.996852)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 328,
                                "selection": "LINESTRING(82.870291 54.996852, 82.870971 54.997060, 82.871225 54.997172, 82.871350 54.997248, 82.871477 54.997364, 82.871544 54.997446, 82.871572 54.997505, 82.871581 54.997577, 82.871565 54.997638, 82.871537 54.997685, 82.871495 54.997730, 82.871432 54.997773, 82.870966 54.998046)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Энергетиков проезд"]
                    },
                    "outcoming_path_comment": "250 m straight",
                    "ringroad_exit_number": 2,
                    "turn_angle": 1,
                    "type": "ringroad"
                },
                {
                    "comment": "Exit 2 to Энергетиков проезд Street",
                    "icon": "ringroad_exit",
                    "id": "8377752574918657139",
                    "outcoming_path": {
                        "distance": 4809,
                        "duration": 445,
                        "geometry": [
                            {
                                "color": "normal",
                                "length": 174,
                                "selection": "LINESTRING(82.870966 54.998046, 82.870953 54.998275, 82.870950 54.998558, 82.870946 54.998588, 82.870933 54.998695, 82.870920 54.998801, 82.870912 54.998867, 82.870903 54.998943)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 1249,
                                "selection": "LINESTRING(82.870903 54.998943, 82.870352 55.003472, 82.870301 55.003884, 82.870278 55.004076, 82.870264 55.004344, 82.870270 55.004385, 82.870289 55.004544, 82.870326 55.004720, 82.870395 55.004889, 82.870469 55.005049, 82.870616 55.005344)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 164,
                                "selection": "LINESTRING(82.870616 55.005344, 82.870706 55.005527, 82.871049 55.006155)",
                                "style": "bridge"
                            },
                            {
                                "color": "fast",
                                "length": 3171,
                                "selection": "LINESTRING(82.871049 55.006155, 82.871356 55.006718, 82.871540 55.007041, 82.871733 55.007334, 82.871954 55.007616, 82.872262 55.007948, 82.872570 55.008230, 82.872933 55.008509, 82.873339 55.008794, 82.874673 55.009627, 82.875404 55.010084, 82.875459 55.010119, 82.876254 55.010615, 82.880320 55.013156, 82.880839 55.013481, 82.881358 55.013805, 82.881462 55.013870, 82.882104 55.014271, 82.886612 55.017088, 82.889089 55.018635)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 1348,
                                "selection": "LINESTRING(82.889089 55.018635, 82.893727 55.021539, 82.896816 55.023473, 82.897269 55.023756)",
                                "style": "bridge"
                            },
                            {
                                "color": "fast",
                                "length": 400,
                                "selection": "LINESTRING(82.897269 55.023756, 82.897661 55.024002, 82.898293 55.024396, 82.898915 55.024771, 82.899049 55.024845, 82.899395 55.025039, 82.899509 55.025095, 82.899782 55.025230)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 195,
                                "selection": "LINESTRING(82.899782 55.025230, 82.900149 55.025385, 82.901233 55.025798)",
                                "style": "bridge"
                            },
                            {
                                "color": "fast",
                                "length": 75,
                                "selection": "LINESTRING(82.901233 55.025798, 82.901551 55.025919, 82.901798 55.026013)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 348,
                                "selection": "LINESTRING(82.901798 55.026013, 82.903535 55.026691, 82.904046 55.026890, 82.904385 55.027023)",
                                "style": "tunnel"
                            },
                            {
                                "color": "fast",
                                "length": 971,
                                "selection": "LINESTRING(82.904385 55.027023, 82.904450 55.027048, 82.904819 55.027207, 82.905171 55.027397, 82.905266 55.027456, 82.905353 55.027509, 82.905601 55.027662, 82.905953 55.027928, 82.906400 55.028312, 82.906769 55.028627, 82.907023 55.028844, 82.907538 55.029287, 82.908490 55.030102, 82.908636 55.030238, 82.908844 55.030431, 82.908895 55.030485, 82.909140 55.030739, 82.909167 55.030767, 82.909451 55.031060)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 319,
                                "selection": "LINESTRING(82.909451 55.031060, 82.909520 55.031132, 82.910155 55.031936, 82.910555 55.032443, 82.910642 55.032554)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Энергетиков проезд"]
                    },
                    "outcoming_path_comment": "4.8 km straight",
                    "type": "ringroad_exit"
                },
                {
                    "comment": "Right turn onto Вокзальная магистраль",
                    "icon": "crossroad_right",
                    "id": "12450182133466473056",
                    "outcoming_path": {
                        "distance": 550,
                        "duration": 114,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 637,
                                "selection": "LINESTRING(82.910642 55.032554, 82.910771 55.032526, 82.911971 55.032266, 82.913971 55.031833, 82.915497 55.031502, 82.915618 55.031476, 82.915995 55.031394)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 86,
                                "selection": "LINESTRING(82.915995 55.031394, 82.916176 55.031356, 82.916724 55.031237)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 242,
                                "selection": "LINESTRING(82.916724 55.031237, 82.918129 55.030933, 82.918765 55.030795)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Вокзальная магистраль"]
                    },
                    "outcoming_path_comment": "600 m straight",
                    "turn_angle": 87,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Slight left turn onto Орджоникидзе",
                    "icon": "crossroad_slightly_left",
                    "id": "6229239938153706410",
                    "outcoming_path": {
                        "distance": 864,
                        "duration": 234,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 188,
                                "selection": "LINESTRING(82.918765 55.030795, 82.918870 55.030786, 82.918929 55.030784, 82.918992 55.030788, 82.919659 55.030852, 82.919733 55.030864, 82.919808 55.030884, 82.919869 55.030903, 82.919930 55.030933, 82.919981 55.030955, 82.920034 55.030979, 82.920377 55.031009)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 606,
                                "selection": "LINESTRING(82.920377 55.031009, 82.920596 55.031025, 82.921167 55.031077, 82.923231 55.031266, 82.923477 55.031288, 82.923951 55.031331, 82.924123 55.031345, 82.924204 55.031347, 82.924303 55.031342, 82.924394 55.031335, 82.924503 55.031324, 82.924560 55.031321, 82.924604 55.031319, 82.924681 55.031318, 82.924768 55.031322, 82.925202 55.031361, 82.925426 55.031382, 82.925527 55.031400, 82.925647 55.031424, 82.925744 55.031449)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 23,
                                "selection": "LINESTRING(82.925744 55.031449, 82.925887 55.031492, 82.925931 55.031504)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 239,
                                "selection": "LINESTRING(82.925931 55.031504, 82.925964 55.031512, 82.926034 55.031526, 82.926124 55.031540, 82.927100 55.031630, 82.927826 55.031696, 82.927932 55.031700, 82.928019 55.031699, 82.928051 55.031697)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 464,
                                "selection": "LINESTRING(82.928051 55.031697, 82.928099 55.031695, 82.928169 55.031695, 82.928245 55.031698, 82.928289 55.031699, 82.928693 55.031735, 82.929329 55.031791, 82.929572 55.031812, 82.929852 55.031837, 82.930055 55.031855, 82.931316 55.031965, 82.931999 55.032026, 82.932178 55.032042)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Орджоникидзе"]
                    },
                    "outcoming_path_comment": "900 m straight",
                    "turn_angle": -27,
                    "turn_direction": "slightly_left",
                    "type": "crossroad"
                },
                {
                    "comment": "Slight right turn onto Военная",
                    "icon": "crossroad_slightly_right",
                    "id": "2867284909154378074",
                    "outcoming_path": {
                        "distance": 745,
                        "duration": 152,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 833,
                                "selection": "LINESTRING(82.932178 55.032042, 82.932377 55.032000, 82.932595 55.031934, 82.932867 55.031843, 82.933217 55.031714, 82.933279 55.031691, 82.933389 55.031640, 82.934055 55.031337, 82.934141 55.031298, 82.934377 55.031189, 82.935033 55.030890, 82.935409 55.030719, 82.936078 55.030414, 82.936097 55.030405, 82.936716 55.030123, 82.937096 55.029950, 82.937167 55.029917, 82.937789 55.029633, 82.938148 55.029469)",
                                "style": "normal"
                            },
                            {
                                "color": "normal",
                                "length": 486,
                                "selection": "LINESTRING(82.938148 55.029469, 82.938467 55.029324, 82.938827 55.029160, 82.939341 55.028925, 82.939599 55.028807, 82.939832 55.028701, 82.939985 55.028631, 82.940190 55.028537, 82.940253 55.028513, 82.941195 55.028144, 82.941640 55.027969)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Военная"]
                    },
                    "outcoming_path_comment": "700 m straight",
                    "turn_angle": 36,
                    "turn_direction": "slightly_right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Тополёвая",
                    "icon": "crossroad_left",
                    "id": "2402844024394046468",
                    "outcoming_path": {
                        "distance": 545,
                        "duration": 122,
                        "geometry": [
                            {
                                "color": "normal",
                                "length": 969,
                                "selection": "LINESTRING(82.941640 55.027969, 82.941857 55.028155, 82.942239 55.028484, 82.942550 55.028751, 82.942800 55.028965, 82.942897 55.029048, 82.943005 55.029141, 82.943271 55.029369, 82.943456 55.029528, 82.944082 55.030066, 82.944507 55.030430, 82.944582 55.030493, 82.944747 55.030627, 82.945030 55.030855, 82.945057 55.030877, 82.945099 55.030907, 82.945326 55.031065, 82.945412 55.031124, 82.945479 55.031163, 82.945641 55.031259, 82.945721 55.031307, 82.945745 55.031323, 82.945851 55.031400, 82.946045 55.031562, 82.946336 55.031832, 82.946590 55.032071)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Тополёвая"]
                    },
                    "outcoming_path_comment": "500 m straight",
                    "turn_angle": -90,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Ядринцевский Конный спуск",
                    "icon": "crossroad_left",
                    "id": "413106251050737276",
                    "outcoming_path": {
                        "distance": 131,
                        "duration": 27,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 231,
                                "selection": "LINESTRING(82.946590 55.032071, 82.946345 55.032168, 82.945622 55.032434, 82.945409 55.032514, 82.945006 55.032655, 82.944910 55.032692, 82.944841 55.032712)",
                                "style": "living_zone"
                            }
                        ],
                        "names": ["Ядринцевский Конный спуск"]
                    },
                    "outcoming_path_comment": "150 m straight",
                    "turn_angle": -87,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Военная Горка 5-я линия",
                    "icon": "crossroad_right",
                    "id": "14748092064456765541",
                    "outcoming_path": {
                        "distance": 102,
                        "duration": 30,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 179,
                                "selection": "LINESTRING(82.944841 55.032712, 82.944857 55.032781, 82.944861 55.032839, 82.944849 55.032917, 82.944808 55.033054, 82.944776 55.033158, 82.944767 55.033296, 82.944787 55.033389, 82.944825 55.033484, 82.944876 55.033552, 82.944936 55.033611)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Военная Горка 5-я линия"]
                    },
                    "outcoming_path_comment": "100 m straight",
                    "turn_angle": 56,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn",
                    "icon": "crossroad_left",
                    "id": "5069728374392838480",
                    "outcoming_path": {
                        "distance": 32,
                        "duration": 9,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 56,
                                "selection": "LINESTRING(82.944936 55.033611, 82.944716 55.033753, 82.944675 55.033819, 82.944667 55.033847)",
                                "style": "normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "30 m straight",
                    "turn_angle": -46,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "finish",
                    "icon": "finish",
                    "id": "6148214200347478616",
                    "outcoming_path_comment": "You have arrived!",
                    "type": "end"
                }
            ],
            "reliability": 1.0,
            "route_id": "novosibirsk-cr-mosesd.m9/carrouting/1686720870.388315",
            "total_distance": 17943,
            "total_duration": 3550,
            "type": "carrouting",
            "ui_total_distance": {
                "unit": "km",
                "value": "18"
            },
            "ui_total_duration": "59 min",
            "waypoints": [
                {
                    "original_point": {
                        "lat": 54.94319037327818,
                        "lon": 82.93084305554359
                    },
                    "projected_point": {
                        "lat": 54.94319037327818,
                        "lon": 82.93084305554359
                    },
                    "transit": false
                },
                {
                    "original_point": {
                        "lat": 55.03384772813713,
                        "lon": 82.9446678582716
                    },
                    "projected_point": {
                        "lat": 55.03384772813713,
                        "lon": 82.9446678582716
                    },
                    "transit": false
                }
            ]
        }
    ],
    "type": "result"
}

To calculate multiple routes for different points, send a POST request to /routing/7.0.0/global with the following parameters:

  • points — coordinates for the routes:

    • lon — longitude in degrees (required).
    • lat — latitude in degrees (required).

    For each route, an even number of points must be specified.

  • transport — transport type:

    • driving — car.
    • walking — pedestrian.
    • taxi — taxi.
    • bicycle — bicycle.
    • scooter — scooter.
    • emergency — emergency services.
    • truck — truck.

    Route calculation with the emergency transport type is only available for the United Arab Emirates, Oman, and Saudi Arabia.

  • route_mode — route calculation mode:

    • fastest — fastest route considering current traffic conditions or statistical traffic data.
    • shortest — shortest route in distance.
  • traffic_mode — traffic mode:

    • jam — use real-time traffic data.
    • statistics — use historical traffic data.
  • output — result output format:

    • summary — simplified output with only the route duration and length.
    • detailed — full output with the route geometry.

Example request:

curl --location --request POST 'http://routing.api.2gis.com/routing/7.0.0/global?key=API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "points": [
        [
            {
                "lon": 82.93057,
                "lat": 54.943207
            },
            {
                "lon": 82.945039,
                "lat": 55.033879
            }
        ],
        [
           {
                "lon": 82.945039,
                "lat": 55.033879
            },
            {
                "lon": 82.945039,
                "lat": 55.033879
            }
        ]
    ],
    "route_mode": "fastest",
    "traffic_mode": "jam",
    "transport": "driving",
    "output": "summary"
}'

Example response:

response.json
[
    {
        "distance": 18292,
        "duration": 2658,
        "lat1": 54.943207,
        "lat2": 55.033879,
        "lon1": 82.93057,
        "lon2": 82.94503899999999,
        "reliability": 1.0,
        "route": "",
        "status": "OK"
    },
    {
        "distance": 0,
        "duration": 0,
        "lat1": 55.033879,
        "lat2": 55.033879,
        "lon1": 82.94503899999999,
        "lon2": 82.94503899999999,
        "reliability": 1.0,
        "route": "",
        "status": "OK"
    }
]

To build a pedestrian route, send a POST request to /routing/7.0.0/global with the following parameters:

  • points — coordinates for the route:

    • lon — longitude in degrees (required).
    • lat — latitude in degrees (required).
    • "type": "walking" — start/finish point of the route (pedestrian path to the road).
  • "transport": "walking" — pedestrian route.

  • output — result output format:

    • summary — simplified output, only includes time and length of the route.
    • detailed — full output with route geometry.
  • params — additional parameters:

    • pedestrian — pedestrian route parameters:

      • "use_instructions": true — provide navigation instructions for pedestrian routes.
  • filters — exclusion of specific road types:

    • dirt_road — dirt roads.
    • ferry — ferries.
    • highway — highways.

Example request:

curl --location --request POST 'http://routing.api.2gis.com/routing/7.0.0/global?key=API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "points": [
        {
            "type": "walking",
            "lon": 37.582591,
            "lat": 55.775364
        },
        {
            "type": "walking",
            "lon": 37.579206,
            "lat": 55.774362
        }
    ],
    "transport": "walking",
    "params": {
        "pedestrian": {
            "use_instructions": true
        }
    },
    "filters": [
        "dirt_road",
        "ferry",
        "highway"
    ]
}'

Example response:

response.json
{
    "query": {
        "filters": ["dirt_road", "ferry", "highway"],
        "params": {
            "pedestrian": {
                "use_instructions": true
            }
        },
        "points": [
            {
                "lat": 55.775364,
                "lon": 37.582591,
                "type": "walking"
            },
            {
                "lat": 55.774362,
                "lon": 37.579206,
                "type": "walking"
            }
        ],
        "transport": "walking"
    },
    "result": [
        {
            "algorithm": "along the main streets",
            "begin_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.582590 55.775363, 37.582590 55.775382)"
                }
            },
            "end_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.579431 55.774222, 37.579206 55.774362)"
                }
            },
            "filter_road_types": ["highway"],
            "id": "5552266599991687034",
            "maneuvers": [
                {
                    "comment": "start",
                    "icon": "start",
                    "id": "11221663870994091877",
                    "outcoming_path": {
                        "distance": 14,
                        "duration": 9,
                        "geometry": [
                            {
                                "length": 35,
                                "selection": "LINESTRING(37.582590 55.775382, 37.582881 55.775455)",
                                "style": "stairway",
                                "zlevel": "zlevel-normal"
                            },
                            {
                                "length": 10,
                                "selection": "LINESTRING(37.582881 55.775455, 37.582798 55.775434)",
                                "style": "normal",
                                "zlevel": "zlevel-normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "10 m straight",
                    "type": "pedestrian_begin"
                },
                {
                    "attribute": "empty",
                    "comment": "Right turn onto Грузинский Вал",
                    "icon": "crossroad_right",
                    "id": "1647158484299512053",
                    "outcoming_path": {
                        "distance": 36,
                        "duration": 24,
                        "geometry": [
                            {
                                "length": 56,
                                "selection": "LINESTRING(37.582798 55.775434, 37.582875 55.775336, 37.583005 55.775171)",
                                "style": "normal",
                                "zlevel": "zlevel-normal"
                            }
                        ],
                        "names": ["Грузинский Вал"]
                    },
                    "outcoming_path_comment": "40 m straight",
                    "turn_angle": 90,
                    "turn_direction": "right",
                    "type": "pedestrian_crossroad"
                },
                {
                    "attribute": "empty",
                    "comment": "Right turn onto Грузинский Вал",
                    "icon": "crossroad_right",
                    "id": "7390595270948928313",
                    "outcoming_path": {
                        "distance": 123,
                        "duration": 82,
                        "geometry": [
                            {
                                "length": 220,
                                "selection": "LINESTRING(37.583005 55.775171, 37.581314 55.774594)",
                                "style": "normal",
                                "zlevel": "zlevel-normal"
                            }
                        ],
                        "names": ["Грузинский Вал"]
                    },
                    "outcoming_path_comment": "100 m straight",
                    "turn_angle": 84,
                    "turn_direction": "right",
                    "type": "pedestrian_crossroad"
                },
                {
                    "attribute": "empty",
                    "comment": "Right turn",
                    "icon": "crossroad_right",
                    "id": "6963910939827255211",
                    "outcoming_path": {
                        "distance": 29,
                        "duration": 19,
                        "geometry": [
                            {
                                "length": 45,
                                "selection": "LINESTRING(37.581314 55.774594, 37.581153 55.774745, 37.581102 55.774792)",
                                "style": "normal",
                                "zlevel": "zlevel-normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "30 m straight",
                    "turn_angle": 90,
                    "turn_direction": "right",
                    "type": "pedestrian_crossroad"
                },
                {
                    "attribute": "empty",
                    "comment": "Left turn",
                    "icon": "crossroad_left",
                    "id": "8950072501171595954",
                    "outcoming_path": {
                        "distance": 121,
                        "duration": 81,
                        "geometry": [
                            {
                                "length": 217,
                                "selection": "LINESTRING(37.581102 55.774792, 37.580823 55.774697, 37.579793 55.774346, 37.579631 55.774291, 37.579454 55.774230, 37.579431 55.774222)",
                                "style": "normal",
                                "zlevel": "zlevel-normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "100 m straight",
                    "turn_angle": -90,
                    "turn_direction": "left",
                    "type": "pedestrian_crossroad"
                },
                {
                    "comment": "finish",
                    "icon": "finish",
                    "id": "3800574839311844072",
                    "outcoming_path_comment": "You have arrived!",
                    "type": "pedestrian_end"
                }
            ],
            "reliability": 0.0,
            "requested_filters": ["dirt_road", "ferry", "highway"],
            "result_filters": ["dirt_road", "ferry"],
            "route_id": "moscow-pd-mosesd.m1/pedestrianrouting/1687500938.613066",
            "total_distance": 344,
            "total_duration": 230,
            "type": "pedestrianrouting",
            "ui_total_distance": {
                "unit": "m",
                "value": "350"
            },
            "ui_total_duration": "3 min",
            "waypoints": [
                {
                    "original_point": {
                        "lat": 55.77538217638595,
                        "lon": 37.58259061541446
                    },
                    "projected_point": {
                        "lat": 55.77538217638595,
                        "lon": 37.58259061541446
                    },
                    "transit": false
                },
                {
                    "original_point": {
                        "lat": 55.77422291980351,
                        "lon": 37.57943177954939
                    },
                    "projected_point": {
                        "lat": 55.77422291980351,
                        "lon": 37.57943177954939
                    },
                    "transit": false
                }
            ]
        }
    ],
    "type": "result"
}

Pass required

A pass may be required to enter a city or its parts.

  1. To obtain a list of all active passes for trucks, send a GET request to /truck_passes/1.0.0/global:

    Example request:

    curl --location --request GET 'http://routing.api.2gis.com/truck_passes/1.0.0/global?key=API_KEY' \
    --header 'Accept: application/json'
    

    Example response:

    response.json
    [
        {
            "id": 4,
            "names": [
                {
                    "localization": "Ru",
                    "name": "Санкт-Петербург (круглосуточный)"
                }
            ],
            "pass_zone_ids": [5]
        },
        {
            "id": 8,
            "names": [
                {
                    "localization": "Ru",
                    "name": "Москва. СК (ночной)"
                }
            ],
            "pass_zone_ids": [4, 3, 2]
        },
        {
            "id": 7,
            "names": [
                {
                    "localization": "Ru",
                    "name": "Москва. СК (дневной)"
                }
            ],
            "pass_zone_ids": [4, 3, 2]
        },
        {
            "id": 6,
            "names": [
                {
                    "localization": "Ru",
                    "name": "Москва. ТТК (дневной)"
                }
            ],
            "pass_zone_ids": [4, 2]
        },
        {
            "id": 5,
            "names": [
                {
                    "localization": "Ru",
                    "name": "Москва. ТТК (ночной)"
                }
            ],
            "pass_zone_ids": [4, 2]
        },
        {
            "id": 3,
            "names": [
                {
                    "localization": "Ru",
                    "name": "Москва. МКАД (ночной)"
                }
            ],
            "pass_zone_ids": [2]
        },
        {
            "id": 2,
            "names": [
                {
                    "localization": "Ru",
                    "name": "Москва. МКАД (дневной)"
                }
            ],
            "pass_zone_ids": [2]
        }
    ]
    

  2. To build a route for trucks, send a POST request to /routing/7.0.0/global with the following parameters:

    • points — coordinates for the route:

      • lon — longitude in degrees (required).

      • lat — latitude in degrees (required).

      • type — point type:

        • stop — start/finish point of the route (direct path to the road, ignoring obstacles).
        • walking — start/finish point of the route (pedestrian path to the road).
        • pref — intermediate point of the route.
    • "transport": "truck" — freight transport.

    • output — result output format:

      • summary — simplified output, includes only time and length of the route.
      • detailed — full output with route geometry.
    • route_mode — route building mode:

      • fastest — fastest route considering current traffic conditions or statistical traffic data.
      • shortest — shortest route in distance.
    • traffic_mode — traffic mode:

      • jam — use real-time traffic data.
      • statistics — use statistical traffic data.
    • params — additional parameters:

      • truck — freight transport parameters:

        • max_perm_mass — maximum permissible mass (in tons).
        • mass — actual mass (in tons).
        • axle_load — load per axle (in tons).
        • height — height (in meters).
        • width — width (in meters).
        • length — length (in meters).
        • dangerous_cargo — hazardous cargo.
        • explosive_cargo — explosive cargo.
        • pass_zone_pass_ids — pass ID.
    • filters — exclusion of specific road types:

      • dirt_road — dirt roads.
      • toll_road — toll roads.
    • "need_altitudes": true — include altitude information for the route.

    Example request:

    curl --location --request POST 'http://routing.api.2gis.com/routing/7.0.0/global?key=API_KEY' \
    --header 'Content-Type: application/json' \
    --data '{
        "points": [
            {
                "lon": 37.412462,
                "lat": 55.856157,
                "type": "stop"
            },
            {
                "lon": 37.406957,
                "lat": 55.859732,
                "type": "stop"
            }
        ],
        "transport": "truck",
        "route_mode": "fastest",
        "traffic_mode": "jam",
        "output": "detailed",
        "params": {
            "truck": {
                "max_perm_mass": 5,
                "mass": 4,
                "axle_load": 1.5,
                "height": 2.57,
                "width": 2.5,
                "length": 5.44,
                "dangerous_cargo": true,
                "explosive_cargo": true,
                "pass_zone_pass_ids": [4, 3, 2]
            }
        },
        "filters": [
            "dirt_road",
            "toll_road"
        ],
        "need_altitudes": true
    }'
    

    Example response:

    response.json
    {
        "query": {
            "filters": ["dirt_road", "toll_road"],
            "need_altitudes": true,
            "output": "detailed",
            "params": {
                "truck": {
                    "axle_load": 1.5,
                    "dangerous_cargo": true,
                    "explosive_cargo": true,
                    "height": 2.57,
                    "length": 5.44,
                    "mass": 4,
                    "max_perm_mass": 5,
                    "width": 2.5
                }
            },
            "points": [
                {
                    "lat": 55.856157,
                    "lon": 37.412462,
                    "type": "stop"
                },
                {
                    "lat": 55.859732,
                    "lon": 37.406957,
                    "type": "stop"
                }
            ],
            "route_mode": "fastest",
            "traffic_mode": "jam",
            "transport": "truck"
        },
        "result": [
            {
                "algorithm": "with traffic jams",
                "altitudes_info": {
                    "elevation_gain": 1020,
                    "elevation_loss": 2110,
                    "max_altitude": 19170,
                    "max_road_angle": 3,
                    "min_altitude": 17640
                },
                "are_truck_pass_zones_ignored": true,
                "begin_pedestrian_path": {
                    "geometry": {
                        "selection": "LINESTRING(37.412462 55.856156, 37.412551 55.856017)"
                    }
                },
                "end_pedestrian_path": {
                    "geometry": {
                        "selection": "LINESTRING(37.407280 55.859566, 37.406957 55.859732)"
                    }
                },
                "features": {
                    "truck": "full"
                },
                "id": "1717376196087387177",
                "maneuvers": [
                    {
                        "comment": "start",
                        "icon": "start",
                        "id": "18432607778980469168",
                        "outcoming_path": {
                            "distance": 61,
                            "duration": 15,
                            "geometry": [
                                {
                                    "angles": "LINESTRING(0, 0, 0, -1, 0, -1, 0)",
                                    "color": "ignore",
                                    "length": 108,
                                    "selection": "LINESTRING(37.412551 55.856017 19170, 37.412298 55.855965 19160, 37.412274 55.855947 19160, 37.412278 55.855924 19160, 37.412336 55.855833 19120, 37.412336 55.855810 19120, 37.412298 55.855796 19110, 37.411951 55.855727 19080)",
                                    "style": "living_zone"
                                }
                            ],
                            "names": []
                        },
                        "outcoming_path_comment": "60 m straight",
                        "type": "begin"
                    },
                    {
                        "comment": "Right turn",
                        "icon": "crossroad_right",
                        "id": "9135852360049318042",
                        "outcoming_path": {
                            "distance": 45,
                            "duration": 26,
                            "geometry": [
                                {
                                    "angles": "LINESTRING(-1, -2, 2)",
                                    "color": "ignore",
                                    "length": 83,
                                    "selection": "LINESTRING(37.411951 55.855727 19080, 37.411850 55.855790 19060, 37.411537 55.855986 18860, 37.411453 55.856038 18900)",
                                    "style": "living_zone"
                                }
                            ],
                            "names": []
                        },
                        "outcoming_path_comment": "50 m straight",
                        "turn_angle": 69,
                        "turn_direction": "right",
                        "type": "crossroad"
                    },
                    {
                        "comment": "Left turn",
                        "icon": "crossroad_left",
                        "id": "12144211900909679893",
                        "outcoming_path": {
                            "distance": 217,
                            "duration": 93,
                            "geometry": [
                                {
                                    "angles": "LINESTRING(3, 2, -2, 0, 0, 0, -4, -1, 0)",
                                    "color": "normal",
                                    "length": 388,
                                    "selection": "LINESTRING(37.411453 55.856038 18900, 37.411322 55.855972 18990, 37.411048 55.855809 19110, 37.410813 55.855668 18950, 37.410672 55.855583 18940, 37.410378 55.855406 18930, 37.410116 55.855218 18910, 37.410008 55.855141 18790, 37.409624 55.854816 18700, 37.409291 55.854509 18700)",
                                    "style": "normal"
                                }
                            ],
                            "names": []
                        },
                        "outcoming_path_comment": "200 m straight",
                        "turn_angle": -93,
                        "turn_direction": "left",
                        "type": "crossroad"
                    },
                    {
                        "comment": "Right turn onto Героев Панфиловцев",
                        "icon": "crossroad_right",
                        "id": "8407480475077009684",
                        "outcoming_path": {
                            "distance": 25,
                            "duration": 24,
                            "geometry": [
                                {
                                    "angles": "LINESTRING(-1)",
                                    "color": "fast",
                                    "length": 45,
                                    "selection": "LINESTRING(37.409291 55.854509 18700, 37.408928 55.854614 18590)",
                                    "style": "normal"
                                }
                            ],
                            "names": ["Героев Панфиловцев"]
                        },
                        "outcoming_path_comment": "30 m straight",
                        "turn_angle": 86,
                        "turn_direction": "right",
                        "type": "crossroad"
                    },
                    {
                        "comment": "Right turn onto Героев Панфиловцев",
                        "icon": "crossroad_right",
                        "id": "9052532412541282750",
                        "outcoming_path": {
                            "distance": 166,
                            "duration": 36,
                            "geometry": [
                                {
                                    "angles": "LINESTRING(0, 0, 0, 0, 0, 1, 0, 0, 1)",
                                    "color": "fast",
                                    "length": 298,
                                    "selection": "LINESTRING(37.408928 55.854614 18590, 37.409023 55.854701 18590, 37.409283 55.854941 18550, 37.409574 55.855187 18600, 37.409689 55.855284 18600, 37.409759 55.855334 18610, 37.410076 55.855560 18700, 37.410204 55.855637 18700, 37.410373 55.855739 18700, 37.410514 55.855825 18740)",
                                    "style": "normal"
                                }
                            ],
                            "names": ["Героев Панфиловцев"]
                        },
                        "outcoming_path_comment": "150 m straight",
                        "turn_angle": 94,
                        "turn_direction": "right",
                        "type": "crossroad"
                    },
                    {
                        "comment": "Left turn onto Вилиса Лациса",
                        "icon": "crossroad_left",
                        "id": "15210827513120081237",
                        "outcoming_path": {
                            "distance": 489,
                            "duration": 95,
                            "geometry": [
                                {
                                    "angles": "LINESTRING(1, 0, 0, 0, 0, -1, -1, 3, -2, -2, -2, 0, 0, -1, -1, -2, -2, 0, 0, 1, -1, 1, 3)",
                                    "color": "fast",
                                    "length": 882,
                                    "selection": "LINESTRING(37.410514 55.855825 18740, 37.410310 55.855902 18780, 37.410044 55.856003 18760, 37.409733 55.856121 18740, 37.409424 55.856238 18740, 37.409164 55.856336 18760, 37.407836 55.856840 18420, 37.407603 55.856928 18340, 37.407469 55.856979 18420, 37.407118 55.857112 18220, 37.406829 55.857240 18100, 37.406578 55.857422 17980, 37.406513 55.857505 17980, 37.406416 55.857628 17960, 37.406392 55.857680 17940, 37.406308 55.857866 17860, 37.406277 55.858037 17740, 37.406265 55.858102 17700, 37.406326 55.858342 17680, 37.406453 55.858577 17640, 37.406620 55.858754 17720, 37.406717 55.858826 17680, 37.406871 55.858940 17710, 37.406971 55.859003 17800)",
                                    "style": "normal"
                                }
                            ],
                            "names": ["Вилиса Лациса"]
                        },
                        "outcoming_path_comment": "500 m straight",
                        "turn_angle": -99,
                        "turn_direction": "left",
                        "type": "crossroad"
                    },
                    {
                        "comment": "Left turn",
                        "icon": "crossroad_left",
                        "id": "3759957507148752603",
                        "outcoming_path": {
                            "distance": 28,
                            "duration": 37,
                            "geometry": [
                                {
                                    "angles": "LINESTRING(1, 1)",
                                    "color": "ignore",
                                    "length": 51,
                                    "selection": "LINESTRING(37.406971 55.859003 17800, 37.406726 55.859127 17870, 37.406712 55.859199 17890)",
                                    "style": "normal"
                                }
                            ],
                            "names": []
                        },
                        "outcoming_path_comment": "30 m straight",
                        "turn_angle": -76,
                        "turn_direction": "left",
                        "type": "crossroad"
                    },
                    {
                        "comment": "Right turn",
                        "icon": "crossroad_right",
                        "id": "9820963919802192602",
                        "outcoming_path": {
                            "distance": 54,
                            "duration": 28,
                            "geometry": [
                                {
                                    "angles": "LINESTRING(1, 1)",
                                    "color": "ignore",
                                    "length": 96,
                                    "selection": "LINESTRING(37.406712 55.859199 17890, 37.407121 55.859468 17980, 37.407280 55.859566 18010)",
                                    "style": "normal"
                                }
                            ],
                            "names": []
                        },
                        "outcoming_path_comment": "50 m straight",
                        "turn_angle": 77,
                        "turn_direction": "right",
                        "type": "crossroad"
                    },
                    {
                        "comment": "finish",
                        "icon": "finish",
                        "id": "16527089493070137551",
                        "outcoming_path_comment": "You have arrived!",
                        "type": "end"
                    }
                ],
                "reliability": 1.0,
                "requested_filters": ["dirt_road", "toll_road"],
                "result_filters": ["dirt_road", "toll_road"],
                "route_id": "moscow-tr-mosesd.m9/truckrouting/1687501592.431517",
                "total_distance": 1085,
                "total_duration": 352,
                "type": "truckrouting",
                "ui_total_distance": {
                    "unit": "km",
                    "value": "1.1"
                },
                "ui_total_duration": "5 min",
                "visited_pass_zone_ids": [2],
                "waypoints": [
                    {
                        "original_point": {
                            "lat": 55.85601712667969,
                            "lon": 37.41255192888156
                        },
                        "projected_point": {
                            "lat": 55.85601712667969,
                            "lon": 37.41255192888156
                        },
                        "transit": false
                    },
                    {
                        "original_point": {
                            "lat": 55.85956639151291,
                            "lon": 37.40728052496281
                        },
                        "projected_point": {
                            "lat": 55.85956639151291,
                            "lon": 37.40728052496281
                        },
                        "transit": false
                    }
                ]
            }
        ],
        "type": "result"
    }
    

No pass required

To build a route for trucks, send a POST request to /routing/7.0.0/global with the following parameters:

  • points — coordinates for the route:

    • lon — longitude in degrees (required).

    • lat — latitude in degrees (required).

    • type — point type:

      • stop — start/finish point of the route (direct path to the road, ignoring obstacles).
      • walking — start/finish point of the route (pedestrian path to the road).
      • pref — intermediate point of the route.
  • "transport": "truck" — freight transport.

  • output — result output format:

    • summary — simplified output, includes only time and length of the route.
    • detailed — full output with route geometry.
  • route_mode — route building mode:

    • fastest — fastest route considering current traffic conditions or statistical traffic data.
    • shortest — shortest route in distance.
  • traffic_mode — traffic mode:

    • jam — use real-time traffic data.
    • statistics — use statistical traffic data.
  • params — additional parameters:

    • truck — freight transport parameters:

      • max_perm_mass — maximum permissible mass (in tons).
      • mass — actual mass (in tons).
      • axle_load — load per axle (in tons).
      • height — height (in meters).
      • width — width (in meters).
      • length — length (in meters).
      • dangerous_cargo — hazardous cargo.
      • explosive_cargo — explosive cargo.
  • filters — exclusion of specific road types:

    • dirt_road — dirt roads.
    • toll_road — toll roads.
  • "need_altitudes": true — include altitude information for the route.

Example request:

curl --location --request POST 'http://routing.api.2gis.com/routing/7.0.0/global?key=API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "points": [
        {
            "lon": 37.412462,
            "lat": 55.856157,
            "type": "stop"
        },
        {
            "lon": 37.406957,
            "lat": 55.859732,
            "type": "stop"
        }
    ],
    "transport": "truck",
    "route_mode": "fastest",
    "traffic_mode": "jam",
    "output": "detailed",
    "params": {
        "truck": {
            "max_perm_mass": 5,
            "mass": 4,
            "axle_load": 1.5,
            "height": 2.57,
            "width": 2.5,
            "length": 5.44,
            "dangerous_cargo": true,
            "explosive_cargo": true
        }
    },
    "filters": [
        "dirt_road",
        "toll_road"
    ],
    "need_altitudes": true
}'

Example response:

response.json
{
    "query": {
        "filters": ["dirt_road", "toll_road"],
        "need_altitudes": true,
        "output": "detailed",
        "params": {
            "truck": {
                "axle_load": 1.5,
                "dangerous_cargo": true,
                "explosive_cargo": true,
                "height": 2.57,
                "length": 5.44,
                "mass": 4,
                "max_perm_mass": 5,
                "width": 2.5
            }
        },
        "points": [
            {
                "lat": 55.856157,
                "lon": 37.412462,
                "type": "stop"
            },
            {
                "lat": 55.859732,
                "lon": 37.406957,
                "type": "stop"
            }
        ],
        "route_mode": "fastest",
        "traffic_mode": "jam",
        "transport": "truck"
    },
    "result": [
        {
            "algorithm": "with traffic jams",
            "altitudes_info": {
                "elevation_gain": 1020,
                "elevation_loss": 2110,
                "max_altitude": 19170,
                "max_road_angle": 3,
                "min_altitude": 17640
            },
            "are_truck_pass_zones_ignored": true,
            "begin_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.412462 55.856156, 37.412551 55.856017)"
                }
            },
            "end_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.407280 55.859566, 37.406957 55.859732)"
                }
            },
            "features": {
                "truck": "full"
            },
            "id": "1717376196087387177",
            "maneuvers": [
                {
                    "comment": "start",
                    "icon": "start",
                    "id": "18432607778980469168",
                    "outcoming_path": {
                        "distance": 61,
                        "duration": 15,
                        "geometry": [
                            {
                                "angles": "LINESTRING(0, 0, 0, -1, 0, -1, 0)",
                                "color": "ignore",
                                "length": 108,
                                "selection": "LINESTRING(37.412551 55.856017 19170, 37.412298 55.855965 19160, 37.412274 55.855947 19160, 37.412278 55.855924 19160, 37.412336 55.855833 19120, 37.412336 55.855810 19120, 37.412298 55.855796 19110, 37.411951 55.855727 19080)",
                                "style": "living_zone"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "60 m straight",
                    "type": "begin"
                },
                {
                    "comment": "Right turn",
                    "icon": "crossroad_right",
                    "id": "9135852360049318042",
                    "outcoming_path": {
                        "distance": 45,
                        "duration": 26,
                        "geometry": [
                            {
                                "angles": "LINESTRING(-1, -2, 2)",
                                "color": "ignore",
                                "length": 83,
                                "selection": "LINESTRING(37.411951 55.855727 19080, 37.411850 55.855790 19060, 37.411537 55.855986 18860, 37.411453 55.856038 18900)",
                                "style": "living_zone"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "50 m straight",
                    "turn_angle": 69,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn",
                    "icon": "crossroad_left",
                    "id": "12144211900909679893",
                    "outcoming_path": {
                        "distance": 217,
                        "duration": 93,
                        "geometry": [
                            {
                                "angles": "LINESTRING(3, 2, -2, 0, 0, 0, -4, -1, 0)",
                                "color": "normal",
                                "length": 388,
                                "selection": "LINESTRING(37.411453 55.856038 18900, 37.411322 55.855972 18990, 37.411048 55.855809 19110, 37.410813 55.855668 18950, 37.410672 55.855583 18940, 37.410378 55.855406 18930, 37.410116 55.855218 18910, 37.410008 55.855141 18790, 37.409624 55.854816 18700, 37.409291 55.854509 18700)",
                                "style": "normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "200 m straight",
                    "turn_angle": -93,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Героев Панфиловцев",
                    "icon": "crossroad_right",
                    "id": "8407480475077009684",
                    "outcoming_path": {
                        "distance": 25,
                        "duration": 24,
                        "geometry": [
                            {
                                "angles": "LINESTRING(-1)",
                                "color": "fast",
                                "length": 45,
                                "selection": "LINESTRING(37.409291 55.854509 18700, 37.408928 55.854614 18590)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Героев Панфиловцев"]
                    },
                    "outcoming_path_comment": "30 m straight",
                    "turn_angle": 86,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Героев Панфиловцев",
                    "icon": "crossroad_right",
                    "id": "9052532412541282750",
                    "outcoming_path": {
                        "distance": 166,
                        "duration": 36,
                        "geometry": [
                            {
                                "angles": "LINESTRING(0, 0, 0, 0, 0, 1, 0, 0, 1)",
                                "color": "fast",
                                "length": 298,
                                "selection": "LINESTRING(37.408928 55.854614 18590, 37.409023 55.854701 18590, 37.409283 55.854941 18550, 37.409574 55.855187 18600, 37.409689 55.855284 18600, 37.409759 55.855334 18610, 37.410076 55.855560 18700, 37.410204 55.855637 18700, 37.410373 55.855739 18700, 37.410514 55.855825 18740)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Героев Панфиловцев"]
                    },
                    "outcoming_path_comment": "150 m straight",
                    "turn_angle": 94,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Вилиса Лациса",
                    "icon": "crossroad_left",
                    "id": "15210827513120081237",
                    "outcoming_path": {
                        "distance": 489,
                        "duration": 95,
                        "geometry": [
                            {
                                "angles": "LINESTRING(1, 0, 0, 0, 0, -1, -1, 3, -2, -2, -2, 0, 0, -1, -1, -2, -2, 0, 0, 1, -1, 1, 3)",
                                "color": "fast",
                                "length": 882,
                                "selection": "LINESTRING(37.410514 55.855825 18740, 37.410310 55.855902 18780, 37.410044 55.856003 18760, 37.409733 55.856121 18740, 37.409424 55.856238 18740, 37.409164 55.856336 18760, 37.407836 55.856840 18420, 37.407603 55.856928 18340, 37.407469 55.856979 18420, 37.407118 55.857112 18220, 37.406829 55.857240 18100, 37.406578 55.857422 17980, 37.406513 55.857505 17980, 37.406416 55.857628 17960, 37.406392 55.857680 17940, 37.406308 55.857866 17860, 37.406277 55.858037 17740, 37.406265 55.858102 17700, 37.406326 55.858342 17680, 37.406453 55.858577 17640, 37.406620 55.858754 17720, 37.406717 55.858826 17680, 37.406871 55.858940 17710, 37.406971 55.859003 17800)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Вилиса Лациса"]
                    },
                    "outcoming_path_comment": "500 m straight",
                    "turn_angle": -99,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn",
                    "icon": "crossroad_left",
                    "id": "3759957507148752603",
                    "outcoming_path": {
                        "distance": 28,
                        "duration": 37,
                        "geometry": [
                            {
                                "angles": "LINESTRING(1, 1)",
                                "color": "ignore",
                                "length": 51,
                                "selection": "LINESTRING(37.406971 55.859003 17800, 37.406726 55.859127 17870, 37.406712 55.859199 17890)",
                                "style": "normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "30 m straight",
                    "turn_angle": -76,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn",
                    "icon": "crossroad_right",
                    "id": "9820963919802192602",
                    "outcoming_path": {
                        "distance": 54,
                        "duration": 28,
                        "geometry": [
                            {
                                "angles": "LINESTRING(1, 1)",
                                "color": "ignore",
                                "length": 96,
                                "selection": "LINESTRING(37.406712 55.859199 17890, 37.407121 55.859468 17980, 37.407280 55.859566 18010)",
                                "style": "normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "50 m straight",
                    "turn_angle": 77,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "finish",
                    "icon": "finish",
                    "id": "16527089493070137551",
                    "outcoming_path_comment": "You have arrived!",
                    "type": "end"
                }
            ],
            "reliability": 1.0,
            "requested_filters": ["dirt_road", "toll_road"],
            "result_filters": ["dirt_road", "toll_road"],
            "route_id": "moscow-tr-mosesd.m9/truckrouting/1687501592.431517",
            "total_distance": 1085,
            "total_duration": 352,
            "type": "truckrouting",
            "ui_total_distance": {
                "unit": "km",
                "value": "1.1"
            },
            "ui_total_duration": "5 min",
            "visited_pass_zone_ids": [2],
            "waypoints": [
                {
                    "original_point": {
                        "lat": 55.85601712667969,
                        "lon": 37.41255192888156
                    },
                    "projected_point": {
                        "lat": 55.85601712667969,
                        "lon": 37.41255192888156
                    },
                    "transit": false
                },
                {
                    "original_point": {
                        "lat": 55.85956639151291,
                        "lon": 37.40728052496281
                    },
                    "projected_point": {
                        "lat": 55.85956639151291,
                        "lon": 37.40728052496281
                    },
                    "transit": false
                }
            ]
        }
    ],
    "type": "result"
}

To build a route inside buildings using floor plans, send a POST request to /routing/7.0.0/global with the following parameters:

  • points — coordinates for the route:

    • lon — longitude in degrees (required).
    • lat — latitude in degrees (required).
    • "type": "walking" — start/finish point of the route.
    • object_id — identifier of the building or organization to which the point will be associated.
    • floor_id — identifier of the building floor.
  • "transport": "walking" — pedestrian route.

  • params — additional parameters:

    • pedestrian — pedestrian route parameters:

      • use_indoor — build a route inside buildings.
      • use_instructions — provide navigation instructions for pedestrian routes.

At least one of the finish points of the route should be inside a building or associated with a building using the object_id parameter.

Example request:

curl --location --request POST 'http://routing.api.2gis.com/routing/7.0.0/global?key=API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "points": [
        {
            "lon": 37.618327,
            "lat": 55.757779,
            "type": "walking",
            "object_id": "70030076390634047",
            "floor_id": "1"
        },
        {
            "lon": 37.616993,
            "lat": 55.757043,
            "type": "walking",
            "object_id": "70000001054966151",
            "floor_id": "3"
        }
    ],
    "transport": "walking",
    "params": {
        "pedestrian": {
            "use_indoor": true,
            "use_instructions": true
        }
    }
}'

Example response:

response.json
{
    "query": {
        "params": {
            "pedestrian": {
                "use_indoor": true,
                "use_instructions": true
            }
        },
        "points": [
            {
                "floor_id": "1",
                "lat": 55.757779,
                "lon": 37.618327,
                "object_id": "70030076390634047",
                "type": "walking"
            },
            {
                "floor_id": "3",
                "lat": 55.757043,
                "lon": 37.616993,
                "object_id": "70000001054966151",
                "type": "walking"
            }
        ],
        "transport": "walking"
    },
    "result": [
        {
            "algorithm": "along the main streets",
            "begin_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.618327 55.757778, 37.618370 55.757790)"
                }
            },
            "end_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.618385 55.757792, 37.618370 55.757791, 37.617195 55.757257)"
                }
            },
            "id": "4486246167723326067",
            "maneuvers": [
                {
                    "comment": "start",
                    "icon": "start",
                    "id": "17464179670739397869",
                    "outcoming_path": {
                        "distance": 1,
                        "duration": 1,
                        "floor_from": "70030076295715504",
                        "geometry": [
                            {
                                "length": 1,
                                "selection": "LINESTRING(37.618370 55.757790, 37.618385 55.757792)",
                                "style": "normal",
                                "zlevel": "zlevel-normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "10 m straight",
                    "type": "pedestrian_begin"
                },
                {
                    "comment": "finish",
                    "icon": "finish",
                    "id": "15467874481016010437",
                    "outcoming_path_comment": "You have arrived!",
                    "type": "pedestrian_end"
                }
            ],
            "reliability": 1.0,
            "route_id": "moscow-pd-mosesd.m1/pedestrianrouting/1687502516.484254",
            "total_distance": 7,
            "total_duration": 4,
            "type": "pedestrianrouting",
            "ui_total_distance": {
                "unit": "m",
                "value": "10"
            },
            "ui_total_duration": "1 min",
            "waypoints": [
                {
                    "original_point": {
                        "lat": 55.75779039852085,
                        "lon": 37.6183700640233
                    },
                    "projected_point": {
                        "lat": 55.75779039852085,
                        "lon": 37.6183700640233
                    },
                    "transit": false
                },
                {
                    "original_point": {
                        "lat": 55.75779252151705,
                        "lon": 37.61838560487772
                    },
                    "projected_point": {
                        "lat": 55.75779252151705,
                        "lon": 37.61838560487772
                    },
                    "transit": false
                }
            ]
        }
    ],
    "type": "result"
}

Please use the interactive example provided below:


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>2GIS Directions API floors</title>
    <meta name="description" content="Using Directions API through floors plans" />
    <meta name="category" content="Directions API" />

    <style>
        html,
        body,
        #map {
            margin: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }

        .buttons {
            position: absolute;
            top: 5px;
            left: 5px;
        }

        .buttons button {
            background: #fff;
            border: none;
            border-radius: 4px;
            box-shadow: 0 1px 3px 0 rgb(38 38 38 / 50%);
            cursor: pointer;
            padding: 5px 10px;
        }

        .buttons button:hover {
            color: #777;
        }
    </style>
</head>

<body>
    <div id="map"></div>
    <div class="buttons">
        <button id="show-always">Disable dependency on floors</button>
        <button id="toggle-points">Toggle points</button>
    </div>
    <script src="https://mapgl.2gis.com/api/js/v1"></script>
    <script>
        const key = 'Your API access key';
        const directionsKey = 'Your directions API access key';

        const map = new mapgl.Map('map', {
            center: [82.89050491182851, 54.98378006147128],
            zoom: 18.5,
            key,
        });
        window.addEventListener('resize', () => map.invalidateSize());

        // Enable floor control on the right
        const floorControl = new mapgl.FloorControl(map, {
            position: 'topRight',
        });

        let showPoints = true;
        let showAlways = false;
        map.setStyleState({
            showPoints,
            showAlways,
        });
        document.querySelector('#toggle-points').addEventListener('click', () => {
            showPoints = !showPoints;
            map.setStyleState({
                showPoints,
                showAlways,
            });
        });
        document.querySelector('#show-always').addEventListener('click', (ev) => {
            showAlways = !showAlways;
            ev.target.innerHTML = showAlways
                ? 'Enable dependency on floors'
                : 'Disable dependency on floors';
            map.setStyleState({
                showPoints,
                showAlways,
            });
        });

        // Add styles for points and segments
        map.once('styleload', () => {
            const whiteLineStyle = {
                width: 9,
                color: '#fff',
            };
            const lineStyle = {
                width: 5,
                color: ['match', ['get', 'index'], [-1], '#ccc', [0], '#00ff00', [1], '#0000ff', '#ff0000'],
            };

            // Lines which are showing under houses
            const lineFilter = [
                'all',
                ['==', ['sourceAttr', 'foo'], 'bar'],
                ['==', ['get', 'type'], 'path'],
                ['==', ['global', 'showAlways'], false],
                [
                    'any',
                    ['==', ['get', 'floorId'], null],
                    ['in', ['get', 'floorId'], ['global', '_activeFloorIds']],
                ],
            ];
            map.addLayer(
                {
                    id: 'my-line-white',
                    type: 'line',
                    filter: lineFilter,
                    style: whiteLineStyle,
                },
                '344517',
            );
            map.addLayer(
                {
                    id: 'my-line',
                    type: 'line',
                    filter: lineFilter,
                    style: lineStyle,
                },
                '344517',
            );

            // Lines which are showing under houses
            const lineAboveFilter = [
                'all',
                ['==', ['sourceAttr', 'foo'], 'bar'],
                ['==', ['get', 'type'], 'path'],
                ['==', ['global', 'showAlways'], true],
            ];
            map.addLayer({
                id: 'my-line-white-above',
                type: 'line',
                filter: lineAboveFilter,
                style: whiteLineStyle,
            });
            map.addLayer({
                id: 'my-line-above',
                type: 'line',
                filter: lineAboveFilter,
                style: lineStyle,
            });

            map.addLayer({
                id: 'my-point',
                type: 'point',
                filter: [
                    'all',
                    ['global', 'showPoints'],
                    ['==', ['sourceAttr', 'foo'], 'bar'],
                    ['==', ['get', 'type'], 'point'],
                    [
                        'any',
                        ['==', ['global', 'showAlways'], true],
                        ['==', ['get', 'floorId'], null],
                        ['in', ['get', 'floorId'], ['global', '_activeFloorIds']],
                    ],
                ],
                style: {
                    iconImage: 'ent',
                    iconWidth: 15,
                    textFont: 'Noto_Sans',
                    textFontSize: 10,
                    textField: ['get', 'comment'],
                    iconPriority: 1000,
                    textPriority: 1000,
                    textHaloWidth: 1,
                    textHaloColor: '#fff',
                    allowOverlap: true,
                },
            });
            map.addLayer({
                id: 'my-point-end',
                type: 'point',
                filter: ['all', ['==', ['sourceAttr', 'foo'], 'bar'], ['==', ['get', 'type'], 'end']],
                style: {
                    iconImage: [
                        'match',
                        [
                            'any',
                            ['==', ['get', 'floorId'], null],
                            ['==', ['global', 'showAlways'], true],
                            ['in', ['get', 'floorId'], ['global', '_activeFloorIds']],
                        ],
                        [true],
                        'ent_i',
                        'ent',
                    ],
                    iconWidth: 30,
                    textFont: 'Noto_Sans_Semibold',
                    textFontSize: 14,
                    textField: ['get', 'comment'],
                    iconPriority: 2000,
                    textPriority: 2000,
                    textColor: '#fff',
                    textPlacement: 'centerCenter',
                },
            });
        });

        const points = [
            {
                type: 'pedo',
                x: 82.88828966022959,
                y: 54.983109254770376,
            },
            {
                type: 'pedo',
                x: 82.89149408367815,
                y: 54.98388809715867,
                object_id: '141265770013202',
                floor_id: '141832716803532',
            },
        ];

        fetchAndDrawRoute();

        function fetchAndDrawRoute() {
            const query = {
                type: 'pedestrian',
                points,
                use_indoor: true,
                options: ['pedestrian_instructions'],
            };

            return fetch(`https://catalog.api.2gis.ru/carrouting/6.0.0/global?key=${directionsKey}`, {
                method: 'post',
                body: JSON.stringify(query),
            })
                .then((r) => {
                    if (r.status !== 200) {
                        throw new Error(`HTTP code is ${r.status}`);
                    }
                    return r.json();
                })
                .then((r) => drawRoute(query.points, r.result && r.result[0]))
                .catch((reason) => console.error(reason));
        }

        const geojsonSource = new mapgl.GeoJsonSource(map, {
            data: {
                type: 'FeatureCollection',
                features: [],
            },
            attributes: {
                foo: 'bar',
            },
        });

        function drawRoute(points, result) {
            if (!result) {
                return;
            }

            const data = {
                type: 'FeatureCollection',
                features: [
                    {
                        type: 'Feature',
                        properties: {
                            type: 'end',
                            comment: 'A',
                            floorId: points[0].floor_id,
                        },
                        geometry: {
                            type: 'Point',
                            coordinates: [points[0].x, points[0].y],
                        },
                    },
                    {
                        type: 'Feature',
                        properties: {
                            type: 'end',
                            comment: 'B',
                            floorId: points[1].floor_id,
                        },
                        geometry: {
                            type: 'Point',
                            coordinates: [points[1].x, points[1].y],
                        },
                    },
                ],
            };

            let colorIndex = 0;
            let isFirstSegmentAdded = false;
            let lastPoint = {
                coordinates: [points[0].x, points[0].y],
                floorId: points[0].floor_id,
            };

            result.maneuvers.forEach((maneuver) => {
                if (maneuver.outcoming_path && maneuver.outcoming_path.geometry.length) {
                    const firstCoord = parserLineStringWKT(
                        maneuver.outcoming_path.geometry[0].selection,
                    )[0];

                    if (maneuver.comment) {
                        data.features.push({
                            type: 'Feature',
                            properties: {
                                type: 'point',
                                comment: maneuver.comment,
                                floorId: maneuver.outcoming_path.floor_from,
                            },
                            geometry: {
                                type: 'Point',
                                coordinates: firstCoord,
                            },
                        });
                    }

                    if (!isFirstSegmentAdded) {
                        isFirstSegmentAdded = true;
                        data.features.push({
                            type: 'Feature',
                            properties: {
                                type: 'path',
                                index: -1,
                                floorId: maneuver.outcoming_path.floor_from,
                            },
                            geometry: {
                                type: 'LineString',
                                coordinates: [[points[0].x, points[0].y], firstCoord],
                            },
                        });
                    }

                    maneuver.outcoming_path.geometry.forEach((geometry) => {
                        const coordinates = parserLineStringWKT(geometry.selection);
                        data.features.push({
                            type: 'Feature',
                            properties: {
                                type: 'path',
                                index: colorIndex++ % 3,
                                floorId: maneuver.outcoming_path.floor_to,
                            },
                            geometry: {
                                type: 'LineString',
                                coordinates,
                            },
                        });
                        lastPoint = {
                            coordinates: coordinates[coordinates.length - 1],
                            floorId: maneuver.outcoming_path.floor_to,
                        };
                    });
                } else if (maneuver.comment) {
                    data.features.push({
                        type: 'Feature',
                        properties: {
                            type: 'point',
                            comment: maneuver.comment,
                            floorId: lastPoint.floorId,
                        },
                        geometry: {
                            type: 'Point',
                            coordinates: lastPoint.coordinates,
                        },
                    });
                }
            });

            if (lastPoint) {
                data.features.push({
                    type: 'Feature',
                    properties: {
                        type: 'path',
                        floorId: lastPoint.floorId,
                        index: -1,
                    },
                    geometry: {
                        type: 'LineString',
                        coordinates: [lastPoint.coordinates, [points[1].x, points[1].y]],
                    },
                });
            }

            geojsonSource.setData(data);
        }

        map.on('click', (event) => {
            if (event.targetData?.floorId) {
                points.push({
                    type: 'pedo',
                    x: event.lngLat[0],
                    y: event.lngLat[1],
                    floor_id: event.targetData.floorId,
                    object_id: event.targetData.id,
                });
            } else {
                points.push({
                    type: 'pedo',
                    x: event.lngLat[0],
                    y: event.lngLat[1],
                });
            }

            points.splice(0, 1);
            fetchAndDrawRoute();
        });

        function parserLineStringWKT(wkt) {
            return wkt
                .slice('LINESTRING('.length, -1)
                .split(',')
                .map((c) => c.trim().split(' ').map(Number));
        }
    </script>
</body>

</html>

To edit the example code, select Source code and then Edit on Codepen.

To exclude a specific area, send a POST request to /routing/7.0.0/global with the following values in the exclude parameter:

  • points — coordinates of the excluded area (an array of points):

    • lon — degrees of east longitude.
    • lat — degrees of north latitude.
  • type — shape of the excluded area:

    • point — a circle with a radius equal to extent (points represent the center of the circle).
    • polyline — a polyline with a width equal to extent (points represent the vertices of the line).
    • polygon — a polygon (points represent the vertices of the polygon).
  • extent — size of the excluded area in meters.

  • severity — how strictly to avoid the specified area:

    • soft — avoid if possible.
    • hard — always avoid.

Maximum 25 areas can be excluded.

Example request:

curl --location --request POST 'http://routing.api.2gis.com/routing/7.0.0/global?key=API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "transport": "driving",
    "points": [
        {
            "lon": 37.421866,
            "lat": 55.849971,
            "type": "stop"
        },
        {
            "lon": 37.442827,
            "lat": 55.85757,
            "type": "stop"
        }
    ],
    "filters": "toll_road",
    "exclude": [
        {
            "points": [
                {
                    "lon": 37.438486,
                    "lat": 55.851578
                }
            ],
            "type": "point",
            "extent": 200,
            "severity": "hard"
        }
    ]
}'

Example response:

response.json
{
    "query": {
        "exclude": [
            {
                "extent": 200,
                "points": [
                    {
                        "lat": 55.851578,
                        "lon": 37.438486
                    }
                ],
                "severity": "hard",
                "type": "point"
            }
        ],
        "filters": "toll_road",
        "points": [
            {
                "lat": 55.849971,
                "lon": 37.421866,
                "type": "stop"
            },
            {
                "lat": 55.85757,
                "lon": 37.442827,
                "type": "stop"
            }
        ],
        "transport": "driving"
    },
    "result": [
        {
            "algorithm": "with traffic jams",
            "begin_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.421866 55.849970, 37.421647 55.849947)"
                }
            },
            "end_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.442765 55.857746, 37.442827 55.857569)"
                }
            },
            "id": "13770457432395781418",
            "maneuvers": [
                {
                    "comment": "start",
                    "icon": "start",
                    "id": "10520459904851741317",
                    "outcoming_path": {
                        "distance": 45,
                        "duration": 12,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 80,
                                "selection": "LINESTRING(37.421647 55.849947, 37.421572 55.850169, 37.421511 55.850347)",
                                "style": "living_zone"
                            }
                        ],
                        "names": ["Туристская"]
                    },
                    "outcoming_path_comment": "50 m straight",
                    "type": "begin"
                },
                {
                    "comment": "Right turn onto Туристская",
                    "icon": "crossroad_right",
                    "id": "6832535472495130546",
                    "outcoming_path": {
                        "distance": 68,
                        "duration": 18,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 122,
                                "selection": "LINESTRING(37.421511 55.850347, 37.422306 55.850432, 37.422592 55.850463)",
                                "style": "living_zone"
                            }
                        ],
                        "names": ["Туристская"]
                    },
                    "outcoming_path_comment": "70 m straight",
                    "turn_angle": 90,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Туристская",
                    "icon": "crossroad_left",
                    "id": "2253389347592904980",
                    "outcoming_path": {
                        "distance": 865,
                        "duration": 150,
                        "geometry": [
                            {
                                "color": "normal",
                                "length": 226,
                                "selection": "LINESTRING(37.422592 55.850463, 37.422476 55.850802, 37.422209 55.851586)",
                                "style": "normal"
                            },
                            {
                                "color": "fast",
                                "length": 1330,
                                "selection": "LINESTRING(37.422209 55.851586, 37.422107 55.851884, 37.421795 55.852800, 37.421510 55.853634, 37.421497 55.853674, 37.421419 55.853900, 37.421187 55.854582, 37.421037 55.855021, 37.420893 55.855443, 37.420658 55.856133, 37.420609 55.856274, 37.420546 55.856459, 37.420371 55.856971, 37.420113 55.857727, 37.420033 55.857906, 37.420017 55.857942, 37.419915 55.858171)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Туристская"]
                    },
                    "outcoming_path_comment": "900 m straight",
                    "turn_angle": -90,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Героев Панфиловцев",
                    "icon": "crossroad_right",
                    "id": "17670998122400186257",
                    "outcoming_path": {
                        "distance": 1197,
                        "duration": 172,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 2150,
                                "selection": "LINESTRING(37.419915 55.858171, 37.420294 55.858196, 37.421048 55.858248, 37.422347 55.858333, 37.422844 55.858361, 37.423308 55.858387, 37.424230 55.858425, 37.424879 55.858431, 37.425216 55.858433, 37.425678 55.858427, 37.426334 55.858417, 37.426445 55.858413, 37.427322 55.858377, 37.427874 55.858344, 37.428299 55.858318, 37.429219 55.858243, 37.429421 55.858222, 37.429716 55.858192, 37.429939 55.858169, 37.430184 55.858143, 37.431028 55.858033, 37.431398 55.857963, 37.431850 55.857879, 37.432071 55.857828, 37.432603 55.857705, 37.432988 55.857594, 37.433237 55.857522, 37.433679 55.857378, 37.433964 55.857285, 37.434315 55.857147, 37.434497 55.857076, 37.435069 55.856812, 37.435694 55.856498, 37.436313 55.856139, 37.436353 55.856112, 37.436475 55.856028, 37.436848 55.855772, 37.436919 55.855710, 37.437077 55.855572, 37.437301 55.855376, 37.437347 55.855336)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Героев Панфиловцев"]
                    },
                    "outcoming_path_comment": "1.2 km straight",
                    "turn_angle": 97,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Фомичёвой",
                    "icon": "crossroad_left",
                    "id": "13301939049151762164",
                    "outcoming_path": {
                        "distance": 473,
                        "duration": 92,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 851,
                                "selection": "LINESTRING(37.437347 55.855336, 37.437783 55.855479, 37.438023 55.855558, 37.438440 55.855696, 37.438610 55.855752, 37.438751 55.855797, 37.439219 55.855952, 37.440245 55.856290, 37.440792 55.856470, 37.441534 55.856715, 37.442235 55.856946, 37.442595 55.857064, 37.442876 55.857157, 37.443833 55.857472, 37.443947 55.857509)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Фомичёвой"]
                    },
                    "outcoming_path_comment": "450 m straight",
                    "turn_angle": -87,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn",
                    "icon": "crossroad_left",
                    "id": "17248415065835690455",
                    "outcoming_path": {
                        "distance": 42,
                        "duration": 11,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 75,
                                "selection": "LINESTRING(37.443947 55.857509, 37.443606 55.857838)",
                                "style": "living_zone"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "40 m straight",
                    "turn_angle": -90,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn",
                    "icon": "crossroad_left",
                    "id": "12794765817784704951",
                    "outcoming_path": {
                        "distance": 53,
                        "duration": 14,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 95,
                                "selection": "LINESTRING(37.443606 55.857838, 37.443507 55.857827, 37.442765 55.857746)",
                                "style": "living_zone"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "50 m straight",
                    "turn_angle": -71,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "finish",
                    "icon": "finish",
                    "id": "15351243132001271730",
                    "outcoming_path_comment": "You have arrived!",
                    "type": "end"
                }
            ],
            "reliability": 1.0,
            "requested_filters": ["toll_road"],
            "result_filters": ["toll_road"],
            "route_id": "moscow-cr-mosesd.m1/carrouting/1687502729.216349",
            "total_distance": 2743,
            "total_duration": 471,
            "type": "carrouting",
            "ui_total_distance": {
                "unit": "km",
                "value": "2.7"
            },
            "ui_total_duration": "7 min",
            "waypoints": [
                {
                    "original_point": {
                        "lat": 55.84994763027107,
                        "lon": 37.42164755079632
                    },
                    "projected_point": {
                        "lat": 55.84994763027107,
                        "lon": 37.42164755079632
                    },
                    "transit": false
                },
                {
                    "original_point": {
                        "lat": 55.85774690250982,
                        "lon": 37.44276586514763
                    },
                    "projected_point": {
                        "lat": 55.85774690250982,
                        "lon": 37.44276586514763
                    },
                    "transit": false
                }
            ]
        },
        {
            "algorithm": "with traffic jams",
            "begin_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.421866 55.849970, 37.421647 55.849947)"
                }
            },
            "end_pedestrian_path": {
                "geometry": {
                    "selection": "LINESTRING(37.442765 55.857746, 37.442827 55.857569)"
                }
            },
            "id": "13009732655598796058",
            "maneuvers": [
                {
                    "comment": "start",
                    "icon": "start",
                    "id": "418029143730744969",
                    "outcoming_path": {
                        "distance": 45,
                        "duration": 12,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 80,
                                "selection": "LINESTRING(37.421647 55.849947, 37.421572 55.850169, 37.421511 55.850347)",
                                "style": "living_zone"
                            }
                        ],
                        "names": ["Туристская"]
                    },
                    "outcoming_path_comment": "50 m straight",
                    "type": "begin"
                },
                {
                    "comment": "Right turn onto Туристская",
                    "icon": "crossroad_right",
                    "id": "12698366868639483371",
                    "outcoming_path": {
                        "distance": 68,
                        "duration": 18,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 122,
                                "selection": "LINESTRING(37.421511 55.850347, 37.422306 55.850432, 37.422592 55.850463)",
                                "style": "living_zone"
                            }
                        ],
                        "names": ["Туристская"]
                    },
                    "outcoming_path_comment": "70 m straight",
                    "turn_angle": 90,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Туристская",
                    "icon": "crossroad_left",
                    "id": "14786911519059275536",
                    "outcoming_path": {
                        "distance": 126,
                        "duration": 36,
                        "geometry": [
                            {
                                "color": "normal",
                                "length": 226,
                                "selection": "LINESTRING(37.422592 55.850463, 37.422476 55.850802, 37.422209 55.851586)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Туристская"]
                    },
                    "outcoming_path_comment": "150 m straight",
                    "turn_angle": -90,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn",
                    "icon": "crossroad_right",
                    "id": "7497172497313789203",
                    "outcoming_path": {
                        "distance": 425,
                        "duration": 73,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 765,
                                "selection": "LINESTRING(37.422209 55.851586, 37.422459 55.851613, 37.422907 55.851662, 37.423110 55.851684, 37.423353 55.851710, 37.424421 55.851825, 37.425126 55.851901, 37.425665 55.851959, 37.428083 55.852221, 37.428263 55.852241, 37.428774 55.852296, 37.428873 55.852316, 37.428948 55.852341)",
                                "style": "normal"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "450 m straight",
                    "turn_angle": 90,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Героев Панфиловцев",
                    "icon": "crossroad_left",
                    "id": "11268256306648727729",
                    "outcoming_path": {
                        "distance": 670,
                        "duration": 119,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 1206,
                                "selection": "LINESTRING(37.428948 55.852341, 37.428980 55.852386, 37.428985 55.852439, 37.428907 55.852657, 37.428586 55.853545, 37.428493 55.853805, 37.428333 55.854249, 37.428186 55.854654, 37.427976 55.855236, 37.427940 55.855336, 37.427863 55.855550, 37.427700 55.856002, 37.427661 55.856171, 37.427682 55.856330, 37.427684 55.856334, 37.427905 55.857048, 37.428008 55.857380, 37.428079 55.857609, 37.428149 55.857836, 37.428226 55.858086, 37.428299 55.858318)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Героев Панфиловцев"]
                    },
                    "outcoming_path_comment": "700 m straight",
                    "turn_angle": -79,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Right turn onto Героев Панфиловцев",
                    "icon": "crossroad_right",
                    "id": "3156944458945747528",
                    "outcoming_path": {
                        "distance": 675,
                        "duration": 90,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 1213,
                                "selection": "LINESTRING(37.428299 55.858318, 37.429219 55.858243, 37.429421 55.858222, 37.429716 55.858192, 37.429939 55.858169, 37.430184 55.858143, 37.431028 55.858033, 37.431398 55.857963, 37.431850 55.857879, 37.432071 55.857828, 37.432603 55.857705, 37.432988 55.857594, 37.433237 55.857522, 37.433679 55.857378, 37.433964 55.857285, 37.434315 55.857147, 37.434497 55.857076, 37.435069 55.856812, 37.435694 55.856498, 37.436313 55.856139, 37.436353 55.856112, 37.436475 55.856028, 37.436848 55.855772, 37.436919 55.855710, 37.437077 55.855572, 37.437301 55.855376, 37.437347 55.855336)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Героев Панфиловцев"]
                    },
                    "outcoming_path_comment": "700 m straight",
                    "turn_angle": 88,
                    "turn_direction": "right",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn onto Фомичёвой",
                    "icon": "crossroad_left",
                    "id": "9472105339521951518",
                    "outcoming_path": {
                        "distance": 473,
                        "duration": 92,
                        "geometry": [
                            {
                                "color": "fast",
                                "length": 851,
                                "selection": "LINESTRING(37.437347 55.855336, 37.437783 55.855479, 37.438023 55.855558, 37.438440 55.855696, 37.438610 55.855752, 37.438751 55.855797, 37.439219 55.855952, 37.440245 55.856290, 37.440792 55.856470, 37.441534 55.856715, 37.442235 55.856946, 37.442595 55.857064, 37.442876 55.857157, 37.443833 55.857472, 37.443947 55.857509)",
                                "style": "normal"
                            }
                        ],
                        "names": ["Фомичёвой"]
                    },
                    "outcoming_path_comment": "450 m straight",
                    "turn_angle": -87,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn",
                    "icon": "crossroad_left",
                    "id": "12152670081412097447",
                    "outcoming_path": {
                        "distance": 42,
                        "duration": 11,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 75,
                                "selection": "LINESTRING(37.443947 55.857509, 37.443606 55.857838)",
                                "style": "living_zone"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "40 m straight",
                    "turn_angle": -90,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "Left turn",
                    "icon": "crossroad_left",
                    "id": "13895032172530758675",
                    "outcoming_path": {
                        "distance": 53,
                        "duration": 14,
                        "geometry": [
                            {
                                "color": "ignore",
                                "length": 95,
                                "selection": "LINESTRING(37.443606 55.857838, 37.443507 55.857827, 37.442765 55.857746)",
                                "style": "living_zone"
                            }
                        ],
                        "names": []
                    },
                    "outcoming_path_comment": "50 m straight",
                    "turn_angle": -71,
                    "turn_direction": "left",
                    "type": "crossroad"
                },
                {
                    "comment": "finish",
                    "icon": "finish",
                    "id": "15351243132001271730",
                    "outcoming_path_comment": "You have arrived!",
                    "type": "end"
                }
            ],
            "reliability": 1.0,
            "requested_filters": ["toll_road"],
            "result_filters": ["toll_road"],
            "route_id": "moscow-cr-mosesd.m1/carrouting/1687502729.217003",
            "total_distance": 2577,
            "total_duration": 466,
            "type": "carrouting",
            "ui_total_distance": {
                "unit": "km",
                "value": "2.6"
            },
            "ui_total_duration": "7 min",
            "waypoints": [
                {
                    "original_point": {
                        "lat": 55.84994763027107,
                        "lon": 37.42164755079632
                    },
                    "projected_point": {
                        "lat": 55.84994763027107,
                        "lon": 37.42164755079632
                    },
                    "transit": false
                },
                {
                    "original_point": {
                        "lat": 55.85774690250982,
                        "lon": 37.44276586514763
                    },
                    "projected_point": {
                        "lat": 55.85774690250982,
                        "lon": 37.44276586514763
                    },
                    "transit": false
                }
            ]
        }
    ],
    "type": "result"
}