Skip to main content
Every API key issued to your tenant carries one or more scopes that define exactly which endpoints and operations that key can perform. Scopes follow the principle of least privilege — you should grant each integration only the permissions it genuinely needs. A payment processor that posts transactions has no business reading compliance exports, and an automated agent that executes trades should not be able to create new accounts. Keeping scopes narrow limits the blast radius if a key is ever compromised.

Scope reference

The table below lists every available scope and the endpoints it unlocks. Different integration patterns call for different scope combinations. The examples below cover the most common cases.

Read-only integration

For dashboards, analytics pipelines, or any consumer that only needs to observe ledger state.

Payment processor

For services that accept payments, post transactions, and manage accounts.

Compliance team

For audit and compliance workflows that need a full export of ledger activity.

Automated agent

For AI agents or automated systems that execute and review transactions on your behalf.

Creating a scoped key

Send a POST request to /api/v1/api-keys with an array of the scopes you want the new key to carry. This endpoint requires the ADMIN scope on your calling key.
Idem does not support naming keys — scopes is the only request field. Track which key is which by its prefix (see below), or by which integration you issued it to.
Response — 201 Created
The rawKey field is returned only once at creation time. Store it securely in your secrets manager immediately — it cannot be retrieved again. If a key is lost, revoke it and issue a replacement.
The ADMIN scope supersedes all other scopes: a key carrying ADMIN can perform every operation in the API, including issuing and revoking other keys and modifying policy rules. Reserve ADMIN keys exclusively for administrative tooling such as key provisioning scripts and infrastructure automation. Never use an ADMIN-scoped key in transactional workloads, application servers, or anywhere the key could be exposed to a broader attack surface.