Docs
  • Solver
  • Models
    • Field Service Routing
    • Employee Shift Scheduling
    • Pick-up and Delivery Routing
    • Task Scheduling
  • Platform
Try models
  • Timefold Platform
  • Changelog

Timefold Platform

    • Introduction
    • Scheduling API concepts
    • Getting started with the Timefold Platform
    • Platform concepts
    • Models
      • Model catalog and documentation
      • Model maturity and versioning
      • Trialing Timefold models
    • How-tos
      • Dataset lifecycle
      • Interpreting dataset results
      • Configuration parameters and profiles
      • Reviewing the audit log
      • Searching and categorizing datasets for auditability
      • Member management and roles
      • Secrets management
      • Solve queue
      • Using the maps service
      • Comparing datasets (preview)
      • Insights (preview)
      • Experiments (preview)
      • Timefold Copilot (preview)
      • Real-time planning with /from-patch (preview)
      • Using the Command Palette
    • Job-oriented guides
      • Balancing different optimization goals
      • Validating an optimized plan with Explainable AI
      • Uncovering inefficiencies in operational planning
      • Responding to disruptions with real-time planning
      • Designing better routing plans with (just enough) traffic awareness
    • API integration
      • Model API usage
      • Receiving model API results
        • Webhooks
        • Server sent events (SSE)
        • Polling
      • Handling changes to your planning data
      • Integration scenarios
        • Multiple environments and clusters
        • Data residency requirements
        • Air-gapped environments
      • Platform API usage
    • Changelog
    • Feature requests
    • Pricing plans and capabilities
    • Self-Hosted
      • Self-Hosted vs. Timefold Cloud Platform
      • Installation instructions
      • Upgrade instructions
      • Troubleshooting
    • Support
      • Contacting support
      • Platform status
      • Troubleshooting
    • Trust
      • Risk profile
      • Product security
      • Data security
      • Legal and privacy
      • AI legislation compliance
      • Trust center

Changelog

This changelog lists platform-level changes by date, including updates to the UI, the Platform API, and tenant management. It doesn’t cover changes to individual Timefold models. Each model maintains its own changelog, listed on its documentation site. See the model catalog for links to each model’s documentation.

Subscribe to the Timefold changelog to receive email notifications, or subscribe to its RSS feed, and get notified as soon as new updates are published.

1.8

Give stakeholders and auditors safe, read-only tenant access

Tenants can now add members with a new Viewer role. Viewers can see everything in a tenant, models, datasets, configuration profiles, and saved comparisons shared with tenant members, but can’t start, edit, or delete datasets, or manage comparisons. This is useful for stakeholders or auditors who only need read access. See Viewer role for details.

Experiments (preview)

Experiments let you compare how your Timefold model performs across different scenarios and datasets in a single run, instead of manually submitting and comparing individual datasets. You define the variables up front, and the platform runs all combinations automatically, producing a comparison report where each column represents a scenario. This saves time compared to submitting each combination by hand, and experiments run on a separate solve queue, so they don’t affect or slow down your production solves. Experiments are available in preview starting with this release. See Experiments for more information and to request access.

More accurate score analysis and recommendations with configuration profile overrides

Overrides specified in a configuration profile are now applied when calling the score analysis and recommendations endpoints. Previously, these endpoints reflected the dataset’s original configuration even when overrides had been applied. Results now accurately reflect the profile you configured, giving more accurate score analysis and recommendations.

Interpret and share dataset comparisons more easily

Comparisons can now show diffs as a percentage instead of only an absolute value, making it easier to judge the relative impact of a change. The radar diagram in dataset comparisons can also be exported as an SVG file, making it easier to include in reports and presentations. See Comparing datasets for more details.

Back up and share configuration profiles as JSON files

Configuration profiles can now be exported and imported as JSON files. This makes it easy to back up a profile before making risky changes, or to share a profile configuration between team members or environments. See Export and import profiles for more details.

Improved documentation search

The documentation site now has a dedicated search page, in addition to the in-page search modal. From the search modal, click "See all results" to open the full search results page, which supports paging and filtering by book and product.

See your most-used destinations first in the command palette

Opening the command palette without typing a query now shows your recently used entries first, topped up with the highest-priority entries, instead of an empty dialog. See Using the Command Palette for more details.

1.7

Constraint scores in dataset comparison

The comparison table now includes a "Constraint scores" group that shows the per-constraint score breakdown for each dataset. Scores are color-coded and sorted using the score analysis sort order. This is available when comparing single datasets; support for grouped dataset columns is planned for a future release. This is useful to see the impact on specific constraint score during goal alignment experiments. See Comparing datasets for details.

Sort constraints in score analysis

The constraint table in score analysis now supports sorting by name (useful to get started with a model), number of matches (useful to explore justifications), or constraint weight, in addition to the default sort by score. Each sort option orders constraints within their group first, then orders the groups themselves by the same criterion. See Score analysis for more details.

Power-tune the default smart termination

By default, solving on the platform stops automatically once score improvements diminish; this is the default smart termination strategy, and for most datasets the defaults work well out of the box and is the best balance between time, cost and solution quality. For specific datasets where you want more control, "Advanced configuration" in a configuration profile now exposes two parameters: sliding window duration and minimum improvement ratio. See solve settings to learn about the parameters and tweak them.

1.6

Radar chart tooltips with percentages

In dataset comparison radar charts, each axis in the tooltip now includes a percentage delta alongside the absolute value, making it easier to compare scenarios at a glance. See comparing datasets for more details.

Discover caller identity

The platform has a new GET /api/aboutme endpoint that returns information about the API key behind the current request like the tenant it belongs to, and the access permissions granted to it. See Discovering caller identity for more details.

1.5

Dataset timeline now shown for non-solved datasets

The dataset timeline is now also visible for datasets that are submitted without solving. Operations such as validation can take a while for large datasets, and the timeline now reflects that progress. Previously, the timeline was only shown when a dataset was submitted for solving.

Maximum constraint weight enforced

Constraint weights are now capped at 1,000,000,000,000 (one trillion). The limit prevents score overflow and nonsensical optimization results that can occur when weights are set too high. It is enforced when saving a configuration profile and when submitting a dataset.

Maximum distance from road defaults to null (self-hosted only)

The maximum distance from road parameter now defaults to null for self-hosted instances, meaning no distance limit is applied unless you configure one explicitly. See Installation instructions for details.

1.4

Insights (preview)

Our new Insights feature lets you track the quality and behavior of your planning datasets over time. Instead of reviewing individual results in isolation, you can now monitor key metrics across your last 30 datasets or across a 1-week, 1-month, or 3-month window. You can filter by dataset tags to focus on specific business units, regions, or planning types, and customize which input and output metrics are shown. This makes it easy to spot if changes improve or degrade solution quality, or whether key metrics are trending in the right direction over time. See Insights for more information and to get access.

Searchable sub-group select for configuration overrides

The configuration override selector now supports search and sub-group organization, making it easier to find and apply overrides in larger configurations.

1.3

Bug fixes and stability improvements

This release includes several smaller bug, stability, reliability, and security fixes.

1.2

Radar chart in the Comparison UI

When comparing three or more datasets, you can now view a radar chart of key metrics alongside chosen priority metrics, allowing for better customization of and insights into your comparison reports. Additionally, you can now compare the configuration and constraint weights of two datasets directly in the comparison UI, not just the output metrics. This makes it easier to understand what drove a difference in results. See Comparing datasets for more details.

Validation warnings and errors surface in the UI

Input validation warnings and errors from the model are now displayed in the UI, with machine-readable types. Validation issues are currently only shown for the Field Service Routing model.

1.1

Real-time updates to plans list

The datasets overview page in the platform now updates in real-time when new datasets are submitted or being solved.

1.0

Configuration overrides in submit, re-solve, and patch dialogs

When submitting a new plan, re-solving, or patching an existing dataset, you can now specify configuration overrides directly from the UI dialog. This makes it easy to quickly experiment with small changes, e.g. disabling a specific constraint or tweaking a termination setting, without modifying your configuration profile. Overrides take priority over the values defined in the profile. The resulting configuration that will be applied can be validated on the dataset’s configuration page. See the configuration documentation for more details.

Solve queue priority in submit, re-solve, and patch dialogs

When submitting a new plan, re-solving, or patching an existing dataset via the UI, you can now set the solve queue priority directly from the dialog. See Solve queue for more details.

Comparison UI improvements

Move evaluation speed and move evaluation count are now visible in the comparison UI. See Comparing datasets for more details.

Faster dataset detail page

General speed improvements make the dataset detail page load more responsively.

New Helm chart for self-hosted installations (self-hosted only)

This release introduces a renamed Helm chart (timefold-platform-selfhosted, previously orbit-platform). If you self-host Timefold, a one-time update to your upgrade command is required to reference the new chart. See the v1.0.0 upgrade guide for details.

0.63

Solve queue priority in submit and re-solve dialogs

When submitting a new plan or re-solving an existing dataset via the UI, you can now set the solve queue priority directly from the dialog. Previously, priority could only be configured through the API or in the UI after submission.

Audit log action type descriptions

Hovering over an action type in the Audit Log now shows a short description, making it easier to understand what each event represents without leaving the page. See Audit log for more details.

0.62

Solve queue for controlled concurrency (optional)

We’ve introduced a new Solve queue that automatically queues solve requests when a tenant’s concurrent threads limit is reached. Instead of being rejected, datasets are accepted, and started automatically as soon as capacity becomes available. The queue is isolated per tenant, processes datasets based on priority and submission time, and can be monitored and managed via Manage tenant → Solve queue (admins can reprioritize queued datasets; users have read-only visibility). By default, tenants are configured so that existing behavior doesn’t change. Read the Solve queue documentation.

Command palette for faster navigation

You can now use the Command Palette to quickly navigate through the platform. Press CMD+K (or Ctrl+K on Windows/Linux) to open the palette and jump directly to specific sections of the app without manually browsing through menus.

Saved comparisons (preview)

If you’re part of the comparison preview program, you can now save comparisons to revisit later or share with other tenant members. Previously, comparisons were temporary; you can now persist the selected datasets and full comparison configuration, name and describe the comparison for clarity, and choose whether it remains private or is shared with other members of your tenant. See the Comparison UI documentation for more details.

Patch existing datasets in the UI (preview)

You can now submit patches to existing datasets directly from the UI, powered by the /from-patch endpoint. This allows you to apply incremental changes without resubmitting the full dataset before re-solving. The /from-patch endpoint is currently in preview and only available to users enrolled in the preview program. See the /from-patch documentation for details.

0.61

Improved solver result visualization with configurable, persistent graphs

You can now choose which score and metric graphs to display and combine multiple graphs to better understand solver tradeoffs and correlations. See Interpreting dataset results for more details.

Automatic map selection

You can now configure "auto-select" for vehicle maps, reducing configuration overhead and improving performance. See automatic map selection for details.

Kubernetes Gateway API support (self-hosted only)

The Timefold Platform now supports the Kubernetes Gateway API as an alternative to Ingress. For self-hosted deployments, Gateway API support is currently optional, but we recommend planning a migration. The existing NGINX Ingress approach is approaching end-of-life, and the Gateway API is the long-term replacement in Kubernetes. If you self-host Timefold, see the v0.61.0 upgrade section in the installation documentation for optional migration instructions, including Gateway API setup, cert-manager configuration, and required Helm changes.

Filtered OpenAPI specification for platform (self-hosted only)

Certain Platform APIs aren’t available when you’re self hosting the platform (e.g. APIs to retrieve webhook logs). The OpenAPI spec will now reflect this.

0.60

Webhook logs

Webhook logs have been enhanced for events sent since this v0.60 release: they now include duration information (when available), and you can resend a webhook notification directly from the log by opening the event details.

See Webhook logs for more details.

0.59

Score analysis has been improved

Score Analysis has been improved with clearer insights into how constraints affect solution quality. The table now shows icons for disabled and locked constraints, and includes filters to focus on matched, triggered, or all constraints for easier analysis. See Interpreting dataset results for more information.

Secrets management is now available

Secrets allow you to securely store and reuse sensitive values such as API keys and tokens without exposing them in configuration screens or logs. Secrets are encrypted, write-only, tenant-scoped, and can be safely referenced in supported integrations like webhooks and external map providers. See Secrets Management for more information.

API key permissions have been refined

API key permissions have been refined to give you more precise control over what each key can do. Permissions are now better aligned with API operations, making it easier to follow the principle of least privilege and safely support common integration patterns. See API Key permissions for more information.

Batch deletion of datasets is now supported

Batch deletion of datasets is now supported, allowing you to clean up multiple datasets at once and manage test or outdated data more efficiently.

Dataset configuration transparency has improved

Dataset configuration transparency has improved, as the configuration page now shows which configuration profile was used and the effective configuration values applied during the solve.

Configuration profile editing is safer

Configuration profile editing is safer, with a warning shown when navigating away while there are unsaved changes. See Configuration profiles for more details.

Various bug fixes and stability improvements

Various bug fixes and stability improvements, including faster loading of the datasets overview and dataset detail pages, resulting in a more responsive UI, as well as improved validation feedback when submitting invalid JSON through the UI, making errors easier to understand and fix.

0.58

Model version information for each dataset

Model version data is now stored directly on each dataset at the time it is submitted or solved. This includes the model version, SDK version, build time, build commit, and branch. These fields can be shown as columns or used as filters in the datasets overview, making it easier to trace which model version produced which results.

Total move evaluation count

We now display the total move evaluation count across the dataset sidebar, the datasets overview, and the comparison UI, providing a clearer view of solver activity and performance.

Platform version information

To help verify which platform version is currently running (especially in rollback scenarios), the platform version is now shown on the Tenant Settings > Details page.

0.57

UI improvements and stability fixes

This release includes minor UI improvements and bug fixes (such as making sure that adding or removing users from a tenant is reflected in the UI immediately, and cleanup of deprecated audit log types), and general stability improvements across the platform.

0.56

Webhook failure notifications

The Timefold Platform now provides smarter failure alerts for webhooks. After 10 failed retries, Tenant administrators receive an email notification with a direct link to the webhook logs in the platform. (To prevent spam, you’ll only get one email per webhook every two hours, even if multiple failures occur, and no emails once the webhook starts working again.) See Webhooks → Retry Strategy for details.

Webhook logs

The Timefold Platform now provides detailed logs for webhooks. You can view these logs under Tenant settings → Webhooks → [your webhook]. Webhook activity logs include: Timestamp, Status, Model name and version, Dataset ID and a Message (indicating why it failed). (Logs are retained for up to 30 days.) See Webhooks → Logs for details.

Model version information

On Tenant Settings → Models, you can now choose to see model version, sdk version, solver version, build time and build commit on the overview table. Previously this information was only available in the dialog. Use "manage columns" (top right) to change which columns are shown. This helps when running customized models or comparing installed versions against changelog releases.

Maximum payload size increased

When submitting datasets to the Timefold APIs, the maximum size limit of the payload has been increased to 100mb (compressed) and 2gb (uncompressed). See "Dealing with large datasets" for details.

0.55

Filter datasets by status

You can now filter datasets based on their status (e.g. "Solving", "Dataset invalid", "Failed", etc.). This makes it easier to monitor ongoing solves or quickly find datasets that need attention. Learn more about dataset statuses.

Improved maps stability and fixed border-region routing bug

There is now better error handling and reporting when invalid coordinates are provided, and we resolved an issue where route distances were calculated incorrectly for locations near map or country borders.

0.54

Real-time replanning with /from-patch (preview) and related UI updates

We’re introducing a preview API endpoint for real-time replanning: /from-patch. This allows you to make incremental changes to an existing dataset instead of resubmitting the full dataset (for example, updating an employee’s availability, pinning a shift, adding urgent visits) while keeping traceability across versions. Each patched dataset is a new revision linked to its parent, making it easier to experiment, roll back, and analyze the impact of changes. This feature is currently available as a preview.

You’ll see the Platform UI has been updated to reflect these new capabilities:

  • Single datasets now show the parent and origin dataset IDs.

  • A dropdown lets you easily jump between revisions of the same plan.

  • On the Plans overview, you can toggle between showing only original plans versus all revisions, including datasets created from patches.

  • We have updated the webhook configuration UI so you can now also filter on the new datasets statuses (DATASET_COMPUTED and DATASET_INVALID) introduced in v0.53.

  • At the API level we have made sure that datasets created from other datasets (via {id}/from-input and {id}/from-patch endpoints) now inherit their configs from their parent, unless overridden.

Read the full guide on real-time planning with /from-patch (preview).

(Customizable) HMAC support for webhooks

You can now secure your webhook integrations with HMAC authorization. This verifies that requests come from the Timefold Platform and haven’t been tampered with, protecting against forged or replayed requests.

By default, webhooks are signed using a standard HMAC header format (as used by many APIs), but you can also customize how signatures are calculated and sent, including using the request path or your own header names.

Read the updated webhooks documentation, including HMAC examples.

Ability to submit plans as a reference dataset

You can now submit a planning problem as a static plan, without triggering further optimization. The submitted problem will still be scored and evaluated, and input and output metrics will be computed. Do this by calling the endpoints to submit planning problems with the parameter ?operation=NONE. (See API specs for details.)

You can use this functionality to compare how plans have been executed in reality with plans optimized in Timefold, or compare plans optimized by other software to plans optimized in Timefold.

Ability to set a default configuration profile

You can now set a default configuration profile for each model. This configuration profile is automatically used when creating new datasets, unless another profile is specified. Default profiles make it easier to standardize settings across datasets and ensure consistency when experimenting with different configurations. Read the configuration profile documentation.

Improved filtering the audit log

In Tenant settings → Audit log, you can now filter by multiple event types at once. This makes it easier to review related changes together. For example, viewing all adds, updates, and deletes for configuration profiles, or tracking multiple types of changes to Tenant Members. See Audit log for more details.

Zooming on the score graph

You can now select and zoom in on a portion of the score graph to inspect that part of the solving process in more detail. This helps you spot subtle improvements or changes that may not be visible in the full view. The score graph shows how a solution’s score evolves during solving and, when hovered, displays the corresponding output metrics. This helps you understand whether the solution is still improving and what trade-offs the model is making. See Solve graphs for more details.

Tags a separate column on the Plans overview

On the Plans overview page, tags have moved to their own column, so you can now control visibility and importance of showing this in the overview via "Manage columns."

Confirm tenant member delete with email

To avoid mistakes, we’re now asking you to confirm deletion of a tenant member by typing their email, instead of their name.

0.53

Terminology update - from "runs" to "datasets"

We are renaming "runs" to "datasets" throughout the platform and documentation. We are doing this in preparation for new functionality coming later. (This will include the ability to easily make changes to a dataset, or comparing optimized datasets with reference datasets.) Both in the UI, in the documentation, in the OpenAPI specs of the models, and in the API responses you will see related changes. Any changes to the model API’s are backwards compatible.

Dataset ID improvements

From the overview of datasets you can now easily filter on dataset id, and on the detail page of a dataset we’ve added a quick copy-to-clipboard option.

Step count smart termination

We have added a smart termination that stops the solve operation after a predetermined amount of steps. This termination isn’t recommended for production use, but useful to benchmark your models, configurations and datasets. You can configure the termination via a configuration profile in the Platform UI or directly when submitting datasets. See configuration profiles for more details.

0.52

Stability, security, and performance improvements

This release is primarily focused on strengthening the platform with multiple bug fixes, dependency updates and maintenance, and security upgrades.

0.51

New Benelux + Germany map

A new map covering Belgium, the Netherlands, Luxembourg, and Germany is now available. See Available maps for an overview of all available maps.

Edit names and tags of in-progress runs

You can now update the names and tags of runs that are still scheduled or in progress, making it easier to classify and organize your runs.

0.50

Model build information in tenant settings

You can now view detailed build info for your models directly in tenant settings, including: Solver version, SDK version, Build commit, Build time. This helps you verify the version that is being used. (Especially useful for customers that run custom versions of models.)

New smart termination: "After initial solution"

This option stops a run immediately after the construction heuristic produces the first solution. It’s useful when you want a quick look at the initial plan before further optimization. See solve settings to learn about the parameter.

0.49

UI improvements and bug fixes

This release includes several minor UI improvements (including better rounding of distances in output metrics) and bug fixes (including APIs sometimes returning a faulty 500 HTTP error) for the Timefold Platform.

0.48

Maintenance release: stability and security

This release is mostly focused on stability and protection of the platform. It introduces several bug fixes, dependency maintenance, and security upgrades.

0.47

Audit log filters

Some audit log event types were missing from the filtering options. These are now correctly displayed. See Audit log for more details.

Improved "New Run" dialog

We’ve enhanced the user experience when launching a new run for models with a large number of demo datasets.

0.46

"Input" now showing unprocessed file

For any new runs, the "Input" page for a Model Run will now show the JSON file as it was submitted to the platform, without pre-processing. Before today we showed a version where default configuration values (e.g. from the configuration profile or tenant plan) were mixed in.

0.45

Support for external map providers for the Cloud platform

We now also support connecting external map providers to tenants on the Timefold Cloud Platform, not only on self-hosted installations. Learn more about external map providers. We have also made sure any configuration changes to location sets, maps deployments and external providers are logged to the Audit Log.

Ability to plan routing problems spanning the full US

We now have a map in production spanning the full United States. View all available maps. (We still recommend people pick the map with the smallest fitting region, as it will speed up the solving process.)

Improved dataset lifecycle documentation

We have improved our documentation on the lifecycle of runs in the platform to clarify what happens if a run is cancelled, and when webhooks are triggered.

0.44

Improved member invite flows

When you invite colleagues to your tenant, they will now receive an email with an invitation they must accept. This adds an extra layer of verification and clarity in onboarding.

EU AI Act compliance documentation

We’ve published a new document detailing how Timefold complies with the EU AI Act. It highlights our transparent, deterministic approach and explains what this means for users.

0.43

Ability to configure machine type to run the solving operations

When you set-up a configuration profile, you can now also apply extra scheduling policy labels that let you choose between running solve operations on AMD64 or ARM64 architecture. Configure specific machine types to find the best runtime for your type of dataset and learn which one yields better results.

Maps service documentation

We have improved the Maps service documentation with more detailed information on map availability.

0.42

Filter on configuration profile via Platform UI

It’s now possible to filter the runs overview of your models by the configuration profile that was used. On the overview, click "Add filter", and choose "Configuration profile". We’ve also added Configuration profile as one of the possible columns for your overview. Click on the three dots at the end of the header of the table to choose which columns you want to view. See which configuration profile was used for each run.

0.41

Audit log

We have added the ability to see the audit log of changes made to your tenant via the Platform’s UI. Anytime a user is added or removed, anytime a webhook is created or changed, or other configuration changes, information about this change is logged to the Audit Log. By going to Tenant Settings → Audit Log, you are now able to see those changes. The UI supports filtering for certain types of event, Actor, IP and date. See Audit log for more details.

Ordering of metrics on run overview

It’s now possible to define the order of the columns when seeing the run overview of your model. You can pick from input and output metrics, as well as run data, and decide which information you want to see, and in what order. This change makes it easier for you to compare those metrics between runs you care most about. On the Runs Overview, click the dots at the end of the header row.

Support for multiple vehicle types

We now have support for multiple vehicle types in our Maps service: cars, bicycles, and walking. We have set up a bicycle map for Georgia, USA as a demo. We have also improved our documentation of the maps service.

0.40

Sticky table header for runs overview

When scrolling down your list of runs in the Platform UI, table headers will now stay visible, so it’s easier to know the meaning of the metrics and run properties if you’re comparing lots of runs.

0.39

New smart termination "Diminished returns" as default

There is now a new smart termination option for runs. It’s enabled for all models by default. "Diminished returns" terminates the solver early if expected improvements are minimal. It is used if no "unimproved time" configuration is set. See documentation for more details.

Improved troubleshooting script (self-hosted only)

Improved troubleshooting script and documentation for self-hosted installations to help report version information.

See Improved troubleshooting script for more details.

0.38

See and compare the amount of scheduled entities and other problem size metrics

When viewing details of a single model run, we’ll now also show some metrics related to the input. These metrics indicate the problem size and will give you more context when comparing multiple runs.

Expiry dates for tenant members

In cases where you want colleagues or partners to have temporary access to your Timefold tenant, you are now able to set an expiry date. You can use this feature to e.g. give Timefold Solution Engineers temporary access to your tenant to help you with a certain project or troubleshooting.

Ability to self-host the Timefold Platform on OpenShift

We added support for OpenShift deployment for self hosted installations. See updated Installation instructions for details.

Documentation updates

We have added a guide to help you troubleshoot failing runs for self-hosted installations.

0.37

Support for excluding runs with certain tags when filtering

When filtering the run overview, you can now choose to exclude runs with a certain tag. This gives you greater flexibility in finding and comparing certain runs. (E.g. you could label any simulation runs with a tag, and then exclude it when you want to look at only production runs.)

Self-hosted platforms are now single tenant (self-hosted only)

We’re limiting the ability for self-hosted platforms to create additional tenants. We’re doing this to limit the complexity, and we recommend self-hosted customers have multiple installations of the platform instead. More details about self-hosting the Timefold Platform versus using the Timefold Cloud Platform can be found in this comparison guide.

Rework of run policies

We have reworked the policy limiting the amount of simultaneous runs to check simultaneous threads instead. When you have e.g. 10 simultaneous threads available in your plan, you can use it to do 10 simultaneous runs each using 1 thread, or 5 simultaneous runs each using 2 threads. We have dropped the policy that checks the maximum runs per hour.

0.36

New "Incomplete" status and statuses visualization (breaking change)

We’re introducing a new status "Incomplete", it will be used when a run ends before the construction heuristics phase of the run finished. Previously these runs were marked as successful, but the output would likely not contain all entities. With this new status users now know this is the case - we recommend setting a longer termination time when this happens. Additionally, we’ve added a timeline view of each of the different stages of a run on the Run Detail page, so it’s clearer how long each stage takes.

Different API calls for deletion and termination of runs (breaking change)

We have separated the endpoints to delete a model run from the platform, and to terminate a run in progress. Now the deletion of a run from storage is no longer done when terminating a run, but is instead done in a separate endpoint. To delete a run from the storage, the run must be in a terminated state (complete, failed or incomplete).

Improved configuration profiles

We’ve removed the CPU setting from configuration profiles in favor of threads. We’re also indicating the maximum amount of memory per thread more clearly.

Change to trial process

We’re making a small change to the trial sign-up process - we now ask for some details about your project before approving a trial.

Documentation

We’ve added a how-to guide to explain how and why to categorize your model runs using tags.

0.35

Added optimization gain and metric evolution to Run Details page

We have added the optimization gain (the difference between the first and the last solution) for every metric on the Run Details page. Hover over the score graph to see the evolution of the metrics to understand the tradeoffs the software is making during optimization. See "Interpreting model run results" for more information. These changes are useful to see the real-world impact (in metrics) of the duration of solving and to understand better how different metrics impact each other (e.g. if assigned visits goes up, this also impacts technician costs and to some extent overtime).

Showing constraints per group in score analysis

The Score Analysis overview of a run on the Run Details page now groups all constraints logically. This way you can see related constraints together to understand the model better. Our documentation site explains the features of a model per constraint group, so this way it’ll be easier to connect the features explained in the documentation to how they behave for a specific model run.

Export justifications

We have added an export button to the Run Details page that exports the justifications for a run to a .json file. You can use this to understand which constraints aren’t fully satisfied and why.

Improved maps documentation

We have improved our documentation that explains the maps service. Updates are specifically useful for customers that self-host the platform.

Expired trials cleanup procedure

Expired trials will now automatically be cleaned up when inactive. Trial users will receive an advance notification and have the option to keep their data.

0.34

Configuration profiles

We’ve introduced configuration profiles for the Timefold Platform. With these profiles you can create reusable sets of constraint weights, model configuration parameters and run settings. These profiles will make it a lot easier to do goal alignment, or model benchmarking. We’ve written documentation on how you can use configuration profiles to tweak optimization goals, and how to use them for the Field Service Routing and Employee Shift Scheduling models.

Filtering on dates in the Model Runs Overview

It’s now possible to set specific date ranges when filtering on the Model Runs overview page. This should make it easier to find a specific historic run.

Bug fixes and improvements

We’ve fixed a bug where we showed certain warning messages in the layout of an error message, and where we showed an irrelevant warning about justifications. We’ve improved the handling of events that sometimes caused the status of a run to be incorrectly displayed.

0.33

Webhook filtering options

It’s now possible to define per webhook for which run statuses, names or tags they should trigger. You can use tags to e.g. segment your model runs by region, and then use this feature to trigger different workflows per region. See Webhooks for more information.

Added metadata from the run and model in webhook payload

The payload of a webhook will now contain extra metadata from the run and model. See Webhooks for more information.

Score analysis with justifications is no longer limited to 100 per constraint

Our score analysis API-endpoint now supports downloading the complete set of justifications.

Maps improvements

We have improved the maps service on the platform to better handle locations outside of the map’s region and locations on islands.

0.31

Tag and run name management via UI

You can now edit the name and the tags of a run via the Platform UI (after it’s finished solving). Use this to make specific runs easier to find, or to distinguish between production runs and tests or simulations.

New endpoint to re-run a dataset

POST …/{id}/new-run: Each model now has a new endpoint that allows you to re-run a specific dataset. The endpoint will solve the dataset again, but with the new configuration parameters you submit. This endpoint wants to make it easier to tweak configuration parameters to get to the desired result.

New endpoint to retrieve a run’s configuration

GET …/{id}/config: Each model now has a new endpoint that returns all the configuration parameters that were used for a specific run. You can use this endpoint to audit whether different configuration parameters had an effect on the results of different runs.

IP tracked in Audit Log

The Timefold Platform keeps an audit log for administrative actions. (The audit log isn’t yet exposed in the UI.) For safety reasons, we are now also storing the IP of the user that did the action.

docs.timefold.ai

Our documentation website has been updated with the following improvements:

See docs.timefold.ai for more details.

Improved search

When you use the search on our documentation website, we’ll now only show results from the product you’re looking at. Previously we also suggested articles from other products, which made finding what you were looking for harder.

Dark/Light mode switch

Go to the footer of the documentation site to choose between light or dark for the documentation website. By default we’re still using the system setting, but if you prefer to override it for this specific site, now you can.

0.30

Soft delete of run data

We now have support for restoring deleted runs for a limited amount of time. When you delete a run from your model’s run overview, they are now kept in trash for 7 days. After those 7 days the run will be permanently deleted. During those 7 days you can go to your run overview and add a filter for the property "Deleted". If you filter on those, you can select previously deleted runs and click the Restore button.

Dark Mode

We’re launching Dark Mode on the platform. By default the UI will use your system settings, but if you prefer to override that, go to the footer of the platform to choose between light or dark.

0.29

Tag filtering

Finding the run you’re looking for has just become a lot easier. When you do a run that contains a tag, the UI will now display those tags on the model run details and overview pages. Use the "Add filter" button, or click an existing tag to filter on all runs with that tag. See Categorizing datasets for more details.

Unified error responses (including breaking change for API)

We have made sure error responses for all platform API endpoints now return the same format: { id: "string", code: "string", message: "string", details: … }.

While doing so we changed the /logs endpoints (like /v1/route-plans/{id}/logs) to return a { details: "string" } object. If you depended on this endpoint, this is a breaking change.

Better error reporting when uploading custom files via UI

When you upload a custom JSON file via the Platform UI, validation errors and warnings will now be displayed in a cleaner way. We’ve moved all details to a separate dialog with the option to copy all errors and warnings as a JSON structure.

Improvements to trials

We’re now allowing newly added Tenant admins to also extend trials of models, and we’ve improved the UX when doing so.

Displaying maximum values for resource settings

When making configuration changes for a model, we’ll now display the maximum values for the resource settings (CPUs, memory, and threads), so it’s clear what range of options you have for the model’s configuration.

0.28

End-to-end encryption

All internal network traffic between different components of the Timefold Platform is now end-to-end encrypted. (External traffic was already encrypted.) (For self-hosted installations, see our updated Installation Instructions for how to enable end-to-end encryption.)

Improved Search in Model Runs

The search functionality on the Model Runs Overview page now searches across multiple pages. Searching is case-insensitive and supports partial exact matches.

Stricter password policies

When registering on app.timefold.ai we now enforce three more password policies:

  • You can’t reuse previous passwords.

  • You can’t use passwords from a dictionary of the most common passwords.

  • We disallow passwords that contain any part of provided personal data (like your name, email).

Documentation updates

The platform documentation is restructured. A new high level product diagram was added to our Platform Concepts guide. There is a new guide explaining how to submit feature requests. And we have added documentation comparing using the Timefold Cloud Platform versus self-hosting our platform.

Improvements to model trials

If you’re trialing the Timefold Models, we’ve made a couple of improvements to the process of signing up and extending a trial. All model runs and logs are now also kept for the full duration of the trial.

0.27

Subscribe to get changelog notifications

We are now using a new system for changelog communication. Additionally, you can now filter the changelog on components or types of updates. See the Timefold changelog for more details.

Improved model run logs

The Logs page of a Model Run now contains only the output of the Timefold Solver itself.

Confirmation before deletion

When deleting items in Tenant Settings via the Platform UI (e.g. webhooks, or api keys), we now require users to type the name of the item they’re deleting. We’ve added this extra layer of confirmation for destructive actions that can’t be undone to prevent mistakes.

Hardened tenant selection

Users that are in multiple tenants should no longer experience problems switching between tenants. We have made the tenant ID part of the Tenant Settings pages' URLs so that you can have multiple tabs open from different tenants as well as share urls with colleagues.

0.26

0.26.3

Security fix for Timefold Platform

We have released an update to the Timefold Platform to fix a security issue (affecting versions v0.25.0 and v0.26.2). A certain API endpoint of the platform exposed sensitive keys. This has been remedied with the release of v0.26.3, which was deployed to app.timefold.ai on Oct 17th at 8:26PM GMT+2. We recommend self-hosted solutions to upgrade to v0.26.3 and to revoke the applicable keys:

  • For Azure: secrets.data.azureStoreConnectionString

  • For AWS: secrets.data.awsAccessKey and secrets.data.awsAccessSecret

  • For GCP: secrets.stringData.serviceAccountKey

0.26.2

Redesigned UI and self-service trials

Timefold Platform has a new look. We’ve redesigned the UI to look more modern, professional and clean. Additionally, the platform is now easier to use on mobile devices. Users can now self-register on app.timefold.ai and try out our Timefold Models.

Terms & Privacy Policy updates

Our Privacy Policy and Terms of Use have been updated to govern the use of (trials on) the Timefold Platform.

0.25

Documentation and stability improvements

We have introduced documentation about Scheduling API concepts, to help understand the concepts used in Timefold software.

0.24

Login flow and performance improvements

We have improved the login flow, so we don’t ask for permissions again when you already granted them.

0.23

Pagination and bug fixes

We have added pagination to a model’s run overview.

Documentation updates

There is now documentation about how to interpret the results of a model run, including tips for next steps to take.

0.21

Improved model discovery

You can now easily explore all models that Timefold Platform supports. You can see the features and documentation of other available models even when you’re not logged in, or if you don’t have a specific model installed on your tenant yet.

GZIP support in API

Our API now supports sending compressed payloads and replying with compressed responses. This is especially useful when posting big payloads to the planning endpoints.

Configure multi-threading in the UI

Multi-threading support was added to the API in a previous version, now it’s also available to configure in the platform UI. Go to Tenant settings → Models and create configurations for models to configure the number of threads to use.

Cancel a run during solving

When a run is still solving, you can now stop the solving from the UI.

Improved error pages

We have improved the error pages in our platform. (We hope you’ll never see this work.)

Distinguish initializing and solving states

The platform now distinguishes between when a new run is initializing (e.g. a maps plugin is loading) and when it starts solving. You can see this in the platform’s UI on the Model Run page.

Model maturity documentation

Our platform documentation has been updated to include information about model versions, model maturity labels, and demo data. See Models for more information.

0.20

Multi-threading support via API

When you start a new run of a model with the API, you can now define the number of threads that can be used by the solver. By using multithreading, you can get better results faster. You can specify the number of threads via the config.run.maxThreadCount variable in the JSON payload when starting a new run. Go to your Model’s API Spec page in the platform to learn more. It’s not yet possible to configure this via the platform’s UI.

Option to specify headers for webhooks

It’s now possible to configure one or more headers to send along with your webhooks. You could use this feature to send Authorization headers. See Webhooks for more details.

Configure data retention

On a tenant’s new Configuration page you can now configure how long run data, audit data, and score events should be stored in your tenant’s database.

Added a changelog page

We are introducing a Changelog Page (You’re reading it now) on the platform. We will use this page to communicate new features and changes to the Timefold Platform as well as the models it’s running. Find it via the link in the footer of the platform.

Descriptions for model KPIs

On the "Run Overview" page we have added descriptions to the KPIs of the run to make it easier to understand what each KPI means.

Login with email and password

In addition to logging in with your Microsoft or Google account, we’ve now made it possible to register with other email addresses. Various improvements behind the scenes include better error handling and improvements in pod startup time.

0.19

Initial version of the Timefold Platform is live

We are really proud and happy to make the Timefold Platform available in production for the first time!

This initial public version of the Timefold Platform includes:

  • a REST API for easy use of the Timefold Models,

  • a UI for following up on the status and outcomes of Model Runs (including score results, score analysis results with constraint scores and justifications,

  • and a best score graph showing the evolution of scores during solving),

  • and tenant management, including member, API key, and webhook management.

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