Skip to main content
Coming Soon — This endpoint is under active development and not yet available. Join the waitlist to be notified at launch.

When to use this

Use /supply-performance when you want to:
  • Monitor closing stock and prevent stockouts or overstock
  • Track service levels across distribution centers
  • Identify which DCs are underperforming on fill rate
  • Build an inventory health dashboard or alert system

Key metrics

FieldDescription
closingStockMonth-end inventory in units
closingStockGSVClosing stock valued at gross sales value
serviceLevel% of customer demand met on time (0–1)
dispatchVolumeUnits dispatched out of the DC in the period
storageAndHandlingCostCost of warehousing in the period (plan currency)

groupBy options

ValueGroups by
dcDistribution center
skuIndividual product SKU
regionGeographic region (aggregates across DCs)

Example: Flag DCs with service level below 95%

resp = client.get("/supply-performance", params={
    "planId": "plan_9xKz2",
    "scenarioIds": "scen_committed",
    "interval": "M",
    "groupBy": "dc",
    "dateFrom": "2025-01-01",
    "dateTo": "2025-03-31",
})

scenario = resp.json()["scenarios"][0]

at_risk = [
    row for row in scenario["series"]
    if row["serviceLevel"] < 0.95
]

for row in at_risk:
    print(f"⚠️  {row['groupKey']} | {row['period']} | SL={row['serviceLevel']:.1%}")
Output:
⚠️  DC-PARIS   | 2025-01 | SL=91.2%
⚠️  DC-NAIROBI | 2025-02 | SL=88.7%

Combining with demand data

A common pattern is to pair supply performance with demand forecast data to compute a coverage ratio (weeks of stock):
demand = client.get("/demand-forecast", params={
    "planId": "plan_9xKz2",
    "scenarioIds": "scen_committed",
    "interval": "M",
    "groupBy": "region",
}).json()

supply = client.get("/supply-performance", params={
    "planId": "plan_9xKz2",
    "scenarioIds": "scen_committed",
    "interval": "M",
    "groupBy": "region",
}).json()

# Build a coverage map: closing stock / monthly demand
for d_row, s_row in zip(demand["scenarios"][0]["series"], supply["scenarios"][0]["series"]):
    if d_row["demandVolume"] > 0:
        weeks_coverage = (s_row["closingStock"] / d_row["demandVolume"]) * 4.33
        print(f"{s_row['groupKey']} {s_row['period']}: {weeks_coverage:.1f} weeks of stock")