INTEGRATIONS
API keys
How Converge API keys are created, scoped, stored as SHA-256 hashes, expired and revoked, and what a key can and cannot do.
Overview
An API key lets a program or an MCP client act as you: the REST API, your scripts outside the app, and AI assistants connected over MCP all use one. A key carries your company, your role and permissions, and your licence seats. It never has more access than you do.
You manage keys on Integrations > API keys. Keys need your company's Integrations licence.
Create a key
- Open Integrations > API keys and click Create key.
- Enter a Name (1 to 80 characters), for example "Nightly decline run".
- Under What it can do, tick the scopes the program needs.
- Choose when it expires.
- Click Create key.
- Copy the key from Copy your API key now and store it in a secret store or an environment variable (
CONVERGE_API_KEY). Click I have stored it.
Creating a key needs the Manage API keys permission and a plan or licence that includes API access. Without the permission you can still see and revoke your own keys. You can hold up to 25 active keys; revoke one you no longer use to make room.
Scopes
| Scope | In the app | What it allows |
|---|---|---|
engine:run |
Run calculations | Run engine calculations over REST and MCP. |
projects:read |
Read projects | List and read projects, and project resources over MCP. |
projects:write |
Write projects | Create, update and delete projects, and save versions. |
New keys get engine:run and projects:read unless you change them. A key with no valid scope cannot be created.
Some calls need two scopes: the project fluid-model tools (eos.model.*) run on a saved project, so they need engine:run and projects:read.
GET /v1/me and the function list (GET /v1/engine/functions) work with any valid key.
Expiry
| Option | Expires |
|---|---|
| 30 days | 30 days after creation |
| 90 days | 90 days after creation (default in the app) |
| 1 year | 365 days after creation |
| No expiry | Never; revoke it when done |
An expired key is refused with 401 and the message to create a new one.
How keys are stored
- A key is
cvg_followed by 43 base64url characters: 32 random bytes. - Converge stores only the SHA-256 hash of the whole key, plus a 10-character display prefix (
cvg_and the next six characters) so you can tell keys apart. - On each request the presented key is hashed and looked up by hash, so the secret itself is never compared or stored.
- The create response is sent with
Cache-Control: no-store, and the app forgets the key when you close the dialog.
What a key can and cannot do
A key works only on the endpoints programs need: /v1/me (read), /v1/engine/functions, /v1/projects and /v1/mcp. Every other endpoint refuses it with 403, including team management, seats, the AI Engineer chat, roles, review and sign-off, admin, and key management itself. A key cannot list, create or revoke keys.
Within those endpoints the usual checks still apply: the member's permissions, the company's licences, and the module's floating seats. See Seats.
A key stops working at once when:
- it is revoked,
- it expires,
- the member who created it is disabled,
- the company account is suspended,
- the member's email is not verified.
Revoke a key
On API keys, click Revoke on the key's row and confirm with Revoke key. The key stops working immediately for every program and assistant using it, and this cannot be undone.
- You can always revoke your own keys.
- With the Manage API keys permission you can switch Whose keys to Company and see and revoke every member's keys, with the owner shown.
Audit
Converge writes to the company audit log when a key is created (name, prefix, scopes, expiry), when it is revoked, and when it is used: on first use and then at most once an hour per key, with the method and path. The key list shows when each key was last used. See Audit log.
Failed key attempts are rate limited to 20 a minute per client address.