Skip to main content
Every call to the /api/v1/* endpoints is authenticated with an API key sent in the x-api-key header. This page explains how to create one, what vendor scope means (the reason behind most 403 responses), and which scope each endpoint needs. For the login flow, the other headers and webhook signature verification, see Authentication.

Create a key

Keys are created in the Fire dashboard under Developers → API Management (/developers/firepos-api-management). The page lists your existing keys (name, vendor, key prefix, scopes, status, creation and expiration date). Before you start, pick the account and vendor you want in the dashboard selector at the top, then select Create API Key and fill in the form:
1

Check the account and vendor

The form shows the Account and Vendor the key will be bound to. They come from your dashboard selection and you do not change them in the form. With All vendors selected, the key gets no vendor binding — see Vendor scope.
2

Name and description

Name is required (for example, XMART Production). Description is optional: write what the key is used for, so you can tell keys apart later.
3

Choose the scopes

Select at least one scope. Grant only what your integration calls — see Scopes.
4

Set an expiration (optional)

Pick a date, or leave it empty for a key that never expires.
Select Create API Key, then copy the key (it starts with pk_live_) and store it securely. Send it on every request:
x-api-key is the recommended header. Fire also accepts the same key as Authorization: Bearer pk_live_... (legacy alias, which the dashboard page still mentions). If you send both, x-api-key is used.
Contact your Fire account team if you do not see API Management under Developers in your dashboard.

Manage keys

  • Edit scopes: you can change a key’s scopes without changing its secret.
  • Name, description and expiration cannot be edited after the key is created.
  • Revoke: a revoked key stops working and cannot be edited again.
  • Rotation: there is no built-in rotation. To rotate, create a new key with the same scopes, switch your integration to it, then revoke the old one.

Vendor scope

A vendor-scoped key is bound to an account and a vendor (a brand or concept inside that account). Fire derives both from the key itself — you never send accountId or vendorId as parameters — and only returns or accepts data that belongs to that binding. Most /api/v1/fire/external/* endpoints and the inbound webhooks (webhooks:*) require a vendor-scoped key. A key without a vendor binding is rejected:
403 — key not vendor-scoped
To get a vendor-scoped key, select a vendor in the dashboard before you create it. Data from another account or vendor also returns 403, so one key per vendor is the cleanest setup.

Scopes

A scope grants access to one family of endpoints. A key missing the required scope is rejected with 403 and a message listing the scope it lacks.
Next to some scopes the dashboard shows requires account or requires vendor. That label is only checked when you save the key. Each endpoint enforces its own binding when you call it, and it does not always match the label — the endpoint page states what it needs. When in doubt, create the key with a vendor selected.
Each endpoint page states the exact scope in its x-api-key parameter. If this table and an endpoint page ever disagree, the endpoint page wins.

Common errors