What the API covers
The StockFlow Data API is a REST API over the same data the dashboard reads and writes: products and parts, per-location stock levels, active bills of materials and their components, open parts demand exploded through BOMs, sales orders and their lines, work orders and their component requirements, and the underlying stock-movement ledger.
It exists for the integrations that a native connector does not cover — a custom reporting pipeline, an internal tool that needs live stock levels, a script that creates work orders from an external planning system, or a scheduled job replacing a manual CSV export. Everything the API writes runs through the same routines the dashboard itself uses, so the stock ledger, costing, and reservations stay consistent whether a change came from a person clicking in the app or from a script calling the API.
Authentication and access
A key is created under Settings → API Keys, belongs to one warehouse and to the person who created it, and carries a read scope, a write scope, or both. The secret is shown once at creation — StockFlow stores only its hash and cannot recover it if lost, so a lost key has to be revoked and replaced, not retrieved.
Authenticate with either an Authorization: Bearer header or an X-API-Key header. GET /me is the fastest way to confirm a deployment is wired up correctly, since it echoes the key's name, scopes, warehouse, and remaining quota back in one call. API access itself requires an active Professional plan or higher, the same gate as the Shopify, Square, Exact, Yuki, Octopus, and Housecall Pro integrations.
- GET /products, /products/{id} — products and parts, filterable by SKU, status, and search
- GET /inventory — stock levels, filterable by product, location, or below_minimum
- GET /boms — active BOM version and its components
- GET /parts-demand — open demand exploded through BOMs, with a CSV format option
- GET /sales-orders, /work-orders — orders and work orders, with their lines and requirements
- GET /stock-movements — the raw stock ledger
- POST /stock-movements — records a stock adjustment (stock is never set directly, only adjusted through a movement)
- POST/PATCH /products, /sales-orders, /work-orders — create and update records, fulfil orders, record builds
Rate limits and reliability
Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers, so a script can throttle itself before hitting the ceiling instead of discovering it from a burst of 429 responses. The default allowance is 10,000 requests per key per UTC day; requests that fail authentication are not counted against that quota.
Write endpoints that support it accept an idempotency key, so a retried request after a timeout or dropped connection does not double-post the same stock movement or order — worth using on anything that runs in a retry loop.
Related resources
Trusted by small businesses
What our customers say
“Super Kind! Quick replies from their support and very easy fixes, changed the dashboard a bit and customized it. Also gave me 450 items extra on the free plan just for me. Highly recommend and again great service!”
“Best customer service! Stockflow's customer support is fast and extremely helpful. They assisted me with customization of the software to improve my experience as a user.”