Skip to main content
POST
/
wallets
curl --request POST \
--url https://api.dfns.io/wallets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-DFNS-USERACTION: <api-key>' \
--data '{
"network": "BitcoinSignet",
"signingKey": {
"scheme": "Schnorr"
}
}'
{
  "id": "wa-1f04s-lqc9q-xxxxxxxxxxxxxxxx",
  "network": "Ethereum",
  "address": "0x00e3495cf6af59008f22ffaf32d4c92ac33dac47",
  "name": "trading hot wallet",
  "signingKey": {
    "id": "key-6ece3-9l565-xxxxxxxxxxxxxxxx",
    "scheme": "ECDSA",
    "curve": "secp256k1",
    "publicKey": "e2375c8c9e87bfcd0be8f29d76c818cabacd51584f72cb2222d49a13b036d84d3d"
  },
  "status": "Active",
  "dateCreated": "2023-04-14T20:41:28.715Z",
  "custodial": true,
  "tags": []
}

Authentication

✅ Organization User (CustomerEmployee)
✅ Delegated User (EndUser)
✅ Service Account

Required Permissions

Wallets:Create: Always required
Keys:Create: Required if wallet creation also creates a new Key entity. This is the default behavior.
Keys:Reuse: Required if signingKey.id is specified. Wallet will reuse an existing key instead of creating a new one.
Keys:Delegate: Required if delegateTo is specified.
Wallets:Tags:Add: Required if tags are specified.

Authorizations

Authorization
string
header
required

Bearer Token: Used to authenticate API requests. More details how to generate the token: Authentication flows

X-DFNS-USERACTION
string
header
required

User Action Signature: Used to sign the change-inducing API requests. More details how to generate the token: User Action Signing flows

Body

application/json
network
enum<string>
required

Network used for the wallet.

Available options:
Algorand,
AlgorandTestnet,
Aptos,
AptosTestnet,
ArbitrumOne,
ArbitrumSepolia,
AvalancheC,
AvalancheCFuji,
BabylonGenesis,
BabylonTestnet5,
Base,
BaseSepolia,
Berachain,
BerachainBepolia,
Bitcoin,
BitcoinSignet,
BitcoinTestnet3,
BitcoinCash,
Bob,
BobSepolia,
Bsc,
BscTestnet,
Canton,
CantonTestnet,
Cardano,
CardanoPreprod,
Celo,
CeloAlfajores,
Codex,
CodexSepolia,
CosmosHub4,
CosmosIcsTestnet,
Dogecoin,
Ethereum,
EthereumGoerli,
EthereumSepolia,
EthereumHolesky,
EthereumHoodi,
FantomOpera,
FantomTestnet,
FlareC,
FlareCCoston2,
Hedera,
HederaTestnet,
Ink,
InkSepolia,
InternetComputer,
Ion,
IonTestnet,
Iota,
IotaTestnet,
KadenaTestnet4,
Kadena,
Kaspa,
Kusama,
Litecoin,
Near,
NearTestnet,
Optimism,
OptimismSepolia,
Origyn,
Plume,
PlumeSepolia,
Polkadot,
Polygon,
PolygonAmoy,
Polymesh,
PolymeshTestnet,
Race,
RaceSepolia,
SeiAtlantic2,
SeiPacific1,
Solana,
SolanaDevnet,
Stellar,
StellarTestnet,
Sui,
SuiTestnet,
Tsc,
TscTestnet1,
Tezos,
TezosGhostnet,
Ton,
TonTestnet,
Tron,
TronNile,
Westend,
XrpLedger,
XrpLedgerTestnet
name
string

Wallet nickname.

Maximum length: 100
signingKey
object

Options for the wallet's underlying key

delegateTo
string

ID of the end user to delegate this wallet to. The wallet will only be usable by the end user. More info here.

Maximum length: 64
Example:

"us-6b58p-r53sr-rlrd3l5cj3uc4ome"

delayDelegation
boolean
default:false

Specify if you want to create the wallet from a service account and later delegate it to an end user.

externalId
string

User-defined value that can be used to correlate the entity with an external system

Maximum length: 100
tags
string[]

List of tags to be created for this wallet. If specified, requires the Wallets:Tags:Add permission, like the Tag Wallet endpoint.

Maximum length: 10

Wallet Tag.

validatorId
string

Id of the validator on which the wallet is created for Canton networks

Maximum length: 64
Example:

"cv-7jeof-m584r-p35ucm37ko3cqgts"

Response

200 - application/json

Success

id
string
required

ID of the wallet.

Maximum length: 64
Example:

"wa-5pfuu-9euek-h0odgb6snva8ph3k"

network
enum<string>
required

Network this wallet is bound to.

Available options:
Algorand,
AlgorandTestnet,
Aptos,
AptosTestnet,
ArbitrumOne,
ArbitrumSepolia,
AvalancheC,
AvalancheCFuji,
BabylonGenesis,
BabylonTestnet5,
Base,
BaseSepolia,
Berachain,
BerachainBepolia,
Bitcoin,
BitcoinSignet,
BitcoinTestnet3,
BitcoinCash,
Bob,
BobSepolia,
Bsc,
BscTestnet,
Canton,
CantonTestnet,
Cardano,
CardanoPreprod,
Celo,
CeloAlfajores,
Codex,
CodexSepolia,
CosmosHub4,
CosmosIcsTestnet,
Dogecoin,
Ethereum,
EthereumGoerli,
EthereumSepolia,
EthereumHolesky,
EthereumHoodi,
FantomOpera,
FantomTestnet,
FlareC,
FlareCCoston2,
Hedera,
HederaTestnet,
Ink,
InkSepolia,
InternetComputer,
Ion,
IonTestnet,
Iota,
IotaTestnet,
KadenaTestnet4,
Kadena,
Kaspa,
Kusama,
Litecoin,
Near,
NearTestnet,
Optimism,
OptimismSepolia,
Origyn,
Plume,
PlumeSepolia,
Polkadot,
Polygon,
PolygonAmoy,
Polymesh,
PolymeshTestnet,
Race,
RaceSepolia,
SeiAtlantic2,
SeiPacific1,
Solana,
SolanaDevnet,
Stellar,
StellarTestnet,
Sui,
SuiTestnet,
Tsc,
TscTestnet1,
Tezos,
TezosGhostnet,
Ton,
TonTestnet,
Tron,
TronNile,
Westend,
XrpLedger,
XrpLedgerTestnet
signingKey
object
required

Details about the key underlying the wallet.

status
enum<string>
required

Wallet status.

Available options:
Active,
Archived
dateCreated
string
required

ISO 8601 date string when wallet was created.

Example:

"2023-04-14T20:41:28.715Z"

custodial
boolean
required

Whether the wallet is owned by an end user (non-custodial), or by your organization (custodial).

tags
string[]
required

List of tags.

Maximum length: 10

Wallet Tag.

address
string

Wallet address on its corresponding network.

dateDeleted
string

ISO 8601 date string when wallet was deleted.

Example:

"2023-04-14T20:41:28.715Z"

name
string

Wallet nickname.

Maximum length: 100
externalId
string

User-defined value that can be used to correlate the entity with an external system.

Maximum length: 100
validatorId
string

Id of the validator on which the wallet is created for Canton networks

Maximum length: 64
Example:

"cv-7jeof-m584r-p35ucm37ko3cqgts"

I