Overview
All address endpoints are nested under a wallet. Use these to list existing addresses, derive new ones from the wallet's HD key, and query or sync per-address balances.
- List addressesGET/wallets/:id/addresses
- Derive addressPOST/wallets/:id/addresses
- Get wallet balancesGET/wallets/:id/balances
- Sync wallet balancesPOST/wallets/:id/balances/sync
- Get address balancesGET/wallets/:id/addresses/:addressId/balances
- Sync address balancesPOST/wallets/:id/addresses/:addressId/balances/sync
List Addresses
Use Case
Lists addresses derived for a wallet.
Query Parameters
Page size. Default 20, max 100. Use with `offset` to paginate when a wallet has many derived addresses.
Number of items to skip from the start of the result set. Default 0. Pair with `limit` for cursor-style paging.
Restrict results to addresses tied to a specific asset (e.g., `USDC_ETH`, `ETH`). The chain is inferred from the asset, so you don't need to pass `chain` as well.
Filter by blockchain (e.g., `ethereum`, `bitcoin`). Useful when a wallet has addresses on multiple chains and you want one.
Restrict to a single network within the chain (e.g., `mainnet`, `sepolia`). Combine with `chain` to scope to one testnet, for example.
Filter by lifecycle status: `active` (default working set) or `inactive` (deactivated but kept for audit).
List Addresses Response
Unique identifier for this address record. Use it when querying or syncing balances for a specific address (e.g., `GET /wallets/:id/addresses/:addressId/balances`).
Identifier of the wallet that owns this address. Lets you trace an address back to its HD-derived parent.
Blockchain the address is on (e.g., `ethereum`, `bitcoin`, `solana`). Determines which curve the key was derived under and which RPC to use.
Network within the chain (e.g., `mainnet`, `sepolia`, `testnet`, `devnet`). Critical to check — testnet funds and mainnet funds are not interchangeable.
The actual on-chain address string. This is what you hand to customers / counterparties as a deposit destination.
Encoding format used (e.g., `EIP-55` checksummed for EVM, `P2WPKH` / `P2TR` for Bitcoin, `Base58` for Solana). Useful for downstream validators that need to know how to parse the string.
BIP-32 HD derivation path used to generate the key for this address (e.g., `m/44'/60'/0'/0/0`). Shows where this address sits in the wallet's HD tree.
`true` for the first address derived for the chain — what `WalletResponse.primary_addresses` points at. Additional derived addresses are `false`.
Optional free-form label you set when deriving the address (e.g., `Customer deposit`, `Refund slot`). Helps operators tell derived addresses apart in the dashboard.
Lifecycle status. `active` addresses still accept funds; `inactive` are deactivated but kept on the record for audit.
Timestamp when the address was derived.
Derive Address
Use Case
Derives a new address from the wallet's HD key.
Request Body
Asset identifier (2-50 chars). Chain is derived automatically (e.g., `USDC_ETH` → `ethereum`).
Network (e.g., `mainnet`, `sepolia`, `testnet`, `devnet`).
Address format override (uses chain default).
HD derivation path override (uses BIP-44 default).
Human-readable label.
Derive Address Response
data is a single AddressResponse — the same object shape used in each entry of List Addresses Response. Refer there for the per-field explanations.
Get Wallet Balances
Use Case
Returns aggregated balances for all addresses in the wallet.
Get Wallet Balances Response
Unique identifier for the balance record. Stays stable across syncs so you can reference a specific asset+address pair over time.
The address this balance entry belongs to. Useful when a wallet aggregates balances across many derived addresses.
Asset identifier (e.g., `ETH`, `USDC_ETH`). Composed of `<symbol>_<chain>` for tokens; bare symbol for native assets.
Blockchain the balance is on (e.g., `ethereum`, `bitcoin`).
Network within the chain (e.g., `mainnet`, `sepolia`). Important — mainnet and testnet balances are tracked separately.
`native` for the chain's gas asset (ETH, BTC, etc.); `token` for ERC-20s, SPLs, TRC-20s, and friends.
Human-readable ticker symbol (e.g., `USDC`, `ETH`). Safe to display in dashboards alongside formatted amounts.
Token contract address for tokens. Empty string for native assets — that's how you can tell them apart at a glance.
Confirmed on-chain balance in the asset's smallest unit (wei, satoshi, lamport, sun). Always a string to avoid float precision loss.
Amount currently held against in-flight outbound transactions. Subtract from `balance` to get what's actually spendable.
Incoming amount not yet confirmed on chain. Don't treat as spendable until it moves into `balance`.
When Bitnob last refreshed this balance from the chain. Stale values are possible during mempool spikes — sync explicitly if you need fresher data.
When the balance record was first created (typically when the address was derived for this asset).
Last update timestamp — bumped on every sync.
Sync Wallet Balances
Use Case
Triggers an on-chain balance refresh for all addresses in the wallet.
Sync Wallet Balances Response
data is the same BalanceResponse[] shape returned by Get Wallet Balances Response. Refer there for the per-field explanations. After this call every record's last_synced_at is bumped to now and balance / unconfirmed_balance reflect the latest on-chain state.
Get Address Balances
Use Case
Returns balances for a specific address.
Get Address Balances Response
data is the same BalanceResponse[] shape returned by Get Wallet Balances Response. Refer there for the per-field explanations. The only difference here is that the array is scoped to a single address rather than aggregated across the wallet.
Sync Address Balances
Use Case
Triggers an on-chain balance refresh for a specific address.
Sync Address Balances Response
data is the same BalanceResponse[] shape returned by Get Wallet Balances Response. Refer there for the per-field explanations. After this call every record's last_synced_at is bumped to now and balance / unconfirmed_balance reflect the latest on-chain state.