Inventory Management API

StockFlow's inventory management API: key-authenticated REST endpoints for products, stock levels, BOMs, sales orders, and work orders. Docs, auth, and rate limits.

Inventory Management API

A key-authenticated REST API over the data behind the StockFlow dashboard: products and parts, stock levels, bills of materials, parts demand, sales orders, and work orders. Built for integrations that need to pull inventory data on a schedule, or push production activity back, without a person exporting a CSV.

By Tibeau De Grauwe, FounderUpdated September 2026

  • 25 products free
  • No credit card
  • 10-min setup

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.

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!

Erasable Trading AU

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.

Justin M.

Co-Owner, Consumer Goods

Frequently asked questions

Does StockFlow have a public API?
Yes. It is a key-authenticated REST API covering products, stock levels, bills of materials, parts demand, sales orders, work orders, and the stock-movement ledger, documented at /docs/PUBLIC_API.md with a machine-readable OpenAPI description at /api/docs.
What plan do I need for API access?
An active Professional plan or higher — the same requirement as the Shopify, Square, Exact, Yuki, Octopus, and Housecall Pro integrations. Requests from an account without one are refused with a 402 plan_required error.
Can I write stock changes through the API, or only read?
Both, depending on the key's scope. A write-scoped key can post stock movements, create and update products, sales orders, and work orders, and record BOM builds. Stock quantity is never set directly — it always changes through a posted stock movement, which keeps the ledger accurate.
Is there a rate limit on the API?
Yes — 10,000 requests per key per UTC day by default, with the current limit, remaining quota, and reset time returned on every response so a script can throttle itself proactively rather than reacting to 429 errors.