Skip to main content

Overview

The V3 Routing API is a high-performance vehicle routing solver. It replaces the V2 VRP API with a faster engine, cleaner request format, and real-time solve progress via SSE.

Base URL

https://api.solvice.io/v3/routing

Your first solve

1

Get your API key

Sign in to the Solvice Dashboard and copy your API key from Settings → API Keys.
2

Send a solve request

curl -X POST https://api.solvice.io/v3/routing/solve \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "vehicles": [
      {
        "id": "truck-1",
        "start": [4.3517, 50.8503],
        "end": [4.3517, 50.8503],
        "shifts": [
          {
            "from": "2026-04-01T08:00:00+02:00",
            "to": "2026-04-01T17:00:00+02:00"
          }
        ],
        "capacity": [100]
      }
    ],
    "jobs": [
      {
        "id": "delivery-1",
        "location": [4.7005, 50.8798],
        "demand": [10],
        "service_duration": 300,
        "time_windows": [
          {
            "from": "2026-04-01T09:00:00+02:00",
            "to": "2026-04-01T12:00:00+02:00"
          }
        ]
      },
      {
        "id": "delivery-2",
        "location": [3.7303, 51.05],
        "demand": [20],
        "service_duration": 600,
        "time_windows": [
          {
            "from": "2026-04-01T10:00:00+02:00",
            "to": "2026-04-01T15:00:00+02:00"
          }
        ]
      }
    ]
  }'
3

Read the response

The response includes optimized routes with arrival times, distances, and any unassigned jobs:
{
  "summary": {
    "status": "completed",
    "total_distance": 142000,
    "total_duration": 7200,
    "vehicles_used": 1,
    "jobs_assigned": 2,
    "jobs_unassigned": 0,
    "elapsed_ms": 850,
    "iterations": 1200
  },
  "routes": [
    {
      "vehicle_id": "truck-1",
      "shift_from": "2026-04-01T08:00:00+02:00",
      "shift_to": "2026-04-01T17:00:00+02:00",
      "stops": [
        {
          "job_id": "delivery-2",
          "location": [3.7303, 51.05],
          "arrival": "2026-04-01T08:40:00+02:00",
          "departure": "2026-04-01T08:50:00+02:00",
          "wait_time": 0,
          "travel_time": 2400,
          "service_time": 600,
          "load_after": [20]
        },
        {
          "job_id": "delivery-1",
          "location": [4.7005, 50.8798],
          "arrival": "2026-04-01T09:50:00+02:00",
          "departure": "2026-04-01T09:55:00+02:00",
          "wait_time": 0,
          "travel_time": 3600,
          "service_time": 300,
          "load_after": [30]
        }
      ],
      "distance": 142000,
      "duration": 7200,
      "load": 30,
      "n_stops": 2,
      "start_time": "2026-04-01T08:00:00+02:00",
      "end_time": "2026-04-01T10:30:00+02:00"
    }
  ],
  "unassigned": []
}

What’s new in V3

FeatureV2V3
Solver engineTimefoldNext-gen Solvice engine
Distance matricesManual or autoAuto via Solvice Maps
Real-time progressPollingSSE streaming
Response formatNested trips/visitsFlat routes/stops
Endpoint/v2/vrp/sync/solve/v3/routing/solve

Next steps