> ## Documentation Index
> Fetch the complete documentation index at: https://developers.kardinal.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Version history of Kardinal's Route Optimization API: what changed in each release, including new behavior, changed responses, and fields you need to update.

This changelog covers the Route Optimization API itself. The SDKs have their own: see the [Python SDK changelog](/sdks/python/changelog) and the [TypeScript SDK changelog](/sdks/typescript/changelog).

**API update**

* A `maxCumulatedCost` entry in `globalConstraints` without `maximum` is now rejected with a `400` `INVALID_VALUE` error. Before, the API accepted it and stored a `maximum` of 0, so the cap allowed no counted cost at all. Add `maximum` to any such entry before you send the plan again.
* A tag in the `costsByResourceTag` of a `maxCumulatedCost` entry that no resource of the plan carries now raises a warning in the response. The plan is still accepted, and the tag still counts nothing.
* See [Capping a fleet-wide cost with `maxCumulatedCost`](/guides/cost-modeling#capping-a-fleet-wide-cost-with-maxcumulatedcost).

**Docs fix**

* The API did not change.
* `height`, `width`, and `length` of a `truck` profile have always been whole numbers of centimetres. The reference said metres until this fix.
* A whole number in metres, such as `length: 12`, is accepted with no error and read as 12 centimetres. Check any truck profile that you wrote from the old reference. See [Data model](/reference/data-model#vehicle-profiles).

**v1.0.1**

* `GET /plans` (light representation) is now always paginated — previously, no paging was applied unless `page` or `itemsPerPage` was explicitly set.
* `PUT /plans/{planId}/running` now returns an `EnvelopedPlanReference` body instead of an empty response.
* The light plan representation gains the same metadata fields as the full `Plan` object: `state`, `nbResources`, `nbOrders`, `createdAt`, `createdBy`, `updatedAt`, `updatedBy`, `archivedAt`.
* Several plan and paging fields that were `nullable` now use field absence instead — check for the field's presence rather than for a `null` value.
* New `Warning` concept: non-blocking amendments applied to an accepted payload (traffic turned off, crow-fly forced, `maxOptimizationDuration` clamped, and so on) are now surfaced on five response envelopes instead of silently applied.

**v1.0.0**

First public release of the Kardinal Route Optimization API.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.