Reorder plan from your SKU sales, stock and lead times
Reorder plan from your SKU sales, stock and lead times: what to order now, how many, what is overstocked, where cash is stuck. PDF + JSON.
Asked 1900.0x its listed price for its own exampleour last check, 2026-10-01
1 of 1checks answered this week
699 msmedian answer time
$0.01listed price per call
$19.00price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://api.botx402.io/api/v1/agent/inventory-reorder/run
| Category | Market data |
|---|---|
| Provider host | api.botx402.io |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 0 from 0 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-01 | valid payment request | 402 | $19.00 | 699 ms |
Example input (from the provider)
{
"body": {
"inputs": {
"as_of": "2026-09-30",
"currency": "USD",
"defaults": {
"lead_time_days": 14,
"safety_days": 7,
"target_cover_days": 30
},
"skus": [
{
"moq": 50,
"on_hand": 40,
"on_order": 0,
"sku": "MUG-BLUE",
"title": "Blue enamel mug",
"unit_cost": 6.5,
"unit_price": 18,
"units_sold": 180
},
{
"on_hand": 0,
"order_multiple": 12,
"sku": "MUG-RED",
"title": "Red enamel mug",
"unit_cost": 6.5,
"unit_price": 18,
"units_sold": 95
},
{
"on_hand": 300,
"on_order": 100,
"sku": "TOTE-NAT",
"title": "Natural canvas tote",
"unit_cost": 9,
"unit_price": 24,
"units_sold": 12
},
{
"on_hand": 75,
"sku": "POSTER-A3",
"title": "A3 poster",
"unit_cost": 2,
"unit_price": 15,
"units_sold": 0
},
{
"days_out_of_stock": 20,
"lead_time_days": 30,
"on_hand": 25,
"on_order": 40,
"sku": "CANDLE-SM",
"title": "Small candle",
"unit_cost": 4,
"unit_price": 12,
"units_sold": 60
}
],
"window_days": 90
}
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"connection_id": {
"description": "Long-lived OAuth handle from POST /api/v1/agent/connections/{provider}",
"type": "string"
},
"email": {
"description": "Optional. When set, fulfillment emails the result PDF link.",
"format": "email",
"type": "string"
},
"inputs": {
"additionalProperties": false,
"properties": {
"as_of": {
"description": "Last day covered by the sales figures (YYYY-MM-DD). Echoed in the report.",
"format": "date",
"type": "string"
},
"currency": {
"description": "ISO currency code for prices and costs. Display only. Defaults to USD.",
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"defaults": {
"additionalProperties": false,
"description": "Fallbacks for SKUs that do not set their own. lead_time_days is required here unless every SKU sets it.",
"properties": {
"lead_time_days": {
"maximum": 365,
"minimum": 0,
"type": "integer"
},
"safety_days": {
"maximum": 365,
"minimum": 0,
"type": "integer"
},
"target_cover_days": {
"description": "Days of stock an order should cover on top of lead time and safety days. Defaults to 30.",
"maximum": 365,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"skus": {
"items": {
"additionalProperties": false,
"properties": {
"days_out_of_stock": {
"description": "Days in the window the SKU had no stock. Missing means 0. Cannot exceed window_days.",
"maximum": 365,
"minimum": 0,
"type": "integer"
},
"lead_time_days": {
"maximum": 365,
"minimum": 0,
"type": "integer"
},
"moq": {
"description": "Minimum order quantity. An order below it is raised to it.",
"maximum": 1000000000,
"minimum": 1,
"type": "integer"
},
"on_hand": {
"maximum": 1000000000,
"minimum": 0,
"type": "integer"
},
"on_order": {
"description": "Units on open purchase orders. Assumed to arrive after lead_time_days.",
"maximum": 1000000000,
"minimum": 0,
"type": "integer"
},
"order_multiple": {
"description": "Case pack. Order quantities are rounded up to a multiple of it.",
"maximum": 1000000000,
"minimum": 1,
"type": "integer"
},
"safety_days": {
"maximum": 365,
"minimum": 0,
"type": "integer"
},
"sku": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"target_cover_days": {
"maximum": 365,
"minimum": 1,
"type": "integer"
},
"title": {
"maxLength": 200,
"type": "string"
},
"unit_cost": {
"minimum": 0,
"type": "number"
},
"unit_price": {
"minimum": 0,
"type": "number"
},
"units_sold": {
"description": "Net units sold in the window (after returns).",
"maximum": 1000000000,
"minimum": 0,
"type": "integer"
}
},
"required": [
"sku",
"units_sold",
"on_hand",
"unit_price",
"unit_cost"
],
"type": "object"
},
"maxItems": 800,
"minItems": 1,
"type": "array"
},
"window_days": {
"description": "Days of sales history the units_sold figures cover. Defaults to 90 when omitted.",
"maximum": 365,
"minimum": 28,
"type": "integer"
}
},
"required": [
"as_of",
"skus"
],
"type": "object"
}
},
"required": [
"inputs