> For the complete documentation index, see [llms.txt](https://docs.spiroq.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.spiroq.com/en/hub-screens/hub/obecne/operator-api.md).

# Operator API

**Settings → Operator API** is available from the **Enterprise** plan. Here you create the key your ERP, WMS, or AI assistant uses to call the [Operator API](/en/operator-api/operator-api.md). The key applies to the whole fleet of your operator (company). The token **does not belong** in the browser or in the app on the machine — it belongs in secrets on your server.

Creating the key and the first request are described in [Connection and API key](/en/operator-api/operator-api/pripojeni.md).

## Creating a key

Fill in **Key name** (for example `WMS production`, at most 80 characters). An empty name is saved as `API key`.

You choose **Access** when creating the key, and it cannot be changed later:

| Access           | When to use it                                                                                                                           |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Read only**    | Reports, a stock overview, an AI assistant that should only read machines, slots, and the catalog. The API rejects every write.          |
| **Read & write** | An ERP, a WMS, or an AI assistant that should stock, clear stock, change the product in a slot, create products, or send a restock plan. |

Choose a read-only key whenever the integration writes nothing to the machine. **If a key with full access leaks, stock and the layout of the whole fleet can be changed.**

**Create key** shows the token **only once** and copies it to the clipboard. Save it immediately. You will not find it in the HUB again.

In the list you see the name, the access, the token **prefix**, the creation date, and when it was last used. **Revoke** turns the key off. A new key has a different token — replace it in the integration, and only then revoke the old one.
