Skip to main content
The BOH API is a REST API that lets you manage Back of House inventory programmatically: sync your catalog, publish recipes, record operational documents (receipts, waste, counts), read reports, and configure webhooks.

Identity

Resolve your account, list vendors, stores, and suppliers.

Catalog: Items

Create, list, update, archive, and bulk-sync inventory items.

Catalog: Bulk sync

Sync units, suppliers, and classification assignments in bulk.

Recipes

Manage sales, production, and subrecipe definitions.

Operations

Record goods receipts, stock counts, waste, transfers, and production.

Procurement

Manage par levels and get suggested reorder quantities.

Webhooks

Subscribe to inventory transaction and purchase order events.

Base URL

All endpoints are prefixed with /api/v1/public/.
The base URL is provided by Fire when you set up your integration. Use https://stg.boh.api.fire.rest for staging and the production URL for live operations.

Authentication

Every request requires an API key in the x-api-key header. API keys are created and managed from the Account & access → API keys screen in the BOH backoffice, or via the API Keys endpoints.
No Bearer token or session cookie is required. The key resolves the account; you do not need to pass an account header.

Key scopes

Each key is granted one or more scopes that restrict which endpoints it can call. A key with the * wildcard scope can call everything.

The vendor ID

Most routes include a {vendorId} path parameter. A vendor represents a BOH-configured entity (a restaurant brand or operating unit). Retrieve your vendor ID from List vendors or the backoffice.

Request and response format

  • All request bodies use Content-Type: application/json.
  • All responses are JSON.
  • Timestamps are ISO 8601 (2026-08-07T14:30:00.000Z).
  • Monetary amounts use the account currency (configured in Account settings).

Async write model

Most write operations (goods receipts, stock counts, waste events, transfers, production batches) are asynchronous. The response is immediate but the stock movements are posted within seconds. A successful write returns a tracking_id:
Poll GET /api/v1/public/operations/transactions/{trackingId} or GET /api/v1/public/operations/transactions to follow the processing status.

Idempotency

Submit the same idempotency_key string twice; the second call returns the original response with "idempotent": true and does not reprocess. Idempotency keys expire after 24 hours.

Errors

All error responses share the same envelope:
Error message values are intended for debugging and logging. They are not localized. Translate kind to user-facing strings in your application.

Rate limits

Default rate limits by scope: When the limit is exceeded the response is 429 and includes Retry-After and X-RateLimit-* headers. Limits can be overridden per key by Fire support.

external_user_id

Endpoints that create or mutate operational documents accept an optional external_user_id string in the body. BOH stores it as the human actor for audit purposes. For catalog CRUD it is optional; for operational documents it is strongly recommended.