Open Application Platform GraphQL Session token
No token
Home Sign in Capabilities REST MCP Errors sMap sApp sLocker sPrint sWidget

GraphQL reference

The same capabilities, the same billing, the same authentication.

This schema shares no operation with the one at api.superroute.ca. They are separate contracts and are versioned separately, so nothing you know from the tenant API carries over by name.

Route optimization

openRoutingInsert query node Beta

Place new jobs in a plan you hold at the positions that cost least, without resequencing the rest.

query Run($input: Json!) {
  openRoutingInsert(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "departed_at": "2026-11-02T08:00:00-05:00",
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                },
                "time_window": [
                    "2026-11-02T08:00:00-05:00",
                    "2026-11-02T17:00:00-05:00"
                ]
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 3
                },
                "time_windows": [
                    [
                        "2026-11-02T09:00:00-05:00",
                        "2026-11-02T12:00:00-05:00"
                    ]
                ]
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 240,
                "amount": {
                    "parcels": 1
                }
            }
        ],
        "routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    "order-1001",
                    "order-1002"
                ]
            },
            {
                "vehicle_id": "van-2",
                "stops": [
                    "order-1003"
                ]
            }
        ],
        "insert": [
            {
                "id": "order-1004",
                "location": {
                    "lat": 45.5155,
                    "lng": -73.5605
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            },
            {
                "id": "order-1005",
                "location": {
                    "lat": 45.492,
                    "lng": -73.583
                },
                "service_seconds": 180,
                "amount": {
                    "parcels": 9
                }
            }
        ]
    }
}
Response example
{
    "data": {
        "openRoutingInsert": {
            "mode": "sync",
            "job": null,
            "data": {
                "placements": [
                    {
                        "job": "order-1004",
                        "vehicle_id": "van-1",
                        "position": 2,
                        "after": "order-1001",
                        "added_distance_meters": 1505,
                        "added_duration_seconds": 213,
                        "added_waiting_seconds": -513,
                        "arrival": "2026-11-02T08:11:57-05:00",
                        "waiting_seconds": 0,
                        "service_start": "2026-11-02T08:11:57-05:00",
                        "alternatives": [
                            {
                                "vehicle_id": "van-1",
                                "position": 1,
                                "after": null,
                                "added_distance_meters": 2345,
                                "added_duration_seconds": 309,
                                "added_waiting_seconds": -609,
                                "arrival": "2026-11-02T08:04:31-05:00",
                                "waiting_seconds": 0,
                                "service_start": "2026-11-02T08:04:31-05:00"
                            },
                            {
                                "vehicle_id": "van-2",
                                "position": 1,
                                "after": null,
                                "added_distance_meters": 849,
                                "added_duration_seconds": 127,
                                "added_waiting_seconds": 0,
                                "arrival": "2026-11-02T08:04:31-05:00",
                                "waiting_seconds": 0,
                                "service_start": "2026-11-02T08:04:31-05:00"
                            },
                            {
                                "vehicle_id": "van-2",
                                "position": 2,
                                "after": "order-1003",
                                "added_distance_meters": 1402,
                                "added_duration_seconds": 211,
                                "added_waiting_seconds": 0,
                                "arrival": "2026-11-02T08:17:27-05:00",
                                "waiting_seconds": 0,
                                "service_start": "2026-11-02T08:17:27-05:00"
                            }
                        ]
                    },
                    {
                        "job": "order-1005",
                        "vehicle_id": "van-2",
                        "position": 2,
                        "after": "order-1003",
                        "added_distance_meters": 3080,
                        "added_duration_seconds": 357,
                        "added_waiting_seconds": 0,
                        "arrival": "2026-11-02T08:21:12-05:00",
                        "waiting_seconds": 0,
                        "service_start": "2026-11-02T08:21:12-05:00",
                        "alternatives": [
                            {
                                "vehicle_id": "van-2",
                                "position": 1,
                                "after": null,
                                "added_distance_meters": 3495,
                                "added_duration_seconds": 431,
                                "added_waiting_seconds": 0,
                                "arrival": "2026-11-02T08:05:14-05:00",
                                "waiting_seconds": 0,
                                "service_start": "2026-11-02T08:05:14-05:00"
                            }
                        ]
                    }
                ],
                "unplaced": [],
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "stop_count": 5,
                        "task_count": 3,
                        "distance_meters": 7921,
                        "duration_seconds": 1045,
                        "service_seconds": 900,
                        "waiting_seconds": 2152,
                        "departure": "2026-11-02T08:00:00-05:00",
                        "completion": "2026-11-02T09:08:17-05:00",
                        "unreachable_legs": 0,
                        "violations": [],
                        "violation_count": 0,
                        "stops": [
                            {
                                "type": "start",
                                "departure": "2026-11-02T08:00:00-05:00"
                            },
                            {
                                "type": "job",
                                "id": "order-1001",
                                "sequence": 1,
                                "reachable": true,
                                "leg_distance_meters": 1840,
                                "leg_duration_seconds": 245,
                                "leg_geometry": null,
                                "arrival": "2026-11-02T08:04:05-05:00",
                                "arrival_epoch": 1793624645,
                                "distance_meters": 1840,
                                "duration_seconds": 245
                            },
                            {
                                "type": "job",
                                "id": "order-1004",
                                "sequence": 2,
                                "reachable": true,
                                "leg_distance_meters": 1233,
                                "leg_duration_seconds": 172,
                                "leg_geometry": null,
                                "arrival": "2026-11-02T08:11:57-05:00",
                                "arrival_epoch": 1793625117,
                                "distance_meters": 3073,
                                "duration_seconds": 417
                            },
                            {
                                "type": "job",
                                "id": "order-1002",
                                "sequence": 3,
                                "reachable": true,
                                "leg_distance_meters": 3380,
                                "leg_duration_seconds": 431,
                                "leg_geometry": null,
                                "arrival": "2026-11-02T08:24:08-05:00",
                                "arrival_epoch": 1793625848,
                                "distance_meters": 6453,
                                "duration_seconds": 848,
                                "waiting_seconds": 2152
                            },
                            {
                                "type": "end",
                                "reachable": true,
                                "leg_distance_meters": 1468,
                                "leg_duration_seconds": 197,
                                "leg_geometry": null,
                                "arrival": "2026-11-02T09:08:17-05:00",
                                "arrival_epoch": 1793628497,
                                "distance_meters": 7921,
                                "duration_seconds": 1045
                            }
                        ]
                    },
                    {
                        "vehicle_id": "van-2",
                        "stop_count": 4,
                        "task_count": 2,
                        "distance_meters": 10224,
                        "duration_seconds": 1273,
                        "service_seconds": 420,
                        "waiting_seconds": 0,
                        "departure": "2026-11-02T08:00:00-05:00",
                        "completion": "2026-11-02T08:28:13-05:00",
                        "unreachable_legs": 0,
                        "violations": [],
                        "violation_count": 0,
                        "stops": [
                            {
                                "type": "start",
                                "departure": "2026-11-02T08:00:00-05:00"
                            },
                            {
                                "type": "job",
                                "id": "order-1003",
                                "sequence": 1,
                                "reachable": true,
                                "leg_distance_meters": 3635,
                                "leg_duration_seconds": 482,
                                "leg_geometry": null,
                                "arrival": "2026-11-02T08:08:02-05:00",
                                "arrival_epoch": 1793624882,
                                "distance_meters": 3635,
                                "duration_seconds": 482
                            },
                            {
                                "type": "job",
                                "id": "order-1005",
                                "sequence": 2,
                                "reachable": true,
                                "leg_distance_meters": 4567,
                                "leg_duration_seconds": 550,
                                "leg_geometry": null,
                                "arrival": "2026-11-02T08:21:12-05:00",
                                "arrival_epoch": 1793625672,
                                "distance_meters": 8202,
                                "duration_seconds": 1032
                            },
                            {
                                "type": "end",
                                "reachable": true,
                                "leg_distance_meters": 2022,
                                "leg_duration_seconds": 241,
                                "leg_geometry": null,
                                "arrival": "2026-11-02T08:28:13-05:00",
                                "arrival_epoch": 1793626093,
                                "distance_meters": 10224,
                                "duration_seconds": 1273
                            }
                        ]
                    }
                ],
                "summary": {
                    "inserted": 2,
                    "unplaced": 0,
                    "added_distance_meters": 4585,
                    "added_duration_seconds": 570,
                    "violations": 0
                }
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "objective": "duration",
                "nearest": 25,
                "legs_measured": 23
            },
            "billing": {
                "unit": "node",
                "quantity": 5,
                "counted": true,
                "breakdown": {
                    "planned_stops": 3,
                    "new_jobs": 2
                }
            }
        }
    }
}
routing.insert →

openRoutingOptimize mutation node Stable

Plan routes across a fleet from jobs, vehicles and constraints you supply.

mutation Optimize($input: Json!) {
  openRoutingOptimize(input: $input) {
    mode
    job
    routes
    unassigned
    summary
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": [
                    10
                ],
                "time_window": [
                    "2026-11-02T08:00:00-05:00",
                    "2026-11-02T17:00:00-05:00"
                ]
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": [
                    10
                ]
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": [
                    2
                ]
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": [
                    3
                ],
                "time_windows": [
                    [
                        "2026-11-02T09:00:00-05:00",
                        "2026-11-02T12:00:00-05:00"
                    ]
                ]
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 240,
                "amount": [
                    1
                ]
            }
        ]
    }
}
Response example
{
    "data": {
        "openRoutingOptimize": {
            "mode": "sync",
            "job": null,
            "routes": [
                {
                    "vehicle_id": "van-2",
                    "stops": [
                        {
                            "type": "start",
                            "arrival": "2026-11-02T08:31:07-05:00",
                            "arrival_epoch": 1793626267,
                            "distance_meters": 0,
                            "duration_seconds": 0,
                            "load": [
                                6
                            ]
                        },
                        {
                            "type": "job",
                            "arrival": "2026-11-02T08:35:11-05:00",
                            "arrival_epoch": 1793626511,
                            "distance_meters": 1839,
                            "duration_seconds": 244,
                            "leg_distance_meters": 1839,
                            "leg_duration_seconds": 244,
                            "id": "order-1001",
                            "load": [
                                4
                            ]
                        },
                        {
                            "type": "job",
                            "arrival": "2026-11-02T08:47:56-05:00",
                            "arrival_epoch": 1793627276,
                            "distance_meters": 5338,
                            "duration_seconds": 709,
                            "leg_distance_meters": 3499,
                            "leg_duration_seconds": 465,
                            "id": "order-1003",
                            "load": [
                                3
                            ]
                        },
                        {
                            "type": "job",
                            "arrival": "2026-11-02T09:00:00-05:00",
                            "arrival_epoch": 1793628000,
                            "distance_meters": 9220,
                            "duration_seconds": 1193,
                            "leg_distance_meters": 3882,
                            "leg_duration_seconds": 484,
                            "id": "order-1002",
                            "load": [
                                0
                            ]
                        },
                        {
                            "type": "end",
                            "arrival": "2026-11-02T09:08:17-05:00",
                            "arrival_epoch": 1793628497,
                            "distance_meters": 10687,
                            "duration_seconds": 1390,
                            "leg_distance_meters": 1467,
                            "leg_duration_seconds": 197,
                            "load": [
                                0
                            ]
                        }
                    ],
                    "stop_count": 5,
                    "task_count": 3,
                    "distance_meters": 10687,
                    "duration_seconds": 1390,
                    "service_seconds": 840,
                    "waiting_seconds": 0,
                    "geometry": null
                }
            ],
            "unassigned": [],
            "summary": {
                "routes": 1,
                "assigned": 3,
                "unassigned": 0,
                "distance_meters": 10687,
                "duration_seconds": 1390
            },
            "warnings": [],
            "meta": {
                "engine": "sroute2",
                "engine_version": "1.6.1",
                "solve_id": "ab4fdf5d-b172-4d85-b2eb-553d35ed3946",
                "capacity_dimensions": [
                    "0"
                ]
            },
            "billing": {
                "unit": "node",
                "quantity": 5,
                "counted": true,
                "breakdown": {
                    "nodes": 5,
                    "jobs": 3,
                    "shipments": 0,
                    "shipment_nodes": 0,
                    "vehicles": 2,
                    "vehicle_nodes": 2
                }
            }
        }
    }
}
routing.optimize →

openRoutingRefine mutation node Stable

Re-optimize an existing plan locally or globally, keeping chosen stops frozen.

mutation Run($input: Json!) {
  openRoutingRefine(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": [
                    10
                ],
                "time_window": [
                    "2026-11-02T08:00:00-05:00",
                    "2026-11-02T17:00:00-05:00"
                ]
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": [
                    10
                ]
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": [
                    2
                ]
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": [
                    3
                ],
                "time_windows": [
                    [
                        "2026-11-02T09:00:00-05:00",
                        "2026-11-02T12:00:00-05:00"
                    ]
                ]
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 240,
                "amount": [
                    1
                ]
            }
        ],
        "existing_routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    {
                        "id": "order-1001"
                    },
                    {
                        "id": "order-1002"
                    }
                ]
            },
            {
                "vehicle_id": "van-2",
                "stops": [
                    {
                        "id": "order-1003"
                    }
                ]
            }
        ]
    }
}
Response example
{
    "data": {
        "openRoutingRefine": {
            "mode": "sync",
            "job": null,
            "data": {
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "stops": [
                            {
                                "type": "start",
                                "arrival": "2026-11-02T08:00:00-05:00",
                                "arrival_epoch": 1793624400,
                                "distance_meters": 0,
                                "duration_seconds": 0,
                                "load": [
                                    3
                                ]
                            },
                            {
                                "type": "job",
                                "arrival": "2026-11-02T08:08:01-05:00",
                                "arrival_epoch": 1793624881,
                                "distance_meters": 3635,
                                "duration_seconds": 481,
                                "leg_distance_meters": 3635,
                                "leg_duration_seconds": 481,
                                "id": "order-1003",
                                "load": [
                                    2
                                ]
                            },
                            {
                                "type": "job",
                                "arrival": "2026-11-02T08:18:34-05:00",
                                "arrival_epoch": 1793625514,
                                "distance_meters": 6563,
                                "duration_seconds": 874,
                                "leg_distance_meters": 2928,
                                "leg_duration_seconds": 393,
                                "id": "order-1001",
                                "load": [
                                    0
                                ]
                            },
                            {
                                "type": "end",
                                "arrival": "2026-11-02T08:27:15-05:00",
                                "arrival_epoch": 1793626035,
                                "distance_meters": 8356,
                                "duration_seconds": 1095,
                                "leg_distance_meters": 1793,
                                "leg_duration_seconds": 221,
                                "load": [
                                    0
                                ]
                            }
                        ],
                        "stop_count": 4,
                        "task_count": 2,
                        "distance_meters": 8356,
                        "duration_seconds": 1095,
                        "service_seconds": 540,
                        "waiting_seconds": 0,
                        "geometry": null
                    },
                    {
                        "vehicle_id": "van-2",
                        "stops": [
                            {
                                "type": "start",
                                "arrival": "2026-11-02T08:56:13-05:00",
                                "arrival_epoch": 1793627773,
                                "distance_meters": 0,
                                "duration_seconds": 0,
                                "load": [
                                    3
                                ]
                            },
                            {
                                "type": "job",
                                "arrival": "2026-11-02T09:00:00-05:00",
                                "arrival_epoch": 1793628000,
                                "distance_meters": 1610,
                                "duration_seconds": 227,
                                "leg_distance_meters": 1610,
                                "leg_duration_seconds": 227,
                                "id": "order-1002",
                                "load": [
                                    0
                                ]
                            },
                            {
                                "type": "end",
                                "arrival": "2026-11-02T09:08:17-05:00",
                                "arrival_epoch": 1793628497,
                                "distance_meters": 3077,
                                "duration_seconds": 424,
                                "leg_distance_meters": 1467,
                                "leg_duration_seconds": 197,
                                "load": [
                                    0
                                ]
                            }
                        ],
                        "stop_count": 3,
                        "task_count": 1,
                        "distance_meters": 3077,
                        "duration_seconds": 424,
                        "service_seconds": 300,
                        "waiting_seconds": 0,
                        "geometry": null
                    }
                ],
                "unassigned": [],
                "summary": {
                    "routes": 2,
                    "assigned": 3,
                    "unassigned": 0,
                    "distance_meters": 11433,
                    "duration_seconds": 1519
                }
            },
            "warnings": [],
            "meta": {
                "engine": "sroute2",
                "engine_version": "1.6.1",
                "capacity_dimensions": [
                    "0"
                ]
            },
            "billing": {
                "unit": "node",
                "quantity": 5,
                "counted": true,
                "breakdown": {
                    "nodes": 5,
                    "jobs": 3,
                    "shipments": 0,
                    "shipment_nodes": 0,
                    "vehicles": 2,
                    "vehicle_nodes": 2,
                    "route_stops": 0
                }
            }
        }
    }
}
routing.refine →

openRoutingWhatIf query call Beta

Score several alternative plans side by side without committing to any.

query WhatIf($input: Json!) {
  openRoutingWhatIf(input: $input)
}

Variables

{
    "input": {
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": [
                    10
                ],
                "time_window": [
                    "2026-11-02T08:00:00-05:00",
                    "2026-11-02T17:00:00-05:00"
                ]
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": [
                    10
                ]
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": [
                    2
                ]
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": [
                    3
                ],
                "time_windows": [
                    [
                        "2026-11-02T09:00:00-05:00",
                        "2026-11-02T12:00:00-05:00"
                    ]
                ]
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 240,
                "amount": [
                    1
                ]
            }
        ],
        "existing_routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    {
                        "id": "order-1001"
                    },
                    {
                        "id": "order-1002"
                    }
                ]
            },
            {
                "vehicle_id": "van-2",
                "stops": [
                    {
                        "id": "order-1003"
                    }
                ]
            }
        ]
    }
}
Response example
{
    "data": {
        "openRoutingWhatIf": {
            "plans": [
                {
                    "plan_id": "min_change",
                    "strategy": "min_change",
                    "routes": [
                        {
                            "vehicle_id": "van-1",
                            "stops": [
                                {
                                    "type": "start",
                                    "arrival": "2026-11-02T08:00:00-05:00",
                                    "arrival_epoch": 1793624400,
                                    "distance_meters": 0,
                                    "duration_seconds": 0,
                                    "load": [
                                        3
                                    ]
                                },
                                {
                                    "type": "job",
                                    "arrival": "2026-11-02T08:08:01-05:00",
                                    "arrival_epoch": 1793624881,
                                    "distance_meters": 3635,
                                    "duration_seconds": 481,
                                    "leg_distance_meters": 3635,
                                    "leg_duration_seconds": 481,
                                    "id": "order-1003",
                                    "load": [
                                        2
                                    ]
                                },
                                {
                                    "type": "job",
                                    "arrival": "2026-11-02T08:18:34-05:00",
                                    "arrival_epoch": 1793625514,
                                    "distance_meters": 6563,
                                    "duration_seconds": 874,
                                    "leg_distance_meters": 2928,
                                    "leg_duration_seconds": 393,
                                    "id": "order-1001",
                                    "load": [
                                        0
                                    ]
                                },
                                {
                                    "type": "end",
                                    "arrival": "2026-11-02T08:27:15-05:00",
                                    "arrival_epoch": 1793626035,
                                    "distance_meters": 8356,
                                    "duration_seconds": 1095,
                                    "leg_distance_meters": 1793,
                                    "leg_duration_seconds": 221,
                                    "load": [
                                        0
                                    ]
                                }
                            ],
                            "stop_count": 4,
                            "task_count": 2,
                            "distance_meters": 8356,
                            "duration_seconds": 1095,
                            "service_seconds": 540,
                            "waiting_seconds": 0,
                            "geometry": null
                        },
                        {
                            "vehicle_id": "van-2",
                            "stops": [
                                {
                                    "type": "start",
                                    "arrival": "2026-11-02T08:56:13-05:00",
                                    "arrival_epoch": 1793627773,
                                    "distance_meters": 0,
                                    "duration_seconds": 0,
                                    "load": [
                                        3
                                    ]
                                },
                                {
                                    "type": "job",
                                    "arrival": "2026-11-02T09:00:00-05:00",
                                    "arrival_epoch": 1793628000,
                                    "distance_meters": 1610,
                                    "duration_seconds": 227,
                                    "leg_distance_meters": 1610,
                                    "leg_duration_seconds": 227,
                                    "id": "order-1002",
                                    "load": [
                                        0
                                    ]
                                },
                                {
                                    "type": "end",
                                    "arrival": "2026-11-02T09:08:17-05:00",
                                    "arrival_epoch": 1793628497,
                                    "distance_meters": 3077,
                                    "duration_seconds": 424,
                                    "leg_distance_meters": 1467,
                                    "leg_duration_seconds": 197,
                                    "load": [
                                        0
                                    ]
                                }
                            ],
                            "stop_count": 3,
                            "task_count": 1,
                            "distance_meters": 3077,
                            "duration_seconds": 424,
                            "service_seconds": 300,
                            "waiting_seconds": 0,
                            "geometry": null
                        }
                    ],
                    "unassigned": [],
                    "summary": {
                        "routes": 2,
                        "assigned": 3,
                        "unassigned": 0,
                        "distance_meters": 11433,
                        "duration_seconds": 1519
                    }
                },
                {
                    "plan_id": "rebalance",
                    "strategy": "rebalance",
                    "routes": [
                        {
                            "vehicle_id": "van-2",
                            "stops": [
                                {
                                    "type": "start",
                                    "arrival": "2026-11-02T08:31:07-05:00",
                                    "arrival_epoch": 1793626267,
                                    "distance_meters": 0,
                                    "duration_seconds": 0,
                                    "load": [
                                        6
                                    ]
                                },
                                {
                                    "type": "job",
                                    "arrival": "2026-11-02T08:35:11-05:00",
                                    "arrival_epoch": 1793626511,
                                    "distance_meters": 1839,
                                    "duration_seconds": 244,
                                    "leg_distance_meters": 1839,
                                    "leg_duration_seconds": 244,
                                    "id": "order-1001",
                                    "load": [
                                        4
                                    ]
                                },
                                {
                                    "type": "job",
                                    "arrival": "2026-11-02T08:47:56-05:00",
                                    "arrival_epoch": 1793627276,
                                    "distance_meters": 5338,
                                    "duration_seconds": 709,
                                    "leg_distance_meters": 3499,
                                    "leg_duration_seconds": 465,
                                    "id": "order-1003",
                                    "load": [
                                        3
                                    ]
                                },
                                {
                                    "type": "job",
                                    "arrival": "2026-11-02T09:00:00-05:00",
                                    "arrival_epoch": 1793628000,
                                    "distance_meters": 9220,
                                    "duration_seconds": 1193,
                                    "leg_distance_meters": 3882,
                                    "leg_duration_seconds": 484,
                                    "id": "order-1002",
                                    "load": [
                                        0
                                    ]
                                },
                                {
                                    "type": "end",
                                    "arrival": "2026-11-02T09:08:17-05:00",
                                    "arrival_epoch": 1793628497,
                                    "distance_meters": 10687,
                                    "duration_seconds": 1390,
                                    "leg_distance_meters": 1467,
                                    "leg_duration_seconds": 197,
                                    "load": [
                                        0
                                    ]
                                }
                            ],
                            "stop_count": 5,
                            "task_count": 3,
                            "distance_meters": 10687,
                            "duration_seconds": 1390,
                            "service_seconds": 840,
                            "waiting_seconds": 0,
                            "geometry": null
                        }
                    ],
                    "unassigned": [
                        {
                            "id": "order-1004",
                            "reason": "unspecified"
                        }
                    ],
                    "summary": {
                        "routes": 1,
                        "assigned": 3,
                        "unassigned": 1,
                        "distance_meters": 10687,
                        "duration_seconds": 1390
                    }
                }
            ]
        }
    }
}
routing.whatif →

Dispatch

openPlanInsert query node Beta

Place new jobs in a plan you hold at their cheapest positions, without re-planning the rest, and receive the plan priced with the positions to choose from.

query Run($input: Json!) {
  openPlanInsert(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "departed_at": "2026-10-23T09:30:00-04:00",
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 3
                }
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 1
                }
            },
            {
                "id": "order-1004",
                "location": {
                    "lat": 45.5302,
                    "lng": -73.6125
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            }
        ],
        "routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    "order-1001",
                    "order-1002",
                    "order-1003"
                ]
            }
        ],
        "options": {
            "geometry": false
        },
        "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910",
        "insert": [
            {
                "id": "order-1005",
                "location": {
                    "lat": 45.5149,
                    "lng": -73.5734
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 1
                }
            }
        ],
        "limit": 2
    }
}
Response example
{
    "data": {
        "openPlanInsert": {
            "mode": "sync",
            "job": null,
            "data": {
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "stop_count": 6,
                        "task_count": 4,
                        "distance_meters": 12865,
                        "duration_seconds": 1664,
                        "service_seconds": 1200,
                        "waiting_seconds": 0,
                        "departure": "2026-10-23T09:30:00-04:00",
                        "completion": "2026-10-23T10:17:44-04:00",
                        "unreachable_legs": 0,
                        "violations": [],
                        "violation_count": 0,
                        "stops": [
                            {
                                "type": "start",
                                "departure": "2026-10-23T09:30:00-04:00"
                            },
                            {
                                "type": "job",
                                "id": "order-1001",
                                "sequence": 1,
                                "reachable": true,
                                "leg_distance_meters": 1840,
                                "leg_duration_seconds": 245,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:34:05-04:00",
                                "arrival_epoch": 1792762445,
                                "distance_meters": 1840,
                                "duration_seconds": 245
                            },
                            {
                                "type": "job",
                                "id": "order-1002",
                                "sequence": 2,
                                "reachable": true,
                                "leg_distance_meters": 3108,
                                "leg_duration_seconds": 390,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:45:35-04:00",
                                "arrival_epoch": 1792763135,
                                "distance_meters": 4948,
                                "duration_seconds": 635
                            },
                            {
                                "type": "job",
                                "id": "order-1003",
                                "sequence": 3,
                                "reachable": true,
                                "leg_distance_meters": 4326,
                                "leg_duration_seconds": 551,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:59:46-04:00",
                                "arrival_epoch": 1792763986,
                                "distance_meters": 9274,
                                "duration_seconds": 1186
                            },
                            {
                                "type": "job",
                                "id": "order-1005",
                                "sequence": 4,
                                "reachable": true,
                                "leg_distance_meters": 1512,
                                "leg_duration_seconds": 218,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T10:08:24-04:00",
                                "arrival_epoch": 1792764504,
                                "distance_meters": 10786,
                                "duration_seconds": 1404
                            },
                            {
                                "type": "end",
                                "reachable": true,
                                "leg_distance_meters": 2079,
                                "leg_duration_seconds": 260,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T10:17:44-04:00",
                                "arrival_epoch": 1792765064,
                                "distance_meters": 12865,
                                "duration_seconds": 1664
                            }
                        ]
                    }
                ],
                "summary": {
                    "routes": 1,
                    "tasks": 4,
                    "distance_meters": 12865,
                    "duration_seconds": 1664,
                    "unreachable_legs": 0,
                    "violations": 0
                },
                "plan": {
                    "routes": [
                        {
                            "vehicle_id": "van-1",
                            "stops": [
                                "order-1001",
                                "order-1002",
                                "order-1003",
                                "order-1005"
                            ]
                        }
                    ],
                    "unassigned": [
                        "order-1004"
                    ]
                },
                "insert": [
                    {
                        "job": "order-1005",
                        "placed": true,
                        "choices": [
                            {
                                "feasible": true,
                                "vehicle_id": "van-1",
                                "position": 4,
                                "after": "order-1003",
                                "added_distance_meters": 82,
                                "added_duration_seconds": 44,
                                "added_waiting_seconds": 0,
                                "arrival": "2026-10-23T10:08:24-04:00",
                                "waiting_seconds": 0,
                                "service_start": "2026-10-23T10:08:24-04:00"
                            },
                            {
                                "feasible": true,
                                "vehicle_id": "van-1",
                                "position": 3,
                                "after": "order-1002",
                                "added_distance_meters": 766,
                                "added_duration_seconds": 118,
                                "added_waiting_seconds": 0,
                                "arrival": "2026-10-23T09:56:57-04:00",
                                "waiting_seconds": 0,
                                "service_start": "2026-10-23T09:56:57-04:00"
                            }
                        ]
                    }
                ]
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "geometry": false,
                "geometry_format": null,
                "departed_at": "2026-10-23T09:30:00-04:00",
                "objective": "duration",
                "limit": 2
            },
            "billing": {
                "unit": "node",
                "quantity": 4,
                "counted": true,
                "breakdown": {
                    "planned_stops": 3,
                    "new_jobs": 1
                }
            }
        }
    }
}
plan.insert →

openPlanMove query node Beta

Move stops of a plan you hold to a route at a chosen position and receive the edited plan priced, with whether the routes it touched keep their rules.

query Run($input: Json!) {
  openPlanMove(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "departed_at": "2026-10-23T09:30:00-04:00",
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 3
                }
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 1
                }
            }
        ],
        "routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    "order-1001",
                    "order-1002",
                    "order-1003"
                ]
            }
        ],
        "options": {
            "geometry": false
        },
        "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910",
        "stops": [
            "order-1003"
        ],
        "vehicle_id": "van-2",
        "position": 1
    }
}
Response example
{
    "data": {
        "openPlanMove": {
            "mode": "sync",
            "job": null,
            "data": {
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "stop_count": 4,
                        "task_count": 2,
                        "distance_meters": 6246,
                        "duration_seconds": 822,
                        "service_seconds": 600,
                        "waiting_seconds": 0,
                        "departure": "2026-10-23T09:30:00-04:00",
                        "completion": "2026-10-23T09:53:42-04:00",
                        "unreachable_legs": 0,
                        "violations": [],
                        "violation_count": 0,
                        "stops": [
                            {
                                "type": "start",
                                "departure": "2026-10-23T09:30:00-04:00"
                            },
                            {
                                "type": "job",
                                "id": "order-1001",
                                "sequence": 1,
                                "reachable": true,
                                "leg_distance_meters": 1759,
                                "leg_duration_seconds": 231,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:33:51-04:00",
                                "arrival_epoch": 1792762431,
                                "distance_meters": 1759,
                                "duration_seconds": 231
                            },
                            {
                                "type": "job",
                                "id": "order-1002",
                                "sequence": 2,
                                "reachable": true,
                                "leg_distance_meters": 3120,
                                "leg_duration_seconds": 411,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:45:42-04:00",
                                "arrival_epoch": 1792763142,
                                "distance_meters": 4879,
                                "duration_seconds": 642
                            },
                            {
                                "type": "end",
                                "reachable": true,
                                "leg_distance_meters": 1367,
                                "leg_duration_seconds": 180,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:53:42-04:00",
                                "arrival_epoch": 1792763622,
                                "distance_meters": 6246,
                                "duration_seconds": 822
                            }
                        ]
                    },
                    {
                        "vehicle_id": "van-2",
                        "stop_count": 3,
                        "task_count": 1,
                        "distance_meters": 7104,
                        "duration_seconds": 934,
                        "service_seconds": 300,
                        "waiting_seconds": 0,
                        "departure": "2026-10-23T09:30:00-04:00",
                        "completion": "2026-10-23T09:50:34-04:00",
                        "unreachable_legs": 0,
                        "violations": [],
                        "violation_count": 0,
                        "stops": [
                            {
                                "type": "start",
                                "departure": "2026-10-23T09:30:00-04:00"
                            },
                            {
                                "type": "job",
                                "id": "order-1003",
                                "sequence": 1,
                                "reachable": true,
                                "leg_distance_meters": 3552,
                                "leg_duration_seconds": 467,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:37:47-04:00",
                                "arrival_epoch": 1792762667,
                                "distance_meters": 3552,
                                "duration_seconds": 467
                            },
                            {
                                "type": "end",
                                "reachable": true,
                                "leg_distance_meters": 3552,
                                "leg_duration_seconds": 467,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:50:34-04:00",
                                "arrival_epoch": 1792763434,
                                "distance_meters": 7104,
                                "duration_seconds": 934
                            }
                        ]
                    }
                ],
                "summary": {
                    "routes": 2,
                    "tasks": 3,
                    "distance_meters": 13350,
                    "duration_seconds": 1756,
                    "unreachable_legs": 0,
                    "violations": 0
                },
                "plan": {
                    "routes": [
                        {
                            "vehicle_id": "van-1",
                            "stops": [
                                "order-1001",
                                "order-1002"
                            ]
                        },
                        {
                            "vehicle_id": "van-2",
                            "stops": [
                                "order-1003"
                            ]
                        }
                    ],
                    "unassigned": []
                },
                "move": {
                    "vehicle_id": "van-2",
                    "position": 1,
                    "stops": [
                        "order-1003"
                    ],
                    "from": [
                        {
                            "id": "order-1003",
                            "vehicle_id": "van-1",
                            "position": 3
                        }
                    ],
                    "feasible": true,
                    "violations": 0
                }
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "geometry": false,
                "geometry_format": null,
                "departed_at": "2026-10-23T09:30:00-04:00"
            },
            "billing": {
                "unit": "node",
                "quantity": 3,
                "counted": true,
                "breakdown": {
                    "tasks": 3,
                    "routes": 2
                }
            }
        }
    }
}
plan.move →

openPlanRecost query node Stable

Price an edited plan exactly as given — per-leg distance, duration and road geometry, with arrival times — without resequencing it. Stated constraints (time windows, capacity, skills, vehicle ceilings) are judged and reported as violations, never refused.

query Run($input: Json!) {
  openPlanRecost(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": [
                    10
                ]
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": [
                    2
                ]
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": [
                    3
                ]
            }
        ],
        "routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    "order-1001",
                    "order-1002"
                ]
            }
        ]
    }
}
Response example
{
    "data": {
        "openPlanRecost": {
            "mode": "sync",
            "job": null,
            "data": {
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "stop_count": 4,
                        "task_count": 2,
                        "distance_meters": 6416,
                        "duration_seconds": 832,
                        "service_seconds": 600,
                        "waiting_seconds": 0,
                        "departure": "2026-10-23T09:27:56-04:00",
                        "completion": "2026-10-23T09:51:48-04:00",
                        "unreachable_legs": 0,
                        "violations": [],
                        "violation_count": 0,
                        "stops": [
                            {
                                "type": "start",
                                "departure": "2026-10-23T09:27:56-04:00"
                            },
                            {
                                "type": "job",
                                "id": "order-1001",
                                "sequence": 1,
                                "reachable": true,
                                "leg_distance_meters": 1840,
                                "leg_duration_seconds": 245,
                                "leg_geometry": "y`vtGjr_`MJUNYL[h@gAHOFQBIHOc@g@MOa@]s@q@EGEEk@g@k@k@CCMMDO@EDMBMBOBQBO@KBM?G@OBQ?G@MBQ@MBMBMBOBOBMFSDSBGBIBGHOvAkE@EHQGEECa@_@ECMKKIwAiA_CmBq@m@ECIIOKoAcAs@i@KIIIOMgA{@QMCCGGGE_@[m@g@a@[kA_ACCECKGKGWSQOwAkAGEGEu@o@CCMIMKGEYSeAq@OKa@WGG[Sy@g@w@k@s@e@GEGE??YQgAu@c@[QKc@YMKKG@EBK@EVo@@EDKDM@Cb@cAFOBIt@oBBEDUJFBBFDx@l@??",
                                "arrival": "2026-10-23T09:32:01-04:00",
                                "arrival_epoch": 1792762321,
                                "distance_meters": 1840,
                                "duration_seconds": 245
                            },
                            {
                                "type": "job",
                                "id": "order-1002",
                                "sequence": 2,
                                "reachable": true,
                                "leg_distance_meters": 3108,
                                "leg_duration_seconds": 390,
                                "leg_geometry": "elwtGl}|_Mx@n@BBFD\\ZDDDBz@l@`@\\~BdB~AjAf@\\DDBBLDEPEJe@zAADENGNCFW|@Y|@CFA@ELCHGRq@jBABu@tBCHAFEJGNADg@vAKXq@lBABEHAHgA|C_@fASf@ADGPO^JHbAt@`CrBBBJHLJhCzBJL~BvBFDJJHF~@r@zAdABBHFLHdDfCBBFFFDJHvDlCRJDBRHXPx@f@D@HHJFVV|@x@BBLJTRJJTTlBdBLL`@\\h@f@ZXNLr@p@BBB@JJJHv@r@j@h@DDNLJJp@l@HHj@j@DBLLRRfB`BBBJJHFv@r@x@t@B@HHJJz@v@RRl@j@BBHHJHhAfAj@j@BBNLHHLLVT|@z@HFIPw@tBmAbDy@vBe@pACDIPIRg@pAO\\{A`ECDAFEJHHp@p@??",
                                "arrival": "2026-10-23T09:43:31-04:00",
                                "arrival_epoch": 1792763011,
                                "distance_meters": 4948,
                                "duration_seconds": 635
                            },
                            {
                                "type": "end",
                                "reachable": true,
                                "leg_distance_meters": 1468,
                                "leg_duration_seconds": 197,
                                "leg_geometry": "{cutG|wa`Md@f@LJFDDDFBBBFBDKBGrAkDFQBGp@eB@EFSFSBCb@mAl@}AjA{Cb@iAd@mABEFQJ[IG{ByBIGGIMKIKo@m@OMGI[Yc@a@e@c@m@m@ECIIKKaA}@EEu@q@CCIIKIq@o@{@y@ECIIII_@[[Y_@_@ECWWQOIIGE]]QO_@]CCKKYWKIu@q@MMYWCCKKKIACoAiAuAoAKIs@q@eA_AKKCCOOJO@A??",
                                "arrival": "2026-10-23T09:51:48-04:00",
                                "arrival_epoch": 1792763508,
                                "distance_meters": 6416,
                                "duration_seconds": 832
                            }
                        ]
                    }
                ],
                "summary": {
                    "routes": 1,
                    "tasks": 2,
                    "distance_meters": 6416,
                    "duration_seconds": 832,
                    "unreachable_legs": 0,
                    "violations": 0
                }
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "geometry": true,
                "geometry_format": "polyline",
                "departed_at": "2026-10-23T09:27:56-04:00"
            },
            "billing": {
                "unit": "node",
                "quantity": 2,
                "counted": true,
                "breakdown": {
                    "tasks": 2,
                    "routes": 1
                }
            }
        }
    }
}
plan.recost →

openPlanRefine query node Beta

Re-order the stops of chosen routes of a plan you hold around stops you lock, and receive the plan priced; a new order is kept only when it is better.

query Run($input: Json!) {
  openPlanRefine(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "departed_at": "2026-10-23T09:30:00-04:00",
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 3
                }
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 1
                }
            },
            {
                "id": "order-1004",
                "location": {
                    "lat": 45.5302,
                    "lng": -73.6125
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            }
        ],
        "routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    "order-1002",
                    "order-1004",
                    "order-1001",
                    "order-1003"
                ]
            }
        ],
        "options": {
            "geometry": false
        },
        "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910",
        "freeze": [
            "order-1002"
        ]
    }
}
Response example
{
    "data": {
        "openPlanRefine": {
            "mode": "sync",
            "job": null,
            "data": {
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "stop_count": 6,
                        "task_count": 4,
                        "distance_meters": 17473,
                        "duration_seconds": 2286,
                        "service_seconds": 1200,
                        "waiting_seconds": 0,
                        "departure": "2026-10-23T09:30:00-04:00",
                        "completion": "2026-10-23T10:28:06-04:00",
                        "unreachable_legs": 0,
                        "violations": [],
                        "violation_count": 0,
                        "stops": [
                            {
                                "type": "start",
                                "departure": "2026-10-23T09:30:00-04:00"
                            },
                            {
                                "type": "job",
                                "id": "order-1002",
                                "sequence": 1,
                                "reachable": true,
                                "leg_distance_meters": 1611,
                                "leg_duration_seconds": 227,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:33:47-04:00",
                                "arrival_epoch": 1792762427,
                                "distance_meters": 1611,
                                "duration_seconds": 227
                            },
                            {
                                "type": "job",
                                "id": "order-1001",
                                "sequence": 2,
                                "reachable": true,
                                "leg_distance_meters": 3355,
                                "leg_duration_seconds": 421,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:45:48-04:00",
                                "arrival_epoch": 1792763148,
                                "distance_meters": 4966,
                                "duration_seconds": 648
                            },
                            {
                                "type": "job",
                                "id": "order-1003",
                                "sequence": 3,
                                "reachable": true,
                                "leg_distance_meters": 3500,
                                "leg_duration_seconds": 466,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:58:34-04:00",
                                "arrival_epoch": 1792763914,
                                "distance_meters": 8466,
                                "duration_seconds": 1114
                            },
                            {
                                "type": "job",
                                "id": "order-1004",
                                "sequence": 4,
                                "reachable": true,
                                "leg_distance_meters": 3487,
                                "leg_duration_seconds": 492,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T10:11:46-04:00",
                                "arrival_epoch": 1792764706,
                                "distance_meters": 11953,
                                "duration_seconds": 1606
                            },
                            {
                                "type": "end",
                                "reachable": true,
                                "leg_distance_meters": 5520,
                                "leg_duration_seconds": 680,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T10:28:06-04:00",
                                "arrival_epoch": 1792765686,
                                "distance_meters": 17473,
                                "duration_seconds": 2286
                            }
                        ]
                    }
                ],
                "summary": {
                    "routes": 1,
                    "tasks": 4,
                    "distance_meters": 17473,
                    "duration_seconds": 2286,
                    "unreachable_legs": 0,
                    "violations": 0
                },
                "plan": {
                    "routes": [
                        {
                            "vehicle_id": "van-1",
                            "stops": [
                                "order-1002",
                                "order-1001",
                                "order-1003",
                                "order-1004"
                            ]
                        }
                    ],
                    "unassigned": []
                },
                "refine": {
                    "vehicle_ids": [
                        "van-1"
                    ],
                    "freeze": [
                        "order-1002"
                    ],
                    "changed": true,
                    "moved": 3,
                    "before": {
                        "distance_meters": 21187,
                        "duration_seconds": 2717,
                        "waiting_seconds": 0,
                        "violations": 0,
                        "unreachable_legs": 0
                    }
                }
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "geometry": false,
                "geometry_format": null,
                "departed_at": "2026-10-23T09:30:00-04:00"
            },
            "billing": {
                "unit": "node",
                "quantity": 4,
                "counted": true,
                "breakdown": {
                    "tasks": 4,
                    "routes": 1
                }
            }
        }
    }
}
plan.refine →

openPlanRemove query node Beta

Take stops of a plan you hold off their routes into the unassigned pool and receive the edited plan priced.

query Run($input: Json!) {
  openPlanRemove(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "departed_at": "2026-10-23T09:30:00-04:00",
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 3
                }
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 1
                }
            }
        ],
        "routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    "order-1001",
                    "order-1002",
                    "order-1003"
                ]
            }
        ],
        "options": {
            "geometry": false
        },
        "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910",
        "stops": [
            "order-1002"
        ]
    }
}
Response example
{
    "data": {
        "openPlanRemove": {
            "mode": "sync",
            "job": null,
            "data": {
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "stop_count": 4,
                        "task_count": 2,
                        "distance_meters": 8931,
                        "duration_seconds": 1174,
                        "service_seconds": 600,
                        "waiting_seconds": 0,
                        "departure": "2026-10-23T09:30:00-04:00",
                        "completion": "2026-10-23T09:59:34-04:00",
                        "unreachable_legs": 0,
                        "violations": [],
                        "violation_count": 0,
                        "stops": [
                            {
                                "type": "start",
                                "departure": "2026-10-23T09:30:00-04:00"
                            },
                            {
                                "type": "job",
                                "id": "order-1001",
                                "sequence": 1,
                                "reachable": true,
                                "leg_distance_meters": 1759,
                                "leg_duration_seconds": 231,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:33:51-04:00",
                                "arrival_epoch": 1792762431,
                                "distance_meters": 1759,
                                "duration_seconds": 231
                            },
                            {
                                "type": "job",
                                "id": "order-1003",
                                "sequence": 2,
                                "reachable": true,
                                "leg_distance_meters": 3620,
                                "leg_duration_seconds": 476,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:46:47-04:00",
                                "arrival_epoch": 1792763207,
                                "distance_meters": 5379,
                                "duration_seconds": 707
                            },
                            {
                                "type": "end",
                                "reachable": true,
                                "leg_distance_meters": 3552,
                                "leg_duration_seconds": 467,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:59:34-04:00",
                                "arrival_epoch": 1792763974,
                                "distance_meters": 8931,
                                "duration_seconds": 1174
                            }
                        ]
                    }
                ],
                "summary": {
                    "routes": 1,
                    "tasks": 2,
                    "distance_meters": 8931,
                    "duration_seconds": 1174,
                    "unreachable_legs": 0,
                    "violations": 0
                },
                "plan": {
                    "routes": [
                        {
                            "vehicle_id": "van-1",
                            "stops": [
                                "order-1001",
                                "order-1003"
                            ]
                        }
                    ],
                    "unassigned": [
                        "order-1002"
                    ]
                },
                "removed": [
                    {
                        "id": "order-1002",
                        "vehicle_id": "van-1",
                        "position": 2
                    }
                ]
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "geometry": false,
                "geometry_format": null,
                "departed_at": "2026-10-23T09:30:00-04:00"
            },
            "billing": {
                "unit": "node",
                "quantity": 2,
                "counted": true,
                "breakdown": {
                    "tasks": 2,
                    "routes": 1
                }
            }
        }
    }
}
plan.remove →

openPlanResequence query node Beta

Give one route of a plan you hold a new stop order and receive the edited plan priced, with every violation named.

query Run($input: Json!) {
  openPlanResequence(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "departed_at": "2026-10-23T09:30:00-04:00",
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 3
                }
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 1
                }
            }
        ],
        "routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    "order-1001",
                    "order-1002",
                    "order-1003"
                ]
            }
        ],
        "options": {
            "geometry": false
        },
        "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910",
        "vehicle_id": "van-1",
        "stops": [
            "order-1002",
            "order-1001",
            "order-1003"
        ]
    }
}
Response example
{
    "data": {
        "openPlanResequence": {
            "mode": "sync",
            "job": null,
            "data": {
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "stop_count": 5,
                        "task_count": 3,
                        "distance_meters": 11659,
                        "duration_seconds": 1534,
                        "service_seconds": 900,
                        "waiting_seconds": 0,
                        "departure": "2026-10-23T09:30:00-04:00",
                        "completion": "2026-10-23T10:10:34-04:00",
                        "unreachable_legs": 0,
                        "violations": [],
                        "violation_count": 0,
                        "stops": [
                            {
                                "type": "start",
                                "departure": "2026-10-23T09:30:00-04:00"
                            },
                            {
                                "type": "job",
                                "id": "order-1002",
                                "sequence": 1,
                                "reachable": true,
                                "leg_distance_meters": 1367,
                                "leg_duration_seconds": 180,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:33:00-04:00",
                                "arrival_epoch": 1792762380,
                                "distance_meters": 1367,
                                "duration_seconds": 180
                            },
                            {
                                "type": "job",
                                "id": "order-1001",
                                "sequence": 2,
                                "reachable": true,
                                "leg_distance_meters": 3120,
                                "leg_duration_seconds": 411,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:44:51-04:00",
                                "arrival_epoch": 1792763091,
                                "distance_meters": 4487,
                                "duration_seconds": 591
                            },
                            {
                                "type": "job",
                                "id": "order-1003",
                                "sequence": 3,
                                "reachable": true,
                                "leg_distance_meters": 3620,
                                "leg_duration_seconds": 476,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T09:57:47-04:00",
                                "arrival_epoch": 1792763867,
                                "distance_meters": 8107,
                                "duration_seconds": 1067
                            },
                            {
                                "type": "end",
                                "reachable": true,
                                "leg_distance_meters": 3552,
                                "leg_duration_seconds": 467,
                                "leg_geometry": null,
                                "arrival": "2026-10-23T10:10:34-04:00",
                                "arrival_epoch": 1792764634,
                                "distance_meters": 11659,
                                "duration_seconds": 1534
                            }
                        ]
                    }
                ],
                "summary": {
                    "routes": 1,
                    "tasks": 3,
                    "distance_meters": 11659,
                    "duration_seconds": 1534,
                    "unreachable_legs": 0,
                    "violations": 0
                },
                "plan": {
                    "routes": [
                        {
                            "vehicle_id": "van-1",
                            "stops": [
                                "order-1002",
                                "order-1001",
                                "order-1003"
                            ]
                        }
                    ],
                    "unassigned": []
                },
                "resequence": {
                    "vehicle_id": "van-1",
                    "changed": true
                }
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "geometry": false,
                "geometry_format": null,
                "departed_at": "2026-10-23T09:30:00-04:00"
            },
            "billing": {
                "unit": "node",
                "quantity": 3,
                "counted": true,
                "breakdown": {
                    "tasks": 3,
                    "routes": 1
                }
            }
        }
    }
}
plan.resequence →

openPlanValidate query node Stable

Judge a plan against its stated constraints — time windows, capacity, skills, vehicle ceilings — with every violation named. The same evaluator as re-costing, without the map payload.

query Run($input: Json!) {
  openPlanValidate(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": [
                    10
                ]
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": [
                    2
                ]
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": [
                    3
                ]
            }
        ],
        "routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    "order-1001",
                    "order-1002"
                ]
            }
        ]
    }
}
Response example
{
    "data": {
        "openPlanValidate": {
            "mode": "sync",
            "job": null,
            "data": {
                "valid": true,
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "valid": true,
                        "violation_count": 0,
                        "violations": [],
                        "waiting_seconds": 0,
                        "completion": "2026-10-23T09:51:48-04:00",
                        "unreachable_legs": 0,
                        "stops": [
                            {
                                "type": "start",
                                "departure": "2026-10-23T09:27:56-04:00"
                            },
                            {
                                "type": "job",
                                "id": "order-1001",
                                "sequence": 1,
                                "reachable": true,
                                "arrival": "2026-10-23T09:32:01-04:00",
                                "arrival_epoch": 1792762321
                            },
                            {
                                "type": "job",
                                "id": "order-1002",
                                "sequence": 2,
                                "reachable": true,
                                "arrival": "2026-10-23T09:43:31-04:00",
                                "arrival_epoch": 1792763011
                            },
                            {
                                "type": "end",
                                "reachable": true,
                                "arrival": "2026-10-23T09:51:48-04:00",
                                "arrival_epoch": 1792763508
                            }
                        ]
                    }
                ],
                "summary": {
                    "routes": 1,
                    "tasks": 2,
                    "distance_meters": 6416,
                    "duration_seconds": 832,
                    "unreachable_legs": 0,
                    "violations": 0
                }
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "departed_at": "2026-10-23T09:27:56-04:00"
            },
            "billing": {
                "unit": "node",
                "quantity": 2,
                "counted": true,
                "breakdown": {
                    "tasks": 2,
                    "routes": 1
                }
            }
        }
    }
}
plan.validate →

openPlanWhatIf query node Beta

Price and judge several alternative plans of the same vehicles and jobs and receive them ranked.

query Run($input: Json!) {
  openPlanWhatIf(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "departed_at": "2026-10-23T09:30:00-04:00",
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 3
                }
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 1
                }
            },
            {
                "id": "order-1004",
                "location": {
                    "lat": 45.5302,
                    "lng": -73.6125
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            }
        ],
        "options": {
            "geometry": false
        },
        "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910",
        "plans": [
            {
                "id": "one-van",
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "stops": [
                            "order-1001",
                            "order-1002",
                            "order-1004",
                            "order-1003"
                        ]
                    }
                ]
            },
            {
                "id": "two-vans",
                "routes": [
                    {
                        "vehicle_id": "van-1",
                        "stops": [
                            "order-1001",
                            "order-1002"
                        ]
                    },
                    {
                        "vehicle_id": "van-2",
                        "stops": [
                            "order-1003",
                            "order-1004"
                        ]
                    }
                ]
            }
        ],
        "objective": "duration"
    }
}
Response example
{
    "data": {
        "openPlanWhatIf": {
            "mode": "sync",
            "job": null,
            "data": {
                "scored": true,
                "ranking": [
                    0,
                    1
                ],
                "best": 0,
                "plans": [
                    {
                        "index": 0,
                        "id": "one-van",
                        "rank": 1,
                        "objective_value": 2335,
                        "summary": {
                            "routes": 1,
                            "tasks": 4,
                            "distance_meters": 18088,
                            "duration_seconds": 2335,
                            "unreachable_legs": 0,
                            "violations": 0
                        },
                        "routes": [
                            {
                                "vehicle_id": "van-1",
                                "stop_count": 6,
                                "task_count": 4,
                                "distance_meters": 18088,
                                "duration_seconds": 2335,
                                "service_seconds": 1200,
                                "waiting_seconds": 0,
                                "departure": "2026-10-23T09:30:00-04:00",
                                "completion": "2026-10-23T10:28:55-04:00",
                                "unreachable_legs": 0,
                                "violations": [],
                                "violation_count": 0,
                                "stops": [
                                    {
                                        "type": "start",
                                        "departure": "2026-10-23T09:30:00-04:00"
                                    },
                                    {
                                        "type": "job",
                                        "id": "order-1001",
                                        "sequence": 1,
                                        "reachable": true,
                                        "leg_distance_meters": 1840,
                                        "leg_duration_seconds": 245,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T09:34:05-04:00",
                                        "arrival_epoch": 1792762445,
                                        "distance_meters": 1840,
                                        "duration_seconds": 245
                                    },
                                    {
                                        "type": "job",
                                        "id": "order-1002",
                                        "sequence": 2,
                                        "reachable": true,
                                        "leg_distance_meters": 3108,
                                        "leg_duration_seconds": 390,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T09:45:35-04:00",
                                        "arrival_epoch": 1792763135,
                                        "distance_meters": 4948,
                                        "duration_seconds": 635
                                    },
                                    {
                                        "type": "job",
                                        "id": "order-1004",
                                        "sequence": 3,
                                        "reachable": true,
                                        "leg_distance_meters": 6451,
                                        "leg_duration_seconds": 824,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T10:04:19-04:00",
                                        "arrival_epoch": 1792764259,
                                        "distance_meters": 11399,
                                        "duration_seconds": 1459
                                    },
                                    {
                                        "type": "job",
                                        "id": "order-1003",
                                        "sequence": 4,
                                        "reachable": true,
                                        "leg_distance_meters": 3180,
                                        "leg_duration_seconds": 442,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T10:16:41-04:00",
                                        "arrival_epoch": 1792765001,
                                        "distance_meters": 14579,
                                        "duration_seconds": 1901
                                    },
                                    {
                                        "type": "end",
                                        "reachable": true,
                                        "leg_distance_meters": 3509,
                                        "leg_duration_seconds": 434,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T10:28:55-04:00",
                                        "arrival_epoch": 1792765735,
                                        "distance_meters": 18088,
                                        "duration_seconds": 2335
                                    }
                                ]
                            }
                        ],
                        "unassigned": [],
                        "warnings": []
                    },
                    {
                        "index": 1,
                        "id": "two-vans",
                        "rank": 2,
                        "objective_value": 2486,
                        "summary": {
                            "routes": 2,
                            "tasks": 4,
                            "distance_meters": 19058,
                            "duration_seconds": 2486,
                            "unreachable_legs": 0,
                            "violations": 0
                        },
                        "routes": [
                            {
                                "vehicle_id": "van-1",
                                "stop_count": 4,
                                "task_count": 2,
                                "distance_meters": 6416,
                                "duration_seconds": 832,
                                "service_seconds": 600,
                                "waiting_seconds": 0,
                                "departure": "2026-10-23T09:30:00-04:00",
                                "completion": "2026-10-23T09:53:52-04:00",
                                "unreachable_legs": 0,
                                "violations": [],
                                "violation_count": 0,
                                "stops": [
                                    {
                                        "type": "start",
                                        "departure": "2026-10-23T09:30:00-04:00"
                                    },
                                    {
                                        "type": "job",
                                        "id": "order-1001",
                                        "sequence": 1,
                                        "reachable": true,
                                        "leg_distance_meters": 1840,
                                        "leg_duration_seconds": 245,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T09:34:05-04:00",
                                        "arrival_epoch": 1792762445,
                                        "distance_meters": 1840,
                                        "duration_seconds": 245
                                    },
                                    {
                                        "type": "job",
                                        "id": "order-1002",
                                        "sequence": 2,
                                        "reachable": true,
                                        "leg_distance_meters": 3108,
                                        "leg_duration_seconds": 390,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T09:45:35-04:00",
                                        "arrival_epoch": 1792763135,
                                        "distance_meters": 4948,
                                        "duration_seconds": 635
                                    },
                                    {
                                        "type": "end",
                                        "reachable": true,
                                        "leg_distance_meters": 1468,
                                        "leg_duration_seconds": 197,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T09:53:52-04:00",
                                        "arrival_epoch": 1792763632,
                                        "distance_meters": 6416,
                                        "duration_seconds": 832
                                    }
                                ]
                            },
                            {
                                "vehicle_id": "van-2",
                                "stop_count": 4,
                                "task_count": 2,
                                "distance_meters": 12642,
                                "duration_seconds": 1654,
                                "service_seconds": 600,
                                "waiting_seconds": 0,
                                "departure": "2026-10-23T09:30:00-04:00",
                                "completion": "2026-10-23T10:07:34-04:00",
                                "unreachable_legs": 0,
                                "violations": [],
                                "violation_count": 0,
                                "stops": [
                                    {
                                        "type": "start",
                                        "departure": "2026-10-23T09:30:00-04:00"
                                    },
                                    {
                                        "type": "job",
                                        "id": "order-1003",
                                        "sequence": 1,
                                        "reachable": true,
                                        "leg_distance_meters": 3635,
                                        "leg_duration_seconds": 482,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T09:38:02-04:00",
                                        "arrival_epoch": 1792762682,
                                        "distance_meters": 3635,
                                        "duration_seconds": 482
                                    },
                                    {
                                        "type": "job",
                                        "id": "order-1004",
                                        "sequence": 2,
                                        "reachable": true,
                                        "leg_distance_meters": 3487,
                                        "leg_duration_seconds": 492,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T09:51:14-04:00",
                                        "arrival_epoch": 1792763474,
                                        "distance_meters": 7122,
                                        "duration_seconds": 974
                                    },
                                    {
                                        "type": "end",
                                        "reachable": true,
                                        "leg_distance_meters": 5520,
                                        "leg_duration_seconds": 680,
                                        "leg_geometry": null,
                                        "arrival": "2026-10-23T10:07:34-04:00",
                                        "arrival_epoch": 1792764454,
                                        "distance_meters": 12642,
                                        "duration_seconds": 1654
                                    }
                                ]
                            }
                        ],
                        "unassigned": [],
                        "warnings": []
                    }
                ]
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "geometry": false,
                "geometry_format": null,
                "departed_at": "2026-10-23T09:30:00-04:00",
                "objective": "duration"
            },
            "billing": {
                "unit": "node",
                "quantity": 8,
                "counted": true,
                "breakdown": {
                    "plans": 2,
                    "stops": 8
                }
            }
        }
    }
}
plan.what_if →

Delivery slots

openSlotsQuote query node Beta

For one new job, find which delivery slots a plan you hold can take and what each costs.

query Run($input: Json!) {
  openSlotsQuote(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "departed_at": "2026-11-02T08:00:00-05:00",
        "vehicles": [
            {
                "id": "van-1",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                },
                "time_window": [
                    "2026-11-02T08:00:00-05:00",
                    "2026-11-02T17:00:00-05:00"
                ]
            },
            {
                "id": "van-2",
                "start": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "return_to_start": true,
                "capacity": {
                    "parcels": 10
                }
            }
        ],
        "jobs": [
            {
                "id": "order-1001",
                "location": {
                    "lat": 45.5088,
                    "lng": -73.554
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 2
                }
            },
            {
                "id": "order-1002",
                "location": {
                    "lat": 45.4972,
                    "lng": -73.5786
                },
                "service_seconds": 300,
                "amount": {
                    "parcels": 3
                },
                "time_windows": [
                    [
                        "2026-11-02T09:00:00-05:00",
                        "2026-11-02T12:00:00-05:00"
                    ]
                ]
            },
            {
                "id": "order-1003",
                "location": {
                    "lat": 45.5231,
                    "lng": -73.5817
                },
                "service_seconds": 240,
                "amount": {
                    "parcels": 1
                }
            }
        ],
        "routes": [
            {
                "vehicle_id": "van-1",
                "stops": [
                    "order-1001",
                    "order-1002"
                ]
            },
            {
                "vehicle_id": "van-2",
                "stops": [
                    "order-1003"
                ]
            }
        ],
        "job": {
            "id": "order-2001",
            "location": {
                "lat": 45.5155,
                "lng": -73.5605
            },
            "service_seconds": 300,
            "amount": {
                "parcels": 1
            }
        },
        "slots": [
            {
                "id": "08-10",
                "from": "2026-11-02T08:00:00-05:00",
                "to": "2026-11-02T10:00:00-05:00"
            },
            {
                "id": "10-12",
                "from": "2026-11-02T10:00:00-05:00",
                "to": "2026-11-02T12:00:00-05:00"
            },
            {
                "id": "12-14",
                "from": "2026-11-02T12:00:00-05:00",
                "to": "2026-11-02T14:00:00-05:00"
            },
            {
                "id": "17-19",
                "from": "2026-11-02T17:00:00-05:00",
                "to": "2026-11-02T19:00:00-05:00"
            }
        ]
    }
}
Response example
{
    "data": {
        "openSlotsQuote": {
            "mode": "sync",
            "job": null,
            "data": {
                "job": "order-2001",
                "slots": [
                    {
                        "slot": "08-10",
                        "from": "2026-11-02T08:00:00-05:00",
                        "to": "2026-11-02T10:00:00-05:00",
                        "feasible": true,
                        "best": {
                            "vehicle_id": "van-1",
                            "position": 2,
                            "after": "order-1001",
                            "added_distance_meters": 1505,
                            "added_duration_seconds": 213,
                            "added_waiting_seconds": -513,
                            "arrival": "2026-11-02T08:11:57-05:00",
                            "waiting_seconds": 0,
                            "service_start": "2026-11-02T08:11:57-05:00"
                        },
                        "rank": 1
                    },
                    {
                        "slot": "10-12",
                        "from": "2026-11-02T10:00:00-05:00",
                        "to": "2026-11-02T12:00:00-05:00",
                        "feasible": true,
                        "best": {
                            "vehicle_id": "van-1",
                            "position": 3,
                            "after": "order-1002",
                            "added_distance_meters": 4526,
                            "added_duration_seconds": 544,
                            "added_waiting_seconds": 2879,
                            "arrival": "2026-11-02T09:12:01-05:00",
                            "waiting_seconds": 2879,
                            "service_start": "2026-11-02T10:00:00-05:00"
                        },
                        "rank": 2
                    },
                    {
                        "slot": "12-14",
                        "from": "2026-11-02T12:00:00-05:00",
                        "to": "2026-11-02T14:00:00-05:00",
                        "feasible": true,
                        "best": {
                            "vehicle_id": "van-1",
                            "position": 3,
                            "after": "order-1002",
                            "added_distance_meters": 4526,
                            "added_duration_seconds": 544,
                            "added_waiting_seconds": 10079,
                            "arrival": "2026-11-02T09:12:01-05:00",
                            "waiting_seconds": 10079,
                            "service_start": "2026-11-02T12:00:00-05:00"
                        },
                        "rank": 3
                    },
                    {
                        "slot": "17-19",
                        "from": "2026-11-02T17:00:00-05:00",
                        "to": "2026-11-02T19:00:00-05:00",
                        "feasible": true,
                        "best": {
                            "vehicle_id": "van-2",
                            "position": 2,
                            "after": "order-1003",
                            "added_distance_meters": 1402,
                            "added_duration_seconds": 211,
                            "added_waiting_seconds": 31353,
                            "arrival": "2026-11-02T08:17:27-05:00",
                            "waiting_seconds": 31353,
                            "service_start": "2026-11-02T17:00:00-05:00"
                        },
                        "rank": 4
                    }
                ],
                "summary": {
                    "slots": 4,
                    "feasible": 4,
                    "cheapest": "08-10"
                }
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "objective": "duration",
                "nearest": 25,
                "legs_measured": 13
            },
            "billing": {
                "unit": "node",
                "quantity": 4,
                "counted": true,
                "breakdown": {
                    "planned_stops": 3,
                    "new_jobs": 1
                }
            }
        }
    }
}
slots.quote →

Geocoding

openGeoAutocomplete query call Beta

Suggest addresses while they are typed, then give the chosen one as a structured address with coordinates.

query Run($input: Json!) {
  openGeoAutocomplete(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "input": "1000 rue de la Gauchetiere",
        "countries": [
            "ca"
        ],
        "session_token": "6f1c2a8e-4b1d-4a39-9d0e-5b8f3c7a21de"
    }
}
Response example
{
    "data": {
        "openGeoAutocomplete": {
            "mode": "sync",
            "job": null,
            "data": {
                "suggestions": [
                    {
                        "place_id": "ChIJWeWFxFwayUwRgP5QVJUn5ww",
                        "description": "1000 Rue De la Gauchetière Ouest, Montreal, QC, Canada",
                        "main_text": "1000 Rue De la Gauchetière Ouest",
                        "secondary_text": "Montreal, QC, Canada",
                        "types": [
                            "geocode",
                            "subpremise"
                        ]
                    },
                    {
                        "place_id": "ChIJybX38KwbyUwRuUlJnrlZOAk",
                        "description": "1000 Rue de la Gauchetière Est, Montreal, QC, Canada",
                        "main_text": "1000 Rue de la Gauchetière Est",
                        "secondary_text": "Montreal, QC, Canada",
                        "types": [
                            "geocode",
                            "subpremise"
                        ]
                    },
                    {
                        "place_id": "ChIJq6qqH10ayUwRDKm5QlrmM2g",
                        "description": "1000 Rue de la Gauchetière E, Montreal, QC, Canada",
                        "main_text": "1000 Rue de la Gauchetière E",
                        "secondary_text": "Montreal, QC, Canada",
                        "types": [
                            "geocode",
                            "subpremise"
                        ]
                    },
                    {
                        "place_id": "EjExMDAwIFJ1ZSBkZSBsYSBHYXVjaGV0acOocmUsIE1vbnRyZWFsLCBRQywgQ2FuYWRhIjESLwoUChIJGz5nxFwayUwRxfGQnpCySKkQ6AcqFAoSCZVv0iVdGslMEUpWKOwLwBz0",
                        "description": "1000 Rue de la Gauchetière, Montreal, QC, Canada",
                        "main_text": "1000 Rue de la Gauchetière",
                        "secondary_text": "Montreal, QC, Canada",
                        "types": [
                            "geocode",
                            "street_address"
                        ]
                    },
                    {
                        "place_id": "EjYxMDAwIFJ1ZSBkZSBsYSBHYXVjaGV0acOocmUsIE1vbnRyw6lhbC1Fc3QsIFFDLCBDYW5hZGEiLiosChQKEgk5hd5QFeLITBFVgO8QJcFsCBIUChIJndvyLgHiyEwREdLOpOC4H6k",
                        "description": "1000 Rue de la Gauchetière, Montréal-Est, QC, Canada",
                        "main_text": "1000 Rue de la Gauchetière",
                        "secondary_text": "Montréal-Est, QC, Canada",
                        "types": [
                            "geocode",
                            "route"
                        ]
                    }
                ]
            },
            "warnings": [],
            "meta": {
                "provider": "google"
            },
            "billing": {
                "unit": "call",
                "quantity": 1,
                "counted": true
            }
        }
    }
}
geo.autocomplete →

openGeoBatch query point_1k Stable

Geocode many addresses in one call, billed per thousand points.

query Batch($direction: String!, $input: Json!) {
  openGeoBatch(direction: $direction, input: $input)
}

Variables

{
    "direction": "forward",
    "input": {
        "addresses": [
            {
                "address1": "1000 Rue De La Gauchetière O",
                "city": "Montreal",
                "country": "CA"
            },
            {
                "address1": "290 Bremner Blvd",
                "city": "Toronto",
                "country": "CA"
            }
        ]
    }
}
Response example
{
    "data": {
        "openGeoBatch": {
            "results": [
                {
                    "index": 0,
                    "matched": true,
                    "location": {
                        "lat": 45.4981126,
                        "lng": -73.56598129999999
                    },
                    "address": [],
                    "confidence": null,
                    "provider": "google"
                },
                {
                    "index": 1,
                    "matched": true,
                    "location": {
                        "lat": 43.642596,
                        "lng": -79.387089
                    },
                    "address": {
                        "number": "290",
                        "street": "bremner blvd",
                        "city": "Toronto",
                        "country": "CA"
                    },
                    "confidence": 1,
                    "provider": "internal"
                }
            ],
            "matched": 2,
            "total": 2
        }
    }
}
geo.batch →

openGeoForward query point Stable

Turn an address into coordinates through a per-country provider chain.

query Forward($address1: String, $city: String, $province: String, $postcode: String, $country: String) {
  openGeoForward(address1: $address1, city: $city, province: $province, postcode: $postcode, country: $country) {
    matched
    reason
    location
    address
    confidence
    provider
    billing { unit quantity counted }
  }
}

Variables

{
    "address1": "1000 Rue De La Gauchetière O",
    "city": "Montreal",
    "province": "QC",
    "country": "CA",
    "postcode": "H3B 4W5"
}
Response example
{
    "data": {
        "openGeoForward": {
            "matched": true,
            "reason": null,
            "location": {
                "lat": 45.498174,
                "lng": -73.566218
            },
            "address": {
                "number": "1000",
                "street": "rue de la gauchetière o",
                "city": "Montreal",
                "country": "CA",
                "postcode": "h3b 4w5"
            },
            "confidence": 1,
            "provider": "internal",
            "billing": {
                "unit": "point",
                "quantity": 1,
                "counted": true
            }
        }
    }
}
geo.forward →

openGeoPlace query call Beta

Suggest addresses while they are typed, then give the chosen one as a structured address with coordinates.

query Run($input: Json!) {
  openGeoPlace(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "place_id": "ChIJWeWFxFwayUwRgP5QVJUn5ww",
        "session_token": "6f1c2a8e-4b1d-4a39-9d0e-5b8f3c7a21de"
    }
}
Response example
{
    "data": {
        "openGeoPlace": {
            "mode": "sync",
            "job": null,
            "data": {
                "place_id": "ChIJWeWFxFwayUwRgP5QVJUn5ww",
                "formatted_address": "1000 Rue De la Gauchetière O, Montréal, QC H3B 4W5, Canada",
                "address": {
                    "number": "1000",
                    "street": "Rue De la Gauchetière Ouest",
                    "address_1": "1000 Rue De la Gauchetière Ouest",
                    "address_2": null,
                    "city": "Montréal",
                    "province": "QC",
                    "country": "CA",
                    "postcode": "H3B 4W5"
                },
                "location": {
                    "lat": 45.4981354,
                    "lng": -73.5659122
                }
            },
            "warnings": [],
            "meta": {
                "provider": "google"
            },
            "billing": {
                "unit": "call",
                "quantity": 1,
                "counted": true
            }
        }
    }
}
geo.autocomplete →

openGeoReverse query point Stable

Turn coordinates into a structured address.

query Reverse($lat: Float!, $lng: Float!) {
  openGeoReverse(lat: $lat, lng: $lng) {
    matched
    reason
    address
    provider
    billing { unit quantity counted }
  }
}

Variables

{
    "lat": 45.4985,
    "lng": -73.5664
}
Response example
{
    "data": {
        "openGeoReverse": {
            "matched": true,
            "reason": null,
            "address": {
                "address_1": "1000 Rue de La Gauchetière Ouest",
                "address_2": "",
                "city": "Montreal",
                "province": "Quebec",
                "country": "CAN",
                "postcode": "H3B 4W5",
                "full_address": "1000 Rue de La Gauchetière Ouest, Montreal, QC, Canada",
                "country_code": "CA",
                "province_code": "QC"
            },
            "provider": "internal",
            "billing": {
                "unit": "point",
                "quantity": 1,
                "counted": true
            }
        }
    }
}
geo.reverse →

openGeoValidate query point Stable

Normalize an address and check its postcode, PO Box status and phone number.

query Validate($address1: String, $city: String, $province: String, $postcode: String, $country: String!, $phone: String) {
  openGeoValidate(address1: $address1, city: $city, province: $province, postcode: $postcode, country: $country, phone: $phone)
}

Variables

{
    "address1": "1000 Rue De La Gauchetière O",
    "city": "Montreal",
    "province": "QC",
    "country": "CA",
    "postcode": "H3B 4W5",
    "phone": "514 555 0134"
}
Response example
{
    "data": {
        "openGeoValidate": {
            "valid": true,
            "issues": [],
            "normalized": {
                "address_1": "1000 Rue De La Gauchetière O",
                "city": "Montreal",
                "country": "CA",
                "postcode": "H3B4W5"
            },
            "checks": {
                "postcode_format": true,
                "po_box": false
            }
        }
    }
}
geo.validate →

Distance matrix

openMatrix mutation element_1k Beta

Distances and durations between many origins and destinations.

mutation Run($input: Json!) {
  openMatrix(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "origins": [
            {
                "id": "depot",
                "lat": 45.5017,
                "lng": -73.5673
            }
        ],
        "destinations": [
            {
                "id": "order-1001",
                "lat": 45.5088,
                "lng": -73.554
            },
            {
                "id": "order-1002",
                "lat": 45.4972,
                "lng": -73.5786
            }
        ]
    }
}
Response example
{
    "data": {
        "openMatrix": {
            "mode": "sync",
            "job": null,
            "data": {
                "origins": [
                    "depot"
                ],
                "destinations": [
                    "order-1001",
                    "order-1002"
                ],
                "distances_meters": [
                    [
                        1840,
                        1611
                    ]
                ],
                "durations_seconds": [
                    [
                        245,
                        227
                    ]
                ],
                "unreachable": []
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "metrics": [
                    "distance",
                    "duration"
                ],
                "origins": 1,
                "destinations": 2,
                "elements": 2
            },
            "billing": {
                "unit": "element_1k",
                "quantity": 0.002,
                "counted": true,
                "breakdown": {
                    "origins": 1,
                    "destinations": 2,
                    "elements": 2,
                    "engine_requests": 1
                }
            }
        }
    }
}
matrix.compute →

Directions

openDirections query call Stable

Road geometry, distance and duration between waypoints.

query Run($input: Json!) {
  openDirections(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "waypoints": [
            {
                "id": "depot",
                "lat": 45.5017,
                "lng": -73.5673
            },
            {
                "id": "order-1001",
                "lat": 45.5088,
                "lng": -73.554
            },
            {
                "id": "order-1002",
                "lat": 45.4972,
                "lng": -73.5786
            }
        ],
        "options": {
            "geometry": true
        }
    }
}
Response example
{
    "data": {
        "openDirections": {
            "mode": "sync",
            "job": null,
            "data": {
                "legs": [
                    {
                        "from": "depot",
                        "to": "order-1001",
                        "reachable": true,
                        "distance_meters": 1840,
                        "duration_seconds": 245,
                        "geometry": "y`vtGjr_`MJUNYL[h@gAHOFQBIHOc@g@MOa@]s@q@EGEEk@g@k@k@CCMMDO@EDMBMBOBQBO@KBM?G@OBQ?G@MBQ@MBMBMBOBOBMFSDSBGBIBGHOvAkE@EHQGEECa@_@ECMKKIwAiA_CmBq@m@ECIIOKoAcAs@i@KIIIOMgA{@QMCCGGGE_@[m@g@a@[kA_ACCECKGKGWSQOwAkAGEGEu@o@CCMIMKGEYSeAq@OKa@WGG[Sy@g@w@k@s@e@GEGE??YQgAu@c@[QKc@YMKKG@EBK@EVo@@EDKDM@Cb@cAFOBIt@oBBEDUJFBBFDx@l@??"
                    },
                    {
                        "from": "order-1001",
                        "to": "order-1002",
                        "reachable": true,
                        "distance_meters": 3108,
                        "duration_seconds": 390,
                        "geometry": "elwtGl}|_Mx@n@BBFD\\ZDDDBz@l@`@\\~BdB~AjAf@\\DDBBLDEPEJe@zAADENGNCFW|@Y|@CFA@ELCHGRq@jBABu@tBCHAFEJGNADg@vAKXq@lBABEHAHgA|C_@fASf@ADGPO^JHbAt@`CrBBBJHLJhCzBJL~BvBFDJJHF~@r@zAdABBHFLHdDfCBBFFFDJHvDlCRJDBRHXPx@f@D@HHJFVV|@x@BBLJTRJJTTlBdBLL`@\\h@f@ZXNLr@p@BBB@JJJHv@r@j@h@DDNLJJp@l@HHj@j@DBLLRRfB`BBBJJHFv@r@x@t@B@HHJJz@v@RRl@j@BBHHJHhAfAj@j@BBNLHHLLVT|@z@HFIPw@tBmAbDy@vBe@pACDIPIRg@pAO\\{A`ECDAFEJHHp@p@??"
                    }
                ],
                "totals": {
                    "distance_meters": 4948,
                    "duration_seconds": 635,
                    "legs": 2,
                    "unreachable_legs": 0
                }
            },
            "warnings": [],
            "meta": {
                "region": "NA",
                "profile": "car",
                "geometry": true,
                "geometry_format": "polyline"
            },
            "billing": {
                "unit": "call",
                "quantity": 1,
                "counted": true,
                "breakdown": {
                    "waypoints": 3,
                    "legs": 2
                }
            }
        }
    }
}
directions.compute →

Reach areas

openIsochrone query call Beta

Draw the areas reachable from a point within given drive times.

query Run($input: Json!) {
  openIsochrone(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "location": {
            "lat": 45.5017,
            "lng": -73.5673
        },
        "minutes": [
            5,
            10
        ],
        "profile": "car"
    }
}
Response example
{
    "data": {
        "openIsochrone": {
            "mode": "sync",
            "job": null,
            "data": {
                "location": {
                    "lat": 45.5017,
                    "lng": -73.5673
                },
                "direction": "from",
                "areas": [
                    {
                        "minutes": 5,
                        "area_km2": 16.21,
                        "geometry": {
                            "type": "MultiPolygon",
                            "coordinates": [
                                [
                                    [
                                        [
                                            -73.563299,
                                            45.530674
                                        ],
                                        [
                                            -73.583949,
                                            45.515349
                                        ],
                                        [
                                            -73.584242,
                                            45.513757
                                        ],
                                        [
                                            -73.591753,
                                            45.494246
                                        ],
                                        [
                                            -73.600596,
                                            45.467403
                                        ],
                                        [
                                            -73.575631,
                                            45.482031
                                        ],
                                        [
                                            -73.559299,
                                            45.476764
                                        ],
                                        [
                                            -73.543299,
                                            45.48029
                                        ],
                                        [
                                            -73.542831,
                                            45.475168
                                        ],
                                        [
                                            -73.54472,
                                            45.4927
                                        ],
                                        [
                                            -73.552638,
                                            45.4967
                                        ],
                                        [
                                            -73.550582,
                                            45.507982
                                        ],
                                        [
                                            -73.547776,
                                            45.516223
                                        ],
                                        [
                                            -73.554652,
                                            45.527052
                                        ],
                                        [
                                            -73.563299,
                                            45.530674
                                        ]
                                    ]
                                ]
                            ]
                        }
                    },
                    {
                        "minutes": 10,
                        "area_km2": 85.45,
                        "geometry": {
                            "type": "MultiPolygon",
                            "coordinates": [
                                [
                                    [
                                        [
                                            -73.523299,
                                            45.566736
                                        ],
                                        [
                                            -73.56589,
                                            45.5577
                                        ],
                                        [
                                            -73.62407,
                                            45.50747
                                        ],
                                        [
                                            -73.661785,
                                            45.500214
                                        ],
                                        [
                                            -73.640299,
                                            45.471298
                                        ],
                                        [
                                            -73.662299,
                                            45.444574
                                        ],
                                        [
                                            -73.628651,
                                            45.4447
                                        ],
                                        [
                                            -73.610299,
                                            45.458262
                                        ],
                                        [
                                            -73.559421,
                                            45.4547
                                        ],
                                        [
                                            -73.480299,
                                            45.465887
                                        ],
                                        [
                                            -73.509065,
                                            45.488465
                                        ],
                                        [
                                            -73.527299,
                                            45.503088
                                        ],
                                        [
                                            -73.520532,
                                            45.5297
                                        ],
                                        [
                                            -73.523299,
                                            45.566736
                                        ]
                                    ]
                                ]
                            ]
                        }
                    }
                ]
            },
            "warnings": [],
            "meta": {
                "profile": "car",
                "geometry_format": "geojson"
            },
            "billing": {
                "unit": "call",
                "quantity": 1,
                "counted": true
            }
        }
    }
}
isochrone.compute →

Map matching

openTraceMatch query point_1k Beta

Snap a GPS trace to the roads it was driven on and measure the drive.

query Run($input: Json!) {
  openTraceMatch(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "points": [
            {
                "id": "fix-1",
                "lat": 45.498348,
                "lng": -73.571617,
                "time": "2026-11-02T08:00:00-05:00"
            },
            {
                "id": "fix-2",
                "lat": 45.499071,
                "lng": -73.569882,
                "time": "2026-11-02T08:00:21-05:00"
            },
            {
                "id": "fix-3",
                "lat": 45.501306,
                "lng": -73.567881,
                "time": "2026-11-02T08:00:42-05:00"
            },
            {
                "id": "fix-4",
                "lat": 45.502841,
                "lng": -73.566375,
                "time": "2026-11-02T08:01:03-05:00"
            },
            {
                "id": "fix-5",
                "lat": 45.502257,
                "lng": -73.564575,
                "time": "2026-11-02T08:01:24-05:00"
            },
            {
                "id": "fix-6",
                "lat": 45.502093,
                "lng": -73.563383,
                "time": "2026-11-02T08:01:45-05:00"
            },
            {
                "id": "fix-7",
                "lat": 45.502914,
                "lng": -73.560675,
                "time": "2026-11-02T08:02:07-05:00"
            },
            {
                "id": "fix-8",
                "lat": 45.504991,
                "lng": -73.558915,
                "time": "2026-11-02T08:02:28-05:00"
            }
        ],
        "profile": "car"
    }
}
Response example
{
    "data": {
        "openTraceMatch": {
            "mode": "sync",
            "job": null,
            "data": {
                "points": [
                    {
                        "index": 0,
                        "id": "fix-1",
                        "type": "matched",
                        "lat": 45.498367,
                        "lng": -73.571597,
                        "moved_meters": 2.6,
                        "road": "Rue Stanley"
                    },
                    {
                        "index": 1,
                        "id": "fix-2",
                        "type": "matched",
                        "lat": 45.499086,
                        "lng": -73.569893,
                        "moved_meters": 2,
                        "road": "Boulevard René-Lévesque Ouest"
                    },
                    {
                        "index": 2,
                        "id": "fix-3",
                        "type": "matched",
                        "lat": 45.50129,
                        "lng": -73.567829,
                        "moved_meters": 4.4,
                        "road": "Boulevard René-Lévesque Ouest"
                    },
                    {
                        "index": 3,
                        "id": "fix-4",
                        "type": "matched",
                        "lat": 45.502922,
                        "lng": -73.566398,
                        "moved_meters": 9.3,
                        "road": "Boulevard René-Lévesque Ouest"
                    },
                    {
                        "index": 4,
                        "id": "fix-5",
                        "type": "matched",
                        "lat": 45.502289,
                        "lng": -73.564558,
                        "moved_meters": 3.8,
                        "road": "Côte du Beaver Hall"
                    },
                    {
                        "index": 5,
                        "id": "fix-6",
                        "type": "matched",
                        "lat": 45.502045,
                        "lng": -73.563414,
                        "moved_meters": 5.8,
                        "road": "Côte du Beaver Hall"
                    },
                    {
                        "index": 6,
                        "id": "fix-7",
                        "type": "matched",
                        "lat": 45.502874,
                        "lng": -73.560672,
                        "moved_meters": 4.4,
                        "road": "Rue Saint-Antoine Ouest"
                    },
                    {
                        "index": 7,
                        "id": "fix-8",
                        "type": "matched",
                        "lat": 45.504973,
                        "lng": -73.558873,
                        "moved_meters": 3.8,
                        "road": "Rue Saint-Antoine Ouest"
                    }
                ],
                "roads": [
                    {
                        "names": [
                            "Rue Stanley"
                        ],
                        "road_class": "residential",
                        "speed_kmh": 30,
                        "distance_meters": 67
                    },
                    {
                        "names": [
                            "Boulevard René-Lévesque Ouest"
                        ],
                        "road_class": "secondary",
                        "speed_kmh": 50,
                        "distance_meters": 662
                    },
                    {
                        "names": [
                            "Côte du Beaver Hall"
                        ],
                        "road_class": "tertiary",
                        "speed_kmh": 40,
                        "distance_meters": 280
                    },
                    {
                        "names": [
                            "Rue du Square Victoria"
                        ],
                        "road_class": "tertiary",
                        "speed_kmh": 30,
                        "distance_meters": 113
                    },
                    {
                        "names": [
                            "Rue Saint-Antoine Ouest"
                        ],
                        "road_class": "secondary",
                        "speed_kmh": 49,
                        "distance_meters": 463
                    }
                ],
                "summary": {
                    "points": 8,
                    "matched": 8,
                    "interpolated": 0,
                    "unmatched": 0,
                    "distance_meters": 1585
                },
                "geometry": {
                    "type": "LineString",
                    "coordinates": [
                        [
                            -73.571598,
                            45.498367
                        ],
                        [
                            -73.571479,
                            45.498308
                        ],
                        [
                            -73.571149,
                            45.498132
                        ],
                        [
                            -73.57112,
                            45.498116
                        ],
                        [
                            -73.571049,
                            45.498079
                        ],
                        [
                            -73.570902,
                            45.498007
                        ],
                        [
                            -73.57085,
                            45.498061
                        ],
                        [
                            -73.570706,
                            45.498216
                        ],
                        [
                            -73.570579,
                            45.498355
                        ],
                        [
                            -73.570424,
                            45.498523
                        ],
                        [
                            -73.570397,
                            45.498553
                        ],
                        [
                            -73.570284,
                            45.498673
                        ],
                        [
                            -73.570199,
                            45.498762
                        ],
                        [
                            -73.57015,
                            45.498813
                        ],
                        [
                            -73.570117,
                            45.498849
                        ],
                        [
                            -73.569971,
                            45.499004
                        ],
                        [
                            -73.569894,
                            45.499087
                        ],
                        [
                            -73.56974,
                            45.49925
                        ],
                        [
                            -73.569719,
                            45.499274
                        ],
                        [
                            -73.569664,
                            45.499334
                        ],
                        [
                            -73.569541,
                            45.499463
                        ],
                        [
                            -73.56949,
                            45.499517
                        ],
                        [
                            -73.569244,
                            45.499785
                        ],
                        [
                            -73.56917,
                            45.49986
                        ],
                        [
                            -73.569046,
                            45.49999
                        ],
                        [
                            -73.569027,
                            45.500011
                        ],
                        [
                            -73.568971,
                            45.500073
                        ],
                        [
                            -73.568916,
                            45.500131
                        ],
                        [
                            -73.568903,
                            45.500144
                        ],
                        [
                            -73.568534,
                            45.500536
                        ],
                        [
                            -73.568133,
                            45.500966
                        ],
                        [
                            -73.568076,
                            45.501026
                        ],
                        [
                            -73.567829,
                            45.501291
                        ],
                        [
                            -73.567507,
                            45.501639
                        ],
                        [
                            -73.567451,
                            45.501698
                        ],
                        [
                            -73.567428,
                            45.50172
                        ],
                        [
                            -73.567354,
                            45.501796
                        ],
                        [
                            -73.567236,
                            45.501928
                        ],
                        [
                            -73.567174,
                            45.501996
                        ],
                        [
                            -73.566956,
                            45.502222
                        ],
                        [
                            -73.566784,
                            45.502408
                        ],
                        [
                            -73.566768,
                            45.502425
                        ],
                        [
                            -73.566724,
                            45.502472
                        ],
                        [
                            -73.566681,
                            45.502519
                        ],
                        [
                            -73.566667,
                            45.502534
                        ],
                        [
                            -73.566643,
                            45.502565
                        ],
                        [
                            -73.566585,
                            45.502648
                        ],
                        [
                            -73.566541,
                            45.502711
                        ],
                        [
                            -73.566415,
                            45.502899
                        ],
                        [
                            -73.566399,
                            45.502923
                        ],
                        [
                            -73.566333,
                            45.503032
                        ],
                        [
                            -73.56619,
                            45.502991
                        ],
                        [
                            -73.566159,
                            45.50298
                        ],
                        [
                            -73.565696,
                            45.502759
                        ],
                        [
                            -73.565468,
                            45.502653
                        ],
                        [
                            -73.565065,
                            45.502461
                        ],
                        [
                            -73.565035,
                            45.502448
                        ],
                        [
                            -73.564962,
                            45.502418
                        ],
                        [
                            -73.564879,
                            45.502387
                        ],
                        [
                            -73.564846,
                            45.502376
                        ],
                        [
                            -73.564782,
                            45.502354
                        ],
                        [
                            -73.56471,
                            45.502331
                        ],
                        [
                            -73.564633,
                            45.502308
                        ],
                        [
                            -73.564543,
                            45.502286
                        ],
                        [
                            -73.564463,
                            45.502269
                        ],
                        [
                            -73.564401,
                            45.502257
                        ],
                        [
                            -73.564333,
                            45.502243
                        ],
                        [
                            -73.56429,
                            45.502236
                        ],
                        [
                            -73.564205,
                            45.502225
                        ],
                        [
                            -73.564119,
                            45.502213
                        ],
                        [
                            -73.56408,
                            45.502208
                        ],
                        [
                            -73.564013,
                            45.502196
                        ],
                        [
                            -73.563923,
                            45.50218
                        ],
                        [
                            -73.563849,
                            45.502165
                        ],
                        [
                            -73.563775,
                            45.502149
                        ],
                        [
                            -73.563712,
                            45.502133
                        ],
                        [
                            -73.563632,
                            45.502112
                        ],
                        [
                            -73.563552,
                            45.502088
                        ],
                        [
                            -73.563477,
                            45.502066
                        ],
                        [
                            -73.563379,
                            45.502034
                        ],
                        [
                            -73.563277,
                            45.502
                        ],
                        [
                            -73.563235,
                            45.501983
                        ],
                        [
                            -73.563188,
                            45.501961
                        ],
                        [
                            -73.56315,
                            45.50194
                        ],
                        [
                            -73.563069,
                            45.501894
                        ],
                        [
                            -73.562052,
                            45.50145
                        ],
                        [
                            -73.56202,
                            45.501435
                        ],
                        [
                            -73.561934,
                            45.501394
                        ],
                        [
                            -73.561903,
                            45.50143
                        ],
                        [
                            -73.561881,
                            45.501457
                        ],
                        [
                            -73.561722,
                            45.501634
                        ],
                        [
                            -73.561697,
                            45.501663
                        ],
                        [
                            -73.561641,
                            45.501726
                        ],
                        [
                            -73.561589,
                            45.501786
                        ],
                        [
                            -73.561222,
                            45.50223
                        ],
                        [
                            -73.560672,
                            45.502874
                        ],
                        [
                            -73.560443,
                            45.503122
                        ],
                        [
                            -73.560422,
                            45.503145
                        ],
                        [
                            -73.56037,
                            45.503204
                        ],
                        [
                            -73.560308,
                            45.503277
                        ],
                        [
                            -73.559974,
                            45.50368
                        ],
                        [
                            -73.559757,
                            45.503939
                        ],
                        [
                            -73.559708,
                            45.503996
                        ],
                        [
                            -73.559662,
                            45.504051
                        ],
                        [
                            -73.559594,
                            45.504126
                        ],
                        [
                            -73.559294,
                            45.504485
                        ],
                        [
                            -73.559215,
                            45.504579
                        ],
                        [
                            -73.559195,
                            45.504603
                        ],
                        [
                            -73.559164,
                            45.50464
                        ],
                        [
                            -73.559129,
                            45.504678
                        ],
                        [
                            -73.558989,
                            45.50484
                        ],
                        [
                            -73.558874,
                            45.504973
                        ]
                    ]
                }
            },
            "warnings": [],
            "meta": {
                "profile": "car",
                "geometry_format": "geojson"
            },
            "billing": {
                "unit": "point_1k",
                "quantity": 8,
                "counted": true
            }
        }
    }
}
trace.match →

Chargeable weight

openWeightChargeable query call Beta

Work out the weight a carrier bills: the greater of actual and volumetric weight.

query Run($input: Json!) {
  openWeightChargeable(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "packages": [
            {
                "id": "box-1",
                "weight": 2.4,
                "weight_unit": "kg",
                "length": 40,
                "width": 30,
                "height": 30,
                "dimension_unit": "cm"
            },
            {
                "id": "box-2",
                "quantity": 2,
                "weight": 9,
                "weight_unit": "kg",
                "length": 30,
                "width": 20,
                "height": 15,
                "dimension_unit": "cm"
            }
        ],
        "divisor": 5000,
        "divisor_unit": "cm3_kg",
        "increment": 0.5
    }
}
Response example
{
    "data": {
        "openWeightChargeable": {
            "mode": "sync",
            "job": null,
            "data": {
                "weight_unit": "kg",
                "divisor": 5000,
                "divisor_unit": "cm3_kg",
                "packages": [
                    {
                        "id": "box-1",
                        "quantity": 1,
                        "actual_weight": 2.4,
                        "volumetric_weight": 7.2,
                        "chargeable_weight": 7.5,
                        "basis": "volumetric"
                    },
                    {
                        "id": "box-2",
                        "quantity": 2,
                        "actual_weight": 9,
                        "volumetric_weight": 1.8,
                        "chargeable_weight": 9,
                        "basis": "actual"
                    }
                ],
                "totals": {
                    "packages": 3,
                    "actual_weight": 20.4,
                    "volumetric_weight": 10.8,
                    "chargeable_weight": 25.5,
                    "shipment_chargeable_weight": 20.5
                }
            },
            "warnings": [],
            "meta": {
                "cm3_per_kg": 5000,
                "increment": 0.5
            },
            "billing": {
                "unit": "call",
                "quantity": 1,
                "counted": true
            }
        }
    }
}
weight.chargeable →

Barcodes

openBarcode query call Beta

Draw a barcode or a QR, Data Matrix or PDF417 code as an image.

query Run($input: Json!) {
  openBarcode(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "value": "1Z999AA10123456784",
        "symbology": "code128",
        "text": true
    }
}
Response example
{
    "data": {
        "openBarcode": {
            "mode": "sync",
            "job": null,
            "data": {
                "symbology": "code128",
                "value": "1Z999AA10123456784",
                "content_type": "image/png",
                "width": 440,
                "height": 100,
                "image_base64": "iVBORw0KGgoAAAANSUhEUgAAAbgAAABkCAIAAAB7I7IEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC0klEQVR4nO3d0W6yMACGYfiz+79l/gMS0ljar8icpj7P0Ya1VDbfQTDZum3bAkDbv3cvAODTCSVAIJQAgVACBEIJEAglQCCUAIFQAgRCCRAIJUAglACBUAIEQgkQCCVAIJQAgVACBEIJEAglQCCUAMHPnSev63p8vf/vnX1L+X946i31DPX4UuvRco/1+Hpka78je+zP+TkztH4K9V5Gjsn9GepXVG9vPTryW9T/fbt/tEdeXf8o9ce0ZuvP35ph5DjUq7r6Dhp/z46scOQ1tsaM77e/lxHOKAECoQQIhBIgEEqAQCgBAqEECIQSIBBKgEAoAQKhBAiEEiAQSoBAKAECoQQIhBIgEEqAQCgBAqEECIQSIBBKgEAoAQKhBAiEEiAQSoBAKAECoQQIhBIgEEqAQCgBAqEECIQSIBBKgEAoAQKhBAiEEiAQSoBAKAECoQQIhBIgEEqAQCgBAqEECIQSIBBKgEAoAQKhBAiEEiBYt2179xoAPpozSoDg590L4IXWdV2W5bho2L8t7Q+V208H/9bGekn3R7ae/jDJ+Gu/dJQ6q2UmLr2ndbyxT3/EDwUpW/CijadLujmy9fT6CJyGrP/053ZUH2om4NJ7Tuva+xP4ltOf/pKeG7ltW2tkfWK4b9yNTDV4lE5nYzIuvef0aZWMe+xf2Hae3rker6+4j1PCssUj54P7VJ3zXLmcm1B+l7qSDwm4urGcdmRja1WDralTVTarnOehev0ILo16ti78OztiSkL5RVpv7Jv3apaiIHHjqfFL8quD/4BzyW8glN8u3uXob/wz40s6vc3yRGTj4NYdeebjrvecTj/j8oqPB129FT6y9/uLP5zeSR98madRHtkR8xFKgMDHgwACoQQIhBIgEEqAQCgBAqEECIQSIBBKgEAoAQKhBAiEEiAQSoBAKAECoQQIhBIgEEqAQCgBAqEECIQSIBBKgEAoAYL/0ZAf9Hxdf0cAAAAASUVORK5CYII="
            },
            "warnings": [],
            "meta": {
                "format": "png"
            },
            "billing": {
                "unit": "call",
                "quantity": 1,
                "counted": true
            }
        }
    }
}
label.barcode →

Document checks

openDocumentVerify query call Beta

Check whether a PDF was issued by Superroute and is unchanged since.

query Run($input: Json!) {
  openDocumentVerify(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "pdf_base64": "JVBERi0xLjcKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9UeXBlIC9PdXRsaW5lcyAvQ291bnQgMCA+PgplbmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZXMKL0tpZHMgWzYgMCBSCl0KL0NvdW50IDEKL1Jlc291cmNlcyA8PAovUHJvY1NldCA0IDAgUgovRm9udCA8PCAKL0YxIDggMCBSCi9GMiA5IDAgUgo+Pgo+PgovTWVkaWFCb3ggWzAuMDAwIDAuMDAwIDU5NS4yODAgODQxLjg5MF0KID4+CmVuZG9iago0IDAgb2JqClsvUERGIC9UZXh0IF0KZW5kb2JqCjUgMCBvYmoKPDwKL1Byb2R1Y2VyICj+/wBkAG8AbQBwAGQAZgAgADMALgAxAC4ANgAgACsAIABDAFAARABGKQovQ3JlYXRpb25EYXRlIChEOjIwMjYxMDIzMTY1NDU4LTA0JzAwJykKL01vZERhdGUgKEQ6MjAyNjEwMjMxNjU0NTgtMDQnMDAnKQo+PgplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvUGFnZQovTWVkaWFCb3ggWzAuMDAwIDAuMDAwIDU5NS4yODAgODQxLjg5MF0KL1BhcmVudCAzIDAgUgovQ29udGVudHMgNyAwIFIKPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxMDQgPj4Kc3RyZWFtCnic4zLQMzAwUEAmi9K5nEIUjE30DAzNFMzNLPSMTQ0VQlIU9N0MFYyAogohaQoK0RoBicnZmXnpCsU5mQWasQohXgquIcgagbSZhSVEo5GCoRFco39RSmqRQrC/rqGBgSFMJwAMfh99CmVuZHN0cmVhbQplbmRvYmoKOCAwIG9iago8PCAvVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL05hbWUgL0YxCi9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjkgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9OYW1lIC9GMgovQmFzZUZvbnQgL0hlbHZldGljYQovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKeHJlZgowIDEwCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDc0IDAwMDAwIG4gCjAwMDAwMDAxMjAgMDAwMDAgbiAKMDAwMDAwMDI4NCAwMDAwMCBuIAowMDAwMDAwMzEzIDAwMDAwIG4gCjAwMDAwMDA0NjIgMDAwMDAgbiAKMDAwMDAwMDU2NSAwMDAwMCBuIAowMDAwMDAwNzQxIDAwMDAwIG4gCjAwMDAwMDA4NTMgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxMAovUm9vdCAxIDAgUgovSW5mbyA1IDAgUgovSURbPDNjZTEyNGMwNjIzMjg1MDYxZDYxMzAxMjZhZmJjZmU4PjwzY2UxMjRjMDYyMzI4NTA2MWQ2MTMwMTI2YWZiY2ZlOD5dCj4+CnN0YXJ0eHJlZgo5NjAKJSVFT0YKMTAgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxNjkgPj4Kc3RyZWFtCnicAZ4AYf8A4x/3nkBmRqmXV0RDMMBRFe/SEzSdOBG9uhuZ/s5UtPf0AVy6btZQhdivf2xZDn8ZG6/7JUWH10MgDgpD7tG6T8IRsm9CbWX9+IZUHlaWr2qHhiwvOrwmtizWU+8F4CIaIKFqoNJw0WB9z9ptHaaWc/DeEdaaTWTyBJunkbNAai8jofoq5K4XRvpJ371P2xkEkWiyYabenbwK9ruywG3WTiIKZW5kc3RyZWFtCmVuZG9iagp4cmVmCjEwIDEKMDAwMDAwMTMxMSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDExIC9Sb290IDEgMCBSIC9JbmZvIDUgMCBSIC9JRCBbPDNjZTEyNGMwNjIzMjg1MDYxZDYxMzAxMjZhZmJjZmU4PjwzY2UxMjRjMDYyMzI4NTA2MWQ2MTMwMTI2YWZiY2ZlOD5dIC9QcmV2IDk2MCA+PgpzdGFydHhyZWYKMTU1MwolJUVPRgo="
    }
}
Response example
{
    "data": {
        "openDocumentVerify": {
            "mode": "sync",
            "job": null,
            "data": {
                "status": "authentic",
                "issued_by_us": true,
                "intact": true,
                "sha256": "6c709056353a1b5376791c8dd949243dcf9e7327eae864d4fe476ff435e40d76",
                "byte_size": 1736
            },
            "warnings": [],
            "meta": [],
            "billing": {
                "unit": "call",
                "quantity": 1,
                "counted": true
            }
        }
    }
}
document.verify →

Arrival estimates

openEta query call Stable

Recompute arrival times along a route from progress so far.

query Run($input: Json!) {
  openEta(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "departed_at": "2026-11-02T09:00:00-05:00",
        "now": "2026-11-02T09:20:00-05:00",
        "stops": [
            {
                "id": "order-1001",
                "travel_seconds": 600,
                "service_seconds": 300,
                "completed_at": "2026-11-02T09:15:00-05:00"
            },
            {
                "id": "order-1002",
                "travel_seconds": 720,
                "service_seconds": 300,
                "time_window": {
                    "from": "2026-11-02T09:00:00-05:00",
                    "to": "2026-11-02T09:25:00-05:00"
                }
            },
            {
                "id": "order-1003",
                "travel_seconds": 540,
                "service_seconds": 240
            }
        ]
    }
}
Response example
{
    "data": {
        "openEta": {
            "mode": "sync",
            "job": null,
            "data": {
                "status": "in_progress",
                "anchor": {
                    "at": "2026-11-02T14:15:00Z",
                    "at_epoch": 1793628900,
                    "source": "completion",
                    "stop_id": "order-1001",
                    "age_seconds": 300
                },
                "finish_eta": "2026-11-02T14:45:00Z",
                "finish_eta_epoch": 1793630700,
                "remaining": {
                    "stops": 2,
                    "travel_seconds": 1260,
                    "service_seconds": 540
                },
                "stops": [
                    {
                        "id": "order-1002",
                        "eta": "2026-11-02T14:27:00Z",
                        "eta_epoch": 1793629620,
                        "departure_eta": "2026-11-02T14:32:00Z",
                        "window_status": "late",
                        "minutes_late": 2
                    },
                    {
                        "id": "order-1003",
                        "eta": "2026-11-02T14:41:00Z",
                        "eta_epoch": 1793630460,
                        "departure_eta": "2026-11-02T14:45:00Z",
                        "window_status": null,
                        "minutes_late": null
                    }
                ],
                "confidence": "medium"
            },
            "warnings": [],
            "meta": {
                "model": "anchored_plan_projection",
                "pace_correction": false,
                "traffic_aware": false,
                "stops": 3
            },
            "billing": {
                "unit": "call",
                "quantity": 1,
                "counted": true,
                "breakdown": {
                    "stops": 3
                }
            }
        }
    }
}
eta.estimate →

Maps

openMapStatic query call Beta

Draw your own lines, points and areas on the street map and receive a PNG image.

query Run($input: Json!) {
  openMapStatic(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "width": 400,
        "height": 300,
        "features": {
            "type": "FeatureCollection",
            "features": [
                {
                    "type": "Feature",
                    "geometry": {
                        "type": "Point",
                        "coordinates": [
                            -73.5673,
                            45.5017
                        ]
                    },
                    "properties": {
                        "marker-color": "#1e88e5"
                    }
                },
                {
                    "type": "Feature",
                    "geometry": {
                        "type": "LineString",
                        "coordinates": [
                            [
                                -73.5673,
                                45.5017
                            ],
                            [
                                -73.554,
                                45.5088
                            ]
                        ]
                    },
                    "properties": {
                        "stroke": "#1e88e5"
                    }
                }
            ]
        }
    }
}
Response example
{
    "data": {
        "openMapStatic": {
            "mode": "sync",
            "job": null,
            "data": {
                "content_type": "image/png",
                "width": 400,
                "height": 300,
                "zoom": 14.2,
                "image_base64": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEsCAYAAAA..."
            },
            "warnings": [],
            "meta": {
                "bytes": 48213
            },
            "billing": {
                "unit": "call",
                "quantity": 1,
                "counted": true,
                "breakdown": null
            }
        }
    }
}
map.static →

openMapToken query tile_1k Beta

Map keys and short-lived tokens for your own apps and pages; tiles are billed per thousand.

query Run($input: Json) {
  openMapToken(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "ttl_seconds": 3600
    }
}
Response example
{
    "data": {
        "openMapToken": {
            "mode": "sync",
            "job": null,
            "data": {
                "token": "sm1.eyJzdWIiOiJvcGVuOjQyMTciLCJleHAiOjE3OTMxMjQ4MDB9.Q2v8m1Xb3dKp7Rz0Yt5Wn9Lc4Hs6Fg2Ja8Ue1Oi3Pk",
                "expires_at": "2026-10-27T15:00:00Z",
                "base_url": "https://maps.example.com",
                "subject": "open:4217"
            },
            "warnings": [],
            "meta": {
                "ttl_seconds": 3600
            },
            "billing": {
                "unit": "tile_1k",
                "quantity": 0,
                "counted": true
            }
        }
    }
}
map.tiles →

Carton selection

openPackingSolve mutation job Beta

Choose packaging and produce a 3D packing arrangement for a set of items.

mutation Run($input: Json!) {
  openPackingSolve(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "packagings": [
            {
                "key": "box-m",
                "name": "Medium box",
                "inner_length_cm": 40,
                "inner_width_cm": 30,
                "inner_height_cm": 30,
                "max_payload_kg": 20,
                "unit_cost": 1.2
            },
            {
                "key": "box-s",
                "name": "Small box",
                "inner_length_cm": 25,
                "inner_width_cm": 20,
                "inner_height_cm": 15,
                "max_payload_kg": 10,
                "unit_cost": 0.6
            }
        ],
        "items": [
            {
                "id": "SKU-1",
                "name": "Mug",
                "quantity": 4,
                "length_cm": 12,
                "width_cm": 10,
                "height_cm": 10,
                "weight_kg": 0.4
            },
            {
                "id": "SKU-2",
                "name": "Kettle",
                "quantity": 1,
                "length_cm": 25,
                "width_cm": 20,
                "height_cm": 25,
                "weight_kg": 1.5
            }
        ]
    }
}
Response example
{
    "data": {
        "openPackingSolve": {
            "mode": "sync",
            "job": null,
            "data": {
                "target_utilization_percent": 85,
                "candidates": [
                    {
                        "rank": 1,
                        "strategy": "single:box-m",
                        "packages": [
                            {
                                "package_index": 1,
                                "packaging": {
                                    "key": "box-m",
                                    "name": "Medium box",
                                    "source_type": "open",
                                    "source_id": null,
                                    "inner_length_mm": 400,
                                    "inner_width_mm": 300,
                                    "inner_height_mm": 300,
                                    "outer_volume_mm3": 36000000,
                                    "max_payload_g": 20000,
                                    "tare_weight_g": 0,
                                    "unit_cost": 1.2
                                },
                                "items": [
                                    {
                                        "item_id": "SKU-2",
                                        "name": "Kettle",
                                        "sku": null,
                                        "quantity": 1
                                    },
                                    {
                                        "item_id": "SKU-1",
                                        "name": "Mug",
                                        "sku": null,
                                        "quantity": 4
                                    }
                                ],
                                "placements": [
                                    {
                                        "x_mm": 0,
                                        "y_mm": 0,
                                        "z_mm": 0,
                                        "length_mm": 250,
                                        "width_mm": 200,
                                        "height_mm": 250,
                                        "rotation_key": "LWH",
                                        "stack_level": 1,
                                        "container_index": 1,
                                        "unit_sequence": 1,
                                        "unit_key": "item-2-5",
                                        "item_id": "SKU-2",
                                        "name": "Kettle",
                                        "sku": null,
                                        "weight_g": 1500,
                                        "cargo_form": "loose",
                                        "source_item_count": 1,
                                        "pallet_group_key": null,
                                        "metadata": {
                                            "stackable": true,
                                            "max_stack_layers": null,
                                            "bearing_level": null,
                                            "allowed_orientations": [
                                                "LWH",
                                                "WLH",
                                                "LHW"
                                            ],
                                            "stack_level": 1
                                        }
                                    },
                                    {
                                        "x_mm": 0,
                                        "y_mm": 200,
                                        "z_mm": 0,
                                        "length_mm": 120,
                                        "width_mm": 100,
                                        "height_mm": 100,
                                        "rotation_key": "LWH",
                                        "stack_level": 1,
                                        "container_index": 1,
                                        "unit_sequence": 2,
                                        "unit_key": "item-1-1",
                                        "item_id": "SKU-1",
                                        "name": "Mug",
                                        "sku": null,
                                        "weight_g": 400,
                                        "cargo_form": "loose",
                                        "source_item_count": 1,
                                        "pallet_group_key": null,
                                        "metadata": {
                                            "stackable": true,
                                            "max_stack_layers": null,
                                            "bearing_level": null,
                                            "allowed_orientations": [
                                                "LWH",
                                                "WLH",
                                                "WHL"
                                            ],
                                            "stack_level": 1
                                        }
                                    },
                                    {
                                        "x_mm": 120,
                                        "y_mm": 200,
                                        "z_mm": 0,
                                        "length_mm": 120,
                                        "width_mm": 100,
                                        "height_mm": 100,
                                        "rotation_key": "LWH",
                                        "stack_level": 1,
                                        "container_index": 1,
                                        "unit_sequence": 3,
                                        "unit_key": "item-1-2",
                                        "item_id": "SKU-1",
                                        "name": "Mug",
                                        "sku": null,
                                        "weight_g": 400,
                                        "cargo_form": "loose",
                                        "source_item_count": 1,
                                        "pallet_group_key": null,
                                        "metadata": {
                                            "stackable": true,
                                            "max_stack_layers": null,
                                            "bearing_level": null,
                                            "allowed_orientations": [
                                                "LWH",
                                                "WLH",
                                                "WHL"
                                            ],
                                            "stack_level": 1
                                        }
                                    },
                                    {
                                        "x_mm": 250,
                                        "y_mm": 0,
                                        "z_mm": 0,
                                        "length_mm": 120,
                                        "width_mm": 100,
                                        "height_mm": 100,
                                        "rotation_key": "LWH",
                                        "stack_level": 1,
                                        "container_index": 1,
                                        "unit_sequence": 4,
                                        "unit_key": "item-1-3",
                                        "item_id": "SKU-1",
                                        "name": "Mug",
                                        "sku": null,
                                        "weight_g": 400,
                                        "cargo_form": "loose",
                                        "source_item_count": 1,
                                        "pallet_group_key": null,
                                        "metadata": {
                                            "stackable": true,
                                            "max_stack_layers": null,
                                            "bearing_level": null,
                                            "allowed_orientations": [
                                                "LWH",
                                                "WLH",
                                                "WHL"
                                            ],
                                            "stack_level": 1
                                        }
                                    },
                                    {
                                        "x_mm": 250,
                                        "y_mm": 100,
                                        "z_mm": 0,
                                        "length_mm": 120,
                                        "width_mm": 100,
                                        "height_mm": 100,
                                        "rotation_key": "LWH",
                                        "stack_level": 1,
                                        "container_index": 1,
                                        "unit_sequence": 5,
                                        "unit_key": "item-1-4",
                                        "item_id": "SKU-1",
                                        "name": "Mug",
                                        "sku": null,
                                        "weight_g": 400,
                                        "cargo_form": "loose",
                                        "source_item_count": 1,
                                        "pallet_group_key": null,
                                        "metadata": {
                                            "stackable": true,
                                            "max_stack_layers": null,
                                            "bearing_level": null,
                                            "allowed_orientations": [
                                                "LWH",
                                                "WLH",
                                                "WHL"
                                            ],
                                            "stack_level": 1
                                        }
                                    }
                                ],
                                "metrics": {
                                    "unit_count": 5,
                                    "packed_volume_mm3": 17300000,
                                    "inner_volume_mm3": 36000000,
                                    "utilization_percent": 48.056,
                                    "net_weight_g": 3100,
                                    "gross_weight_g": 3100,
                                    "gravity": {
                                        "cog_x_mm": 171.5,
                                        "cog_y_mm": 138.7,
                                        "cog_z_mm": 86.3,
                                        "offset_x_percent": 14.27,
                                        "offset_y_percent": 7.53,
                                        "cog_height_percent": 28.76,
                                        "balanced": true
                                    }
                                },
                                "validation": {
                                    "passed": true,
                                    "version": "independent-aabb-1.3"
                                },
                                "checksum": "9fdc5c755fec1f510d77baa4a8aa726475f0545da45cd171cc9e43ff640ad0d1"
                            }
                        ],
                        "unplaced": [],
                        "totals": {
                            "package_count": 1,
                            "total_outer_volume_mm3": 36000000,
                            "total_inner_volume_mm3": 36000000,
                            "packed_volume_mm3": 17300000,
                            "wasted_volume_mm3": 18700000,
                            "overall_utilization_percent": 48.056,
                            "total_net_weight_g": 3100,
                            "total_gross_weight_g": 3100,
                            "total_cost": 1.2,
                            "unplaced_quantity": 0
                        },
                        "warnings": []
                    }
                ],
                "unpackable": []
            },
            "warnings": [],
            "meta": {
                "solver_version": "packing-selection-1.0",
                "validator_version": "independent-aabb-1.3",
                "units": {
                    "dimensions": "cm",
                    "weight": "kg"
                }
            },
            "billing": {
                "unit": "job",
                "quantity": 1,
                "counted": true,
                "breakdown": {
                    "packagings": 2,
                    "item_rows": 2,
                    "units": 5
                }
            }
        }
    }
}
packing.solve →

Load planning

openLoadingSolve mutation job Beta

Place cargo in a trailer or container with centre of gravity and unload order.

mutation Run($input: Json!) {
  openLoadingSolve(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "container": {
            "preset": "custom",
            "length_cm": 600,
            "width_cm": 240,
            "height_cm": 240,
            "max_payload_kg": 24000
        },
        "items": [
            {
                "id": "PAL-1",
                "quantity": 4,
                "length_cm": 120,
                "width_cm": 100,
                "height_cm": 120,
                "weight_kg": 400
            }
        ]
    }
}
Response example
{
    "data": {
        "openLoadingSolve": {
            "mode": "sync",
            "job": null,
            "data": {
                "coordinate_system": {
                    "unit": "cm",
                    "origin": "container_inner_bottom_left_rear",
                    "x_axis": "container_length",
                    "y_axis": "container_width",
                    "z_axis": "up"
                },
                "candidates": [
                    {
                        "rank": 1,
                        "algorithm": "balanced_volume",
                        "score": 16.667,
                        "placements": [
                            {
                                "x_cm": 0,
                                "y_cm": 0,
                                "z_cm": 0,
                                "length_cm": 120,
                                "width_cm": 100,
                                "height_cm": 120,
                                "rotation_key": "LWH",
                                "stack_level": 1,
                                "container_index": 1,
                                "unit_sequence": 1,
                                "unit_key": "item-1-1",
                                "item_id": "PAL-1",
                                "name": "PAL-1",
                                "sku": null,
                                "weight_kg": 400,
                                "cargo_form": "loose",
                                "source_item_count": 1,
                                "pallet_group_key": null,
                                "metadata": {
                                    "stackable": true,
                                    "max_stack_layers": null,
                                    "bearing_level": null,
                                    "allowed_orientations": [
                                        "LWH",
                                        "WLH",
                                        "LHW"
                                    ],
                                    "stack_level": 1
                                }
                            },
                            {
                                "x_cm": 0,
                                "y_cm": 100,
                                "z_cm": 0,
                                "length_cm": 120,
                                "width_cm": 100,
                                "height_cm": 120,
                                "rotation_key": "LWH",
                                "stack_level": 1,
                                "container_index": 1,
                                "unit_sequence": 2,
                                "unit_key": "item-1-2",
                                "item_id": "PAL-1",
                                "name": "PAL-1",
                                "sku": null,
                                "weight_kg": 400,
                                "cargo_form": "loose",
                                "source_item_count": 1,
                                "pallet_group_key": null,
                                "metadata": {
                                    "stackable": true,
                                    "max_stack_layers": null,
                                    "bearing_level": null,
                                    "allowed_orientations": [
                                        "LWH",
                                        "WLH",
                                        "LHW"
                                    ],
                                    "stack_level": 1
                                }
                            },
                            {
                                "x_cm": 120,
                                "y_cm": 0,
                                "z_cm": 0,
                                "length_cm": 120,
                                "width_cm": 100,
                                "height_cm": 120,
                                "rotation_key": "LWH",
                                "stack_level": 1,
                                "container_index": 1,
                                "unit_sequence": 3,
                                "unit_key": "item-1-3",
                                "item_id": "PAL-1",
                                "name": "PAL-1",
                                "sku": null,
                                "weight_kg": 400,
                                "cargo_form": "loose",
                                "source_item_count": 1,
                                "pallet_group_key": null,
                                "metadata": {
                                    "stackable": true,
                                    "max_stack_layers": null,
                                    "bearing_level": null,
                                    "allowed_orientations": [
                                        "LWH",
                                        "WLH",
                                        "LHW"
                                    ],
                                    "stack_level": 1
                                }
                            },
                            {
                                "x_cm": 120,
                                "y_cm": 100,
                                "z_cm": 0,
                                "length_cm": 120,
                                "width_cm": 100,
                                "height_cm": 120,
                                "rotation_key": "LWH",
                                "stack_level": 1,
                                "container_index": 1,
                                "unit_sequence": 4,
                                "unit_key": "item-1-4",
                                "item_id": "PAL-1",
                                "name": "PAL-1",
                                "sku": null,
                                "weight_kg": 400,
                                "cargo_form": "loose",
                                "source_item_count": 1,
                                "pallet_group_key": null,
                                "metadata": {
                                    "stackable": true,
                                    "max_stack_layers": null,
                                    "bearing_level": null,
                                    "allowed_orientations": [
                                        "LWH",
                                        "WLH",
                                        "LHW"
                                    ],
                                    "stack_level": 1
                                }
                            }
                        ],
                        "unplaced": [],
                        "metrics": {
                            "container_count": 1,
                            "placed_quantity": 4,
                            "unplaced_quantity": 0,
                            "used_volume_m3": 5.76,
                            "container_volume_m3": 34.56,
                            "volume_utilization_percent": 16.667,
                            "used_weight_kg": 1600,
                            "max_payload_kg": 24000,
                            "payload_utilization_percent": 6.667,
                            "target_achieved": false,
                            "gravity_max_quadrant_percent": 50,
                            "gravity_imbalanced": true
                        },
                        "warnings": [
                            "TARGET_UTILIZATION_NOT_REACHED",
                            "GRAVITY_IMBALANCED"
                        ],
                        "checksum": "dfe9189f5980c2d4ca6945a426c2197d879ee85934809c80a591f4562ed9246e"
                    }
                ]
            },
            "warnings": [],
            "meta": {
                "solver_version": "php-guillotine-3d-1.2",
                "rules_version": "ocean-no-sequence-1.2",
                "candidate_limit": 3,
                "input_hash": "4c4ebf12319f01e2c9bf8c1ff12eec06f9a236c9a6bc50b01adad01d18b3ad7b",
                "units": {
                    "dimensions": "cm",
                    "weight": "kg"
                }
            },
            "billing": {
                "unit": "job",
                "quantity": 1,
                "counted": true,
                "breakdown": {
                    "item_rows": 1,
                    "units": 4,
                    "candidates": 3
                }
            }
        }
    }
}
loading.solve →

Pick batching

openPickingBatch mutation job Beta

Group warehouse orders into pick batches and receive the walk through the bins for each batch.

mutation Run($input: Json!) {
  openPickingBatch(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "orders": [
            {
                "id": "SO-1001",
                "lines": [
                    {
                        "sku": "MUG-BLUE",
                        "quantity": 2,
                        "location": "A-01-02",
                        "weight_kg": 0.4,
                        "volume_l": 0.9
                    },
                    {
                        "sku": "TEA-50",
                        "location": "C-04-01",
                        "weight_kg": 0.2,
                        "volume_l": 0.5
                    }
                ],
                "attributes": {
                    "carrier": "canada_post"
                }
            },
            {
                "id": "SO-1002",
                "lines": [
                    {
                        "sku": "TEA-50",
                        "quantity": 3,
                        "location": "C-04-01",
                        "weight_kg": 0.2,
                        "volume_l": 0.5
                    }
                ],
                "attributes": {
                    "carrier": "canada_post"
                }
            },
            {
                "id": "SO-1003",
                "lines": [
                    {
                        "sku": "KETTLE",
                        "location": "B-02-03",
                        "weight_kg": 1.6,
                        "volume_l": 6
                    },
                    {
                        "sku": "MUG-BLUE",
                        "location": "A-01-02",
                        "weight_kg": 0.4,
                        "volume_l": 0.9
                    }
                ],
                "attributes": {
                    "carrier": "ups"
                }
            },
            {
                "id": "SO-1004",
                "lines": [
                    {
                        "sku": "KETTLE",
                        "quantity": 2,
                        "location": "B-02-03",
                        "weight_kg": 1.6,
                        "volume_l": 6
                    }
                ],
                "attributes": {
                    "carrier": "ups"
                }
            },
            {
                "id": "SO-1005",
                "lines": [
                    {
                        "sku": "SPOON-SET",
                        "location": "D-01-01",
                        "weight_kg": 0.3,
                        "volume_l": 0.4
                    }
                ],
                "attributes": {
                    "carrier": "canada_post"
                }
            }
        ],
        "locations": [
            {
                "id": "A-01-02",
                "position": 4
            },
            {
                "id": "B-02-03",
                "position": 18
            },
            {
                "id": "C-04-01",
                "position": 31
            },
            {
                "id": "D-01-01",
                "position": 46
            }
        ],
        "limits": {
            "orders": 3,
            "weight_kg": 15,
            "slots": 3
        },
        "group_by": [
            "carrier"
        ],
        "single_piece_batches": false
    }
}
Response example
{
    "data": {
        "openPickingBatch": {
            "mode": "sync",
            "job": null,
            "data": {
                "batches": [
                    {
                        "number": 1,
                        "kind": "in_cart",
                        "orders": [
                            "SO-1001",
                            "SO-1002",
                            "SO-1005"
                        ],
                        "stops": [
                            {
                                "location": "A-01-02",
                                "picks": [
                                    {
                                        "order": "SO-1001",
                                        "sku": "MUG-BLUE",
                                        "quantity": 2,
                                        "slot": 1
                                    }
                                ]
                            },
                            {
                                "location": "C-04-01",
                                "picks": [
                                    {
                                        "order": "SO-1001",
                                        "sku": "TEA-50",
                                        "quantity": 1,
                                        "slot": 1
                                    },
                                    {
                                        "order": "SO-1002",
                                        "sku": "TEA-50",
                                        "quantity": 3,
                                        "slot": 2
                                    }
                                ]
                            },
                            {
                                "location": "D-01-01",
                                "picks": [
                                    {
                                        "order": "SO-1005",
                                        "sku": "SPOON-SET",
                                        "quantity": 1,
                                        "slot": 3
                                    }
                                ]
                            }
                        ],
                        "walk_meters": 92,
                        "weight_kg": 1.9,
                        "volume_l": 4.2,
                        "units": 7,
                        "skus": 3,
                        "group": {
                            "carrier": "canada_post"
                        }
                    },
                    {
                        "number": 2,
                        "kind": "in_cart",
                        "orders": [
                            "SO-1003",
                            "SO-1004"
                        ],
                        "stops": [
                            {
                                "location": "A-01-02",
                                "picks": [
                                    {
                                        "order": "SO-1003",
                                        "sku": "MUG-BLUE",
                                        "quantity": 1,
                                        "slot": 1
                                    }
                                ]
                            },
                            {
                                "location": "B-02-03",
                                "picks": [
                                    {
                                        "order": "SO-1003",
                                        "sku": "KETTLE",
                                        "quantity": 1,
                                        "slot": 1
                                    },
                                    {
                                        "order": "SO-1004",
                                        "sku": "KETTLE",
                                        "quantity": 2,
                                        "slot": 2
                                    }
                                ]
                            }
                        ],
                        "walk_meters": 36,
                        "weight_kg": 5.2,
                        "volume_l": 18.9,
                        "units": 4,
                        "skus": 2,
                        "group": {
                            "carrier": "ups"
                        }
                    }
                ],
                "unplaced": [],
                "totals": {
                    "batches": 2,
                    "orders": 5,
                    "walk_meters": 128
                }
            },
            "warnings": [],
            "meta": {
                "distances": "path",
                "solve_ms": 1,
                "units": {
                    "walk": "m",
                    "weight": "kg",
                    "volume": "L"
                }
            },
            "billing": {
                "unit": "job",
                "quantity": 1,
                "counted": true,
                "breakdown": {
                    "orders": 5,
                    "lines": 7
                }
            }
        }
    }
}
picking.batch →

Territory design

openTerritoryDesign mutation point_1k Beta

Cut weighted points into compact, non-overlapping territories that each carry a balanced share of the work.

mutation Run($input: Json!) {
  openTerritoryDesign(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "points": [
            {
                "id": "stop-1",
                "lat": 45.48886,
                "lng": -73.63285,
                "weight": 1
            },
            {
                "id": "stop-2",
                "lat": 45.45869,
                "lng": -73.56354,
                "weight": 3
            },
            {
                "id": "stop-3",
                "lat": 45.51993,
                "lng": -73.49625,
                "weight": 2
            },
            {
                "id": "stop-4",
                "lat": 45.4545,
                "lng": -73.58194,
                "weight": 1
            },
            {
                "id": "stop-5",
                "lat": 45.47888,
                "lng": -73.56081,
                "weight": 1
            },
            {
                "id": "stop-6",
                "lat": 45.54922,
                "lng": -73.63772,
                "weight": 2
            },
            {
                "id": "stop-7",
                "lat": 45.52568,
                "lng": -73.55506,
                "weight": 1
            },
            {
                "id": "stop-8",
                "lat": 45.51925,
                "lng": -73.5886,
                "weight": 2
            },
            {
                "id": "stop-9",
                "lat": 45.45559,
                "lng": -73.50548,
                "weight": 3
            },
            {
                "id": "stop-10",
                "lat": 45.5003,
                "lng": -73.56268,
                "weight": 3
            },
            {
                "id": "stop-11",
                "lat": 45.51723,
                "lng": -73.53724,
                "weight": 1
            },
            {
                "id": "stop-12",
                "lat": 45.51979,
                "lng": -73.545,
                "weight": 3
            }
        ],
        "zones": [
            {
                "id": "east",
                "anchor": {
                    "lat": 45.5,
                    "lng": -73.55
                }
            },
            {
                "id": "west",
                "anchor": {
                    "lat": 45.5,
                    "lng": -73.64
                }
            },
            {
                "id": "north",
                "share": 0.5
            }
        ],
        "tolerance_percent": 20
    }
}
Response example
{
    "data": {
        "openTerritoryDesign": {
            "mode": "sync",
            "job": null,
            "data": {
                "zones": [
                    {
                        "id": "east",
                        "center": {
                            "lat": 45.520306,
                            "lng": -73.5314
                        },
                        "anchored": true,
                        "points": 4,
                        "weight": 7,
                        "target": 9,
                        "outline": {
                            "type": "Polygon",
                            "coordinates": [
                                [
                                    [
                                        -73.55506,
                                        45.52568
                                    ],
                                    [
                                        -73.545,
                                        45.51979
                                    ],
                                    [
                                        -73.53724,
                                        45.51723
                                    ],
                                    [
                                        -73.49625,
                                        45.51993
                                    ],
                                    [
                                        -73.55506,
                                        45.52568
                                    ]
                                ]
                            ]
                        }
                    },
                    {
                        "id": "west",
                        "center": {
                            "lat": 45.506008,
                            "lng": -73.591628
                        },
                        "anchored": true,
                        "points": 6,
                        "weight": 10,
                        "target": 9,
                        "outline": {
                            "type": "Polygon",
                            "coordinates": [
                                [
                                    [
                                        -73.63772,
                                        45.54922
                                    ],
                                    [
                                        -73.63285,
                                        45.48886
                                    ],
                                    [
                                        -73.58194,
                                        45.4545
                                    ],
                                    [
                                        -73.56081,
                                        45.47888
                                    ],
                                    [
                                        -73.56268,
                                        45.5003
                                    ],
                                    [
                                        -73.5886,
                                        45.51925
                                    ],
                                    [
                                        -73.63772,
                                        45.54922
                                    ]
                                ]
                            ]
                        }
                    },
                    {
                        "id": "north",
                        "center": {
                            "lat": 45.45714,
                            "lng": -73.53451
                        },
                        "anchored": false,
                        "points": 2,
                        "weight": 6,
                        "target": 5,
                        "outline": null
                    }
                ],
                "assignment": [
                    {
                        "point": "stop-1",
                        "zone": "west"
                    },
                    {
                        "point": "stop-2",
                        "zone": "north"
                    },
                    {
                        "point": "stop-3",
                        "zone": "east"
                    },
                    {
                        "point": "stop-4",
                        "zone": "west"
                    },
                    {
                        "point": "stop-5",
                        "zone": "west"
                    },
                    {
                        "point": "stop-6",
                        "zone": "west"
                    },
                    {
                        "point": "stop-7",
                        "zone": "east"
                    },
                    {
                        "point": "stop-8",
                        "zone": "west"
                    },
                    {
                        "point": "stop-9",
                        "zone": "north"
                    },
                    {
                        "point": "stop-10",
                        "zone": "west"
                    },
                    {
                        "point": "stop-11",
                        "zone": "east"
                    },
                    {
                        "point": "stop-12",
                        "zone": "east"
                    }
                ],
                "unplaced": [],
                "summary": {
                    "zones": 3,
                    "points": 12,
                    "weight": 23,
                    "largest_deviation_percent": 22.2
                }
            },
            "warnings": [],
            "meta": {
                "distance": "straight_line",
                "rounds": 3
            },
            "billing": {
                "unit": "point_1k",
                "quantity": 12,
                "counted": true
            }
        }
    }
}
territory.design →

Network scenarios

openNetworkSiteScenario mutation job Beta

Compare your delivery days as they are with a new depot, a different fleet size or other shift hours.

mutation Run($input: Json!) {
  openNetworkSiteScenario(input: $input) {
    mode
    job
    data
    warnings
    meta
    billing { unit quantity counted breakdown }
  }
}

Variables

{
    "input": {
        "time_zone": "America/Toronto",
        "currency": "CAD",
        "days": {
            "from": "2026-11-03",
            "to": "2026-11-03"
        },
        "depots": [
            {
                "id": "MTL-West",
                "name": "Montreal West",
                "lat": 45.4706,
                "lng": -73.7408
            },
            {
                "id": "MTL-Centre",
                "name": "Montreal Centre",
                "lat": 45.4972,
                "lng": -73.5786
            }
        ],
        "orders": [
            {
                "id": "SO-2001",
                "lat": 45.49524,
                "lng": -73.59163,
                "date": "2026-11-03",
                "packages": 2
            },
            {
                "id": "SO-2002",
                "lat": 45.49518,
                "lng": -73.55029,
                "date": "2026-11-03",
                "packages": 1
            },
            {
                "id": "SO-2003",
                "lat": 45.46847,
                "lng": -73.59833,
                "date": "2026-11-03",
                "packages": 3
            },
            {
                "id": "SO-2004",
                "lat": 45.5114,
                "lng": -73.64394,
                "date": "2026-11-03",
                "packages": 2
            },
            {
                "id": "SO-2005",
                "lat": 45.48034,
                "lng": -73.65731,
                "date": "2026-11-03",
                "packages": 3
            },
            {
                "id": "SO-2006",
                "lat": 45.51345,
                "lng": -73.58664,
                "date": "2026-11-03",
                "packages": 2
            },
            {
                "id": "SO-2007",
                "lat": 45.54648,
                "lng": -73.57845,
                "date": "2026-11-03",
                "packages": 3
            },
            {
                "id": "SO-2008",
                "lat": 45.51501,
                "lng": -73.58276,
                "date": "2026-11-03",
                "packages": 3
            },
            {
                "id": "SO-2009",
                "lat": 45.45632,
                "lng": -73.66501,
                "date": "2026-11-03",
                "packages": 1
            },
            {
                "id": "SO-2010",
                "lat": 45.50996,
                "lng": -73.56106,
                "date": "2026-11-03",
                "packages": 2
            }
        ],
        "vehicles": [
            {
                "depot": "MTL-West",
                "count": 2,
                "work_from": "08:00",
                "work_to": "17:00"
            },
            {
                "depot": "MTL-Centre",
                "count": 2,
                "work_from": "08:00",
                "work_to": "17:00"
            }
        ],
        "driver_cost": {
            "per_hour": 24,
            "per_km": 0.45
        },
        "scenarios": [
            {
                "id": "east-depot",
                "name": "Depot in Anjou",
                "changes": [
                    {
                        "type": "add_depot",
                        "name": "Anjou",
                        "lat": 45.604,
                        "lng": -73.56,
                        "radius_km": 6,
                        "vehicles": 1
                    }
                ]
            },
            {
                "id": "bigger-fleet",
                "name": "Half as many vans again",
                "changes": [
                    {
                        "type": "fleet",
                        "factor_percent": 150
                    }
                ]
            }
        ]
    }
}
Response example
{
    "data": {
        "openNetworkSiteScenario": {
            "mode": "async",
            "job": {
                "id": "job_01k8zt6f2q4w8e0r2t4y6u8i0p",
                "status": "queued",
                "poll_after_ms": 1000,
                "result_url": "/v1/jobs/job_01k8zt6f2q4w8e0r2t4y6u8i0p/result"
            },
            "data": null,
            "warnings": null,
            "meta": null,
            "billing": {
                "unit": "job",
                "quantity": 1,
                "counted": true,
                "breakdown": {
                    "orders": 40,
                    "depots": 2,
                    "scenarios": 2
                }
            }
        }
    }
}
network.site_scenario →

Platform

openCapabilities query free Stable

List what this key can call, at what price, against which quota.

query Capabilities($family: String, $includeDisabled: Boolean) {
  openCapabilities(family: $family, includeDisabled: $includeDisabled) {
    key
    platform
    capabilities
    totals
  }
}

Variables

{
    "family": null,
    "includeDisabled": false
}
Response example
{
    "data": {
        "openCapabilities": {
            "key": {
                "key_id": "sr_live_7Hq2LmX9pR4sT1vW8yZ3nB6c"
            },
            "platform": {
                "graphql_url": "/v1/graphql",
                "rest_url": "/v1"
            },
            "capabilities": [
                {
                    "code": "routing.optimize",
                    "family": "routing",
                    "status": "ga",
                    "billing_unit": "node",
                    "callable": true,
                    "reason": null
                },
                {
                    "code": "routing.refine",
                    "family": "routing",
                    "status": "ga",
                    "billing_unit": "node",
                    "callable": true,
                    "reason": null
                }
            ],
            "totals": {
                "capabilities": 20,
                "enabled": 20
            }
        }
    }
}
platform.capabilities →

openGeoCoverage query free Stable

List what this key can call, at what price, against which quota.

query {
  openGeoCoverage
}

Variables

{}
Response example
{
    "data": {
        "openGeoCoverage": {
            "countries": [
                {
                    "country": "CA",
                    "forward_chain": [
                        "internal",
                        "qcaddress",
                        "bcaddress",
                        "geolocator",
                        "google"
                    ],
                    "reverse_chain": [
                        "internal",
                        "bcaddress",
                        "google"
                    ],
                    "postcode_pattern": "/^[A-Z][0-9][A-Z][- ]?[0-9][A-Z][0-9]$/i"
                },
                {
                    "country": "US",
                    "forward_chain": [
                        "internal",
                        "census",
                        "google"
                    ],
                    "reverse_chain": [
                        "internal",
                        "google"
                    ],
                    "postcode_pattern": "/^[0-9]{5}([- ]?[0-9]{4})?$/"
                }
            ],
            "providers": [
                {
                    "code": "internal",
                    "name": "SuperRoute Geocoding",
                    "capabilities": [
                        "forward",
                        "forward_text",
                        "reverse"
                    ],
                    "available": true
                },
                {
                    "code": "google",
                    "name": "Google Maps",
                    "capabilities": [
                        "forward",
                        "forward_text",
                        "reverse",
                        "places",
                        "forward_within_postcode"
                    ],
                    "available": true
                }
            ]
        }
    }
}
platform.capabilities →

openHealth query free Stable

Report platform liveness and engine reachability.

query {
  openHealth
}

Variables

{}
Response example
{
    "data": {
        "openHealth": {
            "status": "ok",
            "service": "Superroute Open Platform",
            "version": "9.11.57",
            "time": "2026-10-23T09:27:49-04:00",
            "engines": {
                "sroute2": {
                    "configured": true,
                    "status": "healthy",
                    "version": "1.6.1"
                },
                "sroute2t": {
                    "configured": false,
                    "status": "unknown",
                    "version": null
                },
                "sroute3": {
                    "configured": false,
                    "status": "unknown",
                    "version": null
                }
            }
        }
    }
}
platform.health →

openJob query free Stable

Track a long-running solve and collect its result.

query Job($id: String!) {
  openJob(id: $id) {
    id
    status
    capability
    progress
    stage
    createdAt
    startedAt
    finishedAt
    resultUrl
    resultExpiresAt
    error
  }
}

Variables

{
    "id": "job_01k8zq4a6c8e0g2j4l6n8q0s2u"
}
Response example
{
    "data": {
        "openJob": {
            "id": "job_01k8zq4a6c8e0g2j4l6n8q0s2u",
            "status": "succeeded",
            "capability": "routing.optimize",
            "progress": 100,
            "stage": "done",
            "createdAt": "2026-10-23T09:27:40-04:00",
            "startedAt": "2026-10-23T09:27:40-04:00",
            "finishedAt": "2026-10-23T09:27:40-04:00",
            "resultUrl": "/v1/jobs/job_01k8zq4a6c8e0g2j4l6n8q0s2u/result",
            "resultExpiresAt": "2026-10-24T09:27:40-04:00",
            "error": null
        }
    }
}
platform.jobs →

openJobCancel mutation free Stable

Track a long-running solve and collect its result.

mutation Cancel($id: String!) {
  openJobCancel(id: $id) {
    id
    status
    capability
    progress
    stage
    createdAt
    startedAt
    finishedAt
    resultUrl
    resultExpiresAt
    error
  }
}

Variables

{
    "id": "job_01k8zq4a6c8e0g2j4l6n8q0s2u"
}
Response example
{
    "data": {
        "openJobCancel": {
            "id": "job_01k8zq4a6c8e0g2j4l6n8q0s2u",
            "status": "succeeded",
            "capability": "routing.optimize",
            "progress": 100,
            "stage": "done",
            "createdAt": "2026-10-23T09:27:40-04:00",
            "startedAt": "2026-10-23T09:27:40-04:00",
            "finishedAt": "2026-10-23T09:27:40-04:00",
            "resultUrl": "/v1/jobs/job_01k8zq4a6c8e0g2j4l6n8q0s2u/result",
            "resultExpiresAt": "2026-10-24T09:27:40-04:00",
            "error": null
        }
    }
}
platform.jobs →

openJobDeliveries query free Stable

Track a long-running solve and collect its result.

query Deliveries($id: String!) {
  openJobDeliveries(id: $id)
}

Variables

{
    "id": "job_01k8zq4a6c8e0g2j4l6n8q0s2u"
}
Response example
{
    "data": {
        "openJobDeliveries": {
            "deliveries": [
                {
                    "delivery_id": "dlv_01k8zq4h2k4m6p8r0t2w4y6a8c",
                    "event": "job.succeeded",
                    "status": "delivered",
                    "endpoint_host": "hooks.example.com",
                    "attempt_count": 1,
                    "http_status": 200,
                    "response_time_ms": 0,
                    "error_code": null,
                    "error_message": null,
                    "last_attempt_at": "2026-10-23T09:27:49-04:00",
                    "next_attempt_at": null,
                    "delivered_at": "2026-10-23T09:27:49-04:00"
                }
            ]
        }
    }
}
platform.jobs →

openJobDeliveryReplay mutation free Stable

Track a long-running solve and collect its result.

mutation Replay($jobId: String!, $deliveryId: String!) {
  openJobDeliveryReplay(jobId: $jobId, deliveryId: $deliveryId)
}

Variables

{
    "jobId": "job_01k8zq4a6c8e0g2j4l6n8q0s2u",
    "deliveryId": "dlv_01k8zq4h2k4m6p8r0t2w4y6a8c"
}
Response example
{
    "data": {
        "openJobDeliveryReplay": {
            "delivery_id": "dlv_01k8zq4h2k4m6p8r0t2w4y6a8c",
            "status": "pending"
        }
    }
}
platform.jobs →

openJobResult query free Stable

Track a long-running solve and collect its result.

query JobResult($id: String!) {
  openJobResult(id: $id)
}

Variables

{
    "id": "job_01k8zq4a6c8e0g2j4l6n8q0s2u"
}
Response example
{
    "data": {
        "openJobResult": {
            "data": {
                "routes": [
                    {
                        "vehicle_id": "van-2",
                        "stops": [
                            {
                                "type": "start",
                                "arrival": "2026-11-02T08:31:07-05:00",
                                "arrival_epoch": 1793626267,
                                "distance_meters": 0,
                                "duration_seconds": 0,
                                "load": [
                                    6
                                ]
                            },
                            {
                                "type": "job",
                                "arrival": "2026-11-02T08:35:11-05:00",
                                "arrival_epoch": 1793626511,
                                "distance_meters": 1839,
                                "duration_seconds": 244,
                                "leg_distance_meters": 1839,
                                "leg_duration_seconds": 244,
                                "id": "order-1001",
                                "load": [
                                    4
                                ]
                            },
                            {
                                "type": "job",
                                "arrival": "2026-11-02T08:47:56-05:00",
                                "arrival_epoch": 1793627276,
                                "distance_meters": 5338,
                                "duration_seconds": 709,
                                "leg_distance_meters": 3499,
                                "leg_duration_seconds": 465,
                                "id": "order-1003",
                                "load": [
                                    3
                                ]
                            },
                            {
                                "type": "job",
                                "arrival": "2026-11-02T09:00:00-05:00",
                                "arrival_epoch": 1793628000,
                                "distance_meters": 9220,
                                "duration_seconds": 1193,
                                "leg_distance_meters": 3882,
                                "leg_duration_seconds": 484,
                                "id": "order-1002",
                                "load": [
                                    0
                                ]
                            },
                            {
                                "type": "end",
                                "arrival": "2026-11-02T09:08:17-05:00",
                                "arrival_epoch": 1793628497,
                                "distance_meters": 10687,
                                "duration_seconds": 1390,
                                "leg_distance_meters": 1467,
                                "leg_duration_seconds": 197,
                                "load": [
                                    0
                                ]
                            }
                        ],
                        "stop_count": 5,
                        "task_count": 3,
                        "distance_meters": 10687,
                        "duration_seconds": 1390,
                        "service_seconds": 840,
                        "waiting_seconds": 0,
                        "geometry": null
                    }
                ],
                "unassigned": [],
                "summary": {
                    "routes": 1,
                    "assigned": 3,
                    "unassigned": 0,
                    "distance_meters": 10687,
                    "duration_seconds": 1390
                }
            },
            "warnings": [],
            "meta": {
                "engine": "sroute2",
                "engine_version": "1.6.1",
                "solve_id": "e363b370-4113-44a0-8630-1579e1fbc799",
                "capacity_dimensions": [
                    "0"
                ]
            },
            "billing": {
                "unit": "node",
                "quantity": 5,
                "counted": false,
                "breakdown": {
                    "nodes": 5,
                    "jobs": 3,
                    "shipments": 0,
                    "shipment_nodes": 0,
                    "vehicles": 2,
                    "vehicle_nodes": 2
                }
            }
        }
    }
}
platform.jobs →

openJobs query free Stable

Track a long-running solve and collect its result.

query Jobs($limit: Int) {
  openJobs(limit: $limit) {
      id
      status
      capability
      progress
      stage
      createdAt
      startedAt
      finishedAt
      resultUrl
      resultExpiresAt
      error
  }
}

Variables

{
    "limit": 20
}
Response example
{
    "data": {
        "openJobs": [
            {
                "id": "job_01k8zq4a6c8e0g2j4l6n8q0s2u",
                "status": "succeeded",
                "capability": "routing.optimize",
                "progress": 100,
                "stage": "done",
                "createdAt": "2026-10-23T09:27:40-04:00",
                "startedAt": "2026-10-23T09:27:40-04:00",
                "finishedAt": "2026-10-23T09:27:40-04:00",
                "resultUrl": "/v1/jobs/job_01k8zq4a6c8e0g2j4l6n8q0s2u/result",
                "resultExpiresAt": "2026-10-24T09:27:40-04:00",
                "error": null
            }
        ]
    }
}
platform.jobs →

openPlanMatrixClose mutation free Stable

Upload a fleet, depot or plan once and reference it by id.

mutation Run($matrix: String!) {
  openPlanMatrixClose(matrix: $matrix) {
    mode
    data
    billing { unit quantity counted }
  }
}

Variables

{
    "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910"
}
Response example
{
    "data": {
        "openPlanMatrixClose": {
            "mode": "sync",
            "data": {
                "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910",
                "closed": true
            },
            "billing": {
                "unit": "free",
                "quantity": 0,
                "counted": false
            }
        }
    }
}
platform.resources →

openPlanMatrixOpen mutation free Stable

Upload a fleet, depot or plan once and reference it by id.

mutation Run($input: Json) {
  openPlanMatrixOpen(input: $input) {
    mode
    data
    meta
    billing { unit quantity counted }
  }
}

Variables

{
    "input": {
        "region": "NA",
        "profile": "car",
        "points": [
            {
                "lat": 45.5017,
                "lng": -73.5673
            },
            {
                "lat": 45.5088,
                "lng": -73.554
            },
            {
                "lat": 45.4972,
                "lng": -73.5786
            }
        ]
    }
}
Response example
{
    "data": {
        "openPlanMatrixOpen": {
            "mode": "sync",
            "data": {
                "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910",
                "expires_at": "2026-10-23T14:30:00Z",
                "node": "tile2"
            },
            "meta": {
                "region": "NA",
                "profile": "car"
            },
            "billing": {
                "unit": "free",
                "quantity": 0,
                "counted": false
            }
        }
    }
}
platform.resources →

openPlanMatrixPoints mutation free Stable

Upload a fleet, depot or plan once and reference it by id.

mutation Run($matrix: String!, $input: Json) {
  openPlanMatrixPoints(matrix: $matrix, input: $input) {
    mode
    data
    billing { unit quantity counted }
  }
}

Variables

{
    "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910",
    "input": {
        "points": [
            {
                "lat": 45.5231,
                "lng": -73.5817
            }
        ],
        "wait_ms": 1000
    }
}
Response example
{
    "data": {
        "openPlanMatrixPoints": {
            "mode": "sync",
            "data": {
                "matrix": "tile2.3f0c9a5e7b1d4c2a9e8f6d5c4b3a2910",
                "queued": 1,
                "ready": true
            },
            "billing": {
                "unit": "free",
                "quantity": 0,
                "counted": false
            }
        }
    }
}
platform.resources →

openRoutingPresets query free Stable

List what this key can call, at what price, against which quota.

query Presets($engine: String) {
  openRoutingPresets(engine: $engine)
}

Variables

{
    "engine": "sroute2"
}
Response example
{
    "data": {
        "openRoutingPresets": {
            "presets": {
                "none": {
                    "strategies": [],
                    "weights": [],
                    "title": "No balance",
                    "description": "Cheapest plan; drivers may be uneven",
                    "category": "balance",
                    "hidden": false,
                    "alias_of": null,
                    "new": false
                },
                "min_change": {
                    "strategies": [
                        "orders"
                    ],
                    "weights": {
                        "orders": 0.3
                    },
                    "title": "Minimal change",
                    "description": "Touch as little as possible of the current plan",
                    "category": "execution",
                    "hidden": false,
                    "alias_of": null,
                    "new": false
                },
                "balanced": {
                    "strategies": [
                        "time",
                        "distance"
                    ],
                    "weights": {
                        "time": 0.5,
                        "distance": 0.5
                    },
                    "title": "Balanced",
                    "description": "",
                    "category": "balance",
                    "hidden": true,
                    "alias_of": "time",
                    "new": false
                }
            },
            "engine": "sroute2",
            "engines": [
                "sroute",
                "sroute2"
            ],
            "default_engine": "sroute2",
            "priorities": [
                {
                    "name": "hold",
                    "value": 10
                },
                {
                    "name": "flexible",
                    "value": 20
                },
                {
                    "name": "economy",
                    "value": 30
                },
                {
                    "name": "standard",
                    "value": 40
                },
                {
                    "name": "express",
                    "value": 50
                },
                {
                    "name": "rush",
                    "value": 60
                },
                {
                    "name": "emergency",
                    "value": 70
                },
                {
                    "name": "due",
                    "value": 80
                },
                {
                    "name": "overdue",
                    "value": 90
                }
            ],
            "priority_rule": "Priority is 0-100. When the problem is infeasible, lower-priority tasks are dropped to `unassigned` first. These named levels are the same ladder the Superroute platform plans with.",
            "routing_rules": [
                {
                    "rule": "max_ride",
                    "fields": [
                        "shipments.*.max_ride_seconds",
                        "constraints.max_ride_seconds"
                    ],
                    "engines": {
                        "sroute": {
                            "status": "unsupported"
                        },
                        "sroute2": {
                            "status": "unsupported"
                        },
                        "sroute2t": {
                            "status": "native",
                            "min_version": "1.0.19"
                        },
                        "sroute3": {
                            "status": "native",
                            "min_version": "1.0.0"
                        }
                    }
                },
                {
                    "rule": "latest_departure",
                    "fields": [
                        "vehicles.*.latest_departure_at"
                    ],
                    "engines": {
                        "sroute": {
                            "status": "unsupported"
                        },
                        "sroute2": {
                            "status": "unsupported"
                        },
                        "sroute2t": {
                            "status": "native",
                            "min_version": "1.0.19"
                        },
                        "sroute3": {
                            "status": "native",
                            "min_version": "1.0.0"
                        }
                    }
                }
            ],
            "hours": {
                "balance": "hours",
                "field": "constraints.balance_tolerance",
                "unit": "percent",
                "min": 1,
                "max": 100,
                "default": 15,
                "engines": [
                    "sroute",
                    "sroute2"
                ],
                "operations": [
                    "routing.optimize"
                ],
                "measured_in": "seconds of working time per vehicle (driving including the return to an end point, setup, service, waiting), read from the solved plan",
                "rule": "Solves, measures every vehicle's working time, and while a vehicle sits above the band closes every vehicle's working day at the band's top (then a step tighter), hands the tasks the busiest give up to the lightest by their measured time per task, and re-solves, at most twice. A re-solve is kept only when it evens the day out without leaving more work unassigned. Reported back in meta.balance."
            },
            "zone_hours": {
                "balance": "zone_hours",
                "field": "constraints.balance_tolerance",
                "unit": "percent",
                "min": 1,
                "max": 100,
                "default": 15,
                "engines": [
                    "sroute",
                    "sroute2"
                ],
                "operations": [
                    "routing.optimize"
                ],
                "measured_in": "seconds of working time per vehicle (driving including the return to an end point, setup, service, waiting), read from the solved plan; the zones are cut on each task's setup + service plus a travel estimate",
                "rule": "Cuts the tasks into one compact, non-overlapping zone per vehicle on estimated time — a slow area gets a smaller zone — pins every task to its zone's vehicle, solves, then while a vehicle's measured working time sits outside the band scales the zone targets by expected / measured, re-cuts and re-solves, at most twice. Routes never cross; a task its zone's vehicle cannot fit is offered once to the others. Reported back in meta.balance."
            },
            "zone": {
                "balance": "zone",
                "field": "constraints.balance_tolerance",
                "unit": "percent",
                "min": 1,
                "max": 100,
                "default": 15,
                "engines": [
                    "sroute",
                    "sroute2"
                ],
                "operations": [
                    "routing.optimize"
                ],
                "measured_in": "tasks (a shipment counts as two: its pickup and its delivery)",
                "rule": "Cuts the tasks into one compact, non-overlapping zone per vehicle, each holding that vehicle's balanced share within the tolerance, and lets the solver sequence inside each zone — routes never cross. A task its zone's vehicle cannot fit is offered once to the others. Reported back in meta.balance."
            },
            "tolerance": {
                "balance": "tolerance",
                "field": "constraints.balance_tolerance",
                "unit": "percent",
                "min": 1,
                "max": 100,
                "default": 15,
                "engines": [
                    "sroute",
                    "sroute2"
                ],
                "operations": [
                    "routing.optimize"
                ],
                "measured_in": "tasks (a shipment counts as two: its pickup and its delivery)",
                "rule": "Caps every vehicle at the balanced share plus the tolerance, then re-solves under a lower ceiling if a vehicle still came out below the band. Route quality stays close to no balancing at all while the gap between vehicles stays inside the tolerance. Reported back in meta.balance."
            }
        }
    }
}
platform.capabilities →

openWebhookVerify mutation free Stable

Track a long-running solve and collect its result.

mutation Verify($url: String!, $secret: String) {
  openWebhookVerify(url: $url, secret: $secret)
}

Variables

{
    "url": "https://hooks.example.com/superroute",
    "secret": "whsec_0123456789abcdef"
}
Response example
{
    "data": {
        "openWebhookVerify": {
            "verified": true,
            "reason": null
        }
    }
}
platform.jobs →