Skip to content

API keys

Every REST call and every MCP call made with a key sends it in the Authorization header:

Authorization: Bearer nxa_3f9c…

Keys are created in the app under Settings → API → Organization API keys.

A key always belongs to one workspace (organization) and only ever acts on that workspace. It does not follow anyone’s account switcher.

Organization key Personal key
Belongs to The workspace One team member, in one workspace
Acts as The workspace owner That team member, with their permissions
Who can create it Owners, admins and managers Any active team member
Stops working when It is revoked or rotated It is revoked or rotated, or the member leaves the workspace
Use it for Integrations that run on their own: a website, a report, a backend job A person’s own tools, scripts or AI client

Use an organization key for anything unattended. A personal key dies with the person’s seat, which is right for a person’s tools and wrong for your website.

A key made before 24 September 2026 shows on the same page as Old personal API key (nxa_ + 32 characters). It acts on whichever workspace its owner has open at that moment, so switching accounts changes what connected tools see. It keeps working with full access, but replace it with an organization key.

When you create a key you also choose what it may do:

  • Full access: every endpoint and every MCP tool, as the user the key acts as.
  • Contacts: create & update only: only POST /v1/contacts. Every other endpoint and the MCP server refuse it.

You can also make a test key for the contacts endpoint. It validates every request and writes nothing. See Access levels and test keys.

The full key is shown only once, right after you create or rotate it. NexaCloser stores only a hash, so nobody can show it again, not even support. After that the app shows the key’s name, type, last four characters and when it was last used (updated at most once a minute).

Lost a key? Rotate it.

Rotate replaces the key with a new one that keeps the same name, type and access level. The old key stops working immediately, so update the systems that use it right after.

  • Organization keys: owners, admins and managers can rotate them.
  • Personal keys: only their owner can rotate them, because the new key acts as that person.

Revoke turns the key off for good. Anything using it fails from the next request on. This cannot be undone.

  • Organization keys: owners, admins and managers.
  • Personal keys: their owner, or an owner, admin or manager of the workspace.

Keys do not expire by themselves. Rotate them on your own schedule, and whenever someone who had a copy leaves.

  • Store keys in environment variables or a secret manager, never in code or a repository.
  • One key per integration, named after it, so you can rotate or revoke one without touching the rest.
  • Give each integration the smallest access level that works: a website form needs Contacts: create & update only, not full access.
  • Never put a key in a URL. URLs end up in logs and browser history.
Credential Looks like Used for
API key nxa_… (test keys nxa_test_…) REST API and MCP
MCP server token mcps_… MCP clients without OAuth. See MCP auth
MCP OAuth token mcp_at_… Issued to MCP clients by the OAuth flow, 1 hour, refreshed by the client
Webhook token any secret The X-Webhook-Token header of an inbound webhook