Plan routes
POST /v1/routes/solve
Optimises the given jobs across the fleets and waits for the result. The response is a
planner request whose solution holds the planned routes and any unassigned jobs.
Routes are not saved by this call — save the ones you want with POST /v1/routes.
For large problems use POST /v1/routes/solve/async instead.
Authentication
Send a token issued in the Zoopit dashboard as Authorization: Bearer <token>.
Request body
| Field | Type | Required |
|---|---|---|
owner | string | yes |
jobs | array of object | yes |
initial_solution | object | |
continued_from_parent | boolean | |
fleets | array of object | yes |
with_traffic_eta | boolean | |
auto_save_routes | boolean | |
objectives | array of Objective | |
parent_planner_request_id | null or string | |
main_plan_id | null or string | |
routes_conditions | array of object or null | |
sort_type | "delivery" | "pickup" or null | |
sort_by | null or string | |
ignore_sorting | null or boolean | |
ignore_skills | null or boolean | |
ignore_capacity | null or boolean | |
ignore_driver_shifts | null or boolean | |
ignore_pickup_window | null or boolean | |
ignore_delivery_window | null or boolean | |
sequence_mode | "strict" or null | |
tags | array of string | |
edges | array of object | |
relations | array of object | |
solve_config | object | |
drivers | array of object | |
driving_rules | object |
Responses
200
resource: PlannerRequest
| Field | Type | Required |
|---|---|---|
attributes | object | yes |
error | object | |
id | string | yes |
created_at | string | yes |
modified_at | null or string | yes |
deleted_at | null or string | yes |
created_by | string | yes |
modified_by | null or string | yes |
deleted_by | null or string | yes |
owners | array of string | yes |
tags | array of string | yes |
request_id | string | yes |
requested_solver_name | string | yes |
solver_id | string | |
solver_request_id | string | yes |
input_stats | object | yes |
output_stats | object | |
solution | object | |
problem | object | |
job_status | JobStatus | yes |
with_traffic_eta | null or boolean | |
auto_save_routes | null or boolean | |
objectives | array of Objective or null | yes |
parent_planner_request_id | null or string | yes |
main_plan_id | null or string | yes |
routes_conditions | array of object or null | yes |
sort_type | "delivery" | "pickup" or null | yes |
sort_by | null or string | yes |
ignore_sorting | null or boolean | yes |
ignore_skills | null or boolean | yes |
ignore_capacity | null or boolean | yes |
ignore_driver_shifts | null or boolean | yes |
ignore_pickup_window | null or boolean | yes |
ignore_delivery_window | null or boolean | yes |
edges | array of object or null | yes |
initial_solution | object or null | yes |
continued_from_parent | boolean | yes |
relations | array of object | |
jobs | array of object or null | yes |
fleets | array of object or null | yes |
Example
curl -X POST 'https://routes-api.cloud.zoopit.no/v1/routes/solve'
-H 'Authorization: Bearer <token>'
-H 'Content-Type: application/json'
-d '{ ... }'
Try it in the interactive Routes API reference.
Field descriptions, guides and worked examples are in the full reference, available to customers in the Zoopit dashboard under Accounts → Developer.