User Roles

User roles and permissions for Dev API Keys

Liminal Express SDK for developer supports managing wallet configurations from your Vaults organisation via API key authentication. Every organisation supports upto 5 active API keys that Owners and Admins can create. An API key is configured based on role-based access control (RBAC) to help maintain security and transparency across wallet operations including, transaction initiation, signing, creation, and manage MPC signer setup.

The following user roles and permissions are assigned to an API key:

  1. User Roles: Full Access, Admin, Initiator, Signer, and Viewer.
  2. Permissions:
    1. Wallet: Read (view wallet details), Write (create new wallet),
    2. Transaction: Read (view transaction details), Write- Initiate (initate transaction), Write- Sign (sign transaction).

User Roles and Permissions

Operation CategoryAdminInitiatorSignerViewer
User Role DescriptionOrganisation-based user role.Wallet-based user role.Wallet-based user role.Organisation-based user role.
Permission LevelRead and WriteRead and WriteRead and WriteRead Only
Wallet OperationCreate and Read WalletRead WalletRead WalletRead Wallet
Transaction OperationRead TransactionRead and Initiate TransactionSign and Read TransactionRead Transaction
📘

Note

  1. For existing API key:
    1. Existing organisation on Vaults having an active API key will have Full Access role assigned to it.
    2. Full access role has the following permissions:
      1. Read and Write wallet operations,
      2. Read and write transaction operations (including transaction initiation and signing), and
      3. Enable MPC setup for a Signer. Refer to this guide for MPC setup.
    3. You can rotate, disable, whitelist address and delete an existing active API key with Full Access role in your Vaults organisation. Refer to this guide for managing API key.
  2. Signer key:
    1. An API key with Signer user role needs to set-up required RSA key and MPC shard import operations before the user can actively start approving and signing transactions.
    2. When creating the Signing API Key, until the shard sharing is completed by the Owner to the API Key and it appears as API Signer Status under Users section you will not be able to complete the creation of another signer key.
  3. For new Vaults organisations: Vaults’ organisations created post May 15, 2026 and having either Express v1.3.18 or higher, will need to have at least one API key with Initiator and Signer roles each to complete a transaction.
  4. Enterprise organisations can request for a higher API key limit than the current limit of 5 key per organisation. Reach out to support for assistance.

🚧

Migration Guide from Single Full Access API Key to Multiple API Keys with different Roles

  1. Create a unique email address for each API Key user
  2. V2 Wallet Transactions require two separate keys:

Initiator Key for use with the send-many-transaction API Signer Key for use with the submit-transaction API

  1. V1 Wallet Transactions require one key to complete a transaction

Signer Key for use with the send-many-transaction API only

Migrating from a Full Access Key Follow this sequence carefully to ensure zero downtime:

a. Upgrade Liminal Express to v1.3.18 or above first

b. Do not delete the existing Full Access Key

c. Create your new Signer Key and Initiator Key Make code changes in your dev environment first
d. Thoroughly test all transactions Only then, delete the Full Access Key

⚠️ Breaking Change — send-many-transaction API :The amount field now accepts a string instead of a number.


❗️

Using the initiator role to call the submit transaction api will return successful. This is expected since the response simply acts as an acknowledgement, the processing happens asynchronously at the backend. However the processing will fail at the backend and the initiator will not be able to sign.

We are also working on improving the error messages related to RBAC errors.


API Reference per User Roles

The following table illustrates the required permission level for every user role for an API key. Note that an API Key having Full Access permission will be able to call all the API references in Express SDK.

API Reference v2HTTP MethodUnique IDPermission LevelValid User Roles
Create an RSA KeyPOST/mpc-shard/MPC setupSigner
Import MPC shardPOST/mpc-shard/MPC setupSigner
Create a hot walletPOST/onboardingCreate WalletAdmin, Full Access
Retrieve a list of walletsPOST/walletRead WalletViewer, Initiator, Signer, and Admin
Retrieve a walletPOST/walletRead WalletViewer, Initiator, Signer, and Admin
Retrieve a wallet balancePOST/walletRead WalletViewer, Initiator, Signer, and Admin
Create a Watch-Only walletPOST/walletCreate WalletAdmin
Import addresses into a Watch-Only walletPOST/walletCreate WalletAdmin
Retrieve a list of addressesPOST/walletCreate WalletAdmin
Retrieve an addressPOST/walletCreate WalletAdmin
Retrieve an address balancePOST/walletRead WalletViewer, Initiator, Signer, and Admin
Verify addressesPOST/walletRead WalletViewer, Initiator, Signer, and Admin
Create transaction requestsPOST/walletsInitiate TransactionInitiator
Retrieve a transactionPOST/walletRead TransactionViewer, Initiator, Signer, and Admin
Retrieve hot wallet transactionsPOST/walletRead TransactionViewer, Initiator, Signer, and Admin
Retrieve all transactions by statusPOST/walletRead TransactionViewer, Initiator, Signer, and Admin
Retrieve pending transactionsGET/walletRead TransactionViewer, Initiator, Signer, and Admin
Retrieve a transaction statusPOST/walletRead TransactionViewer, Initiator, Signer, and Admin
Retrieve estimated gas fees and ratesPOST/walletRead TransactionViewer, Initiator, Signer, and Admin
Retrieve a list of addresses for consolidationPOST/walletRead TransactionViewer, Initiator, Signer, and Admin
Rescan a transactionPOST/transactionsInitiate TransactionInitiator
Consolidate wallet assetsPOST/walletInitiate TransactionInitiator
Push a refill transactionPOST/walletInitiate TransactionInitiator
Resend EVM-chain transactionsPOST/walletInitiate TransactionSigner
Resend a Bitcoin transactionPOST/walletInitiate TransactionSigner
Start or stop transaction executionPOST/jobsInitiate TransactionSigner
Submit a transactionPOST/walletSign TransactionSigner
Update a transaction statusPOST/travel-ruleInitiate TransactionInitiator
Retrieve a list of travel rule transactionsPOST/travel-ruleRead TransactionViewer, Initiator, Signer, and Admin
Retrieve a travel rule transaction by transaction IDPOST/travel-ruleRead TransactionViewer, Initiator, Signer, and Admin
List all VASPs with detailsPOST/travel-ruleRead TransactionViewer, Initiator, Signer, and Admin
Create a travel rule transactionPOST/travel-ruleRead TransactionViewer, Initiator, Signer, and Admin
Check travel rule statusGET/travel-ruleRead TransactionViewer, Initiator, Signer, and Admin
Retrieve pending transactionsPOST/travel-ruleRead TransactionViewer, Initiator, Signer, and Admin
Retrieve RewardsPOST/stakingRead Staking dataViewer, Initiator, Signer, and Admin
Retrieve latest Liminal Express versionGET/infoGet Express version dataViewer, Initiator, Signer, and Admin
Retrieve memory usage of Liminal ExpressGET/metricsGet Express memory usage dataViewer, Initiator, Signer, and Admin
Check Liminal server statusGET/pingGet Liminal server statusViewer, Initiator, Signer, and Admin
HealthGET/healthGet Express Docker statusViewer, Initiator, Signer, and Admin