Documentation Index
Fetch the complete documentation index at: https://docs.solvice.io/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The V3 Routing API is a ground-up rewrite with a new, faster solver engine replacing Timefold. The V2 endpoint (/v2/vrp/sync/solve) remains available for backwards compatibility — internally it maps to V3 and back.
Endpoint change
| V2 (OnRoute) | V3 (Routing) | |
|---|---|---|
| URL | POST /v2/vrp/sync/solve | POST /v3/routing/solve |
| Auth | Authorization: API_KEY | Authorization: API_KEY |
| Coordinate format | {"latitude": 50.85, "longitude": 4.35} | [4.35, 50.85] (GeoJSON: lon, lat) |
| Time format | ISO 8601 strings | ISO 8601 strings |
| Field naming | camelCase | snake_case |
Request mapping
Vehicles (Resources → Vehicles)
name→idshifts[].start/end(locations inside shift) → top-levelstart/end(shifts can override per-shift)- Coordinates:
{latitude, longitude}object →[longitude, latitude]array (GeoJSON order) tags→skills(note: V2 tags are not automatically mapped when using the V2 compat endpoint)- New:
max_distance,max_durationfor vehicle range constraints
Jobs
name→idlocation:{latitude, longitude}→[longitude, latitude]duration→service_durationload→demandwindows→time_windows(nohardflag — all time windows are hard in V3)- New:
skills(required vehicle capabilities),committed_vehicle(lock job to a specific vehicle)
Relations
Relations map directly — sametype and jobs fields in both versions.
resource field (pin relation to a specific vehicle) is not yet mapped in V3.
Options
solvingTime(seconds) →time_limit_ms(milliseconds)- New:
seedfor reproducible results - New:
minimize— choose"time"or"distance"as primary objective - New:
matrix— supply custom distance/duration matrices (bypasses Solvice Maps) - New:
job_proximity_radius_m,job_proximity_weight— soft proximity constraint
Response mapping
trips→routes,resource→vehicle_idvisits→stops(job stops only, no depot entries)- V3 stops are richer:
job_id,arrival,departure,wait_time,travel_time,service_time,load_after - V3 routes include:
shift_from/shift_to,load,n_stops,start_time/end_time unserved(string list) →unassigned(objects withjob_idandreason)- New
summaryblock with solve stats (elapsed_ms,iterations,vehicles_used) - Coordinates in response are
[longitude, latitude]arrays
V2 features not mapped via compat endpoint
When using the V2 endpoint (/v2/vrp/sync/solve), the following V2 fields are silently dropped during conversion:
resources[].tags— V2 skill tags are not forwarded to the V3 solverrelations[].resource— pinning a relation to a specific vehicle is ignoredwindows[].hard— soft time window flag has no V3 equivalent yet- Per-visit
serviceTime,travelTime,distance— not populated in the V2 response
Feature parity
V3 currently implements a subset of V2’s features. The rest are on the roadmap.| Feature | V2 | V3 | Notes |
|---|---|---|---|
| Capacity (single dimension) | ✅ | ✅ | |
| Time windows (hard, single) | ✅ | ✅ | |
| Skills / tags | ✅ | ✅ | |
| Sequence / precedence | ✅ | ✅ | |
| First-job constraint | ✅ | ✅ | |
| Vehicle range (max distance/duration) | ✅ | ✅ | |
| Committed vehicle | ✅ | ✅ | |
| Custom distance matrix | ✅ | ✅ | |
| Auto distance matrix (Solvice Maps) | ✅ | ✅ | |
| Multi-dimensional capacity | ✅ | 🔜 | End Q2 2026 |
| Multiple time windows per job | ✅ | 🔜 | End Q2 2026 |
| Driver breaks | ✅ | 🔜 | End Q2 2026 |
| Job priority | ✅ | 🔜 | End Q2 2026 |
| Soft time windows | ✅ | 🔜 | End Q2 2026 |
| Skill levels / proficiency | ✅ | 🔜 | End Q2 2026 |
| Job relations (same route, etc.) | ✅ | 🔜 | End Q2 2026 |
| Break management | ✅ | 🔜 | End Q2 2026 |
| Tag ranking | ✅ | 🔜 | End Q2 2026 |
| Inherited location | ✅ | 🔜 | End Q2 2026 |
| Pickup & delivery pairing | ✅ | 🔜 | End Q3 2026 |
| Workload balancing / fairness | ✅ | 🔜 | End Q3 2026 |
| Rules engine | ✅ | 🔜 | End Q3 2026 |
| Multi-day planning | ✅ | 🔜 | End Q3 2026 |
| Real-time re-optimization | — | 🔜 | End Q3 2026 |
| SSE streaming progress | — | ✅ | New in V3 |
| Job proximity constraint | — | ✅ | New in V3 |
V3 is under active development. The V2 endpoint (
/v2/vrp/sync/solve) remains available and internally maps to the V3 solver — you get V3’s performance with the V2 API contract.