Developer contract · v1

Case Matching API

The dimension match engine on this site is a standalone module, not markup. The same algorithm and the same product database are exposed as POST /api/case-match so a mobile app, a CRM, a partner portal or an AI agent can produce identical recommendations to the website.

Request

Units are millimetres and kilograms. All dimension fields are required; the rest are optional.

{
  "length": 620,
  "width": 420,
  "height": 280,
  "weight_kg": 18,
  "clearance_mm": 30,
  "quantity": 500,
  "application": "telecommunications",
  "wheels": true,
  "waterproof": false,
  "impact": true,
  "foam": true,
  "handle": true
}

Response

{
  "result": "match",
  "total_candidates": 41,
  "recommended_case_ids": ["KX-8-6220", "KX-8-6823", "KX-8-8421"],
  "recommended_cases": [
    { "tier": "Option A", "tier_label": "Best fit",
      "product": { "sku": "KX-8-6220", "url": "/products/.../kx-86220/",
                   "internal": [538,408,180], "external": [620,475,199],
                   "internal_volume_l": 39.5, "usable_interior_volume_l": 34.0,
                   "net_weight_g": 9000, "shell_material": "PP" },
      "fit_score": 91, "clearance_mm": [18, 8, 0], "volume_ratio": 1.24 }
  ]
}

When nothing clears the envelope the response is deliberately not an empty list:

{
  "result": "no_standard_match",
  "custom_case_solution": "No standard case in the current range closely matches your equipment dimensions. A custom OEM case or mould solution may be considered.",
  "request_more_information": ["equipment_dimensions","equipment_weight","quantity",
    "estimated_annual_quantity","application","photos","drawings"]
}

Algorithm, in order

01

Dimension filter — internal L, W and H must each exceed envelope + clearance.

02

Weight filter — packed mass + empty mass over 25 kg without wheels is excluded.

03

Feature filter — wheels, sealing option, lock, handle and foam are hard constraints.

04

Application filter — sector must appear in the model's application set.

05

Fit score — unused volume dominates, then evenness of slack, then empty mass, then feature bonuses. Clamped to 35-99.

06

Three tiers — Best fit, More interior space, Alternative solution.

Data source

One file: /assets/data/products.json. Product pages, filters, datasheets, llms.txt and this API all read it, so no consumer can be shown a different dimension from another.

Status on the preview build

This is a static preview. The reference implementation of the algorithm ships in /assets/js/main.js as window.KXCaseMatch(request, products) and is the exact code the website calls. On deployment the same function is wrapped by a server endpoint so non-browser clients can call it; the request and response shapes above are the contract it must satisfy.

Related contracts

RFQ submission

/api/rfq/ — the structured enquiry payload, the reference-number rule and the CRM state machine.

Product data

products.json — 155 models with measured dimensions and a three-level evidence tag on every protection claim.