Authentication
curl -H "Authorization: Bearer ${SAFER_API_KEY}" \
https://api.saferinventory.com/v1/productsGenerate API keys at /app/settings/api-keys. Scope per token.
Everything our dashboard does is on the API. OAuth + scoped tokens, idempotent writes, sliding-window rate limits, structured errors.
curl -H "Authorization: Bearer ${SAFER_API_KEY}" \
https://api.saferinventory.com/v1/productsGenerate API keys at /app/settings/api-keys. Scope per token.
600/min sustained per org · burst 30/sec20 exports per 5 min per user120/min per IP edge shield (any path)Headers: X-RateLimit-Remaining, Retry-After on 429.
/v1/productsList products with cursor pagination/v1/productsCreate a product (idempotent via Idempotency-Key)/v1/products/:idRead one product with variants + levels/v1/inventory/adjustApply a stock movement; returns new on_hand/v1/inventory/transferMove stock between locations/v1/ordersList sales orders, filter by status + channel/v1/devicesRegister an Expo push token (mobile)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)