Safer InventorySafer Inventory
API reference

REST API, all of it.

Everything our dashboard does is on the API. OAuth + scoped tokens, idempotent writes, sliding-window rate limits, structured errors.

Authentication

curl -H "Authorization: Bearer ${SAFER_API_KEY}" \
     https://api.saferinventory.com/v1/products

Generate API keys at /app/settings/api-keys. Scope per token.

Rate limits

  • 600/min sustained per org · burst 30/sec
  • 20 exports per 5 min per user
  • 120/min per IP edge shield (any path)

Headers: X-RateLimit-Remaining, Retry-After on 429.

Endpoints

  • GET/v1/productsList products with cursor pagination
  • POST/v1/productsCreate a product (idempotent via Idempotency-Key)
  • GET/v1/products/:idRead one product with variants + levels
  • POST/v1/inventory/adjustApply a stock movement; returns new on_hand
  • POST/v1/inventory/transferMove stock between locations
  • GET/v1/ordersList sales orders, filter by status + channel
  • POST/v1/devicesRegister an Expo push token (mobile)

Webhooks

Public webhook subscriptions are on the roadmap (see /roadmap). Events will be HMAC-SHA256 signed using your secret + raw body, exactly like Shopify.

Full OpenAPI spec at /api/openapi.json (coming with v1 GA)

Ready when you are

Open the tool you’ll
actually want to open.

14-day trial. No credit card. Connect Shopify and QuickBooks in under 5 minutes.