Create Vault

Use Case

Creates a new vault. The Bitnob Secure Enclave infrastructure is provisioned lazily on the first vault.

Create Vault

Request Body
1
namestringRequired

Display name shown in the dashboard and audit logs. 2-100 characters.

2
vault_typestring

`dedicated` (default) — one wallet per chain. `pool` — unlimited wallets. Upgrading dedicated → pool is irreversible.

3
idempotency_keystringRequired

Client-generated key (1-64 chars) that deduplicates retries so the same request never creates two vaults.

Example Payload

Create Vault Response
1
successboolean

`true` when the vault was created without errors.

2
messagestring

Human-readable status message for display or logging.

3
idstring (uuid)

Unique identifier for the new vault. Use it to scope wallet creation and exports.

4
namestring

Display name as supplied on creation.

5
vault_typestring

`dedicated` (1 wallet per chain) or `pool` (unlimited).

6
statusstring

Lifecycle status — `active` immediately after creation.

7
wallet_countinteger

Number of wallets in this vault. Zero at creation time.

8
provider_wallet_idstring

Enclave-internal seed identifier. Opaque — only used by Bitnob's signing pipeline.

9
metadataobject

Arbitrary key-value metadata you set on the vault.

10
created_atstring (RFC3339)

Timestamp when the vault was created.

11
updated_atstring (RFC3339)

Timestamp of the most recent update.

Create Vault Response

List Vaults

Use Case

Returns a paginated list of vaults in the organization.

List Vaults

Query Parameters
1
limitinteger

Page size. Default 20, max 100. Use this with `offset` to paginate through large vault counts.

2
offsetinteger

Number of items to skip from the start of the result set. Default 0. Pair with `limit` for cursor-style paging.

3
vault_typestring

Restrict results to a single vault type. `dedicated` returns treasury/operational vaults; `pool` returns exchange-style vaults that hold many wallets.

4
statusstring

Filter by lifecycle status. `active` is the default working set; pass `archived` to surface vaults you've previously taken out of rotation.

List Vaults Request

List Vaults Response
1
idstring (uuid)

Unique identifier for the vault. Use it to scope wallet creation, exports, and audit lookups.

2
namestring

Display name as supplied on creation, shown in dashboards and audit logs.

3
vault_typestring

`dedicated` (one wallet per chain) or `pool` (unlimited wallets per chain).

4
statusstring

Lifecycle status. `active` is in-use; `archived` is taken out of rotation but kept for audit purposes.

5
wallet_countinteger

Number of wallets currently derived from this vault's seed.

6
provider_wallet_idstring

Opaque Enclave-internal seed identifier. Used by Bitnob's signing pipeline; you don't need to act on it.

7
metadataobject

Arbitrary key-value metadata you set on the vault for your own bookkeeping.

8
created_atstring (RFC3339)

Timestamp when the vault was created.

9
updated_atstring (RFC3339)

Timestamp of the most recent change (name, type, or metadata).

List Vaults Response

Get Vault

Use Case

Retrieves a single vault by ID.

Get Vault

Get Vault Response
Same shape as Create Vault Response

The response payload uses the same VaultResponse object as Create Vault Response. Refer there for the per-field explanations.

Get Vault Response

Update Vault

Use Case

Updates a vault's name or type. Upgrading a dedicated vault to a pool vault is irreversible.

Update Vault

Request Body
1
namestring

2-100 characters.

2
vault_typestring

`dedicated` or `pool`. Upgrading dedicated to pool is irreversible.

Example Payload

Update Vault Response
Same shape as Get Vault Response

The response payload uses the same VaultResponse object as Get Vault Response. Refer to Create Vault Response for per-field explanations.

Update Vault Response

Create Wallet in Vault

Use Case

Creates a wallet inside an existing vault. Dedicated vaults allow one wallet per chain; pool vaults allow unlimited.

Create Wallet in Vault

Request Body
1
namestringRequired

Display name for the wallet (2-100 characters). Shown in the dashboard and audit logs — use something that identifies the customer or purpose at a glance.

2
chainstring

Blockchain the wallet targets (e.g., `ethereum`, `bitcoin`). Determines which key curve and address format the Enclave derives.

3
customer_ref_idstring

Your own external customer/account identifier. Mainly useful inside pool vaults so you can map this wallet back to a user in your system.

4
wallet_typestring

`hot` (online, actively signs), `cold` (offline, requires elevated approval), or `operational` (system-managed, e.g., gas stations). Defaults to `hot` when omitted.

5
asset_idsstring[]

Assets this wallet should support up front (e.g., `["ETH", "USDC_ETH"]`). Determines which initial balance entries are tracked; extra assets can be added later by deriving addresses.

6
networkstring

Network for the initial address derivation (e.g., `mainnet`, `sepolia`, `testnet`). Falls back to the environment's default network when omitted.

7
metadataobject

Arbitrary key-value JSON you set on the wallet for your own bookkeeping (tags, team, region, etc.). Returned back on every wallet read.

8
idempotency_keystringRequired

Client-generated key (1-64 chars) used to deduplicate retries. If two requests arrive with the same key, only the first creates a wallet and subsequent retries return the same response.

Example Payload

Create Wallet in Vault Response
1
successboolean

`true` when the wallet was created without errors.

2
messagestring

Human-readable status message for display or logging.

3
dataWalletResponse

The newly created wallet, with derived addresses and an initialised balances array.

4
idstring (uuid)

Unique identifier for the new wallet. Use it for transfers, address derivation, and exports.

5
vault_idstring (uuid)

Parent vault this wallet was created under.

6
namestring

Display name as supplied in the request, shown in dashboards and audit logs.

7
chainstring

Primary blockchain the wallet targets (e.g., `ethereum`, `bitcoin`).

8
customer_ref_idstring

External customer reference you passed in; lets you link this wallet to your own user/account ID.

9
wallet_typestring

`hot` (online signing), `cold` (offline, elevated approval), or `operational` (system-managed).

10
statusstring

Lifecycle status — `active` immediately after creation.

11
primary_addressesAddressInfo[]

Primary address per chain, derived from the wallet's HD path on creation. Hand the `address` to customers as a deposit destination.

12
balancesBalanceInfo[]

Per-asset balance entries. Empty / zeroed at creation; gets populated as funds arrive.

13
created_atstring (RFC3339)

Timestamp when the wallet was created.

Create Wallet in Vault Response

List Wallets in Vault

Use Case

Returns all wallets in the vault with primary addresses and balances included.

List Wallets in Vault

Query Parameters
1
chainstring

Restrict results to a single blockchain (e.g., `ethereum`, `bitcoin`). Useful when a pool vault holds wallets across multiple chains and you only want one.

2
customer_ref_idstring

Look up the wallets belonging to a single external customer/account ID. Most common way to find a specific customer's wallet inside a pool vault.

Query

List Wallets in Vault Response
Same shape as Create Wallet in Vault Response

Each entry in data[] uses the same WalletResponse object as Create Wallet in Vault Response. Refer there for the per-field explanations.

List Wallets in Vault Response

Export Vault Seed

Use Case

Exports the BIP-39 mnemonic for the vault's seed. The mnemonic can recover all wallets and addresses derived from this vault.

Sensitive operation

The export payload is encrypted to a one-time exchange key supplied in the request. Treat the recovered mnemonic as root credential material.

Export Vault Seed

Export Wallet Private Key (Vault)

Use Case

Exports the private key for a specific wallet within a vault. Only the key for this wallet's derivation path is exported, not the vault seed.

Export Wallet Key
Did you find this page useful?