---
title: "Street routing from one to many places or many to one.
The order in the response array corresponds to the order of coordinates of the \\`many\\` parameter in the request body."
method: POST
path: "/api/v1/one-to-many"
tags: ["routing"]
---

# Street routing from one to many places or many to one.
The order in the response array corresponds to the order of coordinates of the \`many\` parameter in the request body.

`POST /api/v1/one-to-many`

## Request body

- OneToManyParams
  - `one` string, required — geo location as latitude;longitude
  - `many` string[], required — geo locations as latitude;longitude,latitude;longitude,... The number of accepted locations is limited by server config variable `onetomany_max_many`.
  - `mode` 'WALK' | 'BIKE' | 'RENTAL' | 'CAR' | 'HGV' | 'CAR_PARKING' | 'CAR_DROPOFF' | 'ODM' | 'RIDE_SHARING' | 'FLEX' | 'DEBUG_BUS_ROUTE' | 'DEBUG_RAILWAY_ROUTE' | 'DEBUG_FERRY_ROUTE' | 'TRANSIT' | 'TRAM' | 'SUBWAY' | 'FERRY' | 'AIRPLANE' | 'BUS' | 'COACH' | 'RAIL' | 'HIGHSPEED_RAIL' | 'LONG_DISTANCE' | 'NIGHT_RAIL' | 'REGIONAL_FAST_RAIL' | 'REGIONAL_RAIL' | 'SUBURBAN' | 'FUNICULAR' | 'AERIAL_LIFT' | 'OTHER' | 'AREAL_LIFT' | 'METRO' | 'CABLE_CAR', required — # Street modes - `WALK` - `BIKE` - `RENTAL` Experimental. Expect unannounced breaking changes (without version bumps) for all parameters and returned structs. - `CAR` - `HGV` Heavy goods vehicles (only supported for direct connections) - `CAR_PARKING` Experimental. Expect unannounced breaking changes (without version bumps) for all parameters and returned structs. - `CAR_DROPOFF` Experimental. Expect unannounced breaking changes (without version bumps) for all perameters and returned structs. - `ODM` on-demand taxis from the Prima+ÖV Project - `RIDE_SHARING` ride sharing from the Prima+ÖV Project - `FLEX` flexible transports # Transit modes - `TRANSIT`: translates to `TRAM,FERRY,AIRPLANE,BUS,COACH,RAIL,ODM,RIDE_SHARING,FUNICULAR,AERIAL_LIFT,OTHER` - `TRAM`: trams - `SUBWAY`: subway trains (Paris Metro, London Underground, but also NYC Subway, Hamburger Hochbahn, and other non-underground services) - `FERRY`: ferries - `AIRPLANE`: airline flights - `BUS`: short distance buses (does not include `COACH`) - `COACH`: long distance buses (does not include `BUS`) - `RAIL`: translates to `HIGHSPEED_RAIL,LONG_DISTANCE,NIGHT_RAIL,REGIONAL_RAIL,SUBURBAN,SUBWAY` - `HIGHSPEED_RAIL`: long distance high speed trains (e.g. TGV) - `LONG_DISTANCE`: long distance inter city trains - `NIGHT_RAIL`: long distance night trains - `REGIONAL_FAST_RAIL`: deprecated, `REGIONAL_RAIL` will be used - `REGIONAL_RAIL`: regional train - `SUBURBAN`: suburban trains (e.g. S-Bahn, RER, Elizabeth Line, ...) - `ODM`: demand responsive transport - `RIDE_SHARING`: ride sharing - `FUNICULAR`: Funicular. Any rail system designed for steep inclines. - `AERIAL_LIFT`: Aerial lift, suspended cable car (e.g., gondola lift, aerial tramway). Cable transport where cabins, cars, gondolas or open chairs are suspended by means of one or more cables. - `AREAL_LIFT`: deprecated - `METRO`: deprecated - `CABLE_CAR`: deprecated
  - `max` number, required — maximum travel time in seconds. Is limited by server config variable `street_routing_max_direct_seconds`.
  - `maxMatchingDistance` number, required — maximum matching distance in meters to match geo coordinates to the street network Is limited by server config variable `max_max_matching_distance`, larger values are capped to this limit.
  - `elevationCosts` 'NONE' | 'LOW' | 'HIGH' — Different elevation cost profiles for street routing. Using a elevation cost profile will prefer routes with a smaller incline and smaller difference in elevation, even if the routed way is longer. - `NONE`: Ignore elevation data for routing. This is the default behavior - `LOW`: Add a low penalty for inclines. This will favor longer paths, if the elevation increase and incline are smaller. - `HIGH`: Add a high penalty for inclines. This will favor even longer paths, if the elevation increase and incline are smaller.
  - `arriveBy` boolean, required — true = many to one false = one to many
  - `withDistance` boolean — If true, the response includes the distance in meters for each path. This requires path reconstruction and may be slower than duration-only queries.

## Response `200`

A list of durations.
If no path was found, the object is empty.

- Duration[]
  - `duration` number — duration in seconds if a path was found, otherwise missing
  - `distance` number — distance in meters if a path was found and distance computation was requested, otherwise missing

## Other responses

- `400` — Bad Request
- `422` — Unprocessable Entity
- `500` — Internal Server Error

---

[API](https://skmtc.net/motis-project/apis/motis-api.md) · [All operations](https://skmtc.net/motis-project/apis/motis-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/motis-project/motis-api/versions/947bd5a43e8d/schema)
