Lit Protocol Account Management API
The Account Management API from Lit Protocol — 28 operation(s) for account management.
The Account Management API from Lit Protocol — 28 operation(s) for account management.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/lit-protocol-account-management-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: lit-api-server Account Management API
description: Lit Express Node API Server
version: 0.1.0
servers:
- url: /core/v1/
description: Lit Protocol Express API (Core v1)
tags:
- name: Account Management
paths:
/list_api_keys:
get:
tags:
- Account Management
operationId: list_api_keys
parameters:
- name: page_number
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: page_size
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- type: array
items:
$ref: '#/components/schemas/ApiKeyItem'
- $ref: '#/components/schemas/ErrMessage'
/new_account:
post:
tags:
- Account Management
operationId: new_account
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewAccountRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/NewAccountResponse'
- $ref: '#/components/schemas/ErrMessage'
/convert_to_chain_secured_account:
post:
tags:
- Account Management
operationId: convert_to_chain_secured_account
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConvertToChainSecuredAccountRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/account_exists:
get:
tags:
- Account Management
operationId: account_exists
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- type: boolean
- $ref: '#/components/schemas/ErrMessage'
/create_wallet:
get:
tags:
- Account Management
operationId: create_wallet
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/CreateWalletResponse'
- $ref: '#/components/schemas/ErrMessage'
/create_wallet_with_signature:
post:
tags:
- Account Management
operationId: create_wallet_with_signature
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWalletWithSignatureRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/CreateWalletWithSignatureResponse'
- $ref: '#/components/schemas/ErrMessage'
/get_lit_action_ipfs_id:
post:
tags:
- Account Management
operationId: get_lit_action_ipfs_id
requestBody:
content:
application/json:
schema:
type: string
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- type: string
- $ref: '#/components/schemas/ErrMessage'
/add_group:
post:
tags:
- Account Management
operationId: add_group
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddGroupRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AddGroupResponse'
- $ref: '#/components/schemas/ErrMessage'
/remove_group:
post:
tags:
- Account Management
operationId: remove_group
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RemoveGroupRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/add_action:
post:
tags:
- Account Management
operationId: add_action
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddActionRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/delete_action:
post:
tags:
- Account Management
operationId: delete_action
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteActionRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/add_action_to_group:
post:
tags:
- Account Management
operationId: add_action_to_group
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddActionToGroupRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/add_pkp_to_group:
post:
tags:
- Account Management
operationId: add_pkp_to_group
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddPkpToGroupRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/remove_pkp_from_group:
post:
tags:
- Account Management
operationId: remove_pkp_from_group
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RemovePkpFromGroupRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/add_usage_api_key:
post:
tags:
- Account Management
operationId: add_usage_api_key
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddUsageApiKeyRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AddUsageApiKeyResponse'
- $ref: '#/components/schemas/ErrMessage'
/add_usage_api_key_with_signature:
post:
tags:
- Account Management
operationId: add_usage_api_key_with_signature
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddUsageApiKeyWithSignatureRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AddUsageApiKeyWithSignatureResponse'
- $ref: '#/components/schemas/ErrMessage'
/update_usage_api_key:
post:
tags:
- Account Management
operationId: update_usage_api_key
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUsageApiKeyRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/remove_usage_api_key:
post:
tags:
- Account Management
operationId: remove_usage_api_key
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RemoveUsageApiKeyRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/update_group:
post:
tags:
- Account Management
operationId: update_group
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateGroupRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/remove_action_from_group:
post:
tags:
- Account Management
operationId: remove_action_from_group
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RemoveActionFromGroupRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/update_action_metadata:
post:
tags:
- Account Management
operationId: update_action_metadata
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateActionMetadataRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/update_usage_api_key_metadata:
post:
tags:
- Account Management
operationId: update_usage_api_key_metadata
parameters:
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUsageApiKeyMetadataRequest'
required: true
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountOpResponse'
- $ref: '#/components/schemas/ErrMessage'
/list_groups:
get:
tags:
- Account Management
operationId: list_groups
parameters:
- name: page_number
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: page_size
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- type: array
items:
$ref: '#/components/schemas/ListMetadataItem'
- $ref: '#/components/schemas/ErrMessage'
/list_wallets:
get:
tags:
- Account Management
operationId: list_wallets
parameters:
- name: page_number
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: page_size
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- type: array
items:
$ref: '#/components/schemas/WalletItem'
- $ref: '#/components/schemas/ErrMessage'
/list_wallets_in_group:
get:
tags:
- Account Management
operationId: list_wallets_in_group
parameters:
- name: group_id
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: page_number
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: page_size
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- type: array
items:
$ref: '#/components/schemas/WalletItem'
- $ref: '#/components/schemas/ErrMessage'
/list_actions:
get:
tags:
- Account Management
operationId: list_actions
parameters:
- name: group_id
in: query
schema:
type:
- string
- 'null'
- name: page_number
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: page_size
in: query
required: true
schema:
type: integer
format: uint64
minimum: 0.0
- name: X-Api-Key
in: header
description: 'Account or usage API key. Alternatively use Authorization: Bearer <key>.'
required: true
schema:
type: string
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- type: array
items:
$ref: '#/components/schemas/ListMetadataItem'
- $ref: '#/components/schemas/ErrMessage'
/get_node_chain_config:
get:
tags:
- Account Management
operationId: get_node_chain_config
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/NodeChainConfigResponse'
- $ref: '#/components/schemas/ErrMessage'
/get_chain_config_keys:
get:
tags:
- Account Management
operationId: get_chain_config_keys
responses:
default:
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ChainConfigKeysResponse'
- $ref: '#/components/schemas/ErrMessage'
components:
schemas:
AccountOpResponse:
description: Response for account config operations (add_pkp_to_group, remove_pkp_from_group, add_usage_api_key, remove_usage_api_key).
type: object
required:
- success
properties:
success:
type: boolean
UpdateActionMetadataRequest:
description: Request for update_action_metadata. hashed_cid is already a keccak256 hash (hex string). API key via header.
type: object
required:
- description
- hashed_cid
- name
properties:
hashed_cid:
description: Already-hashed CID for the action (0x-prefixed hex string).
type: string
name:
type: string
description:
type: string
ListMetadataItem:
description: One item from list_groups, list_wallets, list_wallets_in_group, or list_actions (AccountConfig.sol Metadata).
type: object
required:
- description
- id
- name
properties:
id:
type: string
name:
type: string
description:
type: string
ApiKeyItem:
description: One item from list_api_keys (AccountConfig.sol UsageApiKey).
type: object
required:
- api_key_hash
- balance
- can_add_pkp_to_groups
- can_create_groups
- can_create_pkps
- can_delete_groups
- can_execute_in_groups
- can_manage_ipfs_ids_in_groups
- can_remove_pkp_from_groups
- description
- expiration
- id
- name
properties:
id:
type: string
api_key_hash:
type: string
name:
type: string
description:
type: string
expiration:
type: string
balance:
type: integer
format: uint64
minimum: 0.0
can_create_groups:
type: boolean
can_delete_groups:
type: boolean
can_create_pkps:
type: boolean
can_manage_ipfs_ids_in_groups:
type: array
items:
type: integer
format: uint64
minimum: 0.0
can_add_pkp_to_groups:
type: array
items:
type: integer
format: uint64
minimum: 0.0
can_remove_pkp_from_groups:
type: array
items:
type: integer
format: uint64
minimum: 0.0
can_execute_in_groups:
type: array
items:
type: integer
format: uint64
minimum: 0.0
AddUsageApiKeyWithSignatureRequest:
description: 'ChainSecured usage-key minting. Mirrors `CreateWalletWithSignatureRequest`: the user proves wallet ownership with an EIP-712 typed-data signature, the server mints a usage-key wallet via DStack MPC and returns the secret (as the usage API key) plus address + derivation path. The client follows up with on-chain `registerWalletDerivation` and `setUsageApiKey` signed by their admin wallet — only the admin wallet of a ChainSecured account can call `setUsageApiKey` (see AppStorage.accountExistsAndIsMutable).'
type: object
required:
- signature
- typed_data
properties:
typed_data:
description: 'EIP-712 typed-data object the wallet signed. Must use `primaryType: "AddUsageApiKey"` and the canonical schema (see `core::eip712`).'
signature:
description: 65-byte 0x-prefixed signature (r||s||v) over the EIP-712 digest of `typed_data`.
type: string
RemoveGroupRequest:
type: object
required:
- group_id
properties:
group_id:
type: string
AddPkpToGroupRequest:
type: object
required:
- group_id
- pkp_id
properties:
group_id:
description: Group ID (decimal or hex string).
type: integer
format: uint64
minimum: 0.0
pkp_id:
type: string
AddGroupRequest:
description: Request for add_group. permitted_actions and pkps are keccak256 hashes as hex strings (with or without 0x). API key via header.
type: object
required:
- cid_hashes_permitted
- group_description
- group_name
- pkp_ids_permitted
properties:
group_name:
description: Name of the group (Group.metadata.name in AccountConfig.sol).
type: string
group_description:
description: Description of the group (Group.metadata.description in AccountConfig.sol).
type: string
pkp_ids_permitted:
description: pkp ids permitted to use the group (AccountConfig.sol Group.pkpId).
type: array
items:
type: string
cid_hashes_permitted:
description: Actions permitted to use the group (AccountConfig.sol Group.cidHash).
type: array
items:
type: string
UpdateUsageApiKeyMetadataRequest:
description: Request for update_usage_api_key_metadata (AccountConfig.updateUsageApiKeyMetadata). API key via header.
type: object
required:
- description
- name
- usage_api_key
properties:
usage_api_key:
type: string
name:
type: string
description:
type: string
CreateWalletWithSignatureResponse:
description: Returned by `/create_wallet_with_signature`. The client must follow up with an on-chain `registerWalletDerivation(adminHash, wallet_address, derivation_path, name, description)` call signed by the same wallet — until that lands, the PKP exists in MPC but is not registered to any account.
type: object
required:
- derivation_path
- wallet_address
properties:
wallet_address:
type: string
derivation_path:
description: 0x-prefixed lowercase hex (uint256). Pass through verbatim to `registerWalletDerivation`'s `derivationPath` arg.
type: string
ConvertToChainSecuredAccountRequest:
description: Body for `convert_to_chain_secured_account`. The caller is authenticated by their existing API key (header). The supplied wallet becomes the on-chain admin and the account flips from managed to ChainSecured. The conversion is irreversible.
type: object
required:
- new_admin_wallet_address
- signature
- typed_data
properties:
new_admin_wallet_address:
description: Hex-encoded EVM address (with or without 0x prefix). Must be the wallet the user controls; verified by an EIP-712 typed-data signature.
type: string
typed_data:
description: 'EIP-712 typed-data object the wallet signed. Must use `primaryType: "ConvertAccount"` and the canonical schema (see `core::eip712`).'
signature:
description: 65-byte 0x-prefixed signature (r||s||v) over the EIP-712 digest of `typed_data`.
type: string
AddUsageApiKeyWithSignatureResponse:
description: Returned by `/add_usage_api_key_with_signature`. The client must follow up with on-chain `registerWalletDerivation(adminHash, wallet_address, derivation_path, name, description)` and `setUsageApiKey(adminHash, keccak256(usage_api_key), …)` — both signed by the admin wallet — to attach the usage key to the ChainSecured account.
type: object
required:
- derivation_path
- usage_api_key
- wallet_address
properties:
usage_api_key:
description: 'Base64-encoded 32-byte secret. Send as `X-Api-Key` / `Authorization: Bearer …` for usage requests; pass `keccak256(this)` to `setUsageApiKey`.'
type: string
wallet_address:
description: 0x-prefixed lowercase hex EVM address of the minted PKP wallet.
type: string
derivation_path:
description: 0x-prefixed lowercase hex (uint256). Pass through verbatim to `registerWalletDerivation`'s `derivationPath` arg.
type: string
RemovePkpFromGroupRequest:
type: object
required:
- group_id
- pkp_id
properties:
group_id:
type: integer
format: uint64
minimum: 0.0
pkp_id:
type: string
DeleteActionRequest:
description: Request for delete_action. hashed_cid is already a keccak256 hash (hex string). API key via header.
type: object
required:
- hashed_cid
properties:
hashed_cid:
description: Already-hashed CID for the action (0x-prefixed hex string).
type: string
NewAccountResponse:
type: object
required:
- api_key
- wallet_address
properties:
api_key:
type: string
wallet_address:
type: string
CreateWalletWithSignatureRequest:
description: 'ChainSecured wallet creation. The client signs EIP-712 typed data with their wallet; the server verifies the signature, mints a PKP via DStack MPC, and returns the new wallet address + derivation path so the client can register it on-chain via `registerWalletDerivation`.
The server does not maintain a nonce store. Replay protection is a ±5-minute window on the `issuedAt` field plus the per-flow primaryType binding — worst-case replay still just mints an extra unregistered PKP (compute cost only; registration requires a separate wallet signature on-chain).'
type: object
required:
- signature
- typed_data
properties:
typed_data:
description: 'EIP-712 typed-data object the wallet signed. Must use `primaryType: "CreateWallet"` and the canonical schema (see `core::eip712`).'
signature:
description: 65-byte 0x-prefixed signature (r||s||v) over the EIP-712 digest of `typed_data`.
type: string
ChainConfigKeysResponse:
description: GET /get_chain_config_keys — names of every supported ConfigKeys variant.
type: object
required:
- keys
properties:
keys:
type: array
items:
type: string
RemoveUsageApiKeyRequest:
description: API key via header.
type: object
required:
- usage_api_key
properties:
usage_api_key:
type: string
AddGroupResponse:
description: Response for add_group, includes the on-chain group ID.
type: object
required:
- group_id
- success
properties:
success:
type: boolean
group_id:
type: string
AddActionRequest:
type: object
required:
- action_ipfs_cid
- description
- name
properties:
action_ipfs_cid:
description: IPFS CID for the action (keccak256-hashed on server).
type: string
name:
type: string
description:
type: string
AddUsageApiKeyResponse:
description: Response for account config operations (add_group, add_pkp_to_group, remove_pkp_from_group, add_usage_api_key, remove_usage_api_key).
type: object
required:
- success
- usage_api_key
properties:
success:
type: boolean
usage_api_key:
type: string
AddActionToGroupRequest:
type: object
required:
- action_ipfs_cid
- group_id
properties:
group_id:
type: integer
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lit-protocol/refs/heads/main/openapi/lit-protocol-account-management-api-openapi.yml