---
title: "Explanation"
method: GET
path: "/v2/vrp/jobs/{id}/explanation"
tags: ["Info"]
---

# Explanation

`GET /v2/vrp/jobs/{id}/explanation`

Contains the explanation, once solved.

## Path parameters

- `id` string, required

## Response `200`

Status

- RoutingExplanation — Explains the conflicts of a certain routing solution and the unresolved constraints.
  - `score` Score, required — The score of a solution shows how good this solution is w.r.t all the constraints. All solvers try to maximize the score.
    - `hardScore` integer, nullable — The score of the constraints that are hard. This should be 0 in order to be feasible.
    - `mediumScore` integer, nullable — The score of the constraints that are medium.
    - `softScore` integer, nullable — The score of the constraints that are soft.
    - `feasible` boolean, nullable
  - `conflicts` union — Conflicts in the solution
    - RoutingConflict[]
      - `constraint` string, required — Constraint type.
      - `score` string, required — Score impact of this conflict.
      - `job` string, nullable — Job id.
      - `resource` string, nullable — Resource id.
      - `tag` string, nullable — Tag id.
      - `relation` string, nullable
    - object
      - `constraint` string, required — Constraint type.
      - `score` string, required — Score impact of this conflict.
      - `job` string, nullable — Job id.
      - `resource` string, nullable — Resource id.
      - `tag` string, nullable — Tag id.
      - `relation` string, nullable
  - `unresolved` union — Unresolved constraints in the solution
    - Unresolved[]
      - `constraint` 'TRIP_CAPACITY' | 'RESOURCE_CAPACITY' | 'RESOURCE_CAPACITY2' | 'TRAVEL_TIME' | 'TYPE_REQUIREMENT' | 'TAG_SOFT' | 'TAG_HARD' | 'TYPE_REQUIREMENT_SOFT' | 'END_LOCATION_TRAVEL_TIME' | 'TIME_WINDOW_CONFLICT' | 'SHIFT_END_CONFLICT' | 'OVERTIME_END_CONFLICT' | 'RESOURCE_USAGE' | 'URGENCY' | 'PREFERRED_RESOURCE_CONFLICT' | 'ALLOWED_RESOURCES' | 'DISALLOWED_RESOURCES' | 'REGION_TIME' | 'FAIR_WORK' | 'UNSERVED_JOBS' | 'RESOURCE_ACTIVATION' | 'OPEN_DAYS' | 'JOB_PRECEDENCE' | 'JOB_DAY_INDEX' | 'DATE_TIME_WINDOW_CONFLICT' | 'DATE_TIME_WINDOW_CONFLICT_SOFT' | 'LINKED_JOB_CONFLICT' | 'PLANNED_RESOURCE' | 'PLANNED_ARRIVAL' | 'PLANNED_DATE' | 'WORKING_TIME' | 'HARD_JOBS' | 'MAX_DRIVE_TIME' | 'MAX_DRIVE_TIME_JOB' | 'FAIR_TOTAL_WORK' | 'RESOURCE_PERIOD_MAX_SERVICE_TIME' | 'RESOURCE_PERIOD_MAX_DRIVE_TIME' | 'RESOURCE_PERIOD_MAX_WORK_TIME' | 'RESOURCE_PERIOD_MIN_SERVICE_TIME' | 'RESOURCE_PERIOD_MIN_DRIVE_TIME' | 'RESOURCE_PERIOD_MIN_WORK_TIME' | 'MINIMISE_TRIP_USAGE' | 'DELIVERY_NOT_ON_SAME_VEHICLE' | 'DELIVERY_BEFORE_PICKUP' | 'SAME_TRIP' | 'SEQUENCE' | 'SAME_TIME' | 'NEIGHBOR' | 'DIRECT_SEQUENCE' | 'SAME_RESOURCE' | 'WAIT_TIME' | 'DRIVE_TIME' | 'HOURLY_COST' | 'RANKING_SOFT' | 'FAIR_COMPLEXITY_PER_TRIP' | 'FAIR_COMPLEXITY_PER_RESOURCE' | 'RESOURCE_PERIOD_MIN_COMPLEXITY' | 'RESOURCE_PERIOD_MAX_COMPLEXITY' | 'RESOURCE_COMPATIBILITY' | 'JOBTYPE_VIOLATION' | 'GROUP_SEQUENCE' | 'JOB_PROXIMITY', required — Types of constraints that can be violated in a routing solution
      - `score` string, required — Score impact of this conflict.
    - object
      - `constraint` 'TRIP_CAPACITY' | 'RESOURCE_CAPACITY' | 'RESOURCE_CAPACITY2' | 'TRAVEL_TIME' | 'TYPE_REQUIREMENT' | 'TAG_SOFT' | 'TAG_HARD' | 'TYPE_REQUIREMENT_SOFT' | 'END_LOCATION_TRAVEL_TIME' | 'TIME_WINDOW_CONFLICT' | 'SHIFT_END_CONFLICT' | 'OVERTIME_END_CONFLICT' | 'RESOURCE_USAGE' | 'URGENCY' | 'PREFERRED_RESOURCE_CONFLICT' | 'ALLOWED_RESOURCES' | 'DISALLOWED_RESOURCES' | 'REGION_TIME' | 'FAIR_WORK' | 'UNSERVED_JOBS' | 'RESOURCE_ACTIVATION' | 'OPEN_DAYS' | 'JOB_PRECEDENCE' | 'JOB_DAY_INDEX' | 'DATE_TIME_WINDOW_CONFLICT' | 'DATE_TIME_WINDOW_CONFLICT_SOFT' | 'LINKED_JOB_CONFLICT' | 'PLANNED_RESOURCE' | 'PLANNED_ARRIVAL' | 'PLANNED_DATE' | 'WORKING_TIME' | 'HARD_JOBS' | 'MAX_DRIVE_TIME' | 'MAX_DRIVE_TIME_JOB' | 'FAIR_TOTAL_WORK' | 'RESOURCE_PERIOD_MAX_SERVICE_TIME' | 'RESOURCE_PERIOD_MAX_DRIVE_TIME' | 'RESOURCE_PERIOD_MAX_WORK_TIME' | 'RESOURCE_PERIOD_MIN_SERVICE_TIME' | 'RESOURCE_PERIOD_MIN_DRIVE_TIME' | 'RESOURCE_PERIOD_MIN_WORK_TIME' | 'MINIMISE_TRIP_USAGE' | 'DELIVERY_NOT_ON_SAME_VEHICLE' | 'DELIVERY_BEFORE_PICKUP' | 'SAME_TRIP' | 'SEQUENCE' | 'SAME_TIME' | 'NEIGHBOR' | 'DIRECT_SEQUENCE' | 'SAME_RESOURCE' | 'WAIT_TIME' | 'DRIVE_TIME' | 'HOURLY_COST' | 'RANKING_SOFT' | 'FAIR_COMPLEXITY_PER_TRIP' | 'FAIR_COMPLEXITY_PER_RESOURCE' | 'RESOURCE_PERIOD_MIN_COMPLEXITY' | 'RESOURCE_PERIOD_MAX_COMPLEXITY' | 'RESOURCE_COMPATIBILITY' | 'JOBTYPE_VIOLATION' | 'GROUP_SEQUENCE' | 'JOB_PROXIMITY', required — Types of constraints that can be violated in a routing solution
      - `score` string, required — Score impact of this conflict.
  - `alternatives` object, nullable — When `options.explanation.enabled` is set to `true`, this field will contain the alternatives for the solution.The key is the job name and the value is the list of assignments. Each assignment contains the resource, the date, and the score. In this way, you can check the impact of the alternative on the score.

## Other responses

- `400` — Bad request
- `427` — Too many requests.
- `500` — Internal error

## Changes

- **2025-11-27** `a35725e2af55` — 4 warning
  - added the new `GROUP_SEQUENCE` enum value to the `unresolved/constraint` response property for the response status `200`
  - added the new `GROUP_SEQUENCE` enum value to the `unresolved/items/constraint` response property for the response status `200`
  - added the new `JOB_PROXIMITY` enum value to the `unresolved/constraint` response property for the response status `200`
  - added the new `JOB_PROXIMITY` enum value to the `unresolved/items/constraint` response property for the response status `200`
- **2025-09-24** `4f1fbf4f1b77` — 2 breaking, 249 warning, 5 info
  - the `conflicts` response's property type changed from `object` to `array, null, object` for status `200`
  - the `unresolved` response's property type changed from `object` to `array, null, object` for status `200`
  - added the new `ACCEPTED` enum value to the `status` response property for the response status `400`
  - added the new `ACCEPTED` enum value to the `status` response property for the response status `427`
  - …252 more
- **2025-08-13** `f62eea37b25a` — 2 warning
  - added the new `RESOURCE_COMPATIBILITY` enum value to the `unresolved/constraint/allOf[#/components/schemas/OnrouteConstraint]/` response property for the response status `200`
  - added the new `RESOURCE_COMPATIBILITY` enum value to the `unresolved/items/constraint/allOf[#/components/schemas/OnrouteConstraint]/` response property for the response status `200`
- …earlier changes not shown

[Full history](https://skmtc.dev/solvice/apis/vrp-api/changes/v2/vrp/jobs/:id/explanation/get.md)

---

[API](https://skmtc.dev/solvice/apis/vrp-api.md) · [All operations](https://skmtc.dev/solvice/apis/vrp-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/solvice/vrp-api/revisions/d77ac8b3d302/schema)
