---
title: "One to many routing Computes the minimal duration from one place to many or vice versa. The order in the response array corresponds to the order of coordinates of the \\`many\\` parameter in the query."
method: GET
path: "/api/experimental/one-to-many-intermodal"
tags: ["routing"]
---

# One to many routing Computes the minimal duration from one place to many or vice versa. The order in the response array corresponds to the order of coordinates of the \\\`many\\\` parameter in the query.

`GET /api/experimental/one-to-many-intermodal`

## Query parameters

- `one` string, required
- `many` string[], required
- `time` string, date-time
- `maxTravelTime` integer
- `maxMatchingDistance` number
- `arriveBy` boolean
- `maxTransfers` integer
- `minTransferTime` integer
- `additionalTransferTime` integer
- `transferTimeFactor` number
- `useRoutedTransfers` boolean
- `pedestrianProfile` 'FOOT' | 'WHEELCHAIR' — Different accessibility profiles for pedestrians.
- `pedestrianSpeed` number — Average speed for pedestrian routing in meters per second
- `cyclingSpeed` number — Average speed for bike routing in meters per second
- `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.
- `transitModes` Mode[]
- `preTransitModes` Mode[]
- `postTransitModes` Mode[]
- `directMode` 'WALK' | 'BIKE' | 'RENTAL' | 'CAR' | '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' — # Street modes - `WALK` - `BIKE` - `RENTAL` Experimental. Expect unannounced breaking changes (without version bumps) for all parameters and returned structs. - `CAR` - `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
- `maxPreTransitTime` integer
- `maxPostTransitTime` integer
- `maxDirectTime` integer
- `withDistance` boolean
- `requireBikeTransport` boolean
- `requireCarTransport` boolean

## Response `200`

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

- OneToManyIntermodalResponse — Object containing the optimal street and transit durations for One-to-Many routing
  - `street_durations` Duration[] — Fastest durations for street routing The order of the items corresponds to the order of the `many` locations If no street routed connection is found, the corresponding `Duration` will be empty
    - `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
  - `transit_durations` ParetoSet[] — Pareto optimal solutions The order of the items corresponds to the order of the `many` locations If no connection using transits is found, the corresponding `ParetoSet` will be empty
    - ParetoSetEntry[] — Pareto set of optimal transit solutions
      - `duration` number, required — duration in seconds for the the best solution using `transfer` transfers Notice that the resolution is currently in minutes, because of implementation details
      - `transfers` integer, required — The minimal number of transfers required to arrive within `duration` seconds transfers=0: Direct transit connecion without any transfers transfers=1: Transit connection with 1 transfer

## Other responses

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

## Changes

- **2026-03-05** `9fcf5ec94e7e` — 1 breaking, 3 info
  - the response's body type changed from `array` to `object` for status `200`
  - added the new optional `query` request parameter `withDistance`
  - added the optional property `street_durations` to the response with the `200` status
  - added the optional property `transit_durations` to the response with the `200` status
- **2026-02-25** `25ef6a0a4187` — 1 info
  - endpoint added
- **2026-02-21** `b7bf68a0d6f3` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/motis-project/apis/motis-api/changes/api/experimental/one-to-many-intermodal/get.md)

---

[API](https://skmtc.dev/motis-project/apis/motis-api.md) · [All operations](https://skmtc.dev/motis-project/apis/motis-api/llms.txt) · [OpenAPI document](https://skmtc.dev/motis-project/apis/motis-api/revisions/a2ab90068a35?raw)
