The I'm Planner 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), if you want to use JSON, please set the "mode" parameter to "json" when making the initial request to the websocket. The server closes the connection when the mixer has no further results.
Expansive documentation can be found at: The I'm Planner documentation
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| mode | string | Optional | proto | Wether the websocket will accept JSON or Protobuf requests. Also changes the output type. Options: proto, json |
| 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/implanner
?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. |