Docs / Reference / API
API reference
Base URL https://api.meridian.example/v1. All requests need
Authorization: Bearer <key>. All responses are JSON.
Forecasts
GET /forecasts
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sku | string | yes | Your SKU identifier |
| location | string | yes | Warehouse or store code |
| horizon | int | no | Days ahead, 1–90. Defaults to the configured value. |
| include_drivers | bool | no | Return the factors behind the number |
POST /forecasts/batch
curl https://api.meridian.example/v1/forecasts/batch \
-H "Authorization: Bearer $MERIDIAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"sku":"SKU-10492","location":"WH-BERLIN"}],"horizon":28}'
Batch accepts up to 1,000 items per request and is rate limited separately from single lookups.
Proposals
GET /proposals ·
POST /proposals/:id/approve ·
DELETE /proposals/:id
{
"id": "prop_4471",
"sku": "SKU-10492",
"location": "WH-BERLIN",
"quantity": 640,
"rationale": "P50 demand 640 over 28d, on-hand 120, lead time 21d",
"status": "pending",
"expires_at": "2026-09-01T00:00:00Z"
}
Rate limits
| Endpoint | Limit | Window |
|---|---|---|
| /forecasts | 600 | per minute |
| /forecasts/batch | 20 | per minute |
| /proposals | 120 | per minute |
Every response carries X-RateLimit-Remaining and X-RateLimit-Reset.
A 429 includes Retry-After in seconds — honour it rather than backing off blindly.