Optimize Cluster
POST/optimize/cluster
Optimize Cluster
Request
Query Parameters
Default value: true
- application/json
Body
required
- Array [
- ]
The id of the wave.
The name of the site.
Single or list of starting locations.
Single or list of ending locations.
parameters object
Default value: false
Allow interpolation of missing input locations
How a location name should be processed before looking it up in the warehouseAn example could be that locations are stored as 'A1-24-006A', but the last character is irrelevant.In this case, the matching regex would be r'^(A1-[0-9]{2}-[0-9]{3})([A-Z])$'and the replacement regex would be r'\1'.Multiple regexes can be provided. If two or more regexes match, the first match is used.
Default value: true
If false, a location that does not match any of the provided regexes will be considered invalid.If true, the location will be used as-is if no regex matches.
Possible values: [ASIS, OPTIMIZED, AUTOSTORE]
Default value: OPTIMIZED
The routing policy to use when generating the route. Options are: RoutingPolicy.ASIS (do not optimize the route), RoutingPolicy.OPTIMIZED (optimize the route using the default optimization algorithm), RoutingPolicy.AUTOSTORE (use an autostore specific algorithm, this also removes a lot of input restrictions).
[DEPRECATED] Whether or not to use the asis routing when "optimizing" the route or cluster. Use "routing_policy" instead. If set, this will override "routing_policy" to ASIS for backward compatibility.
Possible values: [IGNORE, REMOVE_PICKS, REMOVE_ORDERS]
Default value: IGNORE
How to handle pick violations. Options are: PickViolationHandling.IGNORE, any pick violation will throw a validation exception. PickViolationHandling.REMOVE_PICKS, any pick violation will be removed from the input. PickViolationHandling.REMOVE_ORDERS, any order with a pick violation will be removed from the input.
duration object
Parameters related to route duration estimation.
The average speed at which the picker moves, expressed in warehouse units per second.
The average handling time per pick, expressed in seconds.
The average overhead time to start and end a route, expressed in seconds.
capacity object
The capacity constraints for each cluster.
A custom stop condition for the clustering algorithm.
custom_stop_condition_parameters object
The parameters values for the custom stop condition.
Default value: [object Object]
The parameters values for the custom stop condition.
The maximum number of orders that can be assigned to a single cluster.
The maximum number of locations that can be visited in a single cluster.
The maximum volume that can be transported in a single cluster. (1D packing)
The maximum weight that can be transported in a single cluster.
schedule object
The parameters used for scheduling if required.
Possible values: >= 1
Default value: 2
The number of workers available for the route or cluster.
The start time for the schedule
Default value: false
Whether or not to generate a schedule for request orders/clusters.
Default value: 60
The target runtime for the clustering algorithm in seconds, only relevant if the clustering policy is OPTIMIZED_BALANCED.
Possible values: [ASIS, OPTIMIZED_MAX, OPTIMIZED_BALANCED, OPTIMIZED_FAST, OPTIMIZED_FULL_CLUSTERS, OPTIMIZED_SCHEDULE]
Default value: OPTIMIZED_BALANCED
The clustering policy to use when generating the clusters. Options are: ClusteringPolicy.ASIS (do not optimize the clustering), ClusteringPolicy.OPTIMIZED_MAX (optimize the clustering using most expensive clustering algorithm for the best distance), ClusteringPolicy.OPTIMIZED_BALANCED (optimize the clustering using a balanced clustering algorithm), ClusteringPolicy.OPTIMIZED_FAST (optimize the clustering using a faster clustering algorithm), ClusteringPolicy.OPTIMIZED_FULL_CLUSTERS (optimize the clustering emphasizing the cluster fill rate).ClusteringPolicy.OPTIMIZED_SCHEDULE (optimize the clustering with scheduling constraints in mind).
Default value: false
Whether or not to actually optimize the clustering. If False, the clustering will only be done as-is.
The maximum number of clusters returned by our API. This implies that some picks in the provided input may not be clustered.
[DEPRECATED] Use capacity.custom_stop_condition instead.
custom_stop_condition_parameters objectdeprecated
[DEPRECATED] Use capacity.custom_stop_condition_parameters instead.
Default value: [object Object]
[DEPRECATED] Use capacity.custom_stop_condition_parameters instead.
[DEPRECATED] Use capacity.max_orders instead.
[DEPRECATED] Use capacity.max_picks instead.
[DEPRECATED] Use capacity.max_volume instead.
[DEPRECATED] Use capacity.max_weight instead.
Extra pass-through data. This is not used by the algorithm, but will be passed to the output.
The timestamp of the request.
picks object[]required
Possible values: >= 1
A list of picks that need to be clustered.
ID to unique identify this pick
The location(s) of the pick in the warehouse.
The sequence number of the pick in the as-is route.Required for calculating as-is distances.
[DEPRECATED]
Lower values (higher priority) will be picked earlier in an optimized pick route.
The id of the SKU on the location.
The quantity of the SKU to pick from the location.
For clustering, the order id of the pick.
The handling unit id of the pick.
The handling unit type of the pick.
Priority of this picks order. Orders will never be clustered with orders of a lower priority.
Time at which the pick/order was created.
Time at which the pick/order needs to be picked.
For clustering, the wave id the pick belongs to.
For clustering, the as-is list/cluster the pick belongs to.Required for calculating as-is clusters.
The sequence of the pick in the optimized cluster using the routing policy defined in the cluster parameters. (Only used in the optimized cluster output).
For clustering, The width of the SKU.
For clustering, The height of the SKU.
For clustering, The depth of the SKU.
For clustering, The weight of the SKU.
A list containing information for every Handling Unit Type
Responses
- 200
- 422
Successful Response
- application/json
- Schema
- Example (from schema)
Schema
- Array [
- ]
- Array [
- Array [
- ]
- ]
- Array [
- ]
Default value: CLUSTER
The site name of the site.
The id of the wave.
The ObjectId of the corresponding request.
The timestamp of the response.
Time our algorithm spent calculating.
An error message, if an error occurred.
invalid_picks object[]
Invalid picks that were not included in the output route, because they were not valid.
ID to unique identify this pick
The location(s) of the pick in the warehouse.
The sequence number of the pick in the as-is route.Required for calculating as-is distances.
[DEPRECATED]
Lower values (higher priority) will be picked earlier in an optimized pick route.
The id of the SKU on the location.
The quantity of the SKU to pick from the location.
The order id of the pick.
The handling unit id of the pick.
The handling unit type of the pick.
Possible values: [Location not found, No matching regex, Order contains invalid pick]
The reason why the pick is invalid.
Default value: cm
The unit of the distance values
Data passed through from the input.
Default value: true
Whether the as-is clusters respect the provided stop conditions.
optimal_clusters object[]
The optimal clusters.
The list_id of the cluster. This is assigned by the clustering algorithm in the case of optimal clusters.In the case of as-is clusters, this is the list_id of the as-is cluster.
picks object[]
The picks in the cluster.
ID to unique identify this pick
The location(s) of the pick in the warehouse.
The sequence number of the pick in the as-is route.Required for calculating as-is distances.
[DEPRECATED]
Lower values (higher priority) will be picked earlier in an optimized pick route.
The id of the SKU on the location.
The quantity of the SKU to pick from the location.
For clustering, the order id of the pick.
The handling unit id of the pick.
The handling unit type of the pick.
Priority of this picks order. Orders will never be clustered with orders of a lower priority.
Time at which the pick/order was created.
Time at which the pick/order needs to be picked.
For clustering, the wave id the pick belongs to.
For clustering, the as-is list/cluster the pick belongs to.Required for calculating as-is clusters.
The sequence of the pick in the optimized cluster using the routing policy defined in the cluster parameters. (Only used in the optimized cluster output).
For clustering, The width of the SKU.
For clustering, The height of the SKU.
For clustering, The depth of the SKU.
For clustering, The weight of the SKU.
Default value: ``
All the order_ids of the picks in the cluster.
The estimated distance of the cluster.
The estimated pick duration of the cluster.
Distance in the asis scenario
Distance in the asis scenario
Distance in the asis scenario
Distance in the asis scenario
schedule objectnullable
The scheduled assignments of the clusters to workers.
Default value: 9999-12-31T23:59:59.999999
The start time of the schedule.
assignments object[]
The assignments of the clusters to workers.
The list_id of the cluster.
The idx of the worker assigned to the list.
The scheduled start time of the list.
The scheduled end time of the list. (start_time + duration)
The maximum release time of all orders in the list.
The minimum due time of all orders in the list.
The number of late orders in the list.
The total tardiness of all orders in the list.
{
"type": "CLUSTER",
"site_name": "string",
"wave_id": "string",
"request_id": "string",
"timestamp": "2025-12-09T13:28:36.129Z",
"computation_time": 0,
"error": "string",
"invalid_picks": [
{
"pick_id": "string",
"location_id": [
"string"
],
"asis_sequence": 0,
"priority": 0,
"sequence_priority": 0,
"sku_id": "string",
"quantity": 0,
"order_id": "string",
"hu_id": "string",
"hu_type": "string",
"location_id_processed": [
null
],
"reason": "Location not found"
}
],
"unit": "cm",
"extra": {},
"asis_respected": true,
"optimal_clusters": [
{
"list_id": "string",
"picks": [
{
"pick_id": "string",
"location_id": [
"string"
],
"asis_sequence": 0,
"priority": 0,
"sequence_priority": 0,
"sku_id": "string",
"quantity": 0,
"order_id": "string",
"hu_id": "string",
"hu_type": "string",
"location_id_processed": [
null
],
"order_priority": 0,
"release_time": "string",
"due_time": "string",
"wave_id": "string",
"list_id": "string",
"optim_sequence": 0,
"sku_width": 0,
"sku_height": 0,
"sku_depth": 0,
"sku_weight": 0
}
],
"order_ids": [
"string"
],
"distance": 0,
"duration": 0
}
],
"optimal_distance": 0,
"asis_distance": 0,
"optimal_duration": 0,
"asis_duration": 0,
"schedule": {
"schedule_start_time": "9999-12-31T23:59:59.999999",
"assignments": [
{
"list_id": "string",
"worker_idx": 0,
"start_time": "2025-12-09T13:28:36.130Z",
"finish_time": "2025-12-09T13:28:36.130Z",
"release_time_max": "string",
"due_time_min": "string",
"n_late_orders": 0,
"tardiness": 0
}
],
"n_late_orders": 0,
"total_tardiness": 0
},
"n_orders": 0
}
Validation Error
- application/json
- Schema
- Example (from schema)
Schema
- Array [
- Array [
- MOD2
- ]
- ]
detail object[]
loc object[]required
string
integer
{
"detail": [
{
"loc": [
"string",
0
],
"msg": "string",
"type": "string"
}
]
}