Create Imported Vaults
If you followed the procedures in Import Fireblocks private keys or Import stand-alone private keys, the keys will have been successfully imported into your Fordefi workspace. You must now fetch the key that matches the vault that you are trying to derive, then create an imported vault.
Procedures are provided below for Fireblocks and stand-alone vaults. If, in either case, you require assistance, Fordefi Support will create the vault for you.
Fetch key IDs
Fetch your key_id
s by calling the List Keys endpoint.
Multiple keys with different key_type
might be retrieved, for example, as shown here:
{
"keys": [
{
"key_id": "fcb3e897-9b34-5cc1-bf68-caff4959fd8b",
"key_name": "native-ecdsa",
"key_type": "ecdsa_secp256k1",
"key_origin": "native",
"xpub": "xpub661MyMwAqRbcF5Djv7z5egasA4na6rjD7qaYXgozpfTvsGzoFd4Wjip2d23mEuyxxLfWKhujFXqTg4hNiVfbEjRitLYpHyQ5azDgTFzFNsY",
"public_key_compressed": "A0PVHPaSI1Grw1Ngg1pKKrsbEzD9VBGZpOw5h2M2h4Fy",
"supports_derivation": true
},
{
"key_id": "57a15430-19e1-51d4-a016-e50d12129a59",
"key_name": "native-eddsa",
"key_type": "eddsa_ed25519",
"key_origin": "native",
"xpub": "xpub661MyMwAqRbcF27UzxvigM3v6sh9v3Y8yzK4apPK59j6tQCdoFDZJqiCGuPRcYkZ16WdvmFzCrxZvwgNFBTEXxaisKoaBcngn1HTSuC4bgu",
"public_key_compressed": "YuPh+bx+XTMyTZuS0kWC6Zrzwl62p2LGpzN18x5rscE=",
"supports_derivation": true
},
{
"key_id": "ad0f0560-d317-5a0c-b135-12cd0beb674c",
"key_name": "native-ecdsa_stark",
"key_type": "ecdsa_stark",
"key_origin": "native",
"xpub": "xpub661MyMwAqRbcGbuVAV2znu5mueT9iNjaJqiidTGyUhoGKURYAzu4jqtcBFueKv74wbeA8buJRgWD6f3ZjyDmtCsGC2AkVz1ymuvkXAY9UeR",
"public_key_compressed": "AgY6tkYxQxwwteMMjLJ4mduLFio/0RkDMH4tHPE0sEtm",
"supports_derivation": true
},
{
"key_id": "03fd867d-4b33-58b9-a9ef-56be69b0bdb9",
"key_name": "native-schnorr_secp256k1",
"key_type": "schnorr_secp256k1",
"key_origin": "native",
"xpub": "xpub661MyMwAqRbcEpJdeDdaA6VzcywJBRUq3L5bPoztFHHnQbJkRMSYuMTvrF76K76GV1WRdSuggLf4TuC3Nz9cvbnDtQgbeDcSzUg1ti3myQQ",
"public_key_compressed": "AsASJSRrUFmCIzG5/6gmd01OQcFJvFkk3nbWGwShbUio",
"supports_derivation": true
},
{
"key_id": "5e9cf8d6-7e71-47ff-93ea-9af5deaf68b0",
"key_name": "btcKey-ecdsa",
"key_type": "ecdsa_secp256k1",
"key_origin": "imported",
"xpub": "xpub661MyMwAqRbcFCXrTmg4DdQnVRGnkiHuEozUfB4aHCzYVCCZb7qiFVSzA64p7soy7THCvK2HpimMGcGSaj7Rp2JAW64T2W4GV9aVkeUcQbe",
"public_key_compressed": "ArSwD9SaJ/GrrBZIvG+kivK9TJC+fmSzMcvdTfO+9Sx1",
"supports_derivation": false
},
{
"key_id": "2783d0aa-9b01-4ec4-a7b8-da3f43da0759",
"key_name": "Unisat-ecdsa",
"key_type": "ecdsa_secp256k1",
"key_origin": "imported",
"xpub": "xpub661MyMwAqRbcFxWLgmm3j8isYUzWonWAie2f8Ft2eyGwrz4S8gwt2eFgg5LrcoVsMxeN4MVHoCaPqJSgXdBn5xEusc8FXjyGduDwV47w6Th",
"public_key_compressed": "AyVohsaGqH6q/nnJVrqqiunDo2o/o9JWz6lWaecpRJdd",
"supports_derivation": false
},
{
"key_id": "45b98222-0efc-4f2a-ba03-c887761ec4b2",
"key_name": "fireblocks_wallets-ecdsa",
"key_type": "ecdsa_secp256k1",
"key_origin": "imported",
"xpub": "xpub661MyMwAqRbcFUTqYcrDh3pBvXu1uQeJZR9rizkNCiWZnddTAgnz7UMejwX7u4xLmh2JMTtL7DdZmBWGUKa7v836UarassQ3DVFATMzRycV",
"public_key_compressed": "AuC/YJ187ZxJ6fTB0d8BQruV62Ivphep9ygPojt/AT3G",
"supports_derivation": true
},
{
"key_id": "dc9d2e23-2164-4b79-93b2-b580ffb6548a",
"key_name": "fireblocks_wallets-eddsa",
"key_type": "eddsa_ed25519",
"key_origin": "imported",
"xpub": "xpub661MyMwAqRbcFUTqYcrDh3pBvXu1uQeJZR9rizkNCiWZnddTAgnz7UMejrYEun7RaeNiSAr7puAq7hmhnb5DhyFkWL58iKs4o7TGys4iYXq",
"public_key_compressed": "UM/uhdq+vtePQ+lKG3r9E8IEYa1m76CDd5ve/9Iiadk=",
"supports_derivation": true
}
]
}
Choose the key type based on your vault's blockchain.
- For Bitcoin, EVM, and other ECDSA-based chains, use the ecdsa_secp256k1 key.
- For Aptos, Solana, Sui, and other EdDSA-based chains, use the eddsa_ed25519 key.
Create imported vaults
Now, use the Create Vault API to create a vault whose address is derived from the imported key.
Pass the ID of the imported master key and the derivation path of the vault supplied by the external provider.
For example, for an EVM vault:
curl -i -X POST \
https://api.fordefi.com/api/v1/vaults \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"name": "string",
"import_vault": {
"derivation_path": "m/44/60/0/0/0",
"key_id": "KEY_ID"
},
"type": "evm"
}'
If successful, the output looks something similar to:
{
"id": "fab500a8-e645-4ea6-a848-ec21bd38f930",
"created_at": "2025-05-05T18:36:09.401000Z",
"modified_at": "2025-05-05T18:36:09.401000Z",
"name": "Fantasy Vault",
"created_by": {
"id": "16b94846-2c83-4fb0-9b95-6ae1891df4b8",
"user_type": "api_user",
"name": "ImportKeyUser",
"state": "active",
"role": "trader"
},
"vault_group": {
"id": "737a127e-bc5b-41ba-a310-b040beed6f02",
"name": "Default",
"vault_count": 13,
"can_current_user_create_or_edit_vaults": true
},
"state": "active",
"are_all_chains_disabled": false,
"derivation_path": "m",
"public_key_compressed": "Asik4W8bJMCCiHa8Dl0457DPetQDIiYhwM4cCnf1KJJO",
"derivation_info": {
"derivation_path": "m",
"master_public_key": {
"id": "60ebe771-b6d9-49f9-891e-23ebaa5c2f52",
"xpub": "xpub661MyMwAqRbcGQPhUBvp2tRt8SgUNnecmJHBLpuw5FsGzu7kyAiMuN7v36uzDmXpankZNDQDdbQCGmQxLpA4XhVbvh9x3RPNdSiPJiBHLtB"
}
},
"keyset": {
"id": "3e7b961c-381e-489b-97c1-e4fb70126632",
"name": "default",
"scope": "organization"
},
"origin_type": "imported",
"type": "evm",
"address": "0xCD4DB86268E8c15ebD4eCd6B21aB2d294B0Ee4f6"
}
After browser refresh, you should see the new imported vault in your Fordefi organization.
If you do not see your asset balance change, start by refreshing the vault. If the vault is of type EVM, manually add missing token assets using this procedure.