Docs
  • Solver
  • Models
    • Field Service Routing
    • Employee Shift Scheduling
    • Pick-up and Delivery Routing
    • Task Scheduling
  • Platform
Start Free Trial
  • Pick-up and Delivery Routing
  • The basics
  • User guide
  • Output datasets
  • Model output
  • latest
    • latest
    • 1.8.x
    • 1.7.x

Pick-up and Delivery Routing

  • The basics
    • Introduction
    • Getting started: Hello world
    • User guide
      • Terminology
      • Use case guide
      • Scheduling API concepts
      • Integration
      • Constraints
      • Using the API
        • Using the OpenAPI spec
        • API tooling
      • Demo datasets
      • Input datasets
        • Model configuration
        • Model input
        • Planning window
      • Input validation
      • Output datasets
        • Metadata
        • Model output
        • Input metrics
        • Key performance indicators (KPIs)
      • Maps service
      • Metrics and optimization goals
      • Score analysis
      • Visualizations
  • Feature guides
    • Driver resource constraints
      • Lunch breaks and personal appointments
      • Route optimization
      • Shift hours and overtime
      • Driver capacity
    • Job service constraints
      • Time windows and opening hours
      • Skills
      • Multi-day schedules and movable stops
      • Dependencies between stops
      • Priority jobs and optional jobs
      • Stop service level agreement (SLA)
      • Job requirements and tags
        • Job required drivers
        • Job pooling
        • Prohibit job combinations
        • Maximum time burden
        • Tags
  • Responding to change
    • Recommendations
      • Job time window recommendations
      • Stop time window recommendations
    • Real-time planning
      • Real-time planning: pinning stops
      • Real-time planning: extended stop
      • Real-time planning: reassignment
      • Real-time planning: no show
      • Real-time planning: driver ill
  • More information
    • FAQs
    • Changelog
    • Upgrading to the latest versions
    • Feature requests

Model output

The modelOutput object of the output dataset includes the drivers and unassignedJobs objects.

unassignedJobs includes the IDs of any jobs and stops that could not be assigned during solving:

{
  "modelOutput": {
    "unassignedJobs": [
      {
        "id": "Job A",
        "unassignedStops": [
          "A1",
          "A2"
        ]
      }
    ]
  }
}

drivers includes the drivers that were included in the input dataset and their shifts. shifts includes the shift startTime, an itinerary of the stops and breaks assigned to that shift, and metrics that break down how the driver will spend their time during the shift.

metrics are also included for the entire schedule.

In the following dataset, Ann has been assigned two stops from a single job, and Beth has not been assigned any stops.

{
  "modelOutput": {
    "drivers": [
      {
        "id": "Ann",
        "shifts": [
          {
            "id": "Ann Mon",
            "startTime": "2027-02-01T09:00:00Z",
            "itinerary": [
              {
                "id": "B1",
                "arrivalTime": "2027-02-01T09:31:59Z",
                "startServiceTime": "2027-02-01T09:31:59Z",
                "departureTime": "2027-02-01T09:51:59Z",
                "effectiveDuration": "PT20M",
                "travelTimeFromPreviousStandstill": "PT31M59S",
                "travelDistanceMetersFromPreviousStandstill": 33381,
                "load": [],
                "kind": "STOP"
              },
              {
                "id": "B2",
                "arrivalTime": "2027-02-01T10:45:44Z",
                "startServiceTime": "2027-02-01T10:45:44Z",
                "departureTime": "2027-02-01T11:05:44Z",
                "effectiveDuration": "PT20M",
                "travelTimeFromPreviousStandstill": "PT53M45S",
                "travelDistanceMetersFromPreviousStandstill": 62123,
                "load": [],
                "kind": "STOP"
              }
            ],
            "metrics": {
              "totalTravelTime": "PT1H54M35S",
              "travelTimeFromStartLocationToFirstStop": "PT31M59S",
              "travelTimeBetweenStops": "PT53M45S",
              "travelTimeFromLastStopToEndLocation": "PT28M51S",
              "totalTravelDistanceMeters": 127047,
              "travelDistanceFromStartLocationToFirstStopMeters": 33381,
              "travelDistanceBetweenStopsMeters": 62123,
              "travelDistanceFromLastStopToEndLocationMeters": 31543,
              "endLocationArrivalTime": "2027-02-01T11:34:35Z"
            }
          }
        ]
      },
      {
        "id": "Beth",
        "shifts": [
          {
            "id": "Beth Mon",
            "startTime": "2027-02-01T09:00:00Z",
            "itinerary": [],
            "metrics": {
              "totalTravelTime": "PT0S",
              "travelTimeFromStartLocationToFirstStop": "PT0S",
              "travelTimeBetweenStops": "PT0S",
              "travelTimeFromLastStopToEndLocation": "PT0S",
              "totalTravelDistanceMeters": 0,
              "travelDistanceFromStartLocationToFirstStopMeters": 0,
              "travelDistanceBetweenStopsMeters": 0,
              "travelDistanceFromLastStopToEndLocationMeters": 0
            }
          }
        ]
      }
    ]
  }
}

Next

  • See the full API spec, try the online API, or start a free trial.

  • Learn about Input metrics.

  • © 2026 Timefold BV
  • Timefold.ai
  • Documentation
  • Changelog
  • Send feedback
  • Privacy
  • Legal
    • Light mode
    • Dark mode
    • System default