{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"JustRouting Docs","colors":{"primary":"#4f46e5","light":"#6366f1","dark":"#818cf8"},"logo":{"light":"https://mintcdn.com/justrouting/AKioJ6pC728iBF7k/images/logo-wordmark.png?fit=max\u0026auto=format\u0026n=AKioJ6pC728iBF7k\u0026q=85\u0026s=20156507a8a2c45eb7bbb623ce05a6e1","dark":"https://mintcdn.com/justrouting/AKioJ6pC728iBF7k/images/logo-wordmark.png?fit=max\u0026auto=format\u0026n=AKioJ6pC728iBF7k\u0026q=85\u0026s=20156507a8a2c45eb7bbb623ce05a6e1"},"favicon":"https://mintcdn.com/justrouting/AKioJ6pC728iBF7k/images/logo.png?fit=max\u0026auto=format\u0026n=AKioJ6pC728iBF7k\u0026q=85\u0026s=cc18ebaf6812e97909a3a975dfd8f10e","styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"justrouting","hasAudioNarration":false,"actualSubdomain":"justrouting","customDomains":["docs.justrouting.tech"],"gitSource":{"type":"github","owner":"justrouting","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6adc4bc6bf96c2a06f261947","collectionId":"05103065-a0e2-4d9e-8974-0a571c712706","liveDeploymentHistoryId":"6adc4bc6bf96c2a06f261947","schemaVersion":"v3"},"entitlements":{},"buildId":"6adc4bc6bf96c2a06f261947","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"OpenAPI","count":8},{"language":"default","tag":"API Reference","count":7},{"language":"default","tag":"Getting Started","count":6},{"language":"default","tag":"MCP","count":5},{"language":"default","tag":"SDK","count":4},{"language":"default","tag":"Guides","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".sidebar-group-header{font-size:1rem!important;color:#2563eb!important}"}],"page":{"pagePath":"api-reference/optimize/solve-a-vehicle-routing-problem","slug":"/api-reference/optimize/solve-a-vehicle-routing-problem","pageMetadata":{"title":"optimize","description":"Solve a vehicle routing problem","deprecated":null,"version":null,"sidebarTitle":"optimize","openapi":"/openapi/openapi.json post /optimize","href":"/api-reference/optimize/solve-a-vehicle-routing-problem","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Solve a vehicle routing problem\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"optimize","description":"Solve a vehicle routing problem","deprecated":null,"version":null,"sidebarTitle":"optimize","openapi":"/openapi/openapi.json post /optimize","href":"/api-reference/optimize/solve-a-vehicle-routing-problem","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["optimize"],"summary":"Solve a vehicle routing problem","operationId":"solveOptimize","x-mint":{"metadata":{"title":"optimize","sidebarTitle":"optimize","description":"Solve a vehicle routing problem"}},"requestBody":"991f2768-960d-415d-b086-20fc19521dd0","responses":{"200":"027fc474-4a64-4576-bc20-86e4a45e9c23","400":"bde1560e-178a-468c-ba2a-eefdccd8a5a4","401":"e05b8e8d-c1d0-4d99-a0d7-93cd6617bd6b","429":"4d115c07-1d57-4a02-8784-af3109587106","500":"319ad3bb-b4f8-43c7-80a4-e66363440756"},"method":"post","type":"path","servers":["60e1dd70-9f2e-442f-be8f-e785594ea238"],"security":["7c00b104-abde-4367-9eaf-a62715b02888"],"path":"/optimize","baseUrlOptions":["https://api.justrouting.tech"],"title":"Solve a vehicle routing problem","description":"Solve a vehicle routing problem","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["vehicles"],"properties":{"vehicles":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","isRequired":true,"uniqueKey":"vehicles.items.[INDEX].id","typeLabel":"integer"},"profile":{"type":"string","enum":["car","motorcycle"],"default":"car","description":"Routing profile (defaults to `car`). JustRouting supports `car` and `motorcycle`.","uniqueKey":"vehicles.items.[INDEX].profile","typeLabel":"enum\u003cstring>"},"description":{"type":"string","uniqueKey":"vehicles.items.[INDEX].description","typeLabel":"string"},"start":{"type":"array","items":{"type":"number","uniqueKey":"vehicles.items.[INDEX].start.items.[INDEX]","typeLabel":"number"},"minItems":2,"maxItems":2,"description":"Depot as `[lng, lat]`.","uniqueKey":"vehicles.items.[INDEX].start","typeLabel":"number[]"},"end":{"type":"array","items":{"type":"number","uniqueKey":"vehicles.items.[INDEX].end.items.[INDEX]","typeLabel":"number"},"minItems":2,"maxItems":2,"description":"Return depot as `[lng, lat]`; same as start for a round trip; omit to stop at the last task.","uniqueKey":"vehicles.items.[INDEX].end","typeLabel":"number[]"},"start_index":{"type":"integer","description":"Row/column in custom matrices.","uniqueKey":"vehicles.items.[INDEX].start_index","typeLabel":"integer"},"end_index":{"type":"integer","description":"Row/column in custom matrices.","uniqueKey":"vehicles.items.[INDEX].end_index","typeLabel":"integer"},"capacity":{"type":"array","items":{"type":"integer","uniqueKey":"vehicles.items.[INDEX].capacity.items.[INDEX]","typeLabel":"integer"},"description":"Multidimensional capacity (e.g. weight, volume); the load at each route step must stay below capacity.","uniqueKey":"vehicles.items.[INDEX].capacity","typeLabel":"integer[]"},"skills":{"type":"array","items":{"type":"integer","uniqueKey":"vehicles.items.[INDEX].skills.items.[INDEX]","typeLabel":"integer"},"description":"Job skills must be a subset of vehicle skills.","uniqueKey":"vehicles.items.[INDEX].skills","typeLabel":"integer[]"},"type":{"type":"string","description":"Vehicle type, referenced by per-type setup and service times.","uniqueKey":"vehicles.items.[INDEX].type","typeLabel":"string"},"time_window":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer","uniqueKey":"vehicles.items.[INDEX].time_window.items.[INDEX]","typeLabel":"integer"},"description":"`[start, end]` in seconds relative to the planning horizon, or absolute UNIX timestamps (consistent within one request). Both ends are inclusive.","uniqueKey":"vehicles.items.[INDEX].time_window","typeLabel":"integer[]"},"breaks":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","isRequired":true,"uniqueKey":"vehicles.items.[INDEX].breaks.items.[INDEX].id","typeLabel":"integer"},"time_windows":{"type":"array","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer","uniqueKey":"vehicles.items.[INDEX].breaks.items.[INDEX].time_windows.items.[INDEX].items.[INDEX]","typeLabel":"integer"},"description":"`[start, end]` in seconds relative to the planning horizon, or absolute UNIX timestamps (consistent within one request). Both ends are inclusive.","uniqueKey":"vehicles.items.[INDEX].breaks.items.[INDEX].time_windows.items.[INDEX]","typeLabel":"integer[]"},"description":"Valid slots for break start.","uniqueKey":"vehicles.items.[INDEX].breaks.items.[INDEX].time_windows","typeLabel":"integer[][]"},"service":{"type":"integer","default":0,"description":"Break duration in seconds (defaults to 0).","uniqueKey":"vehicles.items.[INDEX].breaks.items.[INDEX].service","typeLabel":"integer"},"description":{"type":"string","description":"A string describing this break.","uniqueKey":"vehicles.items.[INDEX].breaks.items.[INDEX].description","typeLabel":"string"},"max_load":{"type":"array","items":{"type":"integer","uniqueKey":"vehicles.items.[INDEX].breaks.items.[INDEX].max_load.items.[INDEX]","typeLabel":"integer"},"description":"Maximum vehicle load for which this break can happen.","uniqueKey":"vehicles.items.[INDEX].breaks.items.[INDEX].max_load","typeLabel":"integer[]"}},"uniqueKey":"vehicles.items.[INDEX].breaks.items.[INDEX]","typeLabel":"object"},"description":"Rest periods during the route.","uniqueKey":"vehicles.items.[INDEX].breaks","typeLabel":"object[]"},"speed_factor":{"type":"number","exclusiveMinimum":0,"maximum":5,"default":1,"description":"Scales all travel times for this vehicle, range `(0, 5]`, two decimals precision (defaults to 1).","uniqueKey":"vehicles.items.[INDEX].speed_factor","typeLabel":"number"},"max_tasks":{"type":"integer","description":"Maximum number of tasks in this vehicle's route.","uniqueKey":"vehicles.items.[INDEX].max_tasks","typeLabel":"integer"},"max_travel_time":{"type":"integer","description":"Seconds.","uniqueKey":"vehicles.items.[INDEX].max_travel_time","typeLabel":"integer"},"max_distance":{"type":"integer","description":"Meters.","uniqueKey":"vehicles.items.[INDEX].max_distance","typeLabel":"integer"},"costs":{"type":"object","properties":{"fixed":{"type":"integer","default":0,"description":"Cost of using this vehicle in the solution (defaults to 0).","uniqueKey":"vehicles.items.[INDEX].costs.fixed","typeLabel":"integer"},"per_hour":{"type":"integer","default":3600,"description":"Cost for one hour of travel time (defaults to 3600).","uniqueKey":"vehicles.items.[INDEX].costs.per_hour","typeLabel":"integer"},"per_task_hour":{"type":"integer","default":0,"description":"Cost for one hour of task time, setup + service (defaults to 0).","uniqueKey":"vehicles.items.[INDEX].costs.per_task_hour","typeLabel":"integer"},"per_km":{"type":"integer","default":0,"description":"Cost for one kilometer of travel (defaults to 0).","uniqueKey":"vehicles.items.[INDEX].costs.per_km","typeLabel":"integer"}},"uniqueKey":"vehicles.items.[INDEX].costs","typeLabel":"object"},"steps":{"type":"array","items":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["start","job","pickup","delivery","break","end"],"description":"Step type.","isRequired":true,"uniqueKey":"vehicles.items.[INDEX].steps.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"id":{"type":"integer","description":"Task id for `job`, `pickup`, `delivery` or `break` steps.","uniqueKey":"vehicles.items.[INDEX].steps.items.[INDEX].id","typeLabel":"integer"},"service_at":{"type":"integer","description":"Hard constraint on service time (plan mode only).","uniqueKey":"vehicles.items.[INDEX].steps.items.[INDEX].service_at","typeLabel":"integer"},"service_after":{"type":"integer","description":"Hard constraint on service time lower bound (plan mode only).","uniqueKey":"vehicles.items.[INDEX].steps.items.[INDEX].service_after","typeLabel":"integer"},"service_before":{"type":"integer","description":"Hard constraint on service time upper bound (plan mode only).","uniqueKey":"vehicles.items.[INDEX].steps.items.[INDEX].service_before","typeLabel":"integer"}},"uniqueKey":"vehicles.items.[INDEX].steps.items.[INDEX]","typeLabel":"object"},"description":"Custom route. In solving mode this warm-starts the search: only `job`, `pickup` and `delivery` steps are used and `service_*` keys are ignored.","uniqueKey":"vehicles.items.[INDEX].steps","typeLabel":"object[]"}},"uniqueKey":"vehicles.items.[INDEX]","typeLabel":"object"},"description":"Available vehicles. Free plan: up to 10; Hobby: up to 50.","isRequired":true,"uniqueKey":"vehicles","typeLabel":"object[]"},"jobs":{"type":"array","items":{"type":"object","required":["id","location"],"properties":{"id":{"type":"integer","isRequired":true,"uniqueKey":"jobs.items.[INDEX].id","typeLabel":"integer"},"location":{"type":"array","items":{"type":"number","uniqueKey":"jobs.items.[INDEX].location.items.[INDEX]","typeLabel":"number"},"minItems":2,"maxItems":2,"description":"`[lng, lat]`. Optional if custom matrices cover all used profiles (then `location_index` is required).","isRequired":true,"uniqueKey":"jobs.items.[INDEX].location","typeLabel":"number[]"},"description":{"type":"string","description":"A string describing this job.","uniqueKey":"jobs.items.[INDEX].description","typeLabel":"string"},"location_index":{"type":"integer","description":"Row/column in custom matrices; required when custom matrices are provided.","uniqueKey":"jobs.items.[INDEX].location_index","typeLabel":"integer"},"setup":{"type":"integer","default":0,"description":"Setup duration in seconds (defaults to 0).","uniqueKey":"jobs.items.[INDEX].setup","typeLabel":"integer"},"service":{"type":"integer","default":0,"description":"Service duration in seconds (defaults to 0).","uniqueKey":"jobs.items.[INDEX].service","typeLabel":"integer"},"setup_per_type":{"type":"object","additionalProperties":{"type":"integer","uniqueKey":"jobs.items.[INDEX].setup_per_type.additionalProperties","typeLabel":"integer"},"description":"Setup durations per vehicle type; overrides `setup` for vehicles of that type.","uniqueKey":"jobs.items.[INDEX].setup_per_type","typeLabel":"object"},"service_per_type":{"type":"object","additionalProperties":{"type":"integer","uniqueKey":"jobs.items.[INDEX].service_per_type.additionalProperties","typeLabel":"integer"},"description":"Service durations per vehicle type; overrides `service` for vehicles of that type.","uniqueKey":"jobs.items.[INDEX].service_per_type","typeLabel":"object"},"delivery":{"type":"array","items":{"type":"integer","uniqueKey":"jobs.items.[INDEX].delivery.items.[INDEX]","typeLabel":"integer"},"description":"Amounts to deliver (loaded at vehicle start).","uniqueKey":"jobs.items.[INDEX].delivery","typeLabel":"integer[]"},"pickup":{"type":"array","items":{"type":"integer","uniqueKey":"jobs.items.[INDEX].pickup.items.[INDEX]","typeLabel":"integer"},"description":"Amounts to pick up (returned at vehicle end).","uniqueKey":"jobs.items.[INDEX].pickup","typeLabel":"integer[]"},"skills":{"type":"array","items":{"type":"integer","uniqueKey":"jobs.items.[INDEX].skills.items.[INDEX]","typeLabel":"integer"},"description":"Skills required to serve this job; the vehicle must have all of them.","uniqueKey":"jobs.items.[INDEX].skills","typeLabel":"integer[]"},"priority":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Higher priority tasks are preferred when not all tasks fit.","uniqueKey":"jobs.items.[INDEX].priority","typeLabel":"integer"},"time_windows":{"type":"array","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer","uniqueKey":"jobs.items.[INDEX].time_windows.items.[INDEX].items.[INDEX]","typeLabel":"integer"},"description":"`[start, end]` in seconds relative to the planning horizon, or absolute UNIX timestamps (consistent within one request). Both ends are inclusive.","uniqueKey":"jobs.items.[INDEX].time_windows.items.[INDEX]","typeLabel":"integer[]"},"description":"Valid slots for service start.","uniqueKey":"jobs.items.[INDEX].time_windows","typeLabel":"integer[][]"}},"uniqueKey":"jobs.items.[INDEX]","typeLabel":"object"},"description":"Jobs to serve. Optional if `shipments` is provided. Free plan: up to 100 tasks; Hobby: up to 1,000.","uniqueKey":"jobs","typeLabel":"object[]"},"shipments":{"type":"array","items":{"type":"object","required":["pickup","delivery"],"properties":{"pickup":{"type":"object","required":["id","location"],"properties":{"id":{"type":"integer","isRequired":true,"uniqueKey":"shipments.items.[INDEX].pickup.id","typeLabel":"integer"},"location":{"type":"array","items":{"type":"number","uniqueKey":"shipments.items.[INDEX].pickup.location.items.[INDEX]","typeLabel":"number"},"minItems":2,"maxItems":2,"description":"`[lng, lat]`. Optional if custom matrices cover all used profiles (then `location_index` is required).","isRequired":true,"uniqueKey":"shipments.items.[INDEX].pickup.location","typeLabel":"number[]"},"description":{"type":"string","description":"A string describing this step.","uniqueKey":"shipments.items.[INDEX].pickup.description","typeLabel":"string"},"location_index":{"type":"integer","description":"Row/column in custom matrices; required when custom matrices are provided.","uniqueKey":"shipments.items.[INDEX].pickup.location_index","typeLabel":"integer"},"setup":{"type":"integer","default":0,"description":"Task setup duration in seconds (defaults to 0).","uniqueKey":"shipments.items.[INDEX].pickup.setup","typeLabel":"integer"},"service":{"type":"integer","default":0,"description":"Task service duration in seconds (defaults to 0).","uniqueKey":"shipments.items.[INDEX].pickup.service","typeLabel":"integer"},"setup_per_type":{"type":"object","additionalProperties":{"type":"integer","uniqueKey":"shipments.items.[INDEX].pickup.setup_per_type.additionalProperties","typeLabel":"integer"},"description":"Task setup durations per vehicle type; overrides `setup` for vehicles of that type.","uniqueKey":"shipments.items.[INDEX].pickup.setup_per_type","typeLabel":"object"},"service_per_type":{"type":"object","additionalProperties":{"type":"integer","uniqueKey":"shipments.items.[INDEX].pickup.service_per_type.additionalProperties","typeLabel":"integer"},"description":"Task service durations per vehicle type; overrides `service` for vehicles of that type.","uniqueKey":"shipments.items.[INDEX].pickup.service_per_type","typeLabel":"object"},"time_windows":{"type":"array","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer","uniqueKey":"shipments.items.[INDEX].pickup.time_windows.items.[INDEX].items.[INDEX]","typeLabel":"integer"},"description":"`[start, end]` in seconds relative to the planning horizon, or absolute UNIX timestamps (consistent within one request). Both ends are inclusive.","uniqueKey":"shipments.items.[INDEX].pickup.time_windows.items.[INDEX]","typeLabel":"integer[]"},"description":"Valid slots for service start.","uniqueKey":"shipments.items.[INDEX].pickup.time_windows","typeLabel":"integer[][]"}},"isRequired":true,"uniqueKey":"shipments.items.[INDEX].pickup","typeLabel":"object"},"delivery":{"type":"object","required":["id","location"],"properties":{"id":{"type":"integer","isRequired":true,"uniqueKey":"shipments.items.[INDEX].delivery.id","typeLabel":"integer"},"location":{"type":"array","items":{"type":"number","uniqueKey":"shipments.items.[INDEX].delivery.location.items.[INDEX]","typeLabel":"number"},"minItems":2,"maxItems":2,"description":"`[lng, lat]`. Optional if custom matrices cover all used profiles (then `location_index` is required).","isRequired":true,"uniqueKey":"shipments.items.[INDEX].delivery.location","typeLabel":"number[]"},"description":{"type":"string","description":"A string describing this step.","uniqueKey":"shipments.items.[INDEX].delivery.description","typeLabel":"string"},"location_index":{"type":"integer","description":"Row/column in custom matrices; required when custom matrices are provided.","uniqueKey":"shipments.items.[INDEX].delivery.location_index","typeLabel":"integer"},"setup":{"type":"integer","default":0,"description":"Task setup duration in seconds (defaults to 0).","uniqueKey":"shipments.items.[INDEX].delivery.setup","typeLabel":"integer"},"service":{"type":"integer","default":0,"description":"Task service duration in seconds (defaults to 0).","uniqueKey":"shipments.items.[INDEX].delivery.service","typeLabel":"integer"},"setup_per_type":{"type":"object","additionalProperties":{"type":"integer","uniqueKey":"shipments.items.[INDEX].delivery.setup_per_type.additionalProperties","typeLabel":"integer"},"description":"Task setup durations per vehicle type; overrides `setup` for vehicles of that type.","uniqueKey":"shipments.items.[INDEX].delivery.setup_per_type","typeLabel":"object"},"service_per_type":{"type":"object","additionalProperties":{"type":"integer","uniqueKey":"shipments.items.[INDEX].delivery.service_per_type.additionalProperties","typeLabel":"integer"},"description":"Task service durations per vehicle type; overrides `service` for vehicles of that type.","uniqueKey":"shipments.items.[INDEX].delivery.service_per_type","typeLabel":"object"},"time_windows":{"type":"array","items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"integer","uniqueKey":"shipments.items.[INDEX].delivery.time_windows.items.[INDEX].items.[INDEX]","typeLabel":"integer"},"description":"`[start, end]` in seconds relative to the planning horizon, or absolute UNIX timestamps (consistent within one request). Both ends are inclusive.","uniqueKey":"shipments.items.[INDEX].delivery.time_windows.items.[INDEX]","typeLabel":"integer[]"},"description":"Valid slots for service start.","uniqueKey":"shipments.items.[INDEX].delivery.time_windows","typeLabel":"integer[][]"}},"isRequired":true,"uniqueKey":"shipments.items.[INDEX].delivery","typeLabel":"object"},"amount":{"type":"array","items":{"type":"integer","uniqueKey":"shipments.items.[INDEX].amount.items.[INDEX]","typeLabel":"integer"},"description":"Amounts loaded at the pickup and unloaded at the delivery.","uniqueKey":"shipments.items.[INDEX].amount","typeLabel":"integer[]"},"skills":{"type":"array","items":{"type":"integer","uniqueKey":"shipments.items.[INDEX].skills.items.[INDEX]","typeLabel":"integer"},"description":"Skills required to serve this shipment; the vehicle must have all of them.","uniqueKey":"shipments.items.[INDEX].skills","typeLabel":"integer[]"},"priority":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Higher priority shipments are preferred when not all tasks fit.","uniqueKey":"shipments.items.[INDEX].priority","typeLabel":"integer"}},"uniqueKey":"shipments.items.[INDEX]","typeLabel":"object"},"description":"Pickup-and-delivery tasks (pickup must precede delivery).","uniqueKey":"shipments","typeLabel":"object[]"},"matrices":{"type":"object","description":"Custom matrices per profile; skips OSRM table calls when `durations` are provided for all used profiles.","additionalProperties":{"type":"object","properties":{"durations":{"type":"array","items":{"type":"array","items":{"type":"integer","uniqueKey":"matrices.additionalProperties.durations.items.[INDEX].items.[INDEX]","typeLabel":"integer"},"uniqueKey":"matrices.additionalProperties.durations.items.[INDEX]","typeLabel":"integer[]"},"description":"Custom travel-time matrix used for all timing checks.","uniqueKey":"matrices.additionalProperties.durations","typeLabel":"integer[][]"},"distances":{"type":"array","items":{"type":"array","items":{"type":"integer","uniqueKey":"matrices.additionalProperties.distances.items.[INDEX].items.[INDEX]","typeLabel":"integer"},"uniqueKey":"matrices.additionalProperties.distances.items.[INDEX]","typeLabel":"integer[]"},"description":"Custom distance matrix; requires `durations`.","uniqueKey":"matrices.additionalProperties.distances","typeLabel":"integer[][]"},"costs":{"type":"array","items":{"type":"array","items":{"type":"integer","uniqueKey":"matrices.additionalProperties.costs.items.[INDEX].items.[INDEX]","typeLabel":"integer"},"uniqueKey":"matrices.additionalProperties.costs.items.[INDEX]","typeLabel":"integer[]"},"description":"Custom cost matrix used in all route cost evaluations.","uniqueKey":"matrices.additionalProperties.costs","typeLabel":"integer[][]"}},"uniqueKey":"matrices.additionalProperties","typeLabel":"object"},"uniqueKey":"matrices","typeLabel":"object"},"options":{"type":"object","properties":{"g":{"type":"boolean","default":false,"description":"Add polyline geometry (and distances) to each route in the response. Same effect as VROOM's `-g` flag.","uniqueKey":"options.g","typeLabel":"boolean"}},"description":"Solver options; `g` maps to the VROOM `-g` flag.","uniqueKey":"options","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"twoVehiclesSixJobs":{"title":"twoVehiclesSixJobs","value":{"vehicles":[{"id":1,"profile":"car","start":[103.79234106,1.32463108],"end":[103.79234106,1.32463108]},{"id":2,"profile":"car","start":[103.82324228,1.32408622],"end":[103.82324228,1.32408622]}],"jobs":[{"id":1,"location":[103.79751693,1.31035001]},{"id":2,"location":[103.78432387,1.31490148]},{"id":3,"location":[103.79763397,1.31980519]},{"id":4,"location":[103.81234512,1.31824846]},{"id":5,"location":[103.82152987,1.30984208]},{"id":6,"location":[103.83701939,1.32143977]}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"027fc474-4a64-4576-bc20-86e4a45e9c23":{"description":"Problem solved","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","enum":[0,1,2,3],"description":"0 = ok, 1 = internal error, 2 = input error, 3 = routing error.","uniqueKey":"code","typeLabel":"enum\u003cinteger>"},"error":{"type":"string","description":"Present when code != 0.","uniqueKey":"error","typeLabel":"string"},"summary":{"type":"object","properties":{"cost":{"type":"integer","description":"Total cost for all routes.","uniqueKey":"summary.cost","typeLabel":"integer"},"routes":{"type":"integer","description":"Number of routes in the solution.","uniqueKey":"summary.routes","typeLabel":"integer"},"unassigned":{"type":"integer","description":"Number of tasks that could not be served.","uniqueKey":"summary.unassigned","typeLabel":"integer"},"setup":{"type":"integer","description":"Total setup time for all routes.","uniqueKey":"summary.setup","typeLabel":"integer"},"service":{"type":"integer","description":"Total service time for all routes.","uniqueKey":"summary.service","typeLabel":"integer"},"duration":{"type":"integer","description":"Total travel time in seconds.","uniqueKey":"summary.duration","typeLabel":"integer"},"waiting_time":{"type":"integer","description":"Total waiting time for all routes.","uniqueKey":"summary.waiting_time","typeLabel":"integer"},"priority":{"type":"integer","description":"Total priority sum for all assigned tasks.","uniqueKey":"summary.priority","typeLabel":"integer"},"distance":{"type":"integer","description":"Total distance in meters (with `options.g` or distance matrices).","uniqueKey":"summary.distance","typeLabel":"integer"},"delivery":{"type":"array","items":{"type":"integer","uniqueKey":"summary.delivery.items.[INDEX]","typeLabel":"integer"},"description":"Total delivery for all routes.","uniqueKey":"summary.delivery","typeLabel":"integer[]"},"pickup":{"type":"array","items":{"type":"integer","uniqueKey":"summary.pickup.items.[INDEX]","typeLabel":"integer"},"description":"Total pickup for all routes.","uniqueKey":"summary.pickup","typeLabel":"integer[]"},"violations":{"type":"array","items":{"type":"object","properties":{"cause":{"type":"string","enum":["delay","lead_time","load","max_tasks","skills","precedence","missing_break","max_travel_time","max_distance","max_load"],"description":"Violation cause.","uniqueKey":"summary.violations.items.[INDEX].cause","typeLabel":"enum\u003cstring>"},"duration":{"type":"integer","description":"Earliness (resp. lateness) if `cause` is `lead_time` (resp. `delay`).","uniqueKey":"summary.violations.items.[INDEX].duration","typeLabel":"integer"}},"uniqueKey":"summary.violations.items.[INDEX]","typeLabel":"object"},"description":"Violation objects for all routes.","uniqueKey":"summary.violations","typeLabel":"object[]"}},"uniqueKey":"summary","typeLabel":"object"},"unassigned":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","uniqueKey":"unassigned.items.[INDEX].id","typeLabel":"integer"},"type":{"type":"string","description":"`job`, `pickup` or `delivery`.","uniqueKey":"unassigned.items.[INDEX].type","typeLabel":"string"},"location":{"type":"array","items":{"type":"number","uniqueKey":"unassigned.items.[INDEX].location.items.[INDEX]","typeLabel":"number"},"uniqueKey":"unassigned.items.[INDEX].location","typeLabel":"number[]"},"location_index":{"type":"integer","description":"Row/column in custom matrices, if provided in input.","uniqueKey":"unassigned.items.[INDEX].location_index","typeLabel":"integer"},"description":{"type":"string","uniqueKey":"unassigned.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"unassigned.items.[INDEX]","typeLabel":"object"},"uniqueKey":"unassigned","typeLabel":"object[]"},"routes":{"type":"array","items":{"type":"object","properties":{"vehicle":{"type":"integer","description":"Id of the vehicle assigned to this route.","uniqueKey":"routes.items.[INDEX].vehicle","typeLabel":"integer"},"cost":{"type":"integer","description":"Cost for this route.","uniqueKey":"routes.items.[INDEX].cost","typeLabel":"integer"},"setup":{"type":"integer","description":"Total setup time for this route.","uniqueKey":"routes.items.[INDEX].setup","typeLabel":"integer"},"service":{"type":"integer","description":"Total service time for this route.","uniqueKey":"routes.items.[INDEX].service","typeLabel":"integer"},"duration":{"type":"integer","description":"Travel time in seconds.","uniqueKey":"routes.items.[INDEX].duration","typeLabel":"integer"},"waiting_time":{"type":"integer","description":"Total waiting time for this route.","uniqueKey":"routes.items.[INDEX].waiting_time","typeLabel":"integer"},"priority":{"type":"integer","description":"Total priority sum for tasks in this route.","uniqueKey":"routes.items.[INDEX].priority","typeLabel":"integer"},"distance":{"type":"integer","description":"Meters (with `options.g` or distance matrices).","uniqueKey":"routes.items.[INDEX].distance","typeLabel":"integer"},"geometry":{"type":"string","description":"Encoded polyline (when `options.g` is true).","uniqueKey":"routes.items.[INDEX].geometry","typeLabel":"string"},"delivery":{"type":"array","items":{"type":"integer","uniqueKey":"routes.items.[INDEX].delivery.items.[INDEX]","typeLabel":"integer"},"description":"Total delivery for tasks in this route.","uniqueKey":"routes.items.[INDEX].delivery","typeLabel":"integer[]"},"pickup":{"type":"array","items":{"type":"integer","uniqueKey":"routes.items.[INDEX].pickup.items.[INDEX]","typeLabel":"integer"},"description":"Total pickup for tasks in this route.","uniqueKey":"routes.items.[INDEX].pickup","typeLabel":"integer[]"},"description":{"type":"string","description":"Vehicle description, if provided in input.","uniqueKey":"routes.items.[INDEX].description","typeLabel":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["start","job","pickup","delivery","break","end"],"description":"Step type: `start`, `job`, `pickup`, `delivery`, `break` or `end`.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"id":{"type":"integer","description":"Task id for job/pickup/delivery/break steps.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].id","typeLabel":"integer"},"arrival":{"type":"integer","description":"Arrival time (same clock as input).","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].arrival","typeLabel":"integer"},"duration":{"type":"integer","description":"Cumulated travel time in seconds.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].duration","typeLabel":"integer"},"setup":{"type":"integer","description":"Setup time at this step.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].setup","typeLabel":"integer"},"service":{"type":"integer","description":"Service time at this step.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].service","typeLabel":"integer"},"waiting_time":{"type":"integer","description":"Waiting time upon arrival at this step.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].waiting_time","typeLabel":"integer"},"distance":{"type":"integer","description":"Cumulated distance in meters (with `options.g`).","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].distance","typeLabel":"integer"},"location":{"type":"array","items":{"type":"number","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].location.items.[INDEX]","typeLabel":"number"},"description":"`[lng, lat]`, if provided in input.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].location","typeLabel":"number[]"},"location_index":{"type":"integer","description":"Row/column in custom matrices, if provided in input.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].location_index","typeLabel":"integer"},"load":{"type":"array","items":{"type":"integer","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].load.items.[INDEX]","typeLabel":"integer"},"description":"Vehicle load after this step.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].load","typeLabel":"integer[]"},"description":{"type":"string","description":"Step description, if provided in input.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].description","typeLabel":"string"},"violations":{"type":"array","items":{"type":"object","properties":{"cause":{"type":"string","enum":["delay","lead_time","load","max_tasks","skills","precedence","missing_break","max_travel_time","max_distance","max_load"],"description":"Violation cause.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].violations.items.[INDEX].cause","typeLabel":"enum\u003cstring>"},"duration":{"type":"integer","description":"Earliness (resp. lateness) if `cause` is `lead_time` (resp. `delay`).","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].violations.items.[INDEX].duration","typeLabel":"integer"}},"uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].violations.items.[INDEX]","typeLabel":"object"},"description":"Violation objects for this step.","uniqueKey":"routes.items.[INDEX].steps.items.[INDEX].violations","typeLabel":"object[]"}},"uniqueKey":"routes.items.[INDEX].steps.items.[INDEX]","typeLabel":"object"},"description":"Route steps.","uniqueKey":"routes.items.[INDEX].steps","typeLabel":"object[]"},"violations":{"type":"array","items":{"type":"object","properties":{"cause":{"type":"string","enum":["delay","lead_time","load","max_tasks","skills","precedence","missing_break","max_travel_time","max_distance","max_load"],"description":"Violation cause.","uniqueKey":"routes.items.[INDEX].violations.items.[INDEX].cause","typeLabel":"enum\u003cstring>"},"duration":{"type":"integer","description":"Earliness (resp. lateness) if `cause` is `lead_time` (resp. `delay`).","uniqueKey":"routes.items.[INDEX].violations.items.[INDEX].duration","typeLabel":"integer"}},"uniqueKey":"routes.items.[INDEX].violations.items.[INDEX]","typeLabel":"object"},"description":"Violation objects for this route.","uniqueKey":"routes.items.[INDEX].violations","typeLabel":"object[]"}},"uniqueKey":"routes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"routes","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":0,"error":"\u003cstring>","summary":{"cost":123,"routes":123,"unassigned":123,"setup":123,"service":123,"duration":123,"waiting_time":123,"priority":123,"distance":123,"delivery":[123],"pickup":[123],"violations":[{"cause":"delay","duration":123}]},"unassigned":[{"id":123,"type":"\u003cstring>","location":[123],"location_index":123,"description":"\u003cstring>"}],"routes":[{"vehicle":123,"cost":123,"setup":123,"service":123,"duration":123,"waiting_time":123,"priority":123,"distance":123,"geometry":"\u003cstring>","delivery":[123],"pickup":[123],"description":"\u003cstring>","steps":[{"type":"start","id":123,"arrival":123,"duration":123,"setup":123,"service":123,"waiting_time":123,"distance":123,"location":[123],"location_index":123,"load":[123],"description":"\u003cstring>","violations":[{"cause":"delay","duration":123}]}],"violations":[{"cause":"delay","duration":123}]}]}}},"exampleType":"generated"}},"exampleType":"generated"},"bde1560e-178a-468c-ba2a-eefdccd8a5a4":{"description":"Invalid input (code 2) — details in the `error` field","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","uniqueKey":"code","typeLabel":"integer"},"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":123,"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"e05b8e8d-c1d0-4d99-a0d7-93cd6617bd6b":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"`missing Authorization header` or `invalid or revoked API key`.","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"4d115c07-1d57-4a02-8784-af3109587106":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limited"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"rate_limited","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"319ad3bb-b4f8-43c7-80a4-e66363440756":{"description":"Internal error (code 1) — details in the `error` field","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","uniqueKey":"code","typeLabel":"integer"},"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":123,"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"7c00b104-abde-4367-9eaf-a62715b02888":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key created in the JustRouting dashboard.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"60e1dd70-9f2e-442f-be8f-e785594ea238":{"url":"https://api.justrouting.tech","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key created in the JustRouting dashboard.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key created in the JustRouting dashboard.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi/openapi.json"},"subdomain":"justrouting","siteName":"JustRouting Docs","title":"optimize - JustRouting Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-25T07:29:15.917Z","originalFileLocation":"api-reference/optimize/solve-a-vehicle-routing-problem.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Solve a vehicle routing problem\">\u003cmeta data-mint-head name=\"application-name\" content=\"JustRouting Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/justrouting/7ef4nnafo8giaMrm/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/justrouting/7ef4nnafo8giaMrm/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/justrouting/7ef4nnafo8giaMrm/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/justrouting/7ef4nnafo8giaMrm/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/justrouting/7ef4nnafo8giaMrm/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/justrouting/7ef4nnafo8giaMrm/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/justrouting/7ef4nnafo8giaMrm/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/justrouting/7ef4nnafo8giaMrm/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/justrouting/7ef4nnafo8giaMrm/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"optimize - JustRouting Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Solve a vehicle routing problem\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"JustRouting Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.justrouting.tech/api-reference/optimize/solve-a-vehicle-routing-problem\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://justrouting.mintlify.app/_mintlify/api/og/v2?division=OpenAPI\u0026amp;title=optimize\u0026amp;description=Solve+a+vehicle+routing+problem\u0026amp;theme=151b71b1ea222f0b309049a9\u0026amp;signature=be7c445b410e0f78d2a42835d2d4daacffb85658b3d3cd4d30ae92b3b41b84a1\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"optimize - JustRouting Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Solve a vehicle routing problem\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://justrouting.mintlify.app/_mintlify/api/og/v2?division=OpenAPI\u0026amp;title=optimize\u0026amp;description=Solve+a+vehicle+routing+problem\u0026amp;theme=151b71b1ea222f0b309049a9\u0026amp;signature=be7c445b410e0f78d2a42835d2d4daacffb85658b3d3cd4d30ae92b3b41b84a1\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/justrouting/7ef4nnafo8giaMrm/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"JustRouting Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4f46e5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.justrouting.tech/api-reference/optimize/solve-a-vehicle-routing-problem\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/optimize/solve-a-vehicle-routing-problem.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.justrouting.tech/#organization\",\"name\":\"JustRouting Docs\",\"url\":\"https://docs.justrouting.tech\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/justrouting/AKioJ6pC728iBF7k/images/logo-wordmark.png?fit=max\u0026auto=format\u0026n=AKioJ6pC728iBF7k\u0026q=85\u0026s=20156507a8a2c45eb7bbb623ce05a6e1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.justrouting.tech#website\",\"name\":\"JustRouting Docs\",\"url\":\"https://docs.justrouting.tech\",\"publisher\":{\"@id\":\"https://docs.justrouting.tech/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.justrouting.tech/api-reference/optimize/solve-a-vehicle-routing-problem#webpage\",\"url\":\"https://docs.justrouting.tech/api-reference/optimize/solve-a-vehicle-routing-problem\",\"name\":\"optimize\",\"description\":\"Solve a vehicle routing problem\",\"dateModified\":\"2026-09-25T07:29:15.917Z\",\"isPartOf\":{\"@id\":\"https://docs.justrouting.tech#website\"},\"breadcrumb\":{\"@id\":\"https://docs.justrouting.tech/api-reference/optimize/solve-a-vehicle-routing-problem#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.justrouting.tech/api-reference/optimize/solve-a-vehicle-routing-problem#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"OpenAPI\",\"item\":\"https://docs.justrouting.tech/openapi/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"optimize\",\"item\":\"https://docs.justrouting.tech/api-reference/optimize/solve-a-vehicle-routing-problem\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.justrouting.tech/api-reference/optimize/solve-a-vehicle-routing-problem#apireference\",\"headline\":\"optimize\",\"name\":\"optimize\",\"description\":\"Solve a vehicle routing problem\",\"url\":\"https://docs.justrouting.tech/api-reference/optimize/solve-a-vehicle-routing-problem\",\"mainEntityOfPage\":{\"@id\":\"https://docs.justrouting.tech/api-reference/optimize/solve-a-vehicle-routing-problem#webpage\"},\"dateModified\":\"2026-09-25T07:29:15.917Z\",\"publisher\":{\"@id\":\"https://docs.justrouting.tech/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.justrouting.tech#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"JustRouting Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"JustRouting Docs","nav":{"global":null,"groups":[{"group":"Getting Started","pages":[{"title":"JustRouting Docs","icon":"house","href":"/index"},{"title":"Quickstart","icon":"bolt","href":"/quickstart"},{"title":"Authentication","icon":"lock","href":"/authentication"},{"title":"Rate Limits \u0026 Quotas","icon":"gauge","href":"/rate-limits"},{"title":"Errors","icon":"triangle-exclamation","href":"/errors"},{"title":"Coverage","icon":"map","href":"/coverage"}]},{"group":"API Reference","pages":[{"title":"Directions","icon":"route","href":"/api-reference/directions"},{"title":"Distance Matrix","icon":"table","href":"/api-reference/distance-matrix"},{"title":"Map Matching","icon":"crosshairs","href":"/api-reference/map-matching"},{"title":"Trip","icon":"shuffle","href":"/api-reference/trip"},{"title":"Nearest","icon":"map-pin","href":"/api-reference/nearest"},{"title":"Geocode","icon":"search","href":"/api-reference/geocode"},{"title":"Fleet Optimization","icon":"truck","href":"/api-reference/fleet-optimization"}]},{"group":"SDK","pages":[{"title":"Overview","icon":"cube","href":"/sdk/overview"},{"title":"Python Client","icon":"python","sidebarTitle":"Py-Client","href":"/sdk/py-client"},{"title":"Go Client","icon":"golang","sidebarTitle":"Go-Client","href":"/sdk/go-client"},{"title":"JavaScript Client","icon":"js","sidebarTitle":"Js-Client","href":"/sdk/js-client"}]},{"group":"MCP","pages":[{"title":"Overview","icon":"sparkles","href":"/mcp/overview"},{"title":"Geocode Tool","icon":"search","href":"/mcp/geocode"},{"title":"Route Tool","icon":"route","href":"/mcp/route"},{"title":"Table Tool","icon":"table","href":"/mcp/table"},{"title":"Optimize Tool","icon":"truck","href":"/mcp/optimize"}]},{"group":"OpenAPI","pages":[{"title":"Overview","icon":"brackets-curly","href":"/openapi/overview"},{"title":"route","deprecated":null,"version":null,"sidebarTitle":"route","openapi":"/openapi/openapi.json get /route/v1/{profile}/{coordinates}","href":"/api-reference/route/find-the-fastest-route-between-coordinates-in-order"},{"title":"table","deprecated":null,"version":null,"sidebarTitle":"table","openapi":"/openapi/openapi.json get /table/v1/{profile}/{coordinates}","href":"/api-reference/table/compute-durationsdistances-between-all-pairs-of-coordinates"},{"title":"match","deprecated":null,"version":null,"sidebarTitle":"match","openapi":"/openapi/openapi.json get /match/v1/{profile}/{coordinates}","href":"/api-reference/match/snap-a-gps-trace-to-the-road-network"},{"title":"trip","deprecated":null,"version":null,"sidebarTitle":"trip","openapi":"/openapi/openapi.json get /trip/v1/{profile}/{coordinates}","href":"/api-reference/trip/solve-the-traveling-salesman-problem-for-the-given-coordinates"},{"title":"nearest","deprecated":null,"version":null,"sidebarTitle":"nearest","openapi":"/openapi/openapi.json get /nearest/v1/{profile}/{coordinates}","href":"/api-reference/nearest/snap-a-single-coordinate-to-the-nearest-routable-segments"},{"title":"geocode","description":"Find a place by name or address and get its coordinates","deprecated":null,"version":null,"sidebarTitle":"geocode","openapi":"/openapi/openapi.json get /geocode/v1/search","href":"/api-reference/geocode/find-a-place-by-name-or-address-and-get-its-coordinates"},{"title":"optimize","deprecated":null,"version":null,"sidebarTitle":"optimize","openapi":"/openapi/openapi.json post /optimize","href":"/api-reference/optimize/solve-a-vehicle-routing-problem"}]},{"group":"Guides","pages":[{"title":"Draw a Route on a Map","description":"Render JustRouting route geometry with Leaflet, Mapbox GL JS, or react-leaflet.","icon":"pen","href":"/guides/draw-route-on-map"},{"title":"Turn-by-Turn Navigation","icon":"arrow-turn-right","href":"/guides/turn-by-turn"}]}]},"basePath":"","title":"optimize - JustRouting Docs","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}