Quickstart
Authenticate with your key in the Authorization header:
# Example: list clients
curl https://bk.renaska.com/api/external/v1/clients \
-H "Authorization: Bearer rnk_live_<key>"
Base URL: https://bk.renaska.com/api/external/v1
The OpenAPI spec is public and requires no key — add ?lang=es or ?lang=en to get it in your language.
Scopes and permissions
Each key grants one or more scopes in the format resource:action (e.g. orders:write).
Use * for full access or resource:* to read and write an entire resource.
Resource groups
Each group is gated by its own scope.
ProductsRead and writeInventoryRead and writeInputsRead and writeClientsRead and writeOrdersRead and writeQuotationsRead and writePaymentsRead and writeShippingRead and writeLeadsWrite only Plus utility endpoints: GET /catalog and GET /ping.
- An API key reaches every location on the account — keys have no per-location scoping, so even a team member limited to one location is more restricted than any key. This is by design.
- Order reads include POS sales and their unit prices. The dashboard hides these from non-admin roles; the API does not.
Side effects to know about
- POST /orders and POST /quotations/:id/convert deduct stock and post the accounting entry — they do not notify the client.
- POST /shipments does not deduct stock.
Operational details
- Send an Idempotency-Key header (max 255 characters) to avoid duplicates: optional on POST /orders and other older POST endpoints, REQUIRED on the product, inventory, and input write routes and on PATCH /orders/:id/status and PATCH /orders/:id/stage, which return 400 without it. On PUT and PATCH it acts as a concurrency lock rather than a cache — a later retry runs again.
- Per-key limits: 120 reads/min and 30 writes/min.
- Lists are paginated with data + meta (page, limit, total, totalPages) — 20 items per page by default, 100 max.
- Errors respond with an error object (code, message) — e.g. 403 insufficient_scope, 429 rate_limited, or 409 conflict.