Api Endpoint

handel.halowerk.com

Takes a warehouse as a table and returns a placement. You supply the storage locations with their walking distance to the pick-and-drop point and, where they exist, their weight and volume limits; you supply the SKUs with pick frequency, weight and volume; and you may supply the joint-pick pairs.

Open interactive test console

Offering

Provider
handel.halowerk.com
Method
POST
Offering type
Api Endpoint
Transport type
http
Category
Business And Commerce
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://handel.halowerk.com/v1/slotting-plan
MIME type
Not provided
First seen
2026-10-16T01:58:03.323Z
Last seen
Tags
None supplied

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.005 USDC
Atomic price: 5000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "5000",
    "payTo": "0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E"
  }
]

Observed health

Status
Healthy
Latest latency
316 ms
Average latency
805 ms
HTTP status
204
Last checked
Reachability
100% over 8 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "additionalProperties": false,
  "properties": {
    "body": {
      "additionalProperties": false,
      "properties": {
        "abc_share_pct": {
          "default": [
            80,
            95
          ],
          "description": "Cumulative pick share in percent that ends class A and class B. First value must be smaller than the second.",
          "items": {
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          },
          "maxItems": 2,
          "minItems": 2,
          "type": "array"
        },
        "affinities": {
          "description": "Pairs of SKUs that are picked together. Used to slot them near each other.",
          "items": {
            "additionalProperties": false,
            "properties": {
              "joint_picks_per_period": {
                "description": "How often the two are picked in the same order, in the same period as picks_per_period.",
                "maximum": 1000000,
                "minimum": 0,
                "type": "number"
              },
              "sku_a": {
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              "sku_b": {
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "sku_a",
              "sku_b",
              "joint_picks_per_period"
            ],
            "type": "object"
          },
          "maxItems": 5000,
          "type": "array"
        },
        "locations": {
          "description": "The storage locations available for the plan.",
          "items": {
            "additionalProperties": false,
            "properties": {
              "location_id": {
                "description": "Your location identifier. Must be unique within the request.",
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              "max_volume_l": {
                "description": "Volume limit of this location in litres. Omitted means no limit.",
                "maximum": 100000,
                "minimum": 0,
                "type": "number"
              },
              "max_weight_kg": {
                "description": "Weight limit of this location in kilograms. Omitted means no limit.",
                "maximum": 100000,
                "minimum": 0,
                "type": "number"
              },
              "travel_distance_m": {
                "description": "One-way walking distance in metres from the pick-and-drop point to this location.",
                "maximum": 100000,
                "minimum": 0,
                "type": "number"
              },
              "zone": {
                "description": "Free-text zone label, passed through unchanged.",
                "maxLength": 64,
                "type": "string"
              }
            },
            "required": [
              "location_id",
              "travel_distance_m"
            ],
            "type": "object"
          },
          "maxItems": 5000,
          "minItems": 1,
          "type": "array"
        },
        "return_trip": {
          "default": true,
          "description": "Whether the picker walks back the same way. True doubles every distance.",
          "type": "boolean"
        },
        "skus": {
          "description": "The SKUs to place.",
          "items": {
            "additionalProperties": false,
            "properties": {
              "current_location_id": {
                "description": "Where the SKU sits today. Only used for the before-and-after comparison.",
                "maxLength": 64,
                "type": "string"
              },
              "picks_per_period": {
                "description": "Number of picks in the period you are planning for. The period itself is yours; it only has to be the same for every SKU.",
                "maximum": 1000000,
                "minimum": 0,
                "type": "number"
              },
              "sku": {
                "description": "Your SKU identifier. Must be unique within the request.",
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              "volume_l": {
                "description": "Volume of one storage unit in litres. Checked against max_volume_l of the location.",
                "maximum": 100000,
                "minimum": 0,
                "type": "number"
              },
              "weight_kg": {
                "description": "Weight of one storage unit in kilograms. Checked against max_weight_kg of the location.",
                "maximum": 100000,
                "minimum": 0,
                "type": "number"
              }
            },
            "required": [
              "sku",
              "picks_per_period"
            ],
            "type": "object"
          },
          "maxItems": 2000,
          "minItems": 1,
          "type": "array"
        }
      },
      "required": [
        "skus",
        "locations"
      ],
      "type": "object"
    },
    "bodyType": {
      "enum": [
        "json",
        "form-data",
        "text"
      ],
      "type": "string"
    },
    "method": {
      "enum": [
        "POST",
        "PUT",
        "PATCH"
      ],
      "type": "string"
    },
    "type": {
      "const": "http",
      "type": "string"
    }
  },
  "required": [
    "type",
    "method",
    "bodyType",
    "body"
  ],
  "type": "object"
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "properties": {
            "abc_share_pct": {
              "default": [
                80,
                95
              ],
              "description": "Cumulative pick share in percent that ends class A and class B. First value must be smaller than the second.",
              "items": {
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "maxItems": 2,
              "minItems": 2,
              "type": "array"
            },
            "affinities": {
              "description": "Pairs of SKUs that are picked together. Used to slot them near each other.",
              "items": {
                "additionalProperties": false,
                "properties": {
                  "joint_picks_per_period": {
                    "description": "How often the two are picked in the same order, in the same period as picks_per_period.",
                    "maximum": 1000000,
                    "minimum": 0,
                    "type": "number"
                  },
                  "sku_a": {
                    "maxLength": 64,
                    "minLength": 1,
                    "type": "string"
                  },
                  "sku_b": {
                    "maxLength": 64,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "sku_a",
                  "sku_b",
                  "joint_picks_per_period"
                ],
                "type": "object"
              },
              "maxItems": 5000,
              "type": "array"
            },
            "locations": {
              "description": "The storage locations available for the plan.",
              "items": {
                "additionalProperties": false,
                "properties": {
                  "location_id": {
                    "description": "Your location identifier. Must be unique within the request.",
                    "maxLength": 64,
                    "minLength": 1,
                    "type": "string"
                  },
                  "max_volume_l": {
                    "description": "Volume limit of this location in litres. Omitted means no limit.",
                    "maximum": 100000,
                    "minimum": 0,
                    "type": "number"
                  },
                  "max_weight_kg": {
                    "description": "Weight limit of this location in kilograms. Omitted means no limit.",
                    "maximum": 100000,
                    "minimum": 0,
                    "type": "number"
                  },
                  "travel_distance_m": {
                    "description": "One-way walking distance in metres from the pick-and-drop point to this location.",
                    "maximum": 100000,
                    "minimum": 0,
                    "type": "number"
                  },
                  "zone": {
                    "description": "Free-text zone label, passed through unchanged.",
                    "maxLength": 64,
                    "type": "string"
                  }
                },
                "required": [
                  "location_id",
                  "travel_distance_m"
                ],
                "type": "object"
              },
              "maxItems": 5000,
              "minItems": 1,
              "type": "array"
            },
            "return_trip": {
              "default": true,
              "description": "Whether the picker walks back the same way. True doubles every distance.",
              "type": "boolean"
            },
            "skus": {
              "description": "The SKUs to place.",
              "items": {
                "additionalProperties": false,
                "properties": {
                  "current_location_id": {
                    "description": "Where the SKU sits today. Only used for the before-and-after comparison.",
                    "maxLength": 64,
                    "type": "string"
                  },
                  "picks_per_period": {
                    "description": "Number of picks in the period you are planning for. The period itself is yours; it only has to be the same for every SKU.",
                    "maximum": 1000000,
                    "minimum": 0,
                    "type": "number"
                  },
                  "sku": {
                    "description": "Your SKU identifier. Must be unique within the request.",
                    "maxLength": 64,
                    "minLength": 1,
                    "type": "string"
                  },
                  "volume_l": {
                    "description": "Volume of one storage unit in litres. Checked against max_volume_l of the location.",
                    "maximum": 100000,
                    "minimum": 0,
                    "type": "number"
                  },
                  "weight_kg": {
                    "description": "Weight of one storage unit in kilograms. Checked against max_weight_kg of the location.",
                    "maximum": 100000,
                    "minimum": 0,
                    "type": "number"
                  }
                },
                "required": [
                  "sku",
                  "picks_per_period"
                ],
                "type": "object"
              },
              "maxItems": 2000,
              "minItems": 1,
              "type": "array"
            }
          },
          "required": [
            "skus",
            "locations"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST",
            "PUT",
            "PATCH"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}