---
title: "/isochrone"
method: POST
path: "/isochrone"
---

# /isochrone

`POST /isochrone`

Reachability isochrone or isodistance. Supports `format=geotiff` for raster output (`image/tiff`).

## Request body

- IsochroneRequest
  - `id` string — Arbitrary request identifier echoed in the response.
  - `format` 'json' | 'gpx' | 'osrm' | 'pbf' | 'geotiff' | 'mvt' — Not all formats are supported by all endpoints, e.g. `geotiff` is isochrone-only.
  - `units` 'km' | 'miles' | 'mi'
  - `language` string — BCP47 locale for narrative output. See locales/ for supported values.
  - `costing` 'auto' | 'bicycle' | 'pedestrian' | 'truck' | 'bus' | 'taxi' | 'motor_scooter' | 'motorcycle' | 'multimodal' | 'bikeshare' | 'auto_pedestrian', required
  - `costing_options` CostingOptions — Costing options keyed by costing model name.
    - `auto` AutoCostingOptions — Options for auto, bus, and taxi costings. Parsed in src/sif/autocost.cc.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `alley_factor` number — A factor that modifies (multiplies) the cost when [alleys](https://wiki.openstreetmap.org/wiki/Tag:service%3Dalley) are encountered. Auto routes generally want to avoid alleys or narrow service roads between buildings.
      - `use_highways` number — This value indicates the willingness to take highways. This is a range of values between 0 and 1. Values near 0 attempt to avoid highways and values near 1 will favor highways. Note that sometimes highways are required to complete a route so values of 0 are not guaranteed to avoid highways entirely.
      - `use_tolls` number — This value indicates the willingness to take roads with tolls. This is a range of values between 0 and 1. Values smaller than 0.5 attempt to avoid tolls and values greater than 0.5 will slightly favor them. A value of 0.5 indicates no preference. Note that sometimes roads with tolls are required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `use_distance` number — A factor that allows controlling the contribution of distance and time to the route costs. The value is in range between 0 and 1, where 0 only takes time into account and 1 only distance. A factor of 0.5 will weigh them roughly equally.
      - `restriction_probability` integer — Percentage chance to honour probabilistic access restrictions.
      - `top_speed` integer — Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value (see speed_penalty_factor for more details). `top_speed` must be between 10 and 252 km/h. The default value is 140 km/h for auto, taxi and bus.
      - `include_hov2` boolean — A boolean value which indicates the desire to include HOV roads with a 2-occupant requirement in the route when advantageous.
      - `include_hov3` boolean — A boolean value which indicates the desire to include HOV roads with a 3-occupant requirement in the route when advantageous.
      - `include_hot` boolean — A boolean value which indicates the desire to include tolled HOV roads which require the driver to pay a toll if the occupant requirement isn't met.
      - `height` number — Vehicle height in meters for access restriction matching.
      - `width` number — Vehicle width in meters for access restriction matching.
      - `length` number — Vehicle length in meters for access restriction matching.
      - `weight` number — Vehicle weight in metric tons for access restriction matching.
    - `bus` AutoCostingOptions — Options for auto, bus, and taxi costings. Parsed in src/sif/autocost.cc.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `alley_factor` number — A factor that modifies (multiplies) the cost when [alleys](https://wiki.openstreetmap.org/wiki/Tag:service%3Dalley) are encountered. Auto routes generally want to avoid alleys or narrow service roads between buildings.
      - `use_highways` number — This value indicates the willingness to take highways. This is a range of values between 0 and 1. Values near 0 attempt to avoid highways and values near 1 will favor highways. Note that sometimes highways are required to complete a route so values of 0 are not guaranteed to avoid highways entirely.
      - `use_tolls` number — This value indicates the willingness to take roads with tolls. This is a range of values between 0 and 1. Values smaller than 0.5 attempt to avoid tolls and values greater than 0.5 will slightly favor them. A value of 0.5 indicates no preference. Note that sometimes roads with tolls are required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `use_distance` number — A factor that allows controlling the contribution of distance and time to the route costs. The value is in range between 0 and 1, where 0 only takes time into account and 1 only distance. A factor of 0.5 will weigh them roughly equally.
      - `restriction_probability` integer — Percentage chance to honour probabilistic access restrictions.
      - `top_speed` integer — Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value (see speed_penalty_factor for more details). `top_speed` must be between 10 and 252 km/h. The default value is 140 km/h for auto, taxi and bus.
      - `include_hov2` boolean — A boolean value which indicates the desire to include HOV roads with a 2-occupant requirement in the route when advantageous.
      - `include_hov3` boolean — A boolean value which indicates the desire to include HOV roads with a 3-occupant requirement in the route when advantageous.
      - `include_hot` boolean — A boolean value which indicates the desire to include tolled HOV roads which require the driver to pay a toll if the occupant requirement isn't met.
      - `height` number — Vehicle height in meters for access restriction matching.
      - `width` number — Vehicle width in meters for access restriction matching.
      - `length` number — Vehicle length in meters for access restriction matching.
      - `weight` number — Vehicle weight in metric tons for access restriction matching.
    - `taxi` AutoCostingOptions — Options for auto, bus, and taxi costings. Parsed in src/sif/autocost.cc.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `alley_factor` number — A factor that modifies (multiplies) the cost when [alleys](https://wiki.openstreetmap.org/wiki/Tag:service%3Dalley) are encountered. Auto routes generally want to avoid alleys or narrow service roads between buildings.
      - `use_highways` number — This value indicates the willingness to take highways. This is a range of values between 0 and 1. Values near 0 attempt to avoid highways and values near 1 will favor highways. Note that sometimes highways are required to complete a route so values of 0 are not guaranteed to avoid highways entirely.
      - `use_tolls` number — This value indicates the willingness to take roads with tolls. This is a range of values between 0 and 1. Values smaller than 0.5 attempt to avoid tolls and values greater than 0.5 will slightly favor them. A value of 0.5 indicates no preference. Note that sometimes roads with tolls are required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `use_distance` number — A factor that allows controlling the contribution of distance and time to the route costs. The value is in range between 0 and 1, where 0 only takes time into account and 1 only distance. A factor of 0.5 will weigh them roughly equally.
      - `restriction_probability` integer — Percentage chance to honour probabilistic access restrictions.
      - `top_speed` integer — Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value (see speed_penalty_factor for more details). `top_speed` must be between 10 and 252 km/h. The default value is 140 km/h for auto, taxi and bus.
      - `include_hov2` boolean — A boolean value which indicates the desire to include HOV roads with a 2-occupant requirement in the route when advantageous.
      - `include_hov3` boolean — A boolean value which indicates the desire to include HOV roads with a 3-occupant requirement in the route when advantageous.
      - `include_hot` boolean — A boolean value which indicates the desire to include tolled HOV roads which require the driver to pay a toll if the occupant requirement isn't met.
      - `height` number — Vehicle height in meters for access restriction matching.
      - `width` number — Vehicle width in meters for access restriction matching.
      - `length` number — Vehicle length in meters for access restriction matching.
      - `weight` number — Vehicle weight in metric tons for access restriction matching.
    - `bicycle` BicycleCostingOptions — Options for bicycle costing. Parsed in src/sif/bicyclecost.cc.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `bicycle_type` 'road' | 'hybrid' | 'city' | 'cross' | 'mountain' — The type of bicycle. Affects the cycling speed and surface factors.
      - `cycling_speed` number — Cycling speed in km/h. Defaults depend on transport_type.
      - `use_roads` number — A cyclist's propensity to use roads alongside other vehicles. This is a range of values from 0 to 1, where 0 attempts to avoid roads and stay on cycleways and paths, and 1 indicates the rider is more comfortable riding on roads. Based on the `use_roads` factor, roads with certain classifications and higher speeds are penalized in an attempt to avoid them when finding the best path.
      - `use_hills` number — A cyclist's desire to tackle hills in their routes. This is a range of values from 0 to 1, where 0 attempts to avoid hills and steep grades even if it means a longer (time and distance) path, while 1 indicates the rider does not fear hills and steeper grades. Based on the `use_hills` factor, penalties are applied to roads based on elevation change and grade. These penalties help the path avoid hilly roads in favor of flatter roads or less steep grades where available. Note that it is not always possible to find alternate paths to avoid hills (for example when route locations are in mountainous areas).
      - `avoid_bad_surfaces` number — This value is meant to represent how much a cyclist wants to avoid roads with poor surfaces relative to the bicycle type being used. This is a range of values between 0 and 1. When the value is 0, there is no penalization of roads with different surface types; only bicycle speed on each surface is taken into account. As the value approaches 1, roads with poor surfaces for the bike are penalized heavier so that they are only taken if they significantly improve travel time. When the value is equal to 1, all bad surfaces are completely disallowed from routing, including start and end points.
      - `bss_return_cost` number — This value is useful when `bikeshare` is chosen as travel mode. It is meant to give the time will be used to return a rental bike. This value will be displayed in the final directions and used to calculate the whole duration.
      - `bss_rent_penalty` number — This value is useful when `bikeshare` is chosen as travel mode. It is meant to describe the potential effort to return a rental bike. This value won't be displayed and used only inside of the algorithm.
    - `pedestrian` PedestrianCostingOptions — Options for pedestrian and bikeshare costing. Parsed in src/sif/pedestriancost.cc.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `type` 'foot' | 'blind' | 'wheelchair' — These options are mutually exclusive. To combine them, use `blind` and pass the options adjusted for `wheelchair` users manually.
      - `walking_speed` number — Walking speed in km/h. Note that for transport type wheelchair, the default is set to 4.
      - `walkway_factor` number — A factor that modifies the cost when encountering roads classified as `footway` (no motorized vehicles allowed), which may be designated footpaths or designated sidewalks along residential roads. Pedestrian routes generally attempt to favor using these [walkways and sidewalks](https://wiki.openstreetmap.org/wiki/Sidewalks).
      - `sidewalk_factor` number — A factor that modifies the cost when encountering roads with dedicated sidewalks. Pedestrian routes generally attempt to favor using [sidewalks](https://wiki.openstreetmap.org/wiki/Key:sidewalk).
      - `alley_factor` number — A factor that modifies (multiplies) the cost when [alleys](https://wiki.openstreetmap.org/wiki/Tag:service%3Dalley) are encountered. Pedestrian routes generally want to avoid alleys or narrow service roads between buildings.
      - `use_lit` number — This value is a range of values from 0 to 1, where 0 indicates indifference towards lit streets, and 1 indicates that unlit streets should be avoided. Note that even with values near 1, there is no guarantee the returned route will include lit segments.
      - `driveway_factor` number — A factor that modifies (multiplies) the cost when encountering a [driveway](https://wiki.openstreetmap.org/wiki/Tag:service%3Ddriveway), which is often a private, service road. Pedestrian routes generally want to avoid driveways (private).
      - `step_penalty` number — A penalty in seconds added to each transition onto a path with [steps or stairs](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dsteps). Higher values apply larger cost penalties to avoid paths that contain flights of steps. The default depends on the `type` parameter (600 for wheelchair, 30 otherwise).
      - `max_hiking_difficulty` integer — This value indicates the maximum difficulty of hiking trails that is allowed. Values between 0 and 6 are allowed. The values correspond to *sac_scale* values within OpenStreetMap, see reference [here](https://wiki.openstreetmap.org/wiki/Key:sac_scale). The default value is 1 which means that well cleared trails that are mostly flat or slightly sloped are allowed. Higher difficulty trails can be allowed by specifying a higher value for max_hiking_difficulty.
      - `mode_factor` number — A factor which the cost of a pedestrian edge will be multiplied with on multimodal request, e.g. `bss` or `multimodal/transit`. Default is a factor of 1.5, i.e. avoiding walking.
      - `max_distance` integer — Sets the maximum total walking distance of a route in meters. Default 100000 (foot), 10000 (wheelchair).
      - `multimodal_start_end_max_distance` integer — (**Note**: renamed from `transit_start_end_max_distance`) A pedestrian option that can be added to the request to extend the defaults (2145 meters or approximately 1.5 miles). This is the maximum walking distance at the beginning or end of a route.
      - `transit_transfer_max_distance` integer — A pedestrian option that can be added to the request to extend the defaults (800 meters or 0.5 miles). This is the maximum walking distance between transfers.
      - `use_hills` number — This is a range of values from 0 to 1, where 0 attempts to avoid hills and steep grades even if it means a longer (time and distance) path, while 1 indicates the pedestrian does not fear hills and steeper grades. Based on the `use_hills` factor, penalties are applied to roads based on elevation change and grade. These penalties help the path avoid hilly roads in favor of flatter roads or less steep grades where available. Note that it is not always possible to find alternate paths to avoid hills (for example when route locations are in mountainous areas).
      - `elevator_penalty` number — A penalty in seconds added to each transition via an elevator node or onto an elevator edge. Higher values apply larger cost penalties to avoid elevators.
      - `bss_rent_cost` number — This value is useful when `bikeshare` is chosen as travel mode. It is meant to give the time will be used to rent a bike from a bike share station. This value will be displayed in the final directions and used to calculate the whole duration.
      - `bss_rent_penalty` number — This value is useful when `bikeshare` is chosen as travel mode. It is meant to describe the potential effort to rent a bike from a bike share station. This value won't be displayed and used only inside of the algorithm.
    - `bikeshare` PedestrianCostingOptions — Options for pedestrian and bikeshare costing. Parsed in src/sif/pedestriancost.cc.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `type` 'foot' | 'blind' | 'wheelchair' — These options are mutually exclusive. To combine them, use `blind` and pass the options adjusted for `wheelchair` users manually.
      - `walking_speed` number — Walking speed in km/h. Note that for transport type wheelchair, the default is set to 4.
      - `walkway_factor` number — A factor that modifies the cost when encountering roads classified as `footway` (no motorized vehicles allowed), which may be designated footpaths or designated sidewalks along residential roads. Pedestrian routes generally attempt to favor using these [walkways and sidewalks](https://wiki.openstreetmap.org/wiki/Sidewalks).
      - `sidewalk_factor` number — A factor that modifies the cost when encountering roads with dedicated sidewalks. Pedestrian routes generally attempt to favor using [sidewalks](https://wiki.openstreetmap.org/wiki/Key:sidewalk).
      - `alley_factor` number — A factor that modifies (multiplies) the cost when [alleys](https://wiki.openstreetmap.org/wiki/Tag:service%3Dalley) are encountered. Pedestrian routes generally want to avoid alleys or narrow service roads between buildings.
      - `use_lit` number — This value is a range of values from 0 to 1, where 0 indicates indifference towards lit streets, and 1 indicates that unlit streets should be avoided. Note that even with values near 1, there is no guarantee the returned route will include lit segments.
      - `driveway_factor` number — A factor that modifies (multiplies) the cost when encountering a [driveway](https://wiki.openstreetmap.org/wiki/Tag:service%3Ddriveway), which is often a private, service road. Pedestrian routes generally want to avoid driveways (private).
      - `step_penalty` number — A penalty in seconds added to each transition onto a path with [steps or stairs](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dsteps). Higher values apply larger cost penalties to avoid paths that contain flights of steps. The default depends on the `type` parameter (600 for wheelchair, 30 otherwise).
      - `max_hiking_difficulty` integer — This value indicates the maximum difficulty of hiking trails that is allowed. Values between 0 and 6 are allowed. The values correspond to *sac_scale* values within OpenStreetMap, see reference [here](https://wiki.openstreetmap.org/wiki/Key:sac_scale). The default value is 1 which means that well cleared trails that are mostly flat or slightly sloped are allowed. Higher difficulty trails can be allowed by specifying a higher value for max_hiking_difficulty.
      - `mode_factor` number — A factor which the cost of a pedestrian edge will be multiplied with on multimodal request, e.g. `bss` or `multimodal/transit`. Default is a factor of 1.5, i.e. avoiding walking.
      - `max_distance` integer — Sets the maximum total walking distance of a route in meters. Default 100000 (foot), 10000 (wheelchair).
      - `multimodal_start_end_max_distance` integer — (**Note**: renamed from `transit_start_end_max_distance`) A pedestrian option that can be added to the request to extend the defaults (2145 meters or approximately 1.5 miles). This is the maximum walking distance at the beginning or end of a route.
      - `transit_transfer_max_distance` integer — A pedestrian option that can be added to the request to extend the defaults (800 meters or 0.5 miles). This is the maximum walking distance between transfers.
      - `use_hills` number — This is a range of values from 0 to 1, where 0 attempts to avoid hills and steep grades even if it means a longer (time and distance) path, while 1 indicates the pedestrian does not fear hills and steeper grades. Based on the `use_hills` factor, penalties are applied to roads based on elevation change and grade. These penalties help the path avoid hilly roads in favor of flatter roads or less steep grades where available. Note that it is not always possible to find alternate paths to avoid hills (for example when route locations are in mountainous areas).
      - `elevator_penalty` number — A penalty in seconds added to each transition via an elevator node or onto an elevator edge. Higher values apply larger cost penalties to avoid elevators.
      - `bss_rent_cost` number — This value is useful when `bikeshare` is chosen as travel mode. It is meant to give the time will be used to rent a bike from a bike share station. This value will be displayed in the final directions and used to calculate the whole duration.
      - `bss_rent_penalty` number — This value is useful when `bikeshare` is chosen as travel mode. It is meant to describe the potential effort to rent a bike from a bike share station. This value won't be displayed and used only inside of the algorithm.
    - `truck` TruckCostingOptions — Options for truck costing. Parsed in src/sif/truckcost.cc. Dimension defaults differ from base.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `hazmat` boolean — A value indicating if the truck is carrying hazardous materials.
      - `low_class_penalty` number — A penalty in seconds which is applied when transitioning down onto residential or service roads.
      - `low_class_factor` number — A factor which is applied to residential or service roads.
      - `height` number — Vehicle height in meters for access restriction matching.
      - `width` number — Vehicle width in meters for access restriction matching.
      - `length` number — Vehicle length in meters for access restriction matching.
      - `weight` number — Vehicle weight in metric tons for access restriction matching.
      - `axle_load` number — Per-axle load in metric tons (default 20,000 lbs / ~9.07 t).
      - `axle_count` integer — The axle count of the truck.
      - `use_highways` number — This value indicates the willingness to take highways. This is a range of values between 0 and 1. Values near 0 attempt to avoid highways and values near 1 will favor highways. Note that sometimes highways are required to complete a route so values of 0 are not guaranteed to avoid highways entirely.
      - `use_tolls` number — This value indicates the willingness to take roads with tolls. This is a range of values between 0 and 1. Values smaller than 0.5 attempt to avoid tolls and values greater than 0.5 will slightly favor them. The default value is 0.5, indicating no preference. Note that sometimes roads with tolls are required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `top_speed` number — Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value. `top_speed` must be between 10 and 252 km/h. The default value is 120 km/h for truck.
      - `hgv_no_access_penalty` number — A penalty applied to roads with no HGV/truck access. If set to a value less than 43200 seconds, HGV will be allowed on these roads and the penalty applies. Default 43200, i.e. trucks are not allowed.
      - `use_truck_route` number — This value is a range of values from 0 to 1, where 0 indicates a light preference for streets marked as truck routes, and 1 indicates that streets not marked as truck routes should be avoided. This information is derived from the `hgv=designated` tag. Note that even with values near 1, there is no guarantee the returned route will include streets marked as truck routes.
    - `motorcycle` MotorcycleCostingOptions — Options for motorcycle costing. Parsed in src/sif/motorcyclecost.cc.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `use_highways` number — This value indicates the willingness to take highways. This is a range of values between 0 and 1. Values near 0 attempt to avoid highways and values near 1 will favor highways. Note that sometimes highways are required to complete a route so values of 0 are not guaranteed to avoid highways entirely.
      - `use_tolls` number — This value indicates the willingness to take roads with tolls. This is a range of values between 0 and 1. Values smaller than 0.5 attempt to avoid tolls and values greater than 0.5 will slightly favor them. The default value is 0.5, indicating no preference. Note that sometimes roads with tolls are required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `use_trails` number — A riders's desire for adventure in their routes. This is a range of values from 0 to 1, where 0 will avoid trails, tracks, unclassified or bad surfaces and values towards 1 will tend to avoid major roads and route on secondary roads.
      - `top_speed` integer — Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value. `top_speed` must be between 10 and 252 km/h. The default value is 140 km/h for motorcycle.
    - `motor_scooter` MotorScooterCostingOptions — Options for motor_scooter costing. Parsed in src/sif/motorscootercost.cc.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `top_speed` integer — Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value. `top_speed` must be between 10 and 252 km/h. The default value is 45 km/h for motor_scooter.
      - `use_hills` number — A rider's desire to use hills in their routes. This is a range of values from 0 to 1, where 0 attempts to avoid hills and steep grades even if it means a longer (time and distance) path, while 1 indicates the rider does not fear hills and steeper grades. Based on the `use_hills` factor, penalties are applied to roads based on elevation change and grade. These penalties help the path avoid hilly roads in favor of flatter roads or less steep grades where available. Note that it is not always possible to find alternate paths to avoid hills (for example when route locations are in mountainous areas).
      - `use_primary` number — A rider's propensity to use primary roads. This is a range of values from 0 to 1, where 0 attempts to avoid primary roads, and 1 indicates the rider is more comfortable riding on primary roads. Based on the `use_primary` factor, roads with certain classifications and higher speeds are penalized in an attempt to avoid them when finding the best path.
    - `multimodal` TransitCostingOptions — Options for multimodal and transit costing. Parsed in src/sif/transitcost.cc.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `mode_factor` number — A factor which the cost of a transit edge will be multiplied with.
      - `wheelchair` boolean — Require wheelchair-accessible transit.
      - `bicycle` boolean — Allow bicycle on transit.
      - `use_bus` number — User's desire to use buses. Range of values from 0 (try to avoid buses) to 1 (strong preference for riding buses).
      - `use_rail` number — User's desire to use rail/subway/metro. Range of values from 0 (try to avoid rail) to 1 (strong preference for riding rail).
      - `use_transfers` number — User's desire to favor transfers. Range of values from 0 (try to avoid transfers) to 1 (totally comfortable with transfers).
      - `transfer_cost` number — Time cost (seconds) per transfer. Influences ETA.
      - `transfer_penalty` number — Additional penalty (seconds) per transfer. Does not influence ETA.
      - `filters` object — Filter routes or operators by Onestop ID. Each key takes an `action` (`include`/`exclude`) and a list of `ids`. Note: stop filtering is currently disabled.
        - `operators` TransitFilterOptions
          - `action` 'include' | 'exclude' — Whether to include only the listed Onestop IDs or exclude them.
          - `ids` string[] — List of Onestop IDs to filter. The OneStop ID is simply the feeds's directory name and the object's GTFS ID separated by an underscore, i.e. a route with `route_id: AUR` in `routes.txt` from the feed `NYC` would have the OneStop ID `NYC_AUR`, similar with operators/agencies.
        - `routes` TransitFilterOptions
          - `action` 'include' | 'exclude' — Whether to include only the listed Onestop IDs or exclude them.
          - `ids` string[] — List of Onestop IDs to filter. The OneStop ID is simply the feeds's directory name and the object's GTFS ID separated by an underscore, i.e. a route with `route_id: AUR` in `routes.txt` from the feed `NYC` would have the OneStop ID `NYC_AUR`, similar with operators/agencies.
    - `transit` TransitCostingOptions — Options for multimodal and transit costing. Parsed in src/sif/transitcost.cc.
      - `exclude_bridges` boolean — This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tunnels` boolean — This value indicates whether or not the path may include tunnels. If `exclude_tunnels` is set to true it is allowed to start and end with tunnels, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_tolls` boolean — This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_highways` boolean — This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `exclude_ferries` boolean — This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.
      - `name` string — Required for recostings entries; must be unique.
      - `shortest` boolean — Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.
      - `disable_hierarchy_pruning` boolean — Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored
      - `ignore_restrictions` boolean — If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.
      - `ignore_oneways` boolean — If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.
      - `ignore_access` boolean — Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions
      - `ignore_closures` boolean — If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.
      - `destination_only_penalty` number — A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).
      - `maneuver_penalty` number — A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.
      - `alley_penalty` number — A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.
      - `gate_cost` number — A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.
      - `gate_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.
      - `private_access_penalty` number — A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.
      - `country_crossing_cost` number — A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.
      - `country_crossing_penalty` number — A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.
      - `ferry_cost` number — A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.
      - `use_ferry` number — This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.
      - `rail_ferry_cost` number — A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.
      - `use_rail_ferry` number — This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.
      - `toll_booth_cost` number — A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.
      - `toll_booth_penalty` number — A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.
      - `service_penalty` number — A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.
      - `service_factor` number — A factor that modifies (multiplies) the cost when generic service roads are encountered.
      - `use_tracks` number — This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.
      - `use_living_streets` number — This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.
      - `closure_factor` number — A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.
      - `speed_penalty_factor` number — Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.
      - `fixed_speed` integer — Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.
      - `speed_types` SpeedType[] — Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.
      - `mode_factor` number — A factor which the cost of a transit edge will be multiplied with.
      - `wheelchair` boolean — Require wheelchair-accessible transit.
      - `bicycle` boolean — Allow bicycle on transit.
      - `use_bus` number — User's desire to use buses. Range of values from 0 (try to avoid buses) to 1 (strong preference for riding buses).
      - `use_rail` number — User's desire to use rail/subway/metro. Range of values from 0 (try to avoid rail) to 1 (strong preference for riding rail).
      - `use_transfers` number — User's desire to favor transfers. Range of values from 0 (try to avoid transfers) to 1 (totally comfortable with transfers).
      - `transfer_cost` number — Time cost (seconds) per transfer. Influences ETA.
      - `transfer_penalty` number — Additional penalty (seconds) per transfer. Does not influence ETA.
      - `filters` object — Filter routes or operators by Onestop ID. Each key takes an `action` (`include`/`exclude`) and a list of `ids`. Note: stop filtering is currently disabled.
        - `operators` TransitFilterOptions
          - `action` 'include' | 'exclude' — Whether to include only the listed Onestop IDs or exclude them.
          - `ids` string[] — List of Onestop IDs to filter. The OneStop ID is simply the feeds's directory name and the object's GTFS ID separated by an underscore, i.e. a route with `route_id: AUR` in `routes.txt` from the feed `NYC` would have the OneStop ID `NYC_AUR`, similar with operators/agencies.
        - `routes` TransitFilterOptions
          - `action` 'include' | 'exclude' — Whether to include only the listed Onestop IDs or exclude them.
          - `ids` string[] — List of Onestop IDs to filter. The OneStop ID is simply the feeds's directory name and the object's GTFS ID separated by an underscore, i.e. a route with `route_id: AUR` in `routes.txt` from the feed `NYC` would have the OneStop ID `NYC_AUR`, similar with operators/agencies.
  - `date_time` DateTimeOptions
    - `type` 0 | 1 | 2 | 3 — 0=current, 1=depart_at, 2=arrive_by, 3=invariant
    - `value` string — ISO 8601 local datetime string in the format `YYYY-MM-DDTHH:MM`, e.g. `2016-07-03T08:06`. Required for types 1, 2, 3.
  - `exclude_locations` Location[] — A set of locations to exclude or avoid within a route.
    - `lat` number, required
    - `lon` number, required
    - `type` 'break' | 'through' | 'via' | 'break_through' — First and last location are always forced to `break`.
    - `name` string — Label echoed in the response.
    - `street` string — Street address hint for snapping.
    - `date_time` string — Per-location ISO 8601 datetime override, in the format `YYYY-MM-DDTHH:MM`, e.g. `2016-07-03T08:06`.
    - `heading` integer — Preferred approach heading in degrees.
    - `heading_tolerance` integer — How close in degrees a given street's angle must be in order for it to be considered as in the same direction of the `heading` parameter. The default value is service configuration dependent (60 by default).
    - `preferred_layer` integer — If set, edges whose layer does not match this value are discarded from candidate search. Note that this is a "soft" filter, meaning if no other candidates are found, Valhalla will fall back to including edges that did not match this filter.
    - `node_snap_tolerance` number — Snap-to-node distance tolerance in meters. The default value is service dependent (5 by default).
    - `minimum_reachability` integer — Minimum number of reachable edges for a snap candidate. The default and max values are service configuration dependent (50 and 100 by default, respectively).
    - `radius` integer — Candidate search radius in meters: all viable edge candidates within the radius are correlated. If none are found, the best one outside the radius is correlated. The default is service dependent, and defaults to 0 (only the closest edge is considered as candidate). The max value is service configuration dependent (200 by default).
    - `search_cutoff` integer — Hard cutoff for candidate search in meters. Default is service configuration dependent (35000 by default).
    - `rank_candidates` boolean — Rank snap candidates by distance to input.
    - `preferred_side` 'same' | 'opposite' | 'either' — Preferred side of road to snap to.
    - `display_lat` number — Latitude of the map location in degrees. If provided the `lat` and `lon` parameters will be treated as the routing location and the `display_lat` and `display_lon` will be used to determine the side of street. Both `display_lat` and `display_lon` must be provided and valid to achieve the desired effect.
    - `display_lon` number — Latitude of the map location in degrees. If provided the `lat` and `lon` parameters will be treated as the routing location and the `display_lat` and `display_lon` will be used to determine the side of street. Both `display_lat` and `display_lon` must be provided and valid to achieve the desired effect.
    - `street_side_tolerance` integer — If your input coordinate is less than this tolerance away from the edge centerline then we set your side of street to none otherwise your side of street will be left or right depending on direction of travel. The default value is service configuration dependent (5 by default).
    - `street_side_max_distance` integer — The max distance in meters that the input coordinates or display ll can be from the edge centerline for them to be used for determining the side of street. Beyond this distance the side of street is set to none. The default value is service configuration dependent (1000 by default).
    - `street_side_cutoff` 'motorway' | 'trunk' | 'primary' | 'secondary' | 'tertiary' | 'unclassified' | 'residential' | 'service_other'
    - `waiting` number — Waiting time in seconds at this stop (break/break_through only, not origin/destination).
    - `search_filter` SearchFilter — Optional filters to exclude candidate edges based on their attribution.
      - `min_road_class` 'motorway' | 'trunk' | 'primary' | 'secondary' | 'tertiary' | 'unclassified' | 'residential' | 'service_other'
      - `max_road_class` 'motorway' | 'trunk' | 'primary' | 'secondary' | 'tertiary' | 'unclassified' | 'residential' | 'service_other'
      - `exclude_tunnel` boolean — Whether to exclude roads marked as tunnels.
      - `exclude_bridge` boolean — Whether to exclude roads marked as bridges.
      - `exclude_toll` boolean — Whether to exclude roads marked as toll roads.
      - `exclude_ramp` boolean — Whether to exclude roads marked as ramps.
      - `exclude_ferry` boolean — Whether to exclude ferry routes.
      - `exclude_closures` boolean — When false, closed roads are allowed for this location.
      - `level` number — If specified, will only consider edges that are on or traverse the passed floor level. Useful for indoor routing. It will set `search_cutoff` to a default value of 300 meters if no cutoff value is passed. Additionally, if a `search_cutoff` is passed, it will be clamped to 1000 meters.
  - `exclude_polygons` union — Array of coordinate rings `[[lon,lat],…]` or a GeoJSON FeatureCollection. Roads intersecting these rings will be avoided during path finding.
    - array[] — Array of closed coordinate rings. All edges intersecting any ring are excluded.
      - array[]
        - number[]
    - object — GeoJSON FeatureCollection. Each Feature may carry a `properties.levels` array to restrict exclusion to specific building/indoor levels in pedestrian routing.
      - `type` 'FeatureCollection'
      - `features` object[]
        - `type` 'Feature'
        - `geometry` object — GeoJSON Polygon geometry (single-ring only)
        - `properties` object
          - `levels` integer[] — Building/indoor levels to exclude within this polygon. When omitted, all edges intersecting the polygon are excluded.
  - `linear_cost_factors` LinearCostFactor[] — Customized cost factors that influence path finding, specified as an array of JSON objects. Objects can be either a GeoJSON linestring feature and a `"factor"` property or a plain object with a "shape" key, whose value needs to be an encoded polyline (with 6 digit precision), and a "factor" key whose value needs to be float. Valhalla will perform an edge walk (see the map matching documentation for more info) to match the geometry onto edges and use those factors in costing. Edges with factors larger than 1 will be increasingly avoided, while edges with factors smaller than 1 increasingly favored.
    - union — Either an encoded-polyline form or a GeoJSON LineString feature. In case of passing GeoJSON, the factor must be passed as a feature property. Note that the geometry must align with shapes present in Valhalla's graph.
      - ShapeFactorVariant
        - `shape` string, required — Polyline6-encoded shape. Shape may only cover edges subject to `service_limits.max_linear_cost_edges` (set in service config; 50000 by default).
        - `factor` number, required — Cost multiplier applied to matched edges (min dependent on service configuration, default 1).
      - GeoJsonFactorVariant
        - `type` 'Feature', required
        - `geometry` object, required
          - `type` 'LineString', required
          - `coordinates` array[], required — Array of [lon, lat] positions.
            - number[]
        - `properties` object, required
          - `factor` number, required — Cost multiplier applied to matched edges (min dependent on service configuration, default 1).
  - `locations` Location[], required
    - `lat` number, required
    - `lon` number, required
    - `type` 'break' | 'through' | 'via' | 'break_through' — First and last location are always forced to `break`.
    - `name` string — Label echoed in the response.
    - `street` string — Street address hint for snapping.
    - `date_time` string — Per-location ISO 8601 datetime override, in the format `YYYY-MM-DDTHH:MM`, e.g. `2016-07-03T08:06`.
    - `heading` integer — Preferred approach heading in degrees.
    - `heading_tolerance` integer — How close in degrees a given street's angle must be in order for it to be considered as in the same direction of the `heading` parameter. The default value is service configuration dependent (60 by default).
    - `preferred_layer` integer — If set, edges whose layer does not match this value are discarded from candidate search. Note that this is a "soft" filter, meaning if no other candidates are found, Valhalla will fall back to including edges that did not match this filter.
    - `node_snap_tolerance` number — Snap-to-node distance tolerance in meters. The default value is service dependent (5 by default).
    - `minimum_reachability` integer — Minimum number of reachable edges for a snap candidate. The default and max values are service configuration dependent (50 and 100 by default, respectively).
    - `radius` integer — Candidate search radius in meters: all viable edge candidates within the radius are correlated. If none are found, the best one outside the radius is correlated. The default is service dependent, and defaults to 0 (only the closest edge is considered as candidate). The max value is service configuration dependent (200 by default).
    - `search_cutoff` integer — Hard cutoff for candidate search in meters. Default is service configuration dependent (35000 by default).
    - `rank_candidates` boolean — Rank snap candidates by distance to input.
    - `preferred_side` 'same' | 'opposite' | 'either' — Preferred side of road to snap to.
    - `display_lat` number — Latitude of the map location in degrees. If provided the `lat` and `lon` parameters will be treated as the routing location and the `display_lat` and `display_lon` will be used to determine the side of street. Both `display_lat` and `display_lon` must be provided and valid to achieve the desired effect.
    - `display_lon` number — Latitude of the map location in degrees. If provided the `lat` and `lon` parameters will be treated as the routing location and the `display_lat` and `display_lon` will be used to determine the side of street. Both `display_lat` and `display_lon` must be provided and valid to achieve the desired effect.
    - `street_side_tolerance` integer — If your input coordinate is less than this tolerance away from the edge centerline then we set your side of street to none otherwise your side of street will be left or right depending on direction of travel. The default value is service configuration dependent (5 by default).
    - `street_side_max_distance` integer — The max distance in meters that the input coordinates or display ll can be from the edge centerline for them to be used for determining the side of street. Beyond this distance the side of street is set to none. The default value is service configuration dependent (1000 by default).
    - `street_side_cutoff` 'motorway' | 'trunk' | 'primary' | 'secondary' | 'tertiary' | 'unclassified' | 'residential' | 'service_other'
    - `waiting` number — Waiting time in seconds at this stop (break/break_through only, not origin/destination).
    - `search_filter` SearchFilter — Optional filters to exclude candidate edges based on their attribution.
      - `min_road_class` 'motorway' | 'trunk' | 'primary' | 'secondary' | 'tertiary' | 'unclassified' | 'residential' | 'service_other'
      - `max_road_class` 'motorway' | 'trunk' | 'primary' | 'secondary' | 'tertiary' | 'unclassified' | 'residential' | 'service_other'
      - `exclude_tunnel` boolean — Whether to exclude roads marked as tunnels.
      - `exclude_bridge` boolean — Whether to exclude roads marked as bridges.
      - `exclude_toll` boolean — Whether to exclude roads marked as toll roads.
      - `exclude_ramp` boolean — Whether to exclude roads marked as ramps.
      - `exclude_ferry` boolean — Whether to exclude ferry routes.
      - `exclude_closures` boolean — When false, closed roads are allowed for this location.
      - `level` number — If specified, will only consider edges that are on or traverse the passed floor level. Useful for indoor routing. It will set `search_cutoff` to a default value of 300 meters if no cutoff value is passed. Additionally, if a `search_cutoff` is passed, it will be clamped to 1000 meters.
  - `contours` Contour[], required
    - `time` number — Contour limit in minutes.
    - `distance` number — Contour limit in kilometers.
    - `color` string — Hex color without '#' (e.g. "ff0000").
  - `polygons` boolean — Return polygons instead of linestrings.
  - `denoise` number — Factor to remove smaller contours, e.g. a value of 0.5 drops any contours that are less than half the area of the largest contour.
  - `show_locations` boolean — A boolean indicating whether the input locations should be returned as MultiPoint features: one feature for the exact input coordinates and one feature for the coordinates of the network node it snapped to.
  - `reverse` boolean — Compute inbound (reverse) isochrone.
  - `generalize` number — Douglas-Peucker polyline generalization tolerance in meters.

## Response `200`

GeoJSON isochrone result, or a GeoTIFF raster when `format=geotiff`

## Other responses

- `400` — Request error
- `429` — Rate limit exceeded. The public service enforces a per-user limit of 1 request per second and a global limit of 100 requests per second. The body is nginx's default 429 HTML page.

---

[API](https://skmtc.net/valhalla/apis/valhalla-routing-api.md) · [All operations](https://skmtc.net/valhalla/apis/valhalla-routing-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/valhalla/valhalla-routing-api/versions/283ca165077c/schema)
