curl --request POST \
--url https://api.anchorage-staging.com/v2/vaults/{vaultId}/wallets \
--header 'Api-Access-Key: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"networkId": "BTC",
"activateAllCompatibleNetworks": true,
"async": true,
"compatibleNetworkIds": [
"<string>"
],
"idempotencyKey": "e763a50d-aa82-4ec7-b5a3-89ad0462d248",
"subaccountId": "<string>",
"walletName": "Bitcoin Mainnet - Wallet 1"
}
'import requests
url = "https://api.anchorage-staging.com/v2/vaults/{vaultId}/wallets"
payload = {
"networkId": "BTC",
"activateAllCompatibleNetworks": True,
"async": True,
"compatibleNetworkIds": ["<string>"],
"idempotencyKey": "e763a50d-aa82-4ec7-b5a3-89ad0462d248",
"subaccountId": "<string>",
"walletName": "Bitcoin Mainnet - Wallet 1"
}
headers = {
"Api-Access-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Api-Access-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
networkId: 'BTC',
activateAllCompatibleNetworks: true,
async: true,
compatibleNetworkIds: ['<string>'],
idempotencyKey: 'e763a50d-aa82-4ec7-b5a3-89ad0462d248',
subaccountId: '<string>',
walletName: 'Bitcoin Mainnet - Wallet 1'
})
};
fetch('https://api.anchorage-staging.com/v2/vaults/{vaultId}/wallets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"walletId": "3d293c0d64c703023692216e9b4f5280",
"walletName": "Bitcoin Mainnet - Wallet 1",
"depositAddress": {
"address": "2N19AcihQ1a4MxQW658UFHTioUNnMkiHPkw",
"addressId": "a33f83d96ca95cac000a344aa478a8b8",
"addressSignaturePayload": "7b225465787441646472657373223a22324e313941636968513161344d78515736353855464854696f554e6e4d6b6948506b77227d",
"signature": "1642000aa9cca8e8610981aefbdb204b361c9dca3fa067b88fdacfba7a0f620d721378a33f4bbadad3923e633a4d712646d1e8e314e9fcb4aa4102c0581f6503"
},
"assets": [
{
"assetType": "BTC",
"availableBalance": {
"quantity": "10.00000000",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "97510.1"
},
"totalBalance": {
"quantity": "10.45234733",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "101920.94"
},
"stakedBalance": {
"quantity": "32.00000000",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "312032.32"
},
"unclaimedBalance": {
"quantity": "0",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "0"
},
"unvestedBalance": {
"quantity": "0",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "0"
},
"unvestedUnstakeableBalance": {
"quantity": "0",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "0"
}
}
],
"vaultId": "1c920f4241b78a1d483a29f3c24b6c4c",
"vaultName": "Long Hold Vault",
"isDefault": true,
"isArchived": false,
"networkId": "BTC",
"type": "WALLET"
}
}{
"data": {
"creationStatus": "IN_PROGRESS"
}
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}Create a new wallet in a vault
Permissions required: Create address
Create a wallet in the specified vaultId.
curl --request POST \
--url https://api.anchorage-staging.com/v2/vaults/{vaultId}/wallets \
--header 'Api-Access-Key: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"networkId": "BTC",
"activateAllCompatibleNetworks": true,
"async": true,
"compatibleNetworkIds": [
"<string>"
],
"idempotencyKey": "e763a50d-aa82-4ec7-b5a3-89ad0462d248",
"subaccountId": "<string>",
"walletName": "Bitcoin Mainnet - Wallet 1"
}
'import requests
url = "https://api.anchorage-staging.com/v2/vaults/{vaultId}/wallets"
payload = {
"networkId": "BTC",
"activateAllCompatibleNetworks": True,
"async": True,
"compatibleNetworkIds": ["<string>"],
"idempotencyKey": "e763a50d-aa82-4ec7-b5a3-89ad0462d248",
"subaccountId": "<string>",
"walletName": "Bitcoin Mainnet - Wallet 1"
}
headers = {
"Api-Access-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Api-Access-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
networkId: 'BTC',
activateAllCompatibleNetworks: true,
async: true,
compatibleNetworkIds: ['<string>'],
idempotencyKey: 'e763a50d-aa82-4ec7-b5a3-89ad0462d248',
subaccountId: '<string>',
walletName: 'Bitcoin Mainnet - Wallet 1'
})
};
fetch('https://api.anchorage-staging.com/v2/vaults/{vaultId}/wallets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"walletId": "3d293c0d64c703023692216e9b4f5280",
"walletName": "Bitcoin Mainnet - Wallet 1",
"depositAddress": {
"address": "2N19AcihQ1a4MxQW658UFHTioUNnMkiHPkw",
"addressId": "a33f83d96ca95cac000a344aa478a8b8",
"addressSignaturePayload": "7b225465787441646472657373223a22324e313941636968513161344d78515736353855464854696f554e6e4d6b6948506b77227d",
"signature": "1642000aa9cca8e8610981aefbdb204b361c9dca3fa067b88fdacfba7a0f620d721378a33f4bbadad3923e633a4d712646d1e8e314e9fcb4aa4102c0581f6503"
},
"assets": [
{
"assetType": "BTC",
"availableBalance": {
"quantity": "10.00000000",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "97510.1"
},
"totalBalance": {
"quantity": "10.45234733",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "101920.94"
},
"stakedBalance": {
"quantity": "32.00000000",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "312032.32"
},
"unclaimedBalance": {
"quantity": "0",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "0"
},
"unvestedBalance": {
"quantity": "0",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "0"
},
"unvestedUnstakeableBalance": {
"quantity": "0",
"assetType": "BTC",
"currentPrice": "9751.01",
"currentUSDValue": "0"
}
}
],
"vaultId": "1c920f4241b78a1d483a29f3c24b6c4c",
"vaultName": "Long Hold Vault",
"isDefault": true,
"isArchived": false,
"networkId": "BTC",
"type": "WALLET"
}
}{
"data": {
"creationStatus": "IN_PROGRESS"
}
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}{
"errorType": "InternalError",
"message": "Missing required field 'amount'."
}Authorizations
An API key associated with a security role
Path Parameters
The ID of the vault holding the new wallet
Body
The ID of the network for assets in this wallet.
"BTC"
When true, activate the new wallet on every network that is key-compatible with networkId and enabled for your organization — the same set returned by compatibleNetworkIds on /asset-types — without enumerating them. Mutually exclusive with compatibleNetworkIds; supplying both is rejected with a 400.
When true, return 202 as soon as the creation has been durably accepted instead of blocking until the wallet exists, so no long request timeout is needed. Requires idempotencyKey: re-sending the identical request is the polling mechanism — it returns 202 while creation is still running, 200 with the wallet once it has completed, and 409 if the creation attempt failed (terminal: the key is not reusable, so retry with a new idempotencyKey). Cannot be combined with compatibleNetworkIds or activateAllCompatibleNetworks (rejected with a 400): compatible-network activation currently requires a blocking request. Ignored for fiat wallets, which are always created synchronously. Defaults to false, which keeps the blocking behavior for all existing callers.
Optional list of additional compatible network IDs to activate this wallet on. All networks must share the same key family as the primary networkId. Activation on these networks happens synchronously after the initial wallet creation.
Optional client-provided idempotency key, scoped to your organization and to this endpoint (the same key sent to other endpoints deduplicates independently). Retrying an identical request with the same key (lost response, timeout, automated retry) returns the wallet created by the original request instead of creating a duplicate. Deduplication is bounded in time: a key is recognized only while the server retains the original request's execution history (a fixed retention window measured in days, not indefinitely), so retry promptly and never reuse a key for a different request — a key reused after the window lapses is treated as new and will create another wallet. Within the window, reuse detection is limited to what the server can observe after the fact: a key that resolves to a different vault or network is rejected with a 409. Differences in other fields (such as name) are not detected — the original request's wallet is returned — so always retry with the identical request body. A key whose creation attempt failed is also rejected with a 409: the failure is terminal for that key, so retry with a new one. With async, the key doubles as the polling handle (see async). An empty value is treated as absent. Ignored for fiat wallets: fiat wallet creation does not deduplicate retries.
128"e763a50d-aa82-4ec7-b5a3-89ad0462d248"
The Subaccount Identifier to link this wallet.(in development / early access)
The name of the Wallet.
"Bitcoin Mainnet - Wallet 1"
Response
The new wallet info in this vault
A wallet holds a crypto asset or fiat (USD). A crypto wallet has a depositAddress. A fiat wallet has no depositAddress. The GET endpoints return its bank wire details in depositInstruction. The create response omits depositInstruction, because the instruction is set up after the wallet is created.
Show child attributes
Show child attributes
{ "walletId": "3d293c0d64c703023692216e9b4f5280", "walletName": "Bitcoin Mainnet - Wallet 1", "depositAddress": { "address": "2N19AcihQ1a4MxQW658UFHTioUNnMkiHPkw", "addressId": "a33f83d96ca95cac000a344aa478a8b8", "addressSignaturePayload": "7b225465787441646472657373223a22324e313941636968513161344d78515736353855464854696f554e6e4d6b6948506b77227d", "signature": "1642000aa9cca8e8610981aefbdb204b361c9dca3fa067b88fdacfba7a0f620d721378a33f4bbadad3923e633a4d712646d1e8e314e9fcb4aa4102c0581f6503" }, "assets": [ { "assetType": "BTC", "availableBalance": { "quantity": "10.00000000", "assetType": "BTC", "currentPrice": "9751.01", "currentUSDValue": "97510.1" }, "totalBalance": { "quantity": "10.45234733", "assetType": "BTC", "currentPrice": "9751.01", "currentUSDValue": "101920.94" }, "stakedBalance": { "quantity": "32.00000000", "assetType": "BTC", "currentPrice": "9751.01", "currentUSDValue": "312032.32" }, "unclaimedBalance": { "quantity": "0", "assetType": "BTC", "currentPrice": "9751.01", "currentUSDValue": "0" }, "unvestedBalance": { "quantity": "0", "assetType": "BTC", "currentPrice": "9751.01", "currentUSDValue": "0" }, "unvestedUnstakeableBalance": { "quantity": "0", "assetType": "BTC", "currentPrice": "9751.01", "currentUSDValue": "0" } } ], "vaultId": "1c920f4241b78a1d483a29f3c24b6c4c", "vaultName": "Long Hold Vault", "isDefault": true, "isArchived": false, "networkId": "BTC", "type": "WALLET" }
Was this page helpful?