API Keys

Create API keys for programmatic access to Entity Enricher. Use organization access keys for service-to-service integration, CI/CD pipelines, and automated workflows.

Key Types

Entity Enricher supports two types of API keys, each suited for different use cases:

Recommended

Organization Access Keys

Standalone keys with their own role, not tied to any user account. The best choice for service-to-service integration.

  • Have their own role (owner, editor, or operator)
  • Not affected by user account changes
  • Scoped to the organization
  • Require owner role to create

Legacy User Keys

Keys tied to a specific user account. They inherit the creator's role and are affected by user account changes.

  • Inherit the creating user's role
  • If the user is deactivated, the key stops working
  • Any authenticated user can create one

Key Format & Security

Format:ent_a1b2c3d4e5f6g7h8

Keys use the ent_ prefix followed by random bytes. The full key is shown only once at creation time — it cannot be retrieved later.

Access keys (for calling Entity Enricher's API) are stored as SHA256 hashes in the database, so even with database access, the original key cannot be recovered. Only the first 12 characters (the prefix) are stored in plain text for identification.

Provider keys (LLM API keys like Anthropic, OpenAI) are encrypted at rest using Fernet symmetric encryption (AES-128-CBC + HMAC). They must be decryptable at runtime to authenticate with LLM providers. Only the last 4 characters are stored in plain text.

  1. 1A ready-made curl call with the key already in the header
The key body is blanked out in this screenshot on purpose. The database keeps only the ent_ prefix and a hash, so a key that was not copied here is replaced, never recovered.

Creating API Keys

Create keys from the API Keys page in the application, or programmatically via the REST API:

Key Configuration

FieldDescription
NameA descriptive name for identification (e.g., "CI/CD Pipeline", "n8n Integration")
RoleThe permission level: owner, editor, or operator. Determines what the key can access.
Scopesread, write, or both. Controls whether the key can modify data or only read it.
ExpirationOptional expiration date. Keys without expiration last until revoked.
  1. 1The key's own role — and it can never outrank yours
  2. 2No expiration means valid until somebody revokes it
Scopes are the one field the form leaves out: a key created here carries both read and write, and a read-only key is requested through the API instead.

Using API Keys

Send your API key in the X-API-Key header with every request:

curl -H "X-API-Key: ent_your_key_here" \
     https://your-instance.example.com/api/enrichment/options

Authentication Methods

MethodHeaderUse Case
API KeyX-API-Key: ent_...Service-to-service, CI/CD, automation
Bearer TokenAuthorization: Bearer <jwt>Web clients, interactive sessions
OAuth 2.1Authorization: Bearer <access_token>Connectors and AI clients — a revocable grant per app, not a shared key

Endpoint Access by Role

The API key's role determines which endpoints it can access:

Endpoint CategoryMinimum Role
Enrichment (single, batch)Operator
Records (list, detail, delete)Operator
Schema (read)Operator
Schema (create, edit, delete)Editor
FusionOperator
Provider infoOperator
Cost analyticsOperator
API key managementOwner
User managementOwner

Managing Keys

The API Keys page provides a complete view of all organization keys with usage statistics:

View usageSee last used timestamp and total use count for each key
Update roleChange the role of an organization access key (owner only)
RevokePermanently disable a key. Revoked keys cannot be reactivated.
ExpirationKeys expiring within 7 days are flagged. Expired keys are automatically rejected.
  1. 1The role changes in place, without reissuing the key
  2. 2Revoke takes effect at once and cannot be undone
The Key column shows a prefix because a prefix is all that is stored: enough to tell two keys apart in the table and in an audit trail, useless to anyone trying to call the API with it.

Provider Keys vs. Access Keys

The API Keys page has five tabs serving different purposes — four of them for everyone, plus Global Keys for system administrators:

  1. 1Your organization's own LLM provider keys
  2. 2The shared fallback pool — system administrators only
  3. 3Keys that call Entity Enricher's own API
The first two tabs hold keys Entity Enricher uses to reach an LLM; the last three hold credentials other systems use to reach your organization. The page never says so, but that direction is what decides which tab a key belongs on.

AI Provider Keys

Your organization's LLM provider API keys (Anthropic, OpenAI, etc.) for independent billing. Supports multiple keys per provider with automatic LRU rotation; a key whose test fails leaves the rotation until it is re-tested or replaced. See Models & Pricing for the BYOK system.

Provider keys are encrypted at rest using Fernet symmetric encryption (AES-128-CBC with HMAC authentication). They are decrypted only at runtime when making LLM API calls. Only the last 4 characters are stored in plain text for display purposes.

Global Keys

System-wide LLM provider keys managed by administrators. Used as fallback when no organization key is available. Supports multiple keys per provider with LRU rotation: the enabled key used longest ago goes next, and a key leaves the rotation when an administrator disables it or its test marks it invalid. With no usable key for a provider, a run is refused instead of started.

App Access Keys

Organization access keys for Entity Enricher's own API. Used by external systems to call the enrichment, schema, records, and other endpoints programmatically. See the API Reference for endpoint documentation.

Connected Apps

Applications you authorized over OAuth 2.1 — the claude.ai connector directory, Claude Desktop, Make and n8n connections. Each row is a revocable grant rather than a shared secret: revoking it here invalidates that app's tokens without touching your other integrations. Owners can also register an OAuth client for a self-hosted n8n instance.

Ollama Tunnels

Credentials for the self-service Ollama tunnel, which exposes a local Ollama to the platform without opening a port. See the Ollama Tunnel guide.

  1. 1Who authorized it — the grant carries that member's role
  2. 2Which surface the token may use: the REST API, MCP, or both
  3. 3Revoking one app leaves every other connection signed in
The Connected Apps tab: one row per authorized app and member, so the same person can connect claude.ai and an n8n instance separately. Last Used is what tells you which connector is still running before you revoke it.

Next Steps