Ruttoptimering
Ruttoptimering via API, på Trafikverkets vägnät
Ni skickar fordon och stopp, och API:et svarar vilket fordon som tar vilka stopp, i vilken ordning och när, med varje sträcka tidsatt på Trafikverkets vägnät NVDB.
Operationerna
Ruttoptimering
POST /v1/optimizeFördelar stopp och sändningar på fordonen inom kapacitet och tidsfönster. Ett stopp som inget fordon kan ta står i unassigned, med skälet.
Ruttkontroll
POST /v1/optimize/checkTidsätter era egna rutter, i er ordning, och svarar med det som bryter mot kapacitet, tidsfönster och övriga villkor.
Jobb
POST /v1/jobsSamma indata som jobb, för en plan större än ett anrop tar. Jobb ingår från Bas.
Ett anrop och dess svar
Två bilar med plats för 30 kärl var, och tio stopp som hämtar mellan 4 och 8 kärl. Målet är kortast total tid.
POST https://api.kartpunkt.se/v1/optimize
Authorization: Bearer $KARTPUNKT_API_KEY
Content-Type: application/json
{
"vehicles": [
{
"id": "bil-1",
"start": {"lat": 55.929161, "lon": 13.560304},
"end": {"lat": 55.929161, "lon": 13.560304},
"capacity": {"karl": 30}
},
{
"id": "bil-2",
"start": {"lat": 55.929161, "lon": 13.560304},
"end": {"lat": 55.929161, "lon": 13.560304},
"capacity": {"karl": 30}
}
],
"stops": [
{
"id": "h01",
"at": {"lat": 55.936634, "lon": 13.551388},
"pickup": {"karl": 8},
"service_s": 240
},
{
"id": "h02",
"at": {"lat": 55.941993, "lon": 13.546969},
"pickup": {"karl": 6},
"service_s": 180
}
// … 8 stopp till
],
"objective": "duration",
"profile": "car_fastest",
"geometry": "geojson"
}Svaret från api.kartpunkt.se, inspelat 2026-10-25. Rader som börjar med // … är utelämnade.
{
"routes": [
{
"vehicle_id": "bil-1",
"visits": [
{
"kind": "start",
"id": null,
"snap_m": 0.03,
"street_matched": null,
"arrival": null,
"departure": null,
"arrival_s": 0,
"waiting_s": 0,
"service_s": 0,
"load": {"karl": 0},
"distance_m": 0,
"duration_s": 0
},
{
"kind": "stop",
"id": "h04",
"snap_m": 0.06,
"street_matched": null,
"arrival": null,
"departure": null,
"arrival_s": 269,
"waiting_s": 0,
"service_s": 150,
"load": {"karl": 5},
"distance_m": 2991.3,
"duration_s": 268.7
}
// … 5 besök till
],
"distance_m": 9958.8,
"duration_s": 1729,
"waiting_s": 0,
"service_s": 870
// … legs, varje sträcka med sin linje
}
// … 1 rutt till
],
"unassigned": [],
"totals": {
"vehicles_used": 2,
"distance_m": 17532.8,
"duration_s": 3178,
"waiting_s": 0,
"service_s": 1680
},
"provenance": {
"synthetic": false,
"network": {
"id": "snap_01m5jtxeacfk49vqky0fy1myje",
"dataset": "nvdb",
"source_date": "2026-10-13",
"built_at": "2026-10-22T22:15:11.949Z",
"graph": "snap_01m5k1bmzgfk49vt8z6wche2jr",
"profile": "car_fastest",
"experimental": false
},
"sources": [
{
"id": "nvdb",
"name": "Trafikverket, NVDB",
"licence": "CC0-1.0",
"attribution": "Vägdata från NVDB, Trafikverket, CC0 1.0",
"url": "https://creativecommons.org/publicdomain/zero/1.0/",
"updated": "2026-10-13"
}
]
}
}Vad svaret innehåller
Varje rutt har sina besök med ankomst, väntan, last och sträcka från förra besöket, och totals summerar planen. Ett stopp som inget fordon kan ta står i unassigned med ett skäl och vad ni kan ändra; en plan som inte går ihop besvaras alltså, den avvisas inte.
provenance anger nätversionen planen räknades på, NVDB:s leverans och källhänvisningen. Svaret är dokumenterat och daterat med nätversion.
Pröva en plan ni redan har
Samma tio stopp i listans ordning, fem per bil, gick till /v1/optimize/check. Svaret blev "feasible": false: bil-1 lastar 3 kärl mer än det får plats vid stopp h05 (plan_capacity). Ruttkontrollen räknar på samma vägnät och i samma fält som ruttoptimeringen, så de två planerna går att jämföra fält för fält.
Hur stor en plan kan vara
En plan direkt till /v1/optimize svarar i samma anrop. En större plan går som jobb, upp till ett par hundra hämtpunkter i ett jobb. Gränserna står under Gränser på sidan för utvecklare.
Prova och kom igång
- Prova ruttoptimering och ruttkontroll på kartan, utan nyckel
- Skapa en gratis testnyckel. Den räknar på NVDB:s riktiga vägnät, med testadresser i samma format som livedata.
- Fälten och felkoderna står i API-referensen, och integrationen för en kodagent på sidan för utvecklare. Vad planerna kostar står under Priser.