The Planner Mixer plans a trip between two locations and streams multiple travel
options in real time. Where a normal trip planner returns one answer, the mixer
keeps re-planning the same journey under different assumptions — for example by
allowing a bicycle for the first mile, or by permitting shared mobility — and pushes
every result to the client as soon as it is ready. Each result carries a grade so
the client can rank alternatives, and a modifiers list explaining how that result
differs from the default plan request.
Because results arrive progressively, this is a WebSocket endpoint, not a REST endpoint. Messages in both directions are binary Protocol Buffers (proto3), not JSON. The server closes the connection when the mixer has no further results.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| fromPlace | string | Optional | - | Origin as "latitude,longitude" |
| fromId | string | Optional | - | Origin as stop identifier |
| toPlace | string | Optional | - | Destination as "latitude,longitude" |
| toId | string | Optional | - | Destination as stop identifier |
| viaPlace | string | Optional | - | Intermediate point as "latitude,longitude" |
| viaId | string | Optional | - | Intermediate point as stop identifier |
| timestamp | string | Optional | - | Departure (or arrival, see `arriveBy`) time in ISO 8601, e.g. `"2026-08-06T10:00:00+02:00"`. Defaults to now |
| arriveBy | boolean | Optional | false | `timestamp` is the desired arrival time |
| publicTransportOnly | boolean | Optional | - | Restrict the trip to public transport only |
| Property | Type | Description | |
|---|---|---|---|
grade | integer | Grade of the travel option to enable ranking of alternatives. | |
trips | array | List of possible trip itineraries for the requested journey. | |
└─id | string | Unique identifier of the trip. | |
└─legs | array | Leg segments that compose the trip. Each leg is either a non-transit or transit segment. | |
curl -X SOCKET "https://api.infoplaza.com/v1/transit/plannermixer
?api_key=$INFOPLAZA_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'{
"grade": 5,
"trips": [
{
"id": "QWdlbmN5Ok5MLU5PVFJBSU4tTk9GTEVYOkdWQnxBZ2VuY3k6TkwtVFJBSU46SUZGOk5T",
"legs": [
{
"distance": 118.56,
"duration": 1,
"aimedEndTime": "2026-08-06T10:12:33+02:00",
"pointsOnLink": {
"length": 24,
"points": "yx}~Hkj_dA…"
},
"nonTransitLeg": {
"mode": "WALK",
"toPlace": {
"name": "AMSTERDAM, Mr. Visserplein",
"quay": {
"id": "NL-NOTRAIN-NOFLEX:1024090",
"name": "AMSTERDAM, Mr. Visserplein",
"latitude": 52.367939,
"longitude": 4.905391
},
"latitude": 52.367939,
"longitude": 4.905391
},
"fromPlace": {
"name": "Origin",
"latitude": 52.3676,
"longitude": 4.9041
}
},
"aimedStartTime": "2026-08-06T10:10:59+02:00",
"expectedEndTime": "2026-08-06T10:12:33+02:00",
"expectedStartTime": "2026-08-06T10:10:59+02:00"
},
{
"distance": 2618.47,
"duration": 9,
"transitLeg": {
"id": "rO0ABXeDABhTQ0hFRFVMRURfVFJBTlNJVF9MRUdfVjM…",
"line": {
"id": "NL-NOTRAIN-NOFLEX:57749",
"name": "Lijn 14",
"publicCode": "14",
"presentation": {},
"transportMode": "TRAM",
"transportSubmode": "unknown"
},
"mode": "TRAM",
"realtime": true,
"authority": {
"id": "NL-NOTRAIN-NOFLEX:GVB",
"url": "http://www.gvb.nl",
"name": "GVB",
"phone": "0900-8011",
"timezone": "Europe/Amsterdam"
},
"serviceDate": "2026-08-06",
"serviceJourney": {
"id": "NL-NOTRAIN-NOFLEX:267449276",
"publicCode": "16220",
"privateCode": "16220",
"directionType": "Outbound",
"transportMode": "TRAM",
"transportSubmode": "unknown"
},
"toEstimatedCall": {
"quay": {
"id": "NL-NOTRAIN-NOFLEX:1023035",
"name": "AMSTERDAM, Centraal Station",
"latitude": 52.377754,
"longitude": 4.901026
},
"aimedArrivalTime": "2026-08-06T10:21:34+02:00",
"aimedDepartureTime": "2026-08-06T10:21:34+02:00",
"destinationDisplay": {
"frontText": "Centraal Station"
},
"expectedArrivalTime": "2026-08-06T10:21:34+02:00",
"expectedDepartureTime": "2026-08-06T10:21:34+02:00"
},
"fromEstimatedCall": {
"quay": {
"id": "NL-NOTRAIN-NOFLEX:1024090",
"name": "AMSTERDAM, Mr. Visserplein",
"latitude": 52.367939,
"longitude": 4.905391
},
"aimedArrivalTime": "2026-08-06T10:11:15+02:00",
"aimedDepartureTime": "2026-08-06T10:11:33+02:00",
"destinationDisplay": {
"frontText": "Centraal Station"
},
"expectedArrivalTime": "2026-08-06T10:12:15+02:00",
"expectedDepartureTime": "2026-08-06T10:12:33+02:00"
},
"intermediateEstimatedCalls": [
{
"quay": {
"id": "NL-NOTRAIN-NOFLEX:1023892",
"name": "AMSTERDAM, Waterlooplein",
"latitude": 52.366963,
"longitude": 4.901922
},
"aimedArrivalTime": "2026-08-06T10:12:22+02:00",
"aimedDepartureTime": "2026-08-06T10:12:40+02:00",
"destinationDisplay": {
"frontText": "Centraal Station"
},
"expectedArrivalTime": "2026-08-06T10:13:17+02:00",
"expectedDepartureTime": "2026-08-06T10:13:35+02:00"
}
]
},
"aimedEndTime": "2026-08-06T10:21:34+02:00",
"pointsOnLink": {
"length": 250,
"points": "cy}~H}r_dA…"
},
"aimedStartTime": "2026-08-06T10:11:33+02:00",
"expectedEndTime": "2026-08-06T10:21:34+02:00",
"expectedStartTime": "2026-08-06T10:12:33+02:00"
},
{
"distance": 16806.45,
"duration": 15,
"transitLeg": {
"line": {
"id": "NL-TRAIN:60683",
"name": "Amsterdam Centraal <-> Hoofddorp SPR8400",
"publicCode": "Sprinter",
"presentation": {},
"transportMode": "RAIL"
},
"mode": "RAIL",
"authority": {
"id": "NL-TRAIN:IFF:NS",
"url": "http://www.ns.nl",
"name": "NS",
"phone": "0900-2021163",
"timezone": "Europe/Amsterdam"
},
"serviceDate": "2026-08-06",
"serviceJourney": {
"id": "NL-TRAIN:268553985",
"publicCode": "8437",
"privateCode": "8437",
"bikesAllowed": true,
"directionType": "Outbound",
"transportMode": "RAIL"
},
"toEstimatedCall": {
"quay": {
"id": "NL-TRAIN:916993",
"name": "Schiphol Airport",
"latitude": 52.3093445,
"longitude": 4.7621119,
"wheelchairAccessible": true
},
"aimedPlatform": "4",
"aimedArrivalTime": "2026-08-06T10:41:00+02:00",
"destinationDisplay": {
"frontText": "Hoofddorp"
},
"expectedArrivalTime": "2026-08-06T10:41:00+02:00"
},
"fromEstimatedCall": {
"quay": {
"id": "NL-TRAIN:906961",
"name": "Amsterdam Centraal",
"latitude": 52.3795551,
"longitude": 4.899897
},
"aimedPlatform": "14a",
"aimedDepartureTime": "2026-08-06T10:26:00+02:00",
"destinationDisplay": {
"frontText": "Hoofddorp"
},
"expectedDepartureTime": "2026-08-06T10:26:00+02:00"
}
},
"aimedEndTime": "2026-08-06T10:41:00+02:00",
"aimedStartTime": "2026-08-06T10:26:00+02:00"
}
],
"distance": 20826.63,
"duration": 42,
"walkTime": 18,
"transfers": 1,
"waitingTime": 0,
"aimedEndTime": "2026-08-06T10:53:50+02:00",
"aimedStartTime": "2026-08-06T10:09:59+02:00",
"streetDistance": 1401.71,
"expectedEndTime": "2026-08-06T10:53:50+02:00",
"expectedStartTime": "2026-08-06T10:10:59+02:00"
}
],
"timestamp": "2026-08-06T10:04:46+02:00",
"containsOnDemand": false
}| number |
| Distance of this leg in meters. |
└─duration | integer | Duration of this leg in minutes. |
└─transitLeg | object | Details for a leg involving public transit. |
└─id | string | Unique identifier for this transit leg. |
└─line | object | Information about the transit line used in this leg. |
└─id | string | - |
└─name | string | - |
└─publicCode | string | - |
└─presentation | object | Presentation related metadata (optional, can be empty). |
└─transportMode | string | - |
└─transportSubmode | string | - |
└─mode | string | General mode of transport for this leg, e.g. TRAM, RAIL. |
└─realtime | boolean | Indicates if real-time data affects this leg. |
└─authority | object | Authority or agency responsible for this transit leg. |
└─id | string | - |
└─url | string | - | format: uri |
└─name | string | - |
└─phone | string | - |
└─timezone | string | Timezone identifier, e.g. Europe/Amsterdam. |
└─serviceDate | string | Calendar date of the transit service. | format: date |
└─serviceJourney | object | Metadata about the transit service journey. |
└─id | string | Identifier of the service journey. |
└─publicCode | string | Public facing service code. |
└─privateCode | string | Internal/private code of the service. |
└─bikesAllowed | boolean | Indicates if bikes are allowed on this service journey. |
└─directionType | string | Typically Outbound/Inbound or similar. |
└─transportMode | string | General mode of transport (e.g. TRAM, RAIL). |
└─transportSubmode | string | More specific submode of transport if known. |
└─toEstimatedCall | object | Estimated arrival stop information, similar structure to fromEstimatedCall. |
└─quay | object | Destination stop/quay for the leg. |
└─id | string | Quay identifier. |
└─name | string | Name of the quay. |
└─latitude | number | Latitude coordinate. |
└─longitude | number | Longitude coordinate. |
└─wheelchairAccessible | boolean | Optional: accessibility info if available. |
└─aimedPlatform | string | Scheduled platform assigned at the stop. |
└─aimedArrivalTime | string | Scheduled arrival time at this stop. | format: date-time |
└─aimedDepartureTime | string | Scheduled departure time (if applicable). | format: date-time |
└─destinationDisplay | object | - |
└─frontText | string | - |
└─expectedArrivalTime | string | Real-time estimated arrival time if available. | format: date-time |
└─expectedDepartureTime | string | Real-time estimated departure time if available. | format: date-time |
└─fromEstimatedCall | object | Estimated departure stop information. |
└─quay | object | Origin stop/quay for the leg. |
└─id | string | Quay identifier. |
└─name | string | Name of the quay. |
└─latitude | number | Latitude coordinate. |
└─longitude | number | Longitude coordinate. |
└─wheelchairAccessible | boolean | Optional: accessibility info if available. |
└─aimedPlatform | string | Scheduled platform assigned at the stop. |
└─aimedArrivalTime | string | Scheduled arrival time at this stop (may be missing for origin). | format: date-time |
└─aimedDepartureTime | string | Scheduled departure time from this stop. | format: date-time |
└─destinationDisplay | object | Display info for destination text shown to passengers. |
└─frontText | string | The text displayed. |
└─expectedArrivalTime | string | Real-time estimated arrival time if available. | format: date-time |
└─expectedDepartureTime | string | Real-time estimated departure time if available. | format: date-time |
└─intermediateEstimatedCalls | array | List of intermediate stops with estimated arrival and departure times. |
└─quay | object | - |
└─id | string | - |
└─name | string | - |
└─latitude | number | - |
└─longitude | number | - |
└─aimedArrivalTime | string | - | format: date-time |
└─aimedDepartureTime | string | - | format: date-time |
└─destinationDisplay | object | - |
└─frontText | string | - |
└─expectedArrivalTime | string | - | format: date-time |
└─expectedDepartureTime | string | - | format: date-time |
└─aimedEndTime | string | Scheduled (aimed) end time of this leg. | format: date-time |
└─pointsOnLink | object | Encoded polyline points that represent the route for this leg. |
└─length | integer | Number of points encoded in the polyline. |
└─points | string | Encoded polyline string representing the path. |
└─nonTransitLeg | object | Shows details for a leg without transit, typically walking or bicycle segments. |
└─mode | string | Transport mode used for this non-transit leg, e.g., WALK. |
└─toPlace | object | Ending location of the leg. |
└─name | string | Name of the destination. |
└─quay | object | Quay information related to this place if applicable. |
└─id | string | Identifier of the quay. |
└─name | string | Name of the quay. |
└─latitude | number | Latitude of quay. |
└─longitude | number | Longitude of quay. |
└─latitude | number | Latitude in decimal degrees. |
└─longitude | number | Longitude in decimal degrees. |
└─fromPlace | object | Starting location of the leg. |
└─name | string | Name of the start place. |
└─latitude | number | Latitude in decimal degrees. |
└─longitude | number | Longitude in decimal degrees. |
└─aimedStartTime | string | Scheduled (aimed) start time of this leg. | format: date-time |
└─expectedEndTime | string | Expected end time of this leg including real-time updates if available. | format: date-time |
└─expectedStartTime | string | Expected start time of this leg including real-time updates if available. | format: date-time |
└─distance | number | Total distance of the trip in meters. |
└─duration | integer | Total duration of the trip in minutes. |
└─walkTime | integer | Total walking time in minutes during the trip. |
└─transfers | integer | Number of transfers during the trip. |
└─waitingTime | integer | Total waiting time in minutes during the trip. |
└─aimedEndTime | string | Scheduled (aimed) end time of the trip. | format: date-time |
└─aimedStartTime | string | Scheduled (aimed) start time of the trip. | format: date-time |
└─streetDistance | number | Total street distance walked in meters. |
└─expectedEndTime | string | Expected end time of the trip including real-time updates if available. | format: date-time |
└─expectedStartTime | string | Expected start time of the trip including real-time updates if available. | format: date-time |
timestamp | string | ISO 8601 timestamp indicating when this result was generated, including timezone offset. | format: date-time |
containsOnDemand | boolean | Indicates whether any part of the trip includes on-demand transport modes. |