Deprecation Notice
These Fireblocks API docs have been deprecated and are no longer being updated. They are here for legacy reasons in case you need to refer to them, however information on them will be outdated.
Please use the Fireblocks Developer Portal instead: developers.fireblocks.com.
Introduction
Welcome to the Fireblocks developer page! Fireblocks provides a REST API that enables you to manage your workspace as well as fully automate your transaction flow and a webhook that provides you the ability to receive push notifications on events happening on your workspace.
You can submit transfers via the API and receive real-time insights on transfers; sign all transaction types and messages securely with Raw Signing; set up automated transaction signing with Fireblocks' co-signer; manage your vault accounts, internal and external wallets, exchange accounts, fiat accounts, and network connections; and take advantage of the AML integration, among other features. All transfers are reflected in the Fireblocks Console, Transaction History, Audit Log, webhook, and API responses.
REST API
Getting Started
You can use our REST API to create transactions on the Fireblocks platform and view information regarding your vault accounts, FIAT accounts, connected wallets, exchanges, and network connections.
We offer SDKs in Python and JavaScript. You can view code examples to the right and switch between languages with the tabs in the top right. Additionally, you can view the API documentation with this online tool.
The API specification is also available in OpenAPI 3.0 (Swagger) format.
Generating a CSR file
A Certificate Signing Request (.csr) file is required to authenticate an API user. The .csr file contains your Fireblocks API secret key.
Generate your RSA 4096 private key (stored in fireblocks_secret.key) for signing requests with the following command line:
openssl req -new -newkey rsa:4096 -nodes -keyout fireblocks_secret.key -out fireblocks.csr
Make sure you keep the Fireblocks API secret key (fireblocks_secret.key) safe and secure. Do not share your Fireblocks API secret key.
Learn more about creating API users.
Signing a request
Fireblocks uses API keys to authenticate all API calls. The base URL is: https://api.fireblocks.io
from fireblocks_sdk import FireblocksSDK, TransferPeerPath, DestinationTransferPeerPath, TRANSACTION_STATUS_CONFIRMED, TRANSACTION_STATUS_CANCELLED, TRANSACTION_STATUS_REJECTED, TRANSACTION_STATUS_FAILED, VAULT_ACCOUNT, TRANSACTION_MINT, TRANSACTION_BURN
apiSecret = open('fireblocks_secret.key', 'r').read()
apiKey = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
fireblocks = FireblocksSDK(apiSecret, apiKey)
import fs from "fs";
import path from "path";
import {FireblocksSDK, PeerType, TransactionArguments, TransactionOperation, TransactionStatus} from "fireblocks-sdk";
apiSecret = fs.readFileSync(path.resolve(__dirname, "./fireblocks_secret.key"), "utf8");
const apiKey = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
fireblocks = new FireblocksSDK(apiSecret, apiKey);
Make sure to replace the apiKey with your API key.
Learn more about creating a Fireblocks API key.
Every request must contain the following headers:
X-API-Key - The API Key to be provided to you by Fireblocks.
Authorization - This value should be set to Bearer <Access Token>
. The access token is a Base64-encoded JSON Web Token (JWT).
JWT structure
The payload field should contain the following fields:
- uri - The URI part of the request (e.g., /v1/transactions).
- nonce - Unique number or string. Each API request needs to have a different nonce.
- iat - The time at which the JWT was issued, in seconds since Epoch.
- exp - The expiration time on and after which the JWT must not be accepted for processing, in seconds since Epoch. Must be less than iat+30sec.
- sub - The API Key.
- bodyHash - Hex-encoded SHA-256 hash of the raw HTTP request body.
The JWT should be signed with the Fireblocks API secret key and the RS256 (RSASSA-PKCS1-v1_5 using SHA-256 hash) algorithm.
Authorization: Bearer <JWT>
IP Whitelisting
Fireblocks supports restriction of API calls to be accepted only from a specific IP address per API key. If you wish to whitelist your IP address, please submit a ticket to Fireblocks Support with the IP of the machine running your API client and the matching API key.
API Idempotency
Fireblocks' API supports the submission of idempotent requests. Resubmission of the same request with the same idempotency key will not trigger the same operation again, but only return the original response. For example, this would be used to ensure a transaction request with the same idempotency key is not executed multiple times if you try to re-submit it due to network errors or delays experienced for a prior submission.
To make an idempotent request, please add Idempotency-Key: <key>
header to your POST request. For any request with the Idempotency-Key header, we will store the response and re-send it for every request for the same idempotency key for 24H.
Rate Limiting
Fireblocks aims to provide a stable and secure platform for all users at all times. Accordingly, traffic is continuously monitored from all parties to identify patterns that may affect the network negatively. If traffic from a single account is identified as too high and the rate limit is hit, Fireblocks may temporarily throttle or restrict the account.
You have a rate limit that is based on a per API endpoint and per minute basis. If you reach your rate limit, you'll see a 429 error response to let you know your rate limit has been temporarily exceeded. If you want to raise your rate limit, please contact your account manager or Fireblocks support.
Note: Additional charges may apply for this feature.
Balance Decimal Precision
A balance returned by Fireblocks API has a maximum 17 decimal digits (number of digits left of the decimal point + number of digits right of the decimal point). Balances with more than 17 decimal digits will be rounded to the nearest digit at the last digit.
If you want to use the balance returned by Fireblocks API as an input argument for your next transaction to sweep the entire balance of a vault account to another destination, consider rounding down the 17th digit. Otherwise your transaction might fail with an error of insufficient balance or insufficient funds for fee.
Example 1: 1.5999842313164864354987949849431321688978979794564564656119818916866846484686484613534846
The number above has more than 17 decimals and will be returned as this string: 1.5999842313164865
Example 2: 125232362323663422632351313251.599984231316486435498794984943132168897897979456456465
Fireblocks supports 16 decimals and will returned the number above as this string: 1.252323623236634e+30
Endpoints
Vault
List Vault Accounts (Paged)
vault_accounts = fireblocks.get_vault_accounts_with_page_info(filters)
const vaultAccounts = await fireblocks.getVaultAccountsWithPageInfo(filters);
The above command returns JSON structured like this:
{
"accounts": [{
"id": "string",
"name": "string",
"hiddenOnUI": false,
"customerRefId": "string",
"autoFuel": false,
"assets": [{
"id": "string",
"total": "string",
"available": "string",
"pending": "string",
"lockedAmount": "string",
"totalStakedCPU": "string",
"totalStakedNetwork": "string",
"selfStakedCPU": "string",
"selfStakedNetwork": "string",
"pendingRefundCPU": "string",
"pendingRefundNetwork": "string"
}]
}],
"paging": {
"before": "string",
"after": "string"
},
"previousUrl": "string",
"nextUrl": "string"
}
Retrieves all vault accounts in your workspace. This endpoint returns a limited amount of results and quick response time.
HTTP Request
GET /v1/vault/accounts_paged
Note: This API call is subject to rate limits.
Query Parameters
Parameter | Type | Description |
---|---|---|
namePrefix | string | [optional] Filter results for vault accounts with a name that starts with this value. |
nameSuffix | string | [optional] Filter results for vault accounts with a name that ends with this value. |
minAmountThreshold | integer | [optional] Filter results for vault accounts with a total balance of crypto assets, (in their native amount) that is higher than this amount. (Note: This amount is calculated by adding the threshold amount to the minimum amount supported by the decimals per asset.) |
assetId | number | [optional] Filter results for vault accounts that contain this asset. |
orderBy | string | Returns default values in DESC order. Available in ASC, DESC. The results are ordered by the creation time of the vault account. |
limit | integer | Returns the maximum number of vault accounts in a single response. The default value is 300 and maximum value is 500. |
before | string | [optional] cursor string, if specified then we give the next |
after | string | [optional] cursor string, if specified then we give the next |
maxBip44AddressIndexUsed | number | The maximum BIP44 index used in deriving addresses for this wallet. |
maxBip44ChangeAddressIndexUsed | number | The maximum BIP44 index used in deriving change addresses for this wallet. |
Response
Returns a VaultAccountsPagedResponse object.
List Vault Accounts
vault_accounts = fireblocks.get_vault_accounts()
const vaultAccounts = await fireblocks.getVaultAccounts();
The above command returns JSON structured like this:
[
{
"id": "string",
"name": "string",
"hiddenOnUI": false,
"customerRefId": "string",
"autoFuel": false,
"assets": [
{
"id": "string",
"total": "string",
"available": "string",
"pending": "string",
"lockedAmount": "string",
"totalStakedCPU": "string",
"totalStakedNetwork": "string",
"selfStakedCPU": "string",
"selfStakedNetwork": "string",
"pendingRefundCPU": "string",
"pendingRefundNetwork": "string"
}
]
}
]
Retrieves all Vault Accounts in your workspace.
Important: This endpoint has been deprecated. Workspaces created after May 1, 2022 will have the /vault/accounts
endpoint disabled. If your workspace has this endpoint disabled and you attempt to use it, you will get the following error message: "This endpoint is unavailable. Please use the /vault/accounts_paged
endpoint for paged responses of your vault accounts."
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/vault/accounts
Query Parameters
Parameter | Description |
---|---|
namePrefix | Filter the response based on this account name prefix. |
nameSuffix | Filter the response based on this account name prefix. |
minAmountThreshold | Returns assets with total balance more than the provided threshold. |
assetId | Returns only the wallets of the requested asset. |
maxBip44AddressIndexUsed | The maximum BIP44 index used in deriving addresses for this wallet. |
maxBip44ChangeAddressIndexUsed | The maximum BIP44 index used in deriving change addresses for this wallet. |
Response
Returns an array of VaultAccount objects.
Retrieve a Vault Account
vault_account = fireblocks.get_vault_account(vault_account_id)
const vaultAccount = await fireblocks.getVaultAccountById(vaultAccountId);
The above command returns JSON structured like this:
{
"id": "string",
"name": "string",
"hiddenOnUI": false,
"customerRefId": "string",
"autoFuel": false,
"assets": [
{
"id": "string",
"total": "string",
"available": "string",
"pending": "string",
"lockedAmount": "string",
"totalStakedCPU": "string",
"totalStakedNetwork": "string",
"selfStakedCPU": "string",
"selfStakedNetwork": "string",
"pendingRefundCPU": "string",
"pendingRefundNetwork": "string"
}
]
}
Returns the requested Vault Account.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/vault/accounts/{vaultAccountId}
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account being retrieved. |
Response
Returns a VaultAccount object.
Create a New Vault Account
vaultAccount = fireblocks.create_vault_account(name, hiddenOnUI, customer_ref_id, auto_fueling)
const vaultAccount = await fireblocks.createVaultAccount(name, hiddenOnUI, customerRefId, autoFueling);
The above command returns JSON structured like this:
{
"id": "string",
"name": "string",
"hiddenOnUI": false,
"customerRefId": "string",
"autoFuel": false,
"assets": [
{
"id": "string",
"total": "string",
"available": "string",
"pending": "string",
"lockedAmount": "string",
"staked": "string",
"frozen": "string",
"totalStakedCPU": "string",
"totalStakedNetwork": "string",
"selfStakedCPU": "string",
"selfStakedNetwork": "string",
"pendingRefundCPU": "string",
"pendingRefundNetwork": "string",
"blockHeight": "string",
"blockHash": "string"
}
]
}
Creates a new Vault Account with the requested name.
Note: This API call is subject to rate limits.
HTTP Request
POST /v1/vault/accounts
Body Parameters
Parameter | Type | Description |
---|---|---|
name | string | The name of the new account (this can be renamed later). |
hiddenOnUI | boolean | [optional] Should be set to true if you wish this account will not appear in the web console, false by default. |
customerRefId | string | [optional] The ID for AML providers to associate the owner of funds with transactions. |
autoFuel | boolean | [optional] In case the Gas Station service is enabled on your workspace, this flag needs to be set to "true" if you wish to add this account's Ethereum address to be monitored and fueled upon detected deposits of ERC20 tokens. |
Response
Returns a VaultAccount object.
Rename a Vault Account
vaultAccount = fireblocks.update_vault_account(vault_account_id, name)
const vaultAccount = await fireblocks.updateVaultAccount(vautlAccountId, name);
Make sure to replace
vaultAccountId
andname
with the correct variables.The above command returns JSON structured like this:
{
"id": "string",
"name": "string",
"hiddenOnUI": false,
"customerRefId": "string",
"autoFuel": false,
"assets": [
{
"id": "string",
"total": "string",
"available": "string",
"pending": "string",
"lockedAmount": "string",
"staked": "string",
"frozen": "string",
"totalStakedCPU": "string",
"totalStakedNetwork": "string",
"selfStakedCPU": "string",
"selfStakedNetwork": "string",
"pendingRefundCPU": "string",
"pendingRefundNetwork": "string",
"blockHeight": "string",
"blockHash": "string"
}
]
}
Renames the requested vault account.
HTTP Request
PUT /v1/vault/accounts/{vaultAccountId}
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account to return, or '0' for the default vault account. |
Body Parameters
Parameter | Type | Description |
---|---|---|
name | string | The new name of the vault account. |
Response
Returns 200 on success.
Retrieve the Balance of an Asset in a Vault Account
vaultAsset = fireblocks.get_vault_account_asset(vault_account_id, asset_id)
const vaultAsset = await fireblocks.getVaultAccountAsset(vaultAccountId, assetId);
The above command returns JSON structured like this:
{
"id": "string",
"total": "string",
"available": "string",
"pending": "string",
"lockedAmount": "string",
"staked": "string",
"frozen": "string",
"totalStakedCPU": "string",
"totalStakedNetwork": "string",
"selfStakedCPU": "string",
"selfStakedNetwork": "string",
"pendingRefundCPU": "string",
"pendingRefundNetwork": "string",
"blockHeight": "string",
"blockHash": "string"
}
Retrieves a wallet of a specific asset under a Fireblocks Vault Account.
HTTP Request
GET /v1/vault/accounts/{vaultAccountId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account to return, or '0' for the default vault account. |
assetId | The ID of the asset. |
Response
Returns a VaultAsset object.
Create a New Wallet under the Vault Account
vaultAsset = fireblocks.create_vault_asset(vault_account_id, asset_id)
const vaultAsset = await fireblocks.createVaultAsset(vaultAccountId, assetId);
The above command returns JSON structured like this:
{
"id": "string",
"address": "string",
"legacyAddress": "string",
"tag": "string",
"eosAccountName": "string"
}
Creates a new wallet of a specific asset under a Fireblocks Vault Account.
Note: This API call is subject to rate limits.
HTTP Request
POST /v1/vault/accounts/{vaultAccountId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account, or '0' for the default vault account. |
assetId | The ID of the asset. |
Body Parameters
Parameter | Type | Description |
---|---|---|
eosAccountName | string | [optional] EOS account address |
Response
Returns CreateVaultAssetResponse.
Refresh the Balance of an Asset
vaultAsset = fireblocks.refresh_vault_asset_balance(vault_account_id, asset_id)
const vaultAsset = await fireblocks.refreshVaultAssetBalance(vaultAccountId, assetId);
The above command returns JSON structured like this:
{
"id": "string",
"total": "string",
"available": "string",
"pending": "string",
"lockedAmount": "string",
"staked": "string",
"frozen": "string",
"totalStakedCPU": "string",
"totalStakedNetwork": "string",
"selfStakedCPU": "string",
"selfStakedNetwork": "string",
"pendingRefundCPU": "string",
"pendingRefundNetwork": "string",
"blockHeight": "string",
"blockHash": "string"
}
Updates the balance of a specific asset in a Vault Account.
Note: This API call is subject to rate limits.
HTTP Request
POST /v1/vault/accounts/{vaultAccountId}/{assetId}/balance
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account, or '0' for the default vault account. |
assetId | The ID of the asset. |
Response
Returns VaultAsset object.
Hide the Vault Account from the Web Console View
vaultAsset = fireblocks.hide_vault_account(vault_account_id)
const vaultAsset = await fireblocks.hideVaultAccount(vaultAccountId);
Hides the Vault Account from the web console view.
HTTP Request
POST /v1/vault/accounts/{vaultAccountId}/hide
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account to hide from the web console. |
Response
Returns 200 on success.
Return the Vault Account to be visible in the Web Console
vaultAsset = fireblocks.unhide_vault_account(vault_account_id)
const vaultAsset = await fireblocks.unhideVaultAccount(vaultAccountId);
Returns the Vault Account to be visible in the web console.
HTTP Request
POST /v1/vault/accounts/{vaultAccountId}/unhide
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account to be visible in the web console. |
Response
Returns 200 on success.
Retrieve the Addresses of an Asset in a Vault Account
depositAddresses = fireblocks.get_deposit_addresses(vault_account_id, asset_id)
const depositAddresses = await fireblocks.getDepositAddresses(vaultAccountId, assetId);
The above command returns JSON structured like this:
[
{
"assetId": "string",
"address": "string",
"legacyAddress": "string",
"description": "string",
"tag": "string",
"type": "string",
"bip44AddressIndex": 0
}
]
Retrieves all addresses of a specific asset inside a Fireblocks Vault Account.
HTTP Request
GET /v1/vault/accounts/{vaultAccountId}/{assetId}/addresses
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account to return, or '0' for the default vault account. |
assetId | The ID of the asset. |
Response
Returns an array of VaultAccountAssetAddress objects.
Create a New Deposit Address of an Asset in a Vault Account
address = fireblocks.generate_new_address(vault_account_id, asset_id, description, customer_ref_id)
const address = await fireblocks.generateNewAddress(vaultAccountId, assetId, description, customerRefId);
The above command returns JSON structured like this:
{
"address": "string",
"legacyAddress": "string",
"tag": "string",
"bip44AddressIndex": 0
}
Generates a new deposit address for the requested asset under the specific vault account.
Note: This API call is subject to rate limits.
HTTP Request
POST /v1/vault/accounts/{vaultAccountId}/{assetId}/addresses
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account, or '0' for the default vault account. |
assetId | The ID of the asset. |
Body Parameters
Parameter | Description |
---|---|
description | [optional] Description of the new address. |
customerRefId | [optional] The ID for AML providers to associate the owner of funds with transactions. |
Response
Returns a CreateAddressResponse object.
Rename an Address
address = fireblocks.set_address_description(vault_account_id, asset_id, address, tag, description)
const address = await fireblocks.setAddressDescription(vaultAccountId, assetId, address, tag, description);
The above command returns JSON structured like this:
{
"id": "string",
"eosAccountName": "string"
}
Updates the description of an existing address of an asset within a Fireblocks Vault Account.
HTTP Request
PUT /v1/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account, or '0' for the default vault account. |
assetId | The ID of the asset. |
addressId | The address for which to add a description. For XRP/EOS/XLM, use :{tag or memo}, for all other assets, use only the address. |
Body Parameters
Parameter | Type | Description |
---|---|---|
description | string | [optional] Description of the new address. |
Response
Returns 200 on success.
Retrieve the Maximum Spendable Amount
address = fireblocks.get_max_spendable_amount(vault_account_id, asset_id)
const address = await fireblocks.getMaxSpendableAmount(vaultAccountId, assetId);
The above command returns JSON structured like this:
{
"maxSpendableAmount": "string"
}
Retrieve the maximum amount that can be spent in a single transaction from this specific vault account. This endpoint is relevant only for UTXO assets. In UTXO based assets, each transaction is composed of multiple inputs and there is a limitation on the number of inputs you can embed in a single transaction, this call will allow you to retrieve the maximum amount in a single transaction from a specific vault account. In case you wish to spend more than the maximum spendable amount, please send several transactions.
HTTP Request
GET /v1/vault/accounts/{vaultAccountId}/{assetId}/max_spendable_amount
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account, or '0' for the default vault account. |
assetId | The ID of the asset. |
Query Parameters
Parameter | Type | Description |
---|---|---|
manualSigning | boolean | [optional] False by default. The maximum number of inputs depends if the transaction will be signed by an automated co-signer server or on a mobile device. |
Response
Returns 200 on success.
Set an AML Customer Reference ID for Vault Account
vaultAsset = fireblocks.set_vault_account_customer_ref_id(vault_account_id, customer_ref_id)
const vaultAsset = await fireblocks.setCustomerRefIdForVaultAccount(vaultAccountId, customerRefId);
Sets an AML/KYT customer reference ID for the vault account
HTTP Request
POST /v1/vault/accounts/{vaultAccountId}/set_customer_ref_id
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account. |
Body Parameters
Parameter | Type | Description |
---|---|---|
customerRefId | string | The ID for AML providers to associate the owner of funds with transactions. |
Response
Returns 200 on success.
Set an AML Customer Reference ID for an Address
vaultAsset = fireblocks.set_customer_ref_id_for_address(vault_account_id, asset_id, address_id, customer_ref_id)
const vaultAsset = await fireblocks.setCustomerRefIdForAddress(vaultAccountId, assetId, addressId, customerRefId);
Sets an AML/KYT customer reference ID for the given address
HTTP Request
POST /v1/vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/set_customer_ref_id
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account. |
assetId | The ID of the asset. |
addressId | The address for which the customer reference ID should be added. For XRP/EOS/XLM, use :{tag or memo}, for all other assets, use only the address. |
Body Parameters
Parameter | Type | Description |
---|---|---|
customerRefId | string | The ID for AML providers to associate the owner of funds with transactions. |
Response
Returns 200 on success.
Retrieve Unspent Inputs
vaultAsset = fireblocks.get_unspent_inputs(vault_account_id, asset_id)
const vaultAsset = await fireblocks.getUnspentInputs(vaultAccountId, assetId);
The above command returns JSON structured like this:
{
"input": {
"txHash": "string",
"index": "number"
},
"address": "string",
"amount": "string",
"confirmations": "number",
"status": "string"
}
Returns unspent inputs of the requested asset in the Vault Account.
HTTP Request
GET /v1/vault/accounts/{vaultAccountId}/{assetId}/unspent_inputs
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account. |
assetId | The ID of the asset. |
Response
Returns an array of UnspentInputsData objects.
Retrieve Public Key by Derivation Path
pubKey = fireblocks.get_public_key_info(algorithm, derivation_path, compressed)
const PublicKeyInfoArgs = {
algorithm: 'MPC_ECDSA_SECP256K1',
derivationPath: '[44,0,0,0,0]'
}
const pubKey = await fireblocks.getPublicKeyInfo(PublicKeyInfoArgs);
Retrieves the public key of your Fireblocks' Vault.
HTTP Request
GET /v1/vault/public_key_info
Query Parameters
Parameter | Description |
---|---|
algorithm | String, one of the supported SigningAlgorithms. |
derivationPath | List of integers. |
compressed | Boolean, whether the returned key should be in compressed format or not, false by default. |
Response
Returns PublicKey object.
Retrieve the Public Key of Fireblocks' Address
pubKey = fireblocks.get_public_key_info_for_vault_account(vault_account_id, asset_id, change, address_index, compressed)
const PublicKeyInfoForVaultAccountArgs = {
assetId: 'assetId',
vaultAccountId: 0,
change: 0,
addressIndex: 0
}
const pubKey = await fireblocks.getPublicKeyInfoForVaultAccount(PublicKeyInfoForVaultAccountArgs);
Retrieves the public key of your Fireblocks' Vault.
HTTP Request
GET /v1/vault/accounts/{vaultAccountId}/{assetId}/{change}/{addressIndex}/public_key_info
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account which address should be retrieved, or 'default' for the default vault account. |
assetId | The ID of the asset. |
change | Whether the address should be derived internal (change) or not. |
addressIndex | The index of the address for the derivation path. |
Query Parameters
Parameter | Description |
---|---|
compressed | Boolean, whether the returned key should be in compressed format or not, false by default. |
Response
Returns PublicKey object.
Set Auto Fuel Properties of the Vault Account
autoFuel = fireblocks.setAutoFuel(vault_account_id, true)
const autoFuel = fireblocks.setAutoFuel(vault_account_id, true)
This endpoint is relevant only if the Gas Station is enabled on your workspace!
Enable / Disable auto fueling of the Vault Account's Ethereum address
HTTP Request
POST /v1/vault/accounts/{vaultAccountId}/set_auto_fuel
URL Parameters
Parameter | Description |
---|---|
vaultAccountId | The ID of the vault account. |
Body Parameters
Parameter | Type | Description |
---|---|---|
autoFuel | boolean | Should be set to true if you wish to monitor this account's Ethereum address for incoming deposits. |
Response
Returns 200 on success.
Retrieve Vault Balance by Assets
assets_balance = fireblocks.get_vault_assets_balance(accout_name_prefix, account_name_suffix)
const assetsBalance = await fireblocks.getVaultAssetsBalance(accountNamePrefix, accountNameSuffix);
The above command returns JSON structured like this:
[
{
"id": "string",
"total": "string",
"available": "string",
"pending": "string",
"frozen": "string",
"lockedAmount": "string",
"totalStakedCPU": "string",
"totalStakedNetwork": "string",
"selfStakedCPU": "string",
"selfStakedNetwork": "string",
"pendingRefundCPU": "string",
"pendingRefundNetwork": "string"
}
]
Returns the aggregated balance of your assets accross all Vault Accounts
HTTP Request
GET /v1/vault/assets
Query Parameters
Parameter | Description |
---|---|
accountNamePrefix | Filter the response based on this account name prefix. |
accountNameSuffix | Filter the response based on this account name suffix. |
Response
Returns an array of VaultAsset objects.
Retrieve Asset's Vault Balance
assets_balance = fireblocks.get_vault_balance_by_asset(asset_id)
const assetsBalance = await fireblocks.getVaultBalanceByAsset(assetId);
The above command returns JSON structured like this:
{
"id": "string",
"total": "string",
"available": "string",
"pending": "string",
"frozen": "string",
"lockedAmount": "string",
"totalStakedCPU": "string",
"totalStakedNetwork": "string",
"selfStakedCPU": "string",
"selfStakedNetwork": "string",
"pendingRefundCPU": "string",
"pendingRefundNetwork": "string"
}
Returns the balance of the requested asset
HTTP Request
GET /v1/vault/assets/{assetId}
URL Parameters
Parameter | Description |
---|---|
assetId | The requested asset ID. |
Response
Returns a VaultAsset object.
Internal Wallets
Internal Wallets are your whitelisted addresses outside of Fireblocks. You can see each wallet's balances and transfer funds here.
List Internal Wallets
internalWallets = fireblocks.get_internal_wallets()
const internalWallets = await fireblocks.getInternalWallets();
The above command returns JSON structured like this:
[
{
"id": "string",
"name": "string",
"customerRefId": "string",
"assets": [
{
"id": "string",
"balance": "string",
"lockedAmount": "string",
"status": "WAITING_FOR_APPROVAL",
"activationTime":"string",
"address": "string",
"tag": "string"
}
]
}
]
Retrieves all Internal Wallets in your workspace.
Note: BTC-based assets belonging to whitelisted addresses cannot be retrieved between 00:00 UTC and 00:01 UTC daily due to third-party provider, Blockchair, being unavailable for this 60 second period. Please wait until the next minute to retrieve BTC-based assets.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/internal_wallets
Response
Returns an array of UnmanagedWallet objects.
Create a New Internal Wallet
internalWallet = fireblocks.create_internal_wallet(name, customer_ref_id)
const internalWallet = await fireblocks.createInternalWallet(name, customerRefId);
The above command returns JSON structured like this:
{
"id": "string",
"name": "string",
"customerRefId": "string",
"assets": [
{
"id": "string",
"balance": "string",
"lockedAmount": "string",
"status": "WAITING_FOR_APPROVAL",
"activationTime":"string",
"address": "string",
"tag": "string"
}
]
}
Creates a new Internal Wallet container.
HTTP Request
POST /v1/internal_wallets
Body Parameters
Parameter | Type | Description |
---|---|---|
name | string | The wallet container's display name. |
customerRefId | string | [optional] The ID for AML providers to associate the owner of funds with transactions. |
Response
Returns an UnmanagedWallet objects.
Retrieve an Internal Wallet
internalWallet = fireblocks.get_internal_wallet(walletId)
const result = await fireblocks.getInternalWallet(walletId);
The above command returns JSON structured like this:
{
"id": "string",
"name": "string",
"customerRefId": "string",
"assets": [
{
"id": "string",
"balance": "string",
"lockedAmount": "string",
"status": "WAITING_FOR_APPROVAL",
"activationTime":"string",
"address": "string",
"tag": "string"
}
]
}
Retrieves all assets under the Internal Wallet.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/internal_wallets/{walletId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to return. |
Response
Returns an array of UnmanagedWallet objects.
Delete an Internal Wallet
result = fireblocks.delete_internal_wallet(walletId)
const result = await fireblocks.deleteInternalWallet(walletId);
The above command returns 200 (OK)
Deletes an Internal Wallet container.
HTTP Request
DELETE /v1/internal_wallets/{walletId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to delete. |
Response
Returns 200 on success.
Retrieve an Asset from an Internal Wallet
internalWalletAsset = fireblocks.get_internal_wallet_asset(walletId, assetId)
const internalWalletAsset = fireblocks.getInternalWalletAsset(walletId, assetId);
The above command returns JSON structured like this:
{
"id": "string",
"balance": "string",
"lockedAmount": "string",
"status": "WAITING_FOR_APPROVAL",
"activationTime":"string",
"address": "string",
"tag": "string"
}
Retrieves the information on a specific asset within an Internal Wallet.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/internal_wallets/{walletId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to return. |
assetId | The ID of the asset to return. |
Response
Returns WalletAsset object.
Add an Asset to an Internal Wallet
internalWalletAsset = fireblocks.create_internal_wallet_asset(walletId, assetId, address, tag)
const internalWalletAsset = await fireblocks.createInternalWalletAsset(walletContainerId, assetId, address, tag);
The above command returns JSON structured like this:
{
"id": "string",
"balance": "string",
"lockedAmount": "string",
"status": "WAITING_FOR_APPROVAL",
"activationTime":"string",
"address": "string",
"tag": "string"
}
Adds an address to an existing Internal Wallet container.
Note: This API call is subject to rate limits.
HTTP Request
POST /v1/internal_wallets/{walletId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to return. |
assetId | The ID of the asset to return. |
Body Parameters
Parameter | Type | Description |
---|---|---|
address | string | The wallet's address or, for EOS wallets, the account name. |
tag | string | For XRP wallets, the destination tag; for EOS/XLM, the memo; for the fiat providers (Signet by Signature, SEN by Silvergate, BLINC by BCB Group), the Bank Transfer Description. |
Response
Returns WalletAsset object.
Delete a Whitelisted Address from an Internal Wallet
result = fireblocks.delete_internal_wallet_asset(walletId, assetId)
const result = await fireblocks.deleteInternalWalletAsset(walletId, assetId);
The above command returns 200 (OK)
Deletes a whitelisted address (for an asset) from an Internal Wallet.
HTTP Request
DELETE /v1/internal_wallets/{walletId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to delete. |
assetId | The ID of the asset to delete. |
Response
Returns 200 success.
Set an AML Customer Reference ID for an Internal Wallet
result = firebocks.set_customer_ref_id_for_internal_wallet(wallet_id, customer_ref_id)
const result = await fireblocks.setCustomerRefIdForInternalWallet(walletId, customerRefId);
The above command returns 200 (OK)
Sets an AML/KYT customer reference ID for the specific internal wallet
HTTP Request
POST /v1/internal_wallets/{walletId}/set_customer_ref_id
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to be added with the customer reference ID. |
Body Parameters
Parameter | Type | Description |
---|---|---|
customerRefId | string | The ID for AML providers to associate the owner of funds with transactions. |
Response
Returns 200 success.
External Wallets
External Wallets are your counterparties’ wallets. These are addresses you wish to whitelist as transfer destinations.
List External Wallets
externalWallets = fireblocks.get_external_wallets()
const externalWallets = await fireblocks.getExternalWallets();
The above command returns JSON structured like this:
[
{
"id": "string",
"name": "string",
"customerRefId": "string",
"assets": [
{
"id": "string",
"status": "WAITING_FOR_APPROVAL",
"activationTime":"string",
"address": "string",
"tag": "string"
}
]
}
]
Retrieves all External Wallets in your workspace.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/external_wallets
Response
Returns an array of ExternalWallet objects.
Create a New External Wallet
externalWallet = fireblocks.create_external_wallet(name, customer_ref_id)
const externalWallet = await fireblocks.createExternalWallet(name, customerRefId);
The above command returns JSON structured like this:
{
"id": "string",
"name": "string",
"customerRefId": "string",
"assets": [
{
"id": "string",
"status": "WAITING_FOR_APPROVAL",
"activationTime":"string",
"address": "string",
"tag": "string"
}
]
}
Creates a new External Wallet.
HTTP Request
POST /v1/external_wallets
Body Parameters
Parameter | Type | Description |
---|---|---|
name | string | The wallet's display name |
customerRefId | string | [optional] The ID for AML providers to associate the owner of funds with transactions. |
Response
Returns an ExternalWallet object.
Retrieve an External Wallet
externalWallet = fireblocks.get_external_wallet(walletId)
const externalWallet = await fireblocks.getExternalWallet(walletId);
The above command returns JSON structured like this:
{
"id": "string",
"name": "string",
"customerRefId": "string",
"assets": [
{
"id": "string",
"status": "WAITING_FOR_APPROVAL",
"activationTime":"string",
"address": "string",
"tag": "string"
}
]
}
Retrieves the External Wallet for the request wallet ID.
HTTP Request
GET /v1/external_wallets/{walletId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to return. |
Response
Returns an ExternalWallet object.
Delete an External Wallet
result = firebocks.delete_external_wallet(walletId)
const result = await fireblocks.deleteExternalWallet(walletId);
The above command returns 200 (OK)
Deletes an External Wallet.
HTTP Request
DELETE /v1/external_wallets/{walletId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to delete. |
Response
Returns 201 on success.
Retrieve an Asset from an External Wallet
externalWalletAsset = fireblocks.get_external_wallet_asset(walletId, assetId)
const externalWalletAsset = fireblocks.getExternalWalletAsset(walletId, assetId)
The above command returns JSON structured like this:
{
"id": "string",
"status": "WAITING_FOR_APPROVAL",
"activationTime":"string",
"address": "string",
"tag": "string"
}
Retrieves the External Wallet of the requested wallet ID and asset.
HTTP Request
GET /v1/external_wallets/{walletId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to return. |
assetId | The ID of the asset to return. |
Response
Returns an ExternalWalletAsset object.
Add an Asset to an External Wallet
externalWalletAsset = fireblocks.create_external_wallet_asset(walletId, assetId, address, tag)
const externalWalletAsset = await fireblocks.createExternalWalletAsset(walletContainerId, assetId, address, tag);
The above command returns JSON structured like this:
{
"id": "string",
"status": "WAITING_FOR_APPROVAL",
"activationTime":"string",
"address": "string",
"tag": "string"
}
Adds an address to an existing External Wallet.
HTTP Request
POST /v1/external_wallets/{walletId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to return. |
assetId | The ID of the asset to return. |
Body Parameters
Parameter | Type | Description |
---|---|---|
address | string | The wallet's address or, for EOS wallets, the account name. |
tag | string | For XRP wallets, the destination tag; for EOS/XLM, the memo; for the fiat providers (Signet by Signature, SEN by Silvergate, BLINC by BCB Group), the Bank Transfer Description. |
Response
Returns an ExternalWalletAsset object.
Delete an Asset from an External Wallet
result = fireblocks.delete_external_wallet_asset(walletId, assetId)
const result = await fireblocks.deleteExternalWalletAsset(walletId, assetId);
The above command returns 200 (OK)
Deletes an external wallet asset.
HTTP Request
DELETE /v1/external_wallets/{walletId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to delete. |
assetId | The ID of the asset to delete. |
Response
Returns 200 on success.
Set an AML Customer Reference ID for an External Wallet
result = firebocks.set_customer_ref_id_for_external_wallet(wallet_id, customer_ref_id)
const result = await fireblocks.setCustomerRefIdForExternalWallet(walletId, customerRefId);
The above command returns 200 (OK)
Sets an AML/KYT customer reference ID for the specific external wallet
HTTP Request
POST /v1/external_wallets/{walletId}/set_customer_ref_id
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to be added with the customer reference ID. |
Body Parameters
Parameter | Type | Description |
---|---|---|
customerRefId | string | The ID for AML providers to associate the owner of funds with transactions. |
Response
Returns 200 on success.
Contract Wallets
Refer to your smart contract wallets (addresses of smart contracts) that are connected to your Fireblocks workspace.
List Contract Wallets
contracts = fireblocks.get_contract_wallets()
const contracts = await fireblocks.getContractWallets();
The above command returns JSON structured like this:
[
{
assets:
[
{
id: "string",
balance: "string",
lockedAmount: "string",
status: "WAITING_FOR_APPROVAL",
activationTime:"string",
address: "string",
tag: "string"
}
]
}
]
Lists contract wallets in your workspace.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/contracts
Response
Returns an array of UnmanagedContract objects.
Create a Contract Wallet
contracts = fireblocks.create_contract_wallet(name)
const contracts = await fireblocks.createContractWallet(name);
The above command returns JSON structured like this:
{
id: "string",
name: "string",
assets: [
{
id: "string",
status: "WAITING_FOR_APPROVAL",
activationTime:"string",
address: "string",
tag: "string"
}
]
}
Creates a new contract wallet.
HTTP Request
POST /v1/contracts
Body Parameters
Parameter | Type | Description |
---|---|---|
name | string | The wallet's display name. |
Response
Returns an array of UnmanagedContract objects.
Get a Contract Wallet
contracts = fireblocks.get_contract_wallet(walletId)
const result = await fireblocks.getContractWallet(walletId);
The above command returns JSON structured like this:
{
id: "string",
name: "string",
assets: [
{
id: "string",
balance: "string",
lockedAmount: "string",
status: "WAITING_FOR_APPROVAL",
activationTime:"string",
address: "string",
tag: "string"
}
]
}
Finds a specific contract wallet by ID.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/contracts/{walletId}
URL Parameters
Parameter | Description |
---|---|
name | The ID of the wallet to return. |
Response
Returns an array of UnmanagedContract objects.
Delete a Contract Wallet
result = fireblocks.delete_contract_wallet(walletId)
const result = await fireblocks.deleteContractWallet(walletId);
The above command returns 200 (OK)
Deletes a contract wallet by ID.
HTTP Request
DELETE /v1/contracts/{walletId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to delete. |
Response
Returns 200 on success
Get an Asset from a Contract Wallet
contracts = fireblocks.get_contract_wallet_asset(walletId, assetId)
const contracts = await fireblocks.getContractWalletAsset(walletId, assetId);
The above command returns JSON structured like this:
{
id: "string",
balance: "string",
lockedAmount: "string",
status: "WAITING_FOR_APPROVAL",
activationTime:"string",
address: "string",
tag: "string"
}
Returns a contract wallet asset by ID.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/contracts/{walletId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to return. |
assetId | The ID of the asset to return. |
Response
Returns a ContractAsset object.
Add an Asset to a Contract Wallet
contracts = fireblocks.create_contract_wallet_asset(walletId, assetId, address, tag)
const contracts = await fireblocks.createContractWalletAsset(walletId, assetId, address, tag);
The above command returns JSON structured like this:
{
id: "string",
balance: "string",
lockedAmount: "string",
status: "WAITING_FOR_APPROVAL",
activationTime:"string",
address: "string",
tag: "string"
}
Adds an asset to an existing contract wallet.
Note: This API call is subject to rate limits.
HTTP Request
POST /v1/contracts/{walletId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to return. |
assetId | The ID of the asset to return. |
Body Parameters
Parameter | Type | Description |
---|---|---|
address | string | The wallet's address (should match the assetId). For example, if the asset is ETH, the address should be the contract address on the Ethereum blockchain. For EOS wallets, it is the account name. |
tag | string | For XRP, the destination tag; for EOS/XLM, the memo; for the fiat providers (Signet by Signature, SEN by Silvergate, BLINC by BCB Group), the Bank Transfer description. |
Response
Returns a ContractAsset object.
Delete an Asset from a Contract Wallet
result = fireblocks.delete_contract_wallet_asset(walletId, assetId)
const result = await fireblocks.deleteContractWalletAsset(walletId, assetId);
The above command returns 200 (OK)
Deletes a contract wallet asset by ID.
HTTP Request
DELETE /v1/contracts/{walletId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
walletId | The ID of the wallet to delete. |
assetId | The ID of the asset to delete. |
Response
Returns 200 success
Exchange Accounts
View your exchange accounts connected to your Fireblocks workspace.
List Exchange Accounts
exchangeAccounts = fireblocks.get_exchange_accounts()
const exchangeAccounts = await fireblocks.getExchangeAccounts();
The above command returns JSON structured like this:
[
{
"id": "string",
"type": "BITTREX",
"name": "string",
"status": "string",
"assets": [
{
"id": "string",
"total": "string",
"available": "string",
"lockedAmount": "string"
}
],
"tradingAccounts": [
{
"type": "SPOT",
"assets": [
{
"id": "string",
"total": "string",
"available": "string",
"lockedAmount": "string"
}
]
}
],
"isSubaccount": true,
"mainAccountId": "string",
"fundableAccountType": "SPOT"
}
]
Fetches all the exchange accounts.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/exchange_accounts
Response
Returns an array of ExchangeAccount objects.
Retrieve a Specific Exchange Account
exchangeAccount = fireblocks.get_exchange_account(exchangeAccountId)
const exchangeAccount = await fireblocks.get_exchange_account(exchangeAccountId);
The above command returns JSON structured like this:
{
"id": "string",
"type": "BITTREX",
"name": "string",
"status": "string",
"assets": [
{
"id": "string",
"total": "string",
"available": "string",
"lockedAmount": "string"
}
],
"tradingAccounts": [
{
"type": "SPOT",
"assets": [
{
"id": "string",
"total": "string",
"available": "string",
"lockedAmount": "string"
}
]
}
],
"isSubaccount": true,
"mainAccountId": "string",
"fundableAccountType": "SPOT"
}
Retrieves the Exchange Account associated with the requested exchange account ID.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/exchange_accounts/{exchangeAccountId}
URL Parameters
Parameter | Description |
---|---|
exchangeAccountId | The ID of the exchange account to return. |
Response
Returns an ExchangeAccount object.
Retrieve a Specific Asset Within an Exchange Account
exchangeAsset = fireblocks.get_exchange_account_asset(exchangeAccountId, assetId)
const exchangeAsset = await fireblocks.getExchangeAsset(exchangeAccountId, assetId);
The above command returns JSON structured like this:
{
"id": "string",
"total": "string",
"available": "string",
"lockedAmount": "string"
}
Retrieves a single asset within an Exchange Account.
Note: This API call is subject to rate limits.
HTTP Request
GET /v1/exchange_accounts/{exchangeAccountId}/{assetId}
URL Parameters
Parameter | Description |
---|---|
exchangeAccountId | The ID of the exchange account to return. |
assetId | The ID of the asset to return. |
Response
Returns an ExchangeAsset object.
Exchange's Internal Transfer
The above command returns 200 (OK)
Transfers funds between trading accounts under the same exchange account.
Note: This API call is subject to rate limits.
HTTP Request
POST /v1/exchange_accounts/{exchangeAccountId}/internal_transfer
URL Parameters
Parameter | Description |
---|---|
exchangeAccountId | The ID of the exchange account. |
Body Parameters
Parameter | Type | Description |
---|---|---|
sourceType | TradingAccountType | The type of the source trading account. |
destType | TradingAccountType | The type of the source trading account. |
asset | string | The asset you wish to transfer. |
amount | string | The amount to transfer. |
Response
Returns 200 on success.
Convert exchange account funds
A successful response returns 200 (OK) with an object containing a status field set to true. An unsuccessful response would result in an error message.
{
"status": true
}
Convert exchange account funds from the source asset to the destination asset.
The following are supported conversions:
- Coinbase
- USD to USDC
- USDC to USD
- Bitso
- MXM to USD
HTTP Request
POST /v1/exchange_accounts/{exchangeAccountId}/convert
URL Parameters
Parameter | Description |
---|---|
exchangeAccountId | The ID of the exchange account. Please make sure the exchange supports conversions. To find the ID of your exchange account, use List Exchange Accounts. |
Body Parameters
Parameter | Type | Description |
---|---|---|
srcAsset | string | The name of the source asset. This must be in a currency that is supported for conversions in the selected exchange type that corresponds to your exchange ID. |
destAsset | string | The name of the destination asset. This must be in a currency that is supported for conversions in the selected exchange type that corresponds to your exchange ID. |
amount | number | The amount to transfer (in the currency of the source asset). |
Response
Returns 200 on success with an object containing a status field set to true. An unsuccessful response would result in an error message.
Fiat Accounts
View and operate with your linked Fiat accounts
List Fiat Accounts
transactions = fireblocks.get_fiat_accounts()
const transactions = await fireblocks.getFiatAccounts();
The above command returns JSON structured like this:
[
{
"id": "string",
"type": "SIGNET",
"name": "string",
"address": "string",
"assets": [
{
"id": "string",
"balance": "string"
}
]
}
]
Retrieves all the FIAT accounts linked to your workspace.
HTTP Request
GET /v1/fiat_accounts
Response
Returns an array of FiatAccount object.
Retrieve a Specific Fiat Accounts
transactions = fireblocks.get_fiat_account_by_id(account_id)
const transactions = await fireblocks.getFiatAccountById(accountId);
The above command returns JSON structured like this:
{
"id": "string",
"type": "SIGNET",
"name": "string",
"address": "string",
"assets": [
{
"id": "string",
"balance": "string"
}
]
}
Retrieve the requested FIAT account.
HTTP Request
GET /v1/fiat_accounts/{accountId}
URL Parameters
Parameter | Description |
---|---|
accountId | The ID of the fiat account. |
Response
Returns a FiatAccount object.
Redeem Funds to Linked DDA
transactions = fireblocks.redeem_to_linked_dda(account_id, amount)
const transactions = await fireblocks.redeemToLinkedDDA(accountId, amount);
The above command returns 200 (OK)
Redeem funds to the connected DDA.
HTTP Request
POST /v1/fiat_accounts/{accountId}/redeem_to_linked_dda
URL Parameters
Parameter | Description |
---|---|
accountId | The ID of the fiat account. |
Body Parameters
Parameter | Type | Description |
---|---|---|
amount | string | The requested amount. |
Response
Returns 200 on success.
Deposit Funds from Linked DDA
transactions = fireblocks.deposit_from_linked_dda(account_id, amount)
const transactions = await fireblocks.depositFromLinkedDDA(accountId, amount);
The above command returns 200 (OK)
Deposit funds from the connected DDA.
HTTP Request
POST /v1/fiat_accounts/{accountId}/deposit_from_linked_dda
URL Parameters
Parameter | Description |
---|---|
accountId | The ID of the fiat account. |
Body Parameters
Parameter | Type | Description |
---|---|---|
amount | string | The requested amount. |
Response
Returns 200 on success.
Payments
Fireblocks offers fast cross-border (XB) settlement solutions to ensure more predictable, transparent settlements with dramatically reduced time.
Create a new cross-border (XB) settlement configuration
The above command returns JSON structured like this:
{
"tenantId": "string",
"configId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"corridorId": "string",
"name": "string",
"steps": {
"stepType": "ON_RAMP",
"additionalProp1": {
"accountId": "string"
},
"additionalProp2": {
"accountId": "string"
},
"additionalProp3": {
"accountId": "string"
}
}
}
Creates a new configuration for a cross-border settlements.
HTTP Method
POST /v1/payments/xb-settlements/configs
Response
Returns new XB settlement configuration on success.
Get all the cross-border (XB) settlement configurations of a tenant
The above command returns JSON structured like this:
{
"configurations": [
{
"tenantId": "string",
"configId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"corridorId": "string",
"name": "string",
"steps": {
"stepType": "ON_RAMP",
"additionalProp1": {
"accountId": "string"
},
"additionalProp2": {
"accountId": "string"
},
"additionalProp3": {
"accountId": "string"
}
}
}
]
}
Retrieve a list of all configurations for tenant cross-border settlements.
HTTP Method
GET /v1/payments/xb-settlements/configs
Response
Returns all XB settlement configurations of a tenant on success.
Get a specific cross-border (XB) settlement configuration
The above command returns JSON structured like this:
{
"tenantId": "string",
"configId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"corridorId": "string",
"name": "string",
"steps": {
"stepType": "ON_RAMP",
"additionalProp1": {
"accountId": "string"
},
"additionalProp2": {
"accountId": "string"
},
"additionalProp3": {
"accountId": "string"
}
}
}
Retrieve a specific configuration for tenant cross-border settlement by ID.
HTTP Method
GET /v1/payments/xb-settlements/configs/{configId}
URL Parameters
Parameter | Type | Description |
---|---|---|
configId | string | The cross-border (XB) settlement configuration ID. |
Response
Returns the specified XB settlement configuration on success.
Edit a cross-border (XB) settlement configuration
The above command returns JSON structured like this:
{
"tenantId": "string",
"configId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"corridorId": "string",
"name": "string",
"steps": {
"stepType": "ON_RAMP",
"additionalProp1": {
"accountId": "string"
},
"additionalProp2": {
"accountId": "string"
},
"additionalProp3": {
"accountId": "string"
}
}
}
Edit a specific configuration for tenant cross-border settlement.
HTTP Method
PUT /v1/payments/xb-settlements/configs/{configId}
URL Parameters
Parameter | Type | Description |
---|---|---|
configId | string | The cross-border (XB) settlement configuration ID. |
Response
Returns successfully edited XB settlement configuration on success.
Delete a cross-border (XB) settlement configuration
The above command returns JSON structured like this:
{
"configId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Delete a specific configuration for tenant cross-border settlement by ID.
HTTP Method
DELETE /v1/payments/xb-settlements/configs/{configId}
URL Parameters
Parameter | Type | Description |
---|---|---|
configId | string | The cross-border (XB) settlement configuration ID. |
Response
Returns 200 upon success.
Create a new cross-border (XB) settlement flow
The above command returns JSON structured like this:
{
"tenantId": "string",
"flowId": "string",
"configId": "string",
"steps": {
"stepType": "ON_RAMP",
"additionalProp1": {
"accountId": "string",
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedFeeAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedTime": 0
},
"additionalProp2": {
"accountId": "string",
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedFeeAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedTime": 0
},
"additionalProp3": {
"accountId": "string",
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedFeeAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedTime": 0
}
},
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"totalEstimatedFees": {
"amount": "string",
"assetId": "string"
},
"totalEstimatedTime": 0
}
Create a new flow configuration for tenant cross-border settlement.
HTTP Method
POST /v1/payments/xb-settlements/flows
Response
Returns new cross-border (XB) settlement flow upon success.
Get a specific cross-border (XB) settlement flow
The above command returns JSON structured like this:
{
"setup": {
"tenantId": "string",
"flowId": "string",
"configId": "string",
"steps": {
"stepType": "ON_RAMP",
"additionalProp1": {
"accountId": "string",
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedFeeAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedTime": 0
},
"additionalProp2": {
"accountId": "string",
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedFeeAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedTime": 0
},
"additionalProp3": {
"accountId": "string",
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedFeeAmount": {
"amount": "string",
"assetId": "string"
},
"estimatedTime": 0
}
},
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"totalEstimatedFees": {
"amount": "string",
"assetId": "string"
},
"totalEstimatedTime": 0
},
"execution": {
"tenantId": "string",
"flowId": "string",
"configId": "string",
"steps": [
{
"id": "string",
"accountId": "string",
"status": "NOT_STARTED",
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"fee": {
"amount": "string",
"assetId": "string"
},
"startedAt": 0
}
],
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"totalFees": {
"amount": "string",
"assetId": "string"
},
"initiatedAt": 0,
"initiatedBy": "string",
"state": "NOT_LAUNCHED"
}
}
Retrieve a specific flow configuration for tenant cross-border settlement.
HTTP Method
GET /v1/payments/xb-settlements/flows/{flowId}
URL Parameters
Parameter | Type | Description |
---|---|---|
flowId | string | The ID of the cross-border (XB) settlement flow. |
Response
Returns the specified XB settlement flow on success.
Execute cross-border (XB) settlement flow
The above command returns JSON structured like this:
{
"tenantId": "string",
"flowId": "string",
"configId": "string",
"steps": [
{
"id": "string",
"accountId": "string",
"status": "NOT_STARTED",
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"fee": {
"amount": "string",
"assetId": "string"
},
"startedAt": 0
}
],
"inputAmount": {
"amount": "string",
"assetId": "string"
},
"outputAmount": {
"amount": "string",
"assetId": "string"
},
"totalFees": {
"amount": "string",
"assetId": "string"
},
"initiatedAt": 0,
"initiatedBy": "string",
"state": "NOT_LAUNCHED"
}
Run a specified cross-border settlement flow by ID.
HTTP Method
POST /v1/payments/xb-settlements/flows/{flowId}/actions/execute
URL Parameters
Parameter | Type | Description |
---|---|---|
flowId | string | The ID of the cross-border (XB) settlement flow. |
Response
Returns the newly executed cross-border (XB) settlement flow status on success.
Transactions
Transfer management endpoints.
List Transactions
transactions = fireblocks.get_transactions()
const transactions = await fireblocks.getTransactions({
status: args.status,
after: from
});
The above command returns JSON structured like this:
[
{
"id": "string",
"assetId": "string",
"source": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"destination": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"amountInfo": {
"amount": "string",
"requestedAmount": "string",
"netAmount": "string",
"amountUSD": "string"
},
"treatAsGrossAmount": false,
"feeInfo": {
"networkFee": "string",
"serviceFee": "string"
},
"requestedAmount": 0,
"amount": 0,
"netAmount": 0,
"amountUSD": 0,
"serviceFee": 0,
"networkFee": 0,
"createdAt": 213456789,
"lastUpdated": 213456789,
"status": "SUBMITTED",
"txHash": "string",
"index": 0,
"tag": "string",
"subStatus": "INSUFFICIENT_FUNDS",
"sourceAddress": "string",
"destinationAddress": "string",
"destinationAddressDescription": "string",
"destinationTag": "string",
"signedBy": [
"string"
],
"createdBy": "string",
"rejectedBy": "string",
"addressType": "string",
"note": "string",
"exchangeTxId": "string",
"feeCurrency": "string",
"operation": "TRANSFER",
"networkRecords": [
{
"source": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"destination": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"txHash": "string",
"networkFee": "string",
"assetId": "string",
"netAmount": "string",
"status": "DROPPED",
"type": "string",
"destinationAddress": "string",
"sourceAddress": "string"
}
],
"amlScreeningResult": {
"provider": "string",
"payload": {}
},
"customerRefId": "string",
"numOfConfirmations": 0,
"signedMessages": [
{
"content": "string",
"algorithm": "ECDSA",
"derivationPath": [
1,1,0,10
],
"signature": {
"r": "string",
"s": "string",
"v": 0
},
"publicKey": "string"
}
],
"replacedTxHash": "string",
"externalTxId": "string",
"authorizationInfo": {
"allowOperatorAsAuthorizer": true,
"logic": "AND",
"groups": [
{
"th": 0,
"users": {
"usedId1": "PENDING_AUTHORIZATION",
"usedId2": "PENDING_AUTHORIZATION",
"usedId3": "PENDING_AUTHORIZATION"
}
}
]
},
"extraParameters": { }
}
]
Lists the transaction history for your workspace.
HTTP Request
GET /v1/transactions
Query Parameters
Parameter | Description |
---|---|
before | [optional] Unix timestamp in milliseconds. Returns only transactions created before the specified date. |
after | [optional] Unix timestamp in milliseconds. Returns only transactions created after the specified date. |
status | [optional] You can filter by one of the statuses. |
orderBy | [optional] The field to order the results by. Available values : createdAt (default), lastUpdated. |
sourceType | [optional] The source type of the transaction. Available values: VAULT_ACCOUNT, EXCHANGE_ACCOUNT, INTERNAL_WALLET, EXTERNAL_WALLET, FIAT_ACCOUNT, NETWORK_CONNECTION, COMPOUND, UNKNOWN, GAS_STATION, OEC_PARTNER. |
sourceId | [optional] The source ID of the transaction. |
destType | [optional] The destination type of the transaction. Available values: VAULT_ACCOUNT, EXCHANGE_ACCOUNT, INTERNAL_WALLET, EXTERNAL_WALLET, ONE_TIME_ADDRESS, FIAT_ACCOUNT, NETWORK_CONNECTION, COMPOUND. |
destId | [optional] The destination ID of the transaction. |
assets | [optional] A list of assets to filter by, separated by commas. |
txHash | [optional] Returns only results with a specified txHash. |
limit | [optional] Limits the number of returned transactions. If not provided, a default of 200 will be returned. The maximum allowed limit is 500. |
sort | [optional] Possible values are ASC or DESC, DESC is the default behavior for getting transaction from latests to the oldest. |
Response
Returns an array of TransactionDetails object.
The response is paginated with a default of 200 results per page. The response will have two headers, next-page
and prev-page
which are the URLs you need to query to receive the next or previous page respectfully.
Create a New Transaction
tx_result = fireblocks.create_transaction(
asset_id="BTC",
amount="50",
source=TransferPeerPath(VAULT_ACCOUNT, from_vault_account_id),
destination=DestinationTransferPeerPath(VAULT_ACCOUNT, to_vault_account_id)
)
const payload: TransactionArguments = {
assetId: asset,
source: {
type: sourceType,
id: sourceId || 0
},
destination: {
type: destinationType,
id: String(destinationId)
},
amount: String(amount),
fee: String(fee),
note: "Created by fireblocks SDK"
};
const result = await fireblocks.createTransaction(payload);
The above command returns JSON structured like this:
{
"id": "string",
"status": "string"
}
Submits a new transaction on the Fireblocks platform.
Note: This API call is subject to rate limits.
HTTP Request
POST /v1/transactions
Body Parameters
Parameter | Type | Description |
---|---|---|
assetId | string | The ID of the asset |
source | TransferPeerPath | The source account of the transaction. |
destination | DestinationTransferPeerPath | The destination of the transaction. |
destinations | Array of TransactionRequestDestination | For UTXO based assets, you can send a single transaction to multiple destinations which should be specified using this field. |
amount | numeric string | The requested amount to transfer. |
treatAsGrossAmount | boolean | False by default, if set to true the network fee will be deducted from the requested amount. |
fee | numeric string | [optional] For UTXO assets, the fee per bytes in the asset's smallest unit (Satoshi, Latoshi, etc.). For XRP, the fee for the transaction. |
gasPrice | numeric string | [optional] For ETH-based assets only this will be used instead of the fee property, value is in Gwei. |
gasLimit | numeric string | [optional] For ETH-based assets only. |
networkFee | numeric string | [optional] The transaction blockchain fee (For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together). |
priorityFee | numeric string | [optional] The priority fee of Ethereum transaction according to EIP-1559. |
feeLevel | string | [optional] LOW / MEDIUM / HIGH - Defines the blockchain fee level which will be payed for the transaction. Only for Ethereum and UTXO blockchains. |
maxFee | numeric string | [optional] The maximum fee (gas price or fee per byte) that should be payed for the transaction. In case the current value of the requested fee level is higher than this requested maximum fee. |
failOnLowFee | boolean | [optional] False by default, if set to true and the current MEDIUM fee level is higher than the one specified in the transaction, the transction will fail to avoid getting stuck with 0 confirmations. |
forceSweep | boolean | For "DOT" transactions only, "false" by default, if set to "true" Fireblocks will allow emptying the DOT wallet. |
note | string | [optional] Note to be added to the transaction history. |
autoStaking | boolean | [optional] Deprecated. |
networkStaking | string | [optional] Deprecated. |
cpuStaking | string | [optional] Deprecated. |
operation | TransactionOperation | [optional] Transaction operation type, the default is "TRANSFER". |
customerRefId | string | [optional] The ID for AML providers to associate the owner of funds with transactions. |
replaceTxByHash | string | [optional] For Ethereum blockchain transactions, the hash of the stuck transaction to be replaced (RBF). |
externalTxId | string | [optional] Unique transaction ID provided by the user. Future transactions with same ID will be rejected. |
extraParameters | JSON object | [optional] Use for protocol / operation specific parameters. For raw signing, pass rawMessageData field. For contract calls, pass contractCallData (See here for more details on Smart Contract API and contract calls).For UTXO based blockchains inputs selectios pass inputsSelection following this structure. The inputs can be retrieved from Retrieve Unspent Inputs. |
Response
Returns a CreateTransactionResponse object. The response is paginated, the default response sise is up to 200 entries.
Retrieve a Specific Transaction
tx = fireblocks.get_transaction_by_id(txId)
const tx = await fireblocks.getTransactionById(txId);
The above command returns JSON structured like this:
{
"id": "string",
"assetId": "string",
"source": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"destination": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"amountInfo": {
"amount": "string",
"requestedAmount": "string",
"netAmount": "string",
"amountUSD": "string"
},
"treatAsGrossAmount": false,
"feeInfo": {
"networkFee": "string",
"serviceFee": "string"
},
"requestedAmount": 0,
"amount": 0,
"netAmount": 0,
"amountUSD": 0,
"serviceFee": 0,
"networkFee": 0,
"createdAt": 123456789,
"lastUpdated": 123456789,
"status": "SUBMITTED",
"txHash": "string",
"index": 0,
"tag": "string",
"subStatus": "INSUFFICIENT_FUNDS",
"sourceAddress": "string",
"destinationAddress": "string",
"destinationAddressDescription": "string",
"destinationTag": "string",
"signedBy": [
"string"
],
"createdBy": "string",
"rejectedBy": "string",
"addressType": "string",
"note": "string",
"exchangeTxId": "string",
"feeCurrency": "string",
"operation": "TRANSFER",
"networkRecords": [
{
"source": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"destination": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"txHash": "string",
"networkFee": "string",
"assetId": "string",
"netAmount": "string",
"status": "DROPPED",
"type": "string",
"destinationAddress": "string",
"sourceAddress": "string"
}
],
"amlScreeningResult": {
"provider": "string",
"payload": {}
},
"customerRefId": "string",
"numOfConfirmations": 0,
"signedMessages": [
{
"content": "string",
"algorithm": "ECDSA",
"derivationPath": [
1,1,0,10
],
"signature": {
"r": "string",
"s": "string",
"v": 0
},
"publicKey": "string"
}
],
"replacedTxHash": "string",
"externalTxId": "string",
"blockInfo": {
"blockHeight": "string",
"blockHash": "string"
},
"authorizationInfo": {
"allowOperatorAsAuthorizer": true,
"logic": "AND",
"groups": [
{
"th": 0,
"users": {
"usedId1": "PENDING_AUTHORIZATION",
"usedId2": "PENDING_AUTHORIZATION",
"usedId3": "PENDING_AUTHORIZATION"
}
}
]
},
"extraParameters": { }
}
Retrieves a specific transaction for the requested transaction ID.
HTTP Request
GET /v1/transactions/{txId}
URL Parameters
Parameter | Description |
---|---|
txId | The ID of the transaction to return. |
Response
Returns a TransactionDetails object.
Retrieve a Specific Transaction By External ID
tx = fireblocks.get_transaction_by_external_tx_id(externalTxId)
const tx = await fireblocks.getTransactionByExternalTxId(externalTxId);
The above command returns JSON structured like this:
{
"id": "string",
"assetId": "string",
"source": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"destination": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"amountInfo": {
"amount": "string",
"requestedAmount": "string",
"netAmount": "string",
"amountUSD": "string"
},
"feeInfo": {
"networkFee": "string",
"serviceFee": "string"
},
"requestedAmount": 0,
"amount": 0,
"netAmount": 0,
"amountUSD": 0,
"serviceFee": 0,
"networkFee": 0,
"createdAt": 123456789,
"lastUpdated": 123456789,
"status": "SUBMITTED",
"txHash": "string",
"index": 0,
"tag": "string",
"subStatus": "INSUFFICIENT_FUNDS",
"sourceAddress": "string",
"destinationAddress": "string",
"destinationAddressDescription": "string",
"destinationTag": "string",
"signedBy": [
"string"
],
"createdBy": "string",
"rejectedBy": "string",
"addressType": "string",
"note": "string",
"exchangeTxId": "string",
"feeCurrency": "string",
"operation": "TRANSFER",
"networkRecords": [
{
"source": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"destination": {
"type": "VAULT_ACCOUNT",
"id": "string",
"name": "string",
"subType": "string"
},
"txHash": "string",
"networkFee": "string",
"assetId": "string",
"netAmount": "string",
"status": "DROPPED",
"type": "string",
"destinationAddress": "string",
"sourceAddress": "string"
}
],
"amlScreeningResult": {
"provider": "string",
"payload": {}
},
"customerRefId": "string",
"numOfConfirmations": 0,
"signedMessages": [
{
"content": "string",
"algorithm": "ECDSA",
"derivationPath": [
1,1,0,10
],
"signature": {
"r": "string",
"s": "string",
"v": 0
},
"publicKey": "string"
}
],
"replacedTxHash": "string",
"externalTxId": "string",
"blockInfo": {
"blockHeight": "string",
"blockHash": "string"
},
"authorizationInfo": {
"allowOperatorAsAuthorizer": true,
"logic": "AND",
"groups": [
{
"th": 0,
"users": {
"usedId1": "PENDING_AUTHORIZATION",
"usedId2": "PENDING_AUTHORIZATION",
"usedId3": "PENDING_AUTHORIZATION"
}
}
]
},
"extraParameters": { }
}
Retrieves a specific transaction for the requested external transaction ID.
HTTP Request
GET /v1/transactions/external_tx_id/{externalTxId}
URL Parameters
Parameter | Description |
---|---|
externalTxId | The external ID of the transaction provided by the user. |
Response
Returns a TransactionDetails object.
Cancel Transaction
result = fireblocks.cancel_transaction_by_id(txId)
const result = await fireblocks.cancelTransactionById(txId);
The above command returns JSON structured like this:
{
"success": true
}
Cancel the requested transaction.
HTTP Request
POST /v1/transactions/{txId}/cancel
URL Parameters
Parameter | Description |
---|---|
txId | The ID of the transaction to return. |
Response
Returns the status of the request.
Drop Transaction
result = fireblocks.drop_transaction(txId, fee_level)
const result = await fireblocks.dropTransaction(txId, feeLevel);
The above command returns JSON structured like this:
{
"success": true
}
Replaces Ethereum transactions that are stuck with 0 confirmation. This request creates a new transaction that can replace the stalled transaction, with the same source as the original one, with 0 ETH sent to itself. By using the same nonce as the original one, it will drop the original transaction once the new transaction will be mined.
A stuck transaction can be replaced by a different transaction using the create transaction endpoint and the "replaceTxByHash" field.
HTTP Request
POST /v1/transactions/{txId}/drop
URL Parameters
Parameter | Description |
---|---|
txId | The ID of the transaction to return. |
Body Parameters
Parameter | Type | Description |
---|---|---|
feeLevel | string | [optional] The requested fee level of the dropping transaction (LOW / MEDIUM / HIGH). |
Response
Returns the transaction id of the replacing transaction.
Freeze Transaction
result = fireblocks.freeze_transaction(txId)
const result = await fireblocks.freezeTransaction(txId);
The above command returns JSON structured like this:
{
"success": true
}
Freezes transaction so that it will not be available for spending
HTTP Request
POST /v1/transactions/{txId}/freeze
URL Parameters
Parameter | Description |
---|---|
txId | The ID of the transaction to return. |
Response
Returns the status of the request
Unfreeze Transaction
result = fireblocks.unfreeze_transaction(txId)
const result = await fireblocks.unfreezeTransaction(txId);
The above command returns JSON structured like this:
{
"success": true
}
Makes the transaction avaialble after it was frozen.
HTTP Request
POST /v1/transactions/{txId}/unfreeze
URL Parameters
Parameter | Description |
---|---|
txId | The ID of the transaction to return. |
Response
Returns the status of the request.
Validate Destination Address
result = fireblocks.(asset_id, address)
const result = await fireblocks.(assetId, address);
The above command returns JSON structured like this:
{
"isValid": true,
"isActive": true,
"requiresTag": true
}
This endpoint validates the destination address exists or is activate with the necessary activation per blockchain. Supported for the following assets: XRP, DOT, XLM, EOS.
HTTP Request
GET /v1/transactions/validate_address/{assetId}/{address}
URL Parameters
Parameter | Description |
---|---|
assetId | The asset of the address. |
address | The address to validate. |
Response
Returns the AddressStatus object.
Estimate Network Fee
fee_result = fireblocks.get_fee_for_asset(asset_id)
const feeResult = await fireblocks.getFeeForAsset(assetId);
The above command returns JSON structured like this:
{
"low": {
"feePerByte": "string",
"gasPrice": "string",
"networkFee": "string",
"baseFee": "string",
"priorityFee": "string"
},
"medium": {
"feePerByte": "string",
"gasPrice": "string",
"networkFee": "string",
"baseFee": "string",
"priorityFee": "string"
},
"high": {
"feePerByte": "string",
"gasPrice": "string",
"networkFee": "string",
"baseFee": "string",
"priorityFee": "string"
}
}
Retrieves the current blockchain fees based on the requested asset.
- For UTXO based assets, the response will contain the suggested fee per byte.
- For ETH/ETC based assets, the suggested gas price (calculated by adding the baseFee + actualPriority, based on the latest 12 block).
- For XRP/XLM, the transaction fee.
Note: networkFee is the gasPrice with a given delta added, multiplied by the gasLimit plus the delta.
HTTP Request
GET /v1/estimate_network_fee
Query Parameters
Parameter | Description |
---|---|
assetId | The asset for which you wish to retrieve the network fees. Note: Supports all of Fireblocks’ assets except for ZEC (ZCash). |
Response
Returns NetworkFee objects for low, medium and high fees.
Estimate Transaction Fee
estimated_fee = client.estimate_fee_for_transaction(
asset_id="BTC",
amount="50",
source=TransferPeerPath(VAULT_ACCOUNT, from_vault_account_id),
destination=DestinationTransferPeerPath(VAULT_ACCOUNT, to_vault_account_id)
)
const payload: TransactionArguments = {
assetId: asset,
source: {
type: sourceType,
id: sourceId || 0
},
destination: {
type: destinationType,
id: String(destinationId)
},
amount: Number(amount)
};
const estimatedFee = await fireblocks.estimateFeeForTransaction(payload);
The above command returns JSON structured like this:
{
"low": {
"feePerByte": "string",
"gasPrice": "string",
"gasLimit": "string",
"networkFee": "string",
"baseFee": "string",
"priorityFee": "string"
},
"medium": {
"feePerByte": "string",
"gasPrice": "string",
"gasLimit": "string",
"networkFee": "string",
"baseFee": "string",
"priorityFee": "string"
},
"high": {
"feePerByte": "string",
"gasPrice": "string",
"gasLimit": "string",
"networkFee": "string",
"baseFee": "string",
"priorityFee": "string"
}
}
Estimates the transaction fee for a given transaction request.
- For UTXO based assets, the response will contain the suggested fee per byte.
- For ETH/ETC based assets, the suggested gas price (calculated by adding the baseFee + actualPriority, based on the latest 12 block).
- For XRP/XLM, the transaction fee.
Note: networkFee is the gasPrice with a given delta added, multiplied by the gasLimit plus the delta.
Note: This API call is subject to rate limits.
Note: /estimate_fee is not currently supported for CONTRACT_CALL operation type.
HTTP Request
POST /v1/transactions/estimate_fee
Body Parameters
Parameter | Type | Description |
---|---|---|
assetId | string | The ID of the asset. Note: Supports all of Fireblocks’ assets except for ZEC (ZCash). |
amount | string | The requested amount to transfer. |
source | TransferPeerPath | The source of the estimated transaction. |
destination | DestinationTransferPeerPath | The destination of the estimated transaction. For some blockchains it can affect the transaction fee. |
operation | TransactionOperation | [optional] Transaction operation type, the default is "TRANSFER". |
Response
Returns an EstimatedTransactionFeeResponse object.
Set Confirmation Threshold by TX ID
set_conf_threshold = fireblocks.set_confirmation_threshold_for_txid(body)
const setConfThreshold = await fireblocks.setConfirmationThresholdForTxId(body);
The above command returns JSON structured like this:
{
"success": true,
"transactions": [
"string"
]
}
Overrides the required number of confirmations for a transaction completion by its transaction ID.
Note: Confirmation thresholds cannot be adjusted after a transaction has reached a COMPLETED
status.
HTTP Request
POST /v1/transactions/{txId}/set_confirmation_threshold
Body Parameters
Parameter | Type | Description |
---|---|---|
numOfConfirmations | integer | The number of transaction's confirmations to be considered COMPLETED. |
txid | string | Unique transaction ID provided by the user. |
Response
Returns an SetConfirmationsThresholdResponse object.
Set Confirmation Threshold by TX Hash
set_conf_threshold = fireblocks.set_confirmation_threshold_for_txhash(body)
const setConfThreshold = await fireblocks.setConfirmationThresholdForTxHash(body);
The above command returns JSON structured like this:
{
"success": true,
"transactions": [
"string"
]
}
Overrides the required number of confirmations for a transaction completion by its transactions hash.
Note: Confirmation thresholds cannot be adjusted after a transaction has reached a COMPLETED
status.
HTTP Request
POST /v1/txHash/{txHash}/set_confirmation_threshold
Body Parameters
Parameter | Type | Description |
---|---|---|
numOfConfirmations | integer | The number of transaction's confirmations to be considered COMPLETED. |
txid | string | Unique transaction ID provided by the user. |
Response
Returns an SetConfirmationsThresholdResponse object.
Network Connections
List Network Connections
network_connections = fireblocks.get_network_connections()
const networkConnections = await fireblocks.getNetworkConnections();
The above command returns JSON structured like this:
{
"id": "string",
"status": "WAITING_FOR_APPROVAL",
"localNetworkId": {
"id": "string",
"name": "string",
"tenantId": "string"
},
"remoteNetworkId": {
"id": "string",
"name": "string",
"tenantId": "string"
},
"routingPolicy": {
"sen": {
"scheme": "DEFAULT",
"dstType": "FIAT_ACCOUNT",
"dstId": "string"
},
"crypto": {
"scheme": "DEFAULT",
"dstType": "VAULT",
"dstId": "0"
},
"signet": {
"scheme": "DEFAULT",
"dstType": "FIAT_ACCOUNT",
"dstId": "string"
},
"sen_test": {
"scheme": "DEFAULT",
"dstType": "FIAT_ACCOUNT",
"dstId": "string"
},
"signet_test": {
"scheme": "DEFAULT",
"dstType": "FIAT_ACCOUNT",
"dstId": "string"
}
}
}
Retrieves all Fireblocks network connections.
HTTP Request
GET /v1/network_connections
Response
Returns an array of NetworkConnection objects.
Retrieve a Network Connection
network_connection = fireblocks.get_network_connection_by_id(connectionId)
const network_connection = await fireblocks.getNetworkConnection(connectionId);
The above command returns JSON structured like this:
{
"id": "string",
"name": "string",
"routingPolicy": {
"crypto": {
"scheme": "AUTO",
"dstType": "VAULT",
"dstId": "0"
},
"sen": {
"scheme": "AUTO",
"dstType": "FIAT_ACCOUNT",
"dstId": "string"
},
"signet": {
"scheme": "AUTO",
"dstType": "FIAT_ACCOUNT",
"dstId": "string"
},
"sen_test": {
"scheme": "AUTO",
"dstType": "FIAT_ACCOUNT",
"dstId": "string"
},
"signet_test": {
"scheme": "AUTO",
"dstType": "FIAT_ACCOUNT",
"dstId": "string"
}
}
}
Retrieves a network connection matching the requested connectionId.
HTTP Request
GET /v1/network_connections/{connectionId}
URL Parameters
Parameter | Description |
---|---|
connectionId | The ID of the network connection. |
Response
Returns a NetworkConnection object.
Supported Assets
Retrieve all assets supported by Fireblocks
supportedAssets = fireblocks.get_supported_assets()
const supportedAssets = await fireblocks.getSupportedAssets();
The above command returns JSON structured like this:
[
{
"id": "string",
"name": "string",
"type": "BASE_ASSET",
"contractAddress": "string"
"nativeAsset": "string"
"decimals": "string"
}
]
Returns all assets supported by Fireblocks.
HTTP Request
GET /v1/supported_assets
Response
Returns an array of AssetTypeResponse.
Gas Station
Fireblocks provides the Gas Station servce to fuel with ETH your Ethereum addresses with ERC20 tokens deposits.
Retrieve your Gas Station Settings
gas_station_info = fireblocks.get_gas_station_info()
const gasStationInfo = await fireblocks.getGasStationInfo();
The above command returns JSON structured like this:
{
"balance": {
"ETH": "string"
},
"configuration": {
"gasThreshold": "string",
"gasCap": "string",
"maxGasPrice": "string"
}
}
Retrieves the settings of your Gas Station.
HTTP Method
GET /v1/gas_station
Response
Returns a GasStationInfo object.
Retrieve your Gas Station Settings per Asset
gas_station_info = fireblocks.get_gas_station_info(asset_id)
const gasStationInfo = await fireblocks.gasStationInfo(assetId);
The above command returns JSON structured like this:
{
"balance": {
"ETH": "string"
},
"configuration": {
"gasThreshold": "string",
"gasCap": "string",
"maxGasPrice": "string"
}
}
Retrieves the settings of your Gas Station per the requested asset.
HTTP Method
GET /v1/gas_station/{assetId}
Response
Returns a GasStationInfo object.
Edit your Gas Station settings
gas_station = fireblocks.set_gas_station_configuration(gas_threshold, gas_cap, max_gas_price)
const gasStation = await fireblocks.setGasStationConfiguration(gasThreshold, gasCap, maxGasPrice)
The above command returns JSON structured like this:
{
"balance": {
"ETH": "string"
},
"configuraiton" :{
"gasCap": "string",
"gasThreshold": "string",
"maxGasPrice": "string"
}
}
Configure your Gas Station's settings.
HTTP Method
PUT /v1/gas_station/configuration
Body Parameters
Parameter | Type | Description |
---|---|---|
gasThreshold | string | Below this ETH balance the address will be funded up until gasCap value, in ETH units. |
gasCap | string | Up to this level the address will be funded with ETH, in ETH units. |
maxGasPrice | string | The funding transaction will be sent with this maximum value gas price, in Gwei units. |
Response
Returns a GasStationConfiguration object.
Edit your Gas Station settings by Asset
gas_station = fireblocks.set_gas_station_configuration(gas_threshold, gas_cap, max_gas_price, asset_id)
const gasStation = await fireblocks.setGasStationConfiguration(gasThreshold, gasCap, maxGasPrice, assetId)
The above command returns JSON structured like this:
{
"balance": {
"ETH": "string"
},
"configuraiton" :{
"gasCap": "string",
"gasThreshold": "string",
"maxGasPrice": "string"
}
}
Configure your Gas Station's settings for a requested asset.
HTTP Method
PUT /v1/gas_station/configuration/{assetId}
Body Parameters
Parameter | Type | Description |
---|---|---|
gasThreshold | string | Below this ETH balance the address will be funded up until gasCap value, in ETH units. |
gasCap | string | Up to this level the address will be funded with ETH, in ETH units. |
maxGasPrice | string | The funding transaction will be sent with this maximum value gas price, in Gwei units. |
Response
Returns a GasStationConfiguration object.
Users
This provides the visibility of the users and their details in your workspace. Please note that this endpoint is available only for API keys with Admin permissions.
Retrieve all users
users = fireblocks.get_users()
const users = await fireblocks.getUsers();
The above command returns JSON structured like this:
{
"users": [
{
"id": "string",
"firstName": "string",
"lastName": "string",
"role": "string",
"email": "string",
"enabled": true
}
]
}
Retrieves the list of all users in the workspace.
GET /v1/users
Response
Returns a list of Users object.
Data Objects
Here you can find a description of all the objects expected and returned by the endpoints described above.
Vault Objects
VaultAccountsPagedResponse
Parameter | Type | Description |
---|---|---|
accounts | Array of VaultAccount | List of vault account objects. |
paging | object | This object contains two fields: "before" (string) and “after” (string). |
previousUrl | string | URL string of the request for the previous page. |
nextUrl | string | URL string of the request for the next page. |
CreateVaultAssetResponse
Parameter | Type | Description |
---|---|---|
id | string | The ID of the Vault Account. |
address | string | Address of the asset in a Vault Account, for BTC/LTC the address is in Segwit (Bech32) format, cash address format for BCH. |
legacyAddress | string | Legacy address format for BTC/LTC/BCH. |
tag | string | Destination tag for XRP, used as memo for EOS/XLM. |
eosAccountName | string | Returned for EOS, the account name. |
VaultAsset
Parameter | Type | Description |
---|---|---|
id | string | The ID of the asset. |
total | string | The total wallet balance. Values are returned according to balance decimal precision. |
balance | string | Deprecated - replaced by "total". |
available | string | Funds available for transfer. Equals the blockchain balance minus any locked amount. Values are returned according to balance decimal precision. |
pending | string | The cumulative balance of all transactions pending to be cleared. Values are returned according to balance decimal precision. |
staked | string | Staked funds, returned only for DOT. Values are returned according to balance decimal precision. |
frozen | string | Frozen by the AML policy in your workspace. Values are returned according to balance decimal precision. |
lockedAmount | string | Funds in outgoing transactions that are not yet published to the network. Values are returned according to balance decimal precision. |
maxBip44AddressIndexUsed | number | The maximum BIP44 index used in deriving addresses for this wallet. |
maxBip44ChangeAddressIndexUsed | number | The maximum BIP44 index used in deriving change addresses for this wallet. |
totalStakedCPU | string | [optional] Deprecated. |
totalStakedNetwork | string | [optional] Deprecated. |
selfStakedCPU | string | [optional] Deprecated. |
selfStakedNetwork | string | [optional] Deprecated. |
pendingRefundCPU | string | [optional] Deprecated. |
pendingRefundNetwork | string | [optional] Deprecated. |
blockHeight | string | The height (number) of the block of the balance. |
blockHash | string | The hash of the block of the balance. |
VaultAccountAssetAddress
Parameter | Type | Description |
---|---|---|
assetId | string | The ID of the asset |
address | string | Address of the asset in a Vault Account, for BTC/LTC the address is in Segwit (Bech32) format, for BCH cash format. |
legacyAddress | string | For BTC/LTC/BCH the legacy format address. |
description | string | Description of the address. |
tag | string | Destination tag for XRP, used as memo for EOS/XLM, for the fiat providers (Signet by Signature, SEN by Silvergate, BLINC by BCB Group), it is the Bank Transfer Description. |
type | string | The type of address for the VaultAccount asset. |
change | string | The change address for BTC transactions. |
customerRefId | string | [optional] The ID for AML providers to associate the owner of funds with transactions. |
bip44AddressIndex | number | [optional] The address_index , addressFormat , and enterpriseAddress in the derivation path of this address based on BIP44. |
CreateAddressResponse
Parameter | Type | Description |
---|---|---|
address | string | Address of the asset in a Vault Account, for BTC/LTC the address is in Segwit (Bech32) format, cash address format for BCH. |
legacyAddress | string | Legacy address format for BTC/LTC/BCH. |
tag | string | Destination tag for XRP, used as memo for EOS/XLM. |
bip44AddressIndex | number | The address_index in the derivation path of this address based on BIP44. |
VaultAccount
Parameter | Type | Description |
---|---|---|
id | string | The ID of the Vault Account. |
name | string | Name of the Vault Account. |
hiddenOnUI | boolean | Specifies whether this vault account is visible in the web console or not. |
customerRefId | string | [optional] The ID for AML providers to associate the owner of funds with transactions. |
autoFuel | boolean | Specifies whether this account's Ethereum address is auto fueled by the Gas Station or not. |
assets | Array of VaultAsset | List of assets under this Vault Account. |
Note: When the VAULT_ACCOUNT_ADDED webhook is used, the VaultAccount object does not contain the customerRefId
and autoFuel
parameters.
PublicKey
Parameter | Type | Description |
---|---|---|
publicKey | sring | The requested public key. |
algorithm | string | One of the SigningAlgorithms. |
derivationPath | Array of numbers | For BIP32 derivation used to retrieve the public key. |
Internal/External Wallets
WalletAsset
Parameter | Type | Description |
---|---|---|
id | string | The ID of the asset. |
balance | string | The balance of the wallet. Values are returned according to balance decimal precision. |
lockedAmount | string | Locked amount in the wallet. Values are returned according to balance decimal precision. |
status | ConfigChangeRequestStatus | Status of the Internal Wallet. |
activationTime | string | The time the wallet will be activated in case wallets activation postponed according to workspace definition. |
address | string | The address of the wallet. |
tag | string | Destination tag (for XRP, used as memo for EOS/XLM) of the wallet. |
ExternalWalletAsset
Parameter | Type | Description |
---|---|---|
id | string | The ID of the asset. |
status | ConfigChangeRequestStatus | Status of the External Wallet. |
activationTime | string | The time the wallet will be activated in case wallets activation postponed according to workspace definition. |
address | string | The address of the wallet. |
tag | string | Destination tag (for XRP, used as memo for EOS/XLM) of the wallet, for the fiat providers (Signet by Signature, SEN by Silvergate, BLINC by BCB Group), used as Bank Transfer Description. |
UnmanagedWallet
Parameter | Type | Description |
---|---|---|
id | string | The ID of the Unmanaged Wallet. |
name | string | Name of the Wallet Container. |
customerRefId | string | [optional] The ID for AML providers to associate the owner of funds with transactions. |
assets | Array of WalletAsset | Array of the assets available in the unmanaged wallet. |
ExternalWallet
Parameter | Type | Description |
---|---|---|
id | string | The ID of the Unmanaged Wallet. |
name | string | Name of the Wallet Container. |
customerRefId | string | [optional] The ID for AML providers to associate the owner of funds with transactions. |
assets | Array of ExternalWalletAsset | Array of the assets available in the external wallet. |
Contracts
ContractAsset
Parameter | Type | Description |
---|---|---|
id | string | The ID of the contract wallet. |
balance | string | The balance of the contract wallet. |
lockedAmount | string | Locked amount in the contract wallet. |
status | ConfigChangeRequestStatus | Status of the contract wallet. |
activationTime | string | The time the contract wallet will be activated if case wallets activation is postponed according to the workspace definition. |
address | string | The address of the contract wallet. |
tag | string | Destination tag (for XRP, used as memo for EOS/XLM) of the contract wallet. |
UnmanagedContract
Parameter | Type | Description |
---|---|---|
id | string | The ID of the unmanaged contract wallet. |
name | string | Name of the contract wallet container. |
assets | Array of ContractAsset | Array of the assets available in the unmanaged contract wallet. |
Exchange Objects
ExchangeAccount
Parameter | Type | Description |
---|---|---|
id | string | The ID of the exchange account to return. |
type | ExchangeType | The type of exchange you're using. |
name | string | Display name of the exchange account. |
status | ConfigChangeRequestStatus | Status of the exchange account connection. |
assets | Array of ExchangeAsset | Assets in the account. |
isSubaccount | boolean | True if the account is a subaccount in an exchange. |
mainAccountId | string | The of the exchange main account. |
tradingAccounts | Array of TradingAccount | Trading accounts under this exchange account. |
fundableAccountType | TradingAccountType | The internal account that is used for deposit or withdrawals of this exchange main or subaccount. |
ExchangeAsset
Parameter | Type | Description |
---|---|---|
id | string | The ID of the exchange account to return. |
total | string | The total balance of the asset in the exchange account. Values are returned according to balance decimal precision. |
available | string | The balance that can be withdrawn from the exchange account or moved to a different account. Values are returned according to balance decimal precision. |
lockedAmount | string | Locked amount in the account. Values are returned according to balance decimal precision. |
balance | string | Deprecated - replaced by "total". |
ExchangeType
Parameter | Type | Description |
---|---|---|
type | string | [BINANCE, BINANCEUS, BITFINEX, BITHUMB, BITMEX, BITSO, BITSTAMP, BITTREX, CIRCLE, COINBASEPRO, COINMETRO, COINSPRO, CRYPTOCOM, DERIBIT, FTX, FIXUS, GEMINI, HITBTC, HUOBI, KORBIT, KRAKEN, LIQUID, POLONIEX, OKCOIN, OKEX, SEEDCX]. |
TradingAccount
Parameter | Type | Description |
---|---|---|
type | TradingAccountType | The specific trading account under the exchange account. |
assets | Array of ExchangeAsset | Assets in the trading account. |
TradingAccountType
Parameter | Type | Description |
---|---|---|
type | string | [COIN_FUTURES, COIN_MARGINED_SWAP, EXCHANGE, FUNDING, FUNDUBLE, FUTURES, FUTURES_CROSS, MARGIN, MARGIN_CROSS, OPTIONS, SPOT, USDT_MARGINED_SWAP_CROSS, USDT_FUTURES, UNIFIED]. |
Transactions
TransferPeerPath
Parameter | Type | Description |
---|---|---|
type | string | Valid values: [ VAULT_ACCOUNT, EXCHANGE_ACCOUNT, FIAT_ACCOUNT, GAS_STATION ]. |
id | string | The ID of the peer. |
DestinationTransferPeerPath
Parameter | Type | Description |
---|---|---|
type | string | [ VAULT_ACCOUNT, EXCHANGE_ACCOUNT, INTERNAL_WALLET, EXTERNAL_WALLET, ONE_TIME_ADDRESS, NETWORK_CONNECTION, FIAT_ACCOUNT, COMPOUND ]. |
id | string | The peer ID (not needed for ONE_TIME_ADDRESS). |
oneTimeAddress | OneTimeAddress | (optional) Destination address. You will only be able to provide this parameter if the type is enabled for OneTimeAddress. |
CreateTransactionResponse
Parameter | Type | Description |
---|---|---|
id | string | The ID of the transaction. |
status | TransactionStatus | Status of the transaction. |
systemMessages | Array of SystemMessageInfo objects | A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses. |
- Note:
POST /transactions/
endpoint calls may fail in the case where a blockchain is marked inBLOCK mode
by Fireblocks Support. See this error (right):
{
"status":400,
"res":{
"message":"Scheduled maintenance in progress. Check back for updates.",
"code":1450
}
}
CancelTransactionResponse
Parameter | Type | Description |
---|---|---|
success | boolean | True if the cancellation succeeded. |
SystemMessageInfo
Parameter | Type | Description |
---|---|---|
type | string | [ WARN , BLOCK ] The type of system message being returned. |
message | string | In plain text, the specific message being returned from the system about its status. (Example: "The asset's blockchain is experiencing intermittent delays, therefore outgoing transactions might get stuck.") |
TransferPeerPathResponse
Parameter | Type | Description |
---|---|---|
type | string | [ VAULT_ACCOUNT, EXCHANGE_ACCOUNT, INTERNAL_WALLET, EXTERNAL_WALLET, ONE_TIME_ADDRESS, NETWORK_CONNECTION, FIAT_ACCOUNT, COMPOUND, UNKNOWN ]. |
id | string | The ID of the exchange account to return. |
name | string | The name of the exchange account. |
subType | string | The specific exchange, fiat account or unmanaged wallet (either INTERNAL / EXTERNAL). |
TransactionDetails
Parameter | Type | Description |
---|---|---|
id | string | ID of the transaction. |
assetId | string | Transaction asset. |
source | TransferPeerPathResponse | Source of the transaction. |
destination | TransferPeerPathResponse | Fireblocks supports multiple destinations for UTXO-based blockchains. For other blockchains, this array will always be composed of one element. |
requestedAmount | number | The amount requested by the user. |
amountInfo | AmountInfo | Details of the transaction's amount in string format. |
feeInfo | FeeInfo | Details of the transaction's fee in string format. |
amount | number | If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. |
netAmount | number | The net amount of the transaction, after fee deduction. |
amountUSD | number | The USD value of the requested amount. |
serviceFee | number | The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount). |
treatAsGrossAmount | boolean | For outgoing transactions, if true , the network fee is deducted from the requested amount. |
networkFee | number | The fee paid to the network. |
createdAt | number | Unix timestamp. |
lastUpdated | number | Unix timestamp. |
status | TransactionStatus | The current status of the transaction. |
txHash | string | Blockchain hash of the transaction. |
index | number | [optional] For UTXO based assets this is the vOut , for Ethereum based, this is the index of the event of the contract call. |
subStatus | TransactionSubStatus | More detailed status of the transaction. |
sourceAddress | string | For account based assets only, the source address of the transaction. (Note: This parameter will be empty for transactions that are not: CONFIRMING , COMPLETED , or REJECTED /FAILED after passing CONFIRMING status.) |
destinationAddress | string | Address where the asset were transferred. |
destinationAddressDescription | string | Description of the address. |
destinationTag | string | Destination tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat providers: Signet (by Signature), SEN (by Silvergate), or BLINC (by BCB Group). |
signedBy | Array of strings | Signers of the transaction. |
createdBy | string | Initiator of the transaction. |
rejectedBy | string | User ID of the user that rejected the transaction (in case it was rejected). |
addressType | string | [ ONE_TIME, WHITELISTED ]. |
note | string | Custom note of the transaction. |
exchangeTxId | string | If the transaction originated from an exchange, this is the exchange tx ID. |
feeCurrency | string | The asset which was taken to pay the fee (ETH for ERC-20 tokens, BTC for Tether Omni). |
operation | TransactionOperation | Default operation is "TRANSFER". |
amlScreeningResult | AmlScreeningResult | The result of the AML screening. |
customerRefId | string | The ID for AML providers to associate the owner of funds with transactions. |
numOfConfirmations | number | The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy. |
networkRecords | Array of NetworkRecord objects | Transaction on the Fireblocks platform can aggregate several blockchain transactions, in such a case these records specify all the transactions that took place on the blockchain. |
replacedTxHash | string | In case of an RBF transaction, the hash of the dropped transaction. |
externalTxId | string | Unique transaction ID provided by the user. |
destinations | Array of DestinationsResponse | For UTXO based assets, all outputs specified here. |
blockInfo | BlockInfo | The information of the block that this transaction was mined in, the blocks's hash and height. |
rewardsInfo | RewardsInfo | This field is relevant only for ALGO transactions. Both srcRewrds and destRewards will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks' side of the transaction. |
authorizationInfo | AuthorizationInfo | The information about your Transaction Authorization Policy (TAP). For more information about the TAP, refer to this section in the Help Center. |
signedMessages | Array of SignedMessage objects | A list of signed messages returned for raw signing. |
extraParameters | JSON object | Protocol / operation specific parameters. |
systemMessages | Array of SystemMessageInfo objects | A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses. |
TransactionOperation
Parameter | Type | Description |
---|---|---|
operation | string | [ BURN, CONTRACT_CALL, MINT, RAW, REDEEM_FROM_COMPOUND, SUPPLY_TO_COMPOUND, TRANSFER, TYPED_MESSAGE ]. |
BlockInfo
Parameter | Type | Description |
---|---|---|
blockHeight | string | The height (number) of the block the transaction was mined in. |
blockHash | string | The hash of the block the transaction was mined in. |
RewardsInfo
Parameter | Type | Description |
---|---|---|
srcRewards | string | The ALGO rewards acknowledged by the source account of the transaction. |
destRewards | string | The ALGO rewards acknowledged by the destination account of the transaction. |
SignedMessage
Parameter | Type | Description |
---|---|---|
content | string | The message for signing (hex-formatted). |
algorithm | string | The algorithm that was used for signing, one of the SigningAlgorithms. |
derivationPath | Array of numbers | BIP32 derivation path of the signing key. E.g. [44,0,46,0,0]. |
signature | dictionary | The message signature. |
publicKey | string | Signature's public key that can be used for verification. |
NetworkFee
Parameter | Type | Description |
---|---|---|
feePerByte | string | [optional] For UTXOs. |
gasPrice | string | [optional] For Ethereum assets (ETH and Tokens). |
networkFee | string | [optional] All other assets. |
baseFee | string | [optional] Base Fee according to EIP-1559 (ETH assets). |
priorityFee | string | [optional] Priority Fee according to EIP-1559 (ETH assets). |
TransactionFee
Parameter | Type | Description |
---|---|---|
feePerByte | string | [optional] For UTXOs. |
gasPrice | string | [optional] For Ethereum assets (ETH and Tokens). |
gasLimit | string | [optional] For Ethereum assets (ETH and Tokens), the limit for how much can be used. |
networkFee | string | [optional] Transaction fee. |
baseFee | string | [optional] Base Fee according to EIP-1559 (ETH assets). |
priorityFee | string | [optional] Priority Fee according to EIP-1559 (ETH assets). |
EstimatedTransactionFeeResponse
Parameter | Type | Description |
---|---|---|
low | TransactionFee | Transactions with this fee will probably take longer to be mined. |
medium | TransactionFee | Average transactions fee. |
high | TransactionFee | Transactions with this fee should be mined the fastest. |
AmountInfo
Parameter | Type | Description |
---|---|---|
amount | string | If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, it is the requested amount. This value will always be equal to the amount (number) parameter of TransactionDetails. |
requestedAmount | string | The amount requested by the user. |
netAmount | string | The net amount of the transaction, after fee deduction. |
amountUSD | string | The USD value of the requested amount. |
FeeInfo
Parameter | Type | Description |
---|---|---|
networkFee | string | The fee paid to the network. |
serviceFee | string | The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount). |
SetConfirmationsThresholdResponse
Parameter | Type | Description |
---|---|---|
success | boolean | yes or no success value. |
transactions | array of strings | txIds of the transactions. |
AmlScreeningResult
Parameter | Type | Description |
---|---|---|
provider | string | The AML service provider. |
payload | string | The response of the AML service provider. |
RawMessageData
Parameter | Type | Description |
---|---|---|
messages | array of UnsignedRawMessage objects | The messages that should be signed. |
algorithm | string | [optional] The algorithm which will be used to sign the transaction, one of the SigningAlgorithms. |
UnsignedRawMessage
Parameter | Type | Description |
---|---|---|
content | string | The message to be signed in hex format encoding. |
bip44AddressIndex | number | [optional] BIP44 address_index path level. |
bip44change | number | [optional] BIP44 change path level. |
The 2 fields above complement the derivation path given the source id and asset were provided in the transaction body request. | ||
In case none of the above was provided, please specify the derivation path. | ||
derivationPath | array of numbers | [optional] Should be passed only if asset and source were not specified. |
SigningAlgorithm
Parameter | Type | Description |
---|---|---|
algorithm | string | [ MPC_ECDSA_SECP256K1, MPC_ECDSA_SECP256R1, MPC_EDDSA_ED25519 ]. |
OneTimeAddress
Parameter | Type | Description |
---|---|---|
address | string | Transfer destination address. |
tag | string | Transfer destination tag for Ripple; memo for EOS/XLM, for the fiat providers (Signet by Signature, SEN by Silvergate, BLINC by BCB Group), it is the Bank Transfer Description. |
TransactionRequestDestination
Parameter | Type | Description |
---|---|---|
amount | string | The amount to be sent to this destination. |
destination | DestinationTransferPeerPath | The specific destination. |
TransactionRequestCallbackDestination
Parameter | Type | Description |
---|---|---|
amountNative | number | The amount transferred to this destination as a number. |
amountNativeStr | string | The amount transferred to this destination in a string representation. |
amountUSD | number | The USD value transferred to this destination. |
dstAddressType | Valid values: [ WHITELISTED or ONE_TIME ] . | |
dstId | string | The ID of the destination. |
dstName | string | The name of the destination. |
dstSubType | string | The specific exchange, fiat account or unmanaged wallet (either INTERNAL / EXTERNAL). |
dstType | string | The destination of the transaction (VAULT, EXCHANGE or UNMANAGED). |
displayDstAddress | string | The address of this specific destination. |
RawTX
Parameter | Type | Description |
---|---|---|
rawTx | string | Hex-encoded details of a transaction sent to the blockchain. |
keyDerivationPath | Array of numbers | Location of the encryption key within the customer’s HD Wallet URL used to sign this transaction. |
InputsSelection
Parameter | Type | Description |
---|---|---|
inputsToSpend | Array of Inputs | Inputs that should be used in the transaction. |
inputsToExclude | Array of Inputs | Inputs that shouldn't be used in the transaction. |
Input
Parameter | Type | Description |
---|---|---|
txHash | string | the hash value of the transaction. |
index | string | vOut of the txHash. |
UnspentInputsData
Parameter | Type | Description |
---|---|---|
input | Input | An object containing the txHash and index of this input. |
address | string | The destination address of this input. |
amount | string | The amount of this input. |
confirmations | number | Number of confirmations for the transaction of this input. |
status | string | The status is based on the status of the transaction. |
DestinationsResponse
Parameter | Type | Description |
---|---|---|
amount | string | The amount to be sent to this destination. |
destination | TransferPeerPathResponse | Destination of the transaction. |
amountUSD | number | The USD value of the requested amount. |
destinationAddress | string | Address where the asset were transferred. |
destinationAddressDescription | string | Description of the address. |
amlScreeningResult | AmlScreeningResult | The result of the AML screening. |
customerRefId | string | The ID for AML providers to associate the owner of funds with transactions. |
AddressStatus
Parameter | Type | Description |
---|---|---|
isValid | boolean | Returns "false" if the address is in a wrong format. |
isActive | boolean | Returns "false" if the address doesn't have enough balance or wasn't activate. |
requiresTag | boolean | Returns "true" if the address requires tag when used as a transaction destination. |
AuthorizationInfo
Parameter | Type | Description |
---|---|---|
allowOperatorAsAuthorizer | boolean | Set to "true" if the intiator of the transaction can be one of the approvers. |
logic | string | "AND" or "OR", this is the logic that is applied between the different authorization groups listed below. |
groups | list of AuthorizationGroups | The list of authorization groups and users that are required to approve this transaction. The logic applied between the different groups is the “logic” field above. Each element in the response is the user ID (the can found see via the users endpoint) and their ApprovalStatus. |
AuthorizationGroup
Parameter | Type | Description |
---|---|---|
th | number | The threshold of required approvers in this authorization group. |
users | list of users | The list of users that the threshold number is applied to for transaction approval. Each user in the response is a "key:value" where the key is the user ID (the can found see via the users endpoint) and the value is their ApprovalStatus. |
ApprovalStatus
Parameter | Type | Description |
---|---|---|
approval | string | [ PENDING_AUTHORIZATION, APPROVED, REJECTED, NA ]. |
Network Objects
NetworkRecord
Parameter | Type | Description |
---|---|---|
source | TransferPeerPathResponse | Source of the transaction. |
destination | TransferPeerPathResponse | Destination of the transaction. |
txHash | string | Blockchain hash of the transaction. |
networkFee | number | The fee paid to the network. |
assetId | string | Transaction asset. |
netAmount | number | The net amount of the transaction, after fee deduction. |
status | NetworkStatus | Status of the blockchain transaction. |
type | string | Type of the blockchain network operation. |
destinationAddress | string | Destination address. |
sourceAddress | string | For account based assets only, the source address of the transaction. |
NetworkConnection
Parameter | Type | Description |
---|---|---|
id | string | The ID of the Network Connection. |
localChannel | Channel | Local channel ID. |
remoteChannel | Channel | Remote channel ID. |
Channel
Parameter | Type | Description |
---|---|---|
networkId | string | 8 characters ID of the channel. |
name | string | The name of the channel. |
Fiat Account Objects
FiatAccount
Parameter | Type | Description |
---|---|---|
id | string | The ID of the account. |
type | string | [ BLINC, SIGNET, SILVERGATE ]. |
name | string | Display name of the fiat account. |
address | string | The address of the account. |
assets | Array of FiatAssets | Array of the assets under the account. |
FiatAsset
Parameter | Type | Description |
---|---|---|
id | string | The ID of the asset. |
balance | string | The balance of the asset. Values are returned according to balance decimal precision. |
Supported Assets Object
AssetTypeResponse
Parameter | Type | Description |
---|---|---|
id | string | The ID of the asset. |
name | string | The name of the asset. |
type | string | The type of asset being used by the network. [Valid Values: ALGO_ASSET, BASE_ASSET, BEP20, COMPOUND, ERC20, FIAT, SOL_ASSET, TRON_TRC20, XLM_ASSET, XDB_ASSET]. |
contractAddress | string | [Optional] The smart contract address used for deposit and withdrawal. (Note: This parameter is for blockchains that us a contract address, such as EVM-based blockchains.) |
nativeAsset | string | [Optional] The name of the native asset. |
decimals | number | [Optional] The number of digits after the decimal point. |
Gas Station Objects
GasStationInfo
Parameter | Type | Description |
---|---|---|
balance | dictionary | A dictionary of an asset and its balance in the Gas Station, consists of a key (string representing the asset token name) and a value (actual balance for that asset for a customer’s gas station account). Values are returned according to balance decimal precision. |
configuration | GasStationConfiguration | The settings of your Gas Station. |
GasStationConfiguration
Parameter | Type | Description |
---|---|---|
gasThreshold | string | Below this ETH balance the address will be funded up until gasCap value, in ETH units. |
gasCap | string | Up to this level the address will be funded with ETH, in ETH units. |
maxGasPrice | string | The funding transaction will be sent with this maximum value gas price, in Gwei units. |
Payments Objects
Payout
Parameter | Type | Description |
---|---|---|
id | string | [Optional] the ID of the payout. |
asset | string | the name of the type asset designated in the payout. |
status | string | [Optional] Valid values: SUBMITTED, PROCESSING, REJECTED, COMPLETED. |
instructions | PayoutInstruction | Instructions for the Payout. |
PayoutInstruction
Parameter | Type | Description |
---|---|---|
id | string | [Optional] the ID of the payout. |
status | string | [Optional] Valid values: SUBMITTED, PROCESSING, REJECTED, COMPLETED. |
displayName | string | [Optional] The display name of the payout recipient. |
legalName* | string | The legal name of the person or entity revieving the payout. |
legalEntityId* | string | The entity ID associated with the account of the payout recipient. |
mcc | string | [Optional] The Merchant Commercial Code for the payout recipient. |
address1 | string | [Optional] Line 1 of the payout recipient's business address. |
address2 | string | [Optional] Line 2 of the payout recipient's business address. |
country | string | [Optional] Country of the payout recipient's address. |
state | string | [Optional] State or Province of the payout recipient's address. |
zipCode | string | [Optional] Zip / Postal Code of the payout recipient's address. |
string | [Optional] The email address of the payout recipient. | |
phoneNumber | string | [Optional] The phone number of the payout recipient. |
bankName* | string | The name of the bank / financial instituion of the payout recipient. |
bankCountry* | string | Country of the payout recipient bank's address. |
bankState* | string | State or Province of the payout recipient bank's address. |
bankAccountNumber* | number | The primary account number for the payout recipient's bank account. |
bankSecondaryNumber* | string | The routing number for the payout recipient's bank account. |
amount* | string | The amount being disbursed to the payout recipient. |
description* | string | A text description |
PayoutResponse
Parameter | Type | Description |
---|---|---|
Payout | Payout | The configuration of the payout. |
XBSettlementConfigCreationRequestBody
Parameter | Type | Description |
---|---|---|
name | string | The text name of the settlement configuration. |
corridorId | string | The ID of the cross-border corridor. |
steps | XBSettlementConfigStepsRecord | The recorded steps of the cross-border settlement configuration. |
XBSettlementConfigCreationResponse
Parameter | Type | Description |
---|---|---|
tenantId | string | The ID of the tenant. |
configId | string | The ID of the cross-border settlement configuration. |
corridorId | string | The ID of the cross-border corridor. |
name | string | The text name of the settlement configuration. |
steps | XBSettlementConfigStepsRecord | The recorded steps of the cross-border settlement configuration. |
XBSettlementConfigEditRequestBody
Parameter | Type | Description |
---|---|---|
name | string | [Optional] The text name of the settlement configuration. |
steps | [Optional] XBSettlementConfigStepsRecord | The recorded steps of the cross-border settlement configuration. |
XBSettlementConfigEditResponse
Parameter | Type | Description |
---|---|---|
tenantId | string | The ID of the tenant. |
configId | string | The ID of the cross-border settlement configuration. |
corridorId | string | The ID of the cross-border corridor. |
name | string | The text name of the settlement configuration. |
steps | XBSettlementConfigStepsRecord | The recorded steps of the cross-border settlement configuration. |
XBSettlementConfigDeletionResponse
Parameter | Type | Description |
---|---|---|
configId | string | The ID of the cross-border settlement configuration. |
GetXBSettlementConfigResponse
Parameter | Type | Description |
---|---|---|
tenantId | string | The ID of the tenant. |
configId | string | The ID of the cross-border settlement configuration. |
corridorId | string | The ID of the cross-border corridor. |
name | string | The text name of the settlement configuration. |
steps | XBSettlementConfigStepsRecord | The recorded steps of the cross-border settlement configuration. |
GetAllXBSettlementConfigsResponse
Parameter | Type | Description |
---|---|---|
configurations | XBSettlementConfigModel | The configuration of the cross-border settlement. |
XBCreateSettlementFlowRequestBody
Parameter | Type | Description |
---|---|---|
configId | string | The ID of the cross-border settlement configuration. |
amount | XBSettlementAsset | The type and amount of an asset setup in the cross-border settlement configuration. |
XBCreateSettlementFlowResponse
Parameter | Type | Description |
---|---|---|
tenantId | string | The ID of the tenant. |
flowId | string | The ID of the settlement flow configuration. |
configId | string | The ID of the cross-border settlement configuration. |
steps | XBSettlementConfigStepsRecord | The recorded steps of the cross-border settlement configuration. |
inputAmount | XBSettlementAsset | The type and amount of an asset input in the cross-border settlement configuration. |
outputAmount | XBSettlementAsset | The type and amount of an asset output in the cross-border settlement configuration. |
totalEstimatedFees | XBSettlementAsset | The type and amount of estimated asset fees setup in the cross-border settlement configuration. |
totalEstimatedTime | number | The total amount of time estimated for the complete cross-border settlement flow to be executed. |
XBSettlementFlowExecutionResponse
Parameter | Type | Description |
---|---|---|
tenantId | string | The ID of the tenant. |
flowId | string | The ID of the settlement flow configuration. |
configId | string | The ID of the cross-border settlement configuration. |
steps | XBSettlementConfigStepsRecord | The recorded steps of the cross-border settlement configuration. |
inputAmount | XBSettlementAsset | The type and amount of an asset input in the cross-border settlement configuration. |
outputAmount | XBSettlementAsset | The type and amount of an asset output in the cross-border settlement configuration. |
totalFees | XBSettlementAsset | The type and amount of total asset fees in the cross-border settlement configuration. |
initiatedAt | number | The time the flow execution was initiated. |
initiatedBy | string | The ID of the user who initiated the flow execution. |
state | XBSettlementFlowExecutionStatus | The status of the flow execution. |
XBSettlementFlowExecutionStep
Parameter | Type | Description |
---|---|---|
id | string | The ID of the individual flow execution step. |
accountId | string | The ID of the account initiating the flow execution step. |
status | XBSettlementFlowExecutionStepStatus | The status of the individual step of the flow execution. |
inputAmount | XBSettlementAsset | The type and amount of an asset input in the cross-border settlement configuration. |
outputAmount | XBSettlementAsset | The type and amount of an asset output in the cross-border settlement configuration. |
fee | XBSettlementAsset | The type and amount of an asset setup in the cross-border settlement configuration. |
startedAt | number | The time the specific flow execution step began. |
XBSettlementFlowExecutionStepStatus
Parameter | Type | Description |
---|---|---|
XBSettlementFlowExecutionStepStatus | string | Valid values: NOT_STARTED, PROCESSING, COMPLETED, FAILED. |
XBSettlementFlowExecutionStatus
Parameter | Type | Description |
---|---|---|
XBSettlementFlowExecutionStatus | string | Valid values: NOT_STARTED, PROCESSING, COMPLETED, FAILED. |
XBSettlementConfigModel
Parameter | Type | Description |
---|---|---|
tenantId | string | The ID of the tenant. |
flowId | string | The ID of the settlement flow configuration. |
configId | string | The ID of the cross-border settlement configuration. |
name | string | The text name of the cross-border settlement configuration. |
steps | XBSettlementConfigStepsRecord | The recorded steps of the cross-border settlement configuration. |
XBSettlementConfigStep
Parameter | Type | Description |
---|---|---|
stepType | XBSettlementStepType | The type of step specified in the configuration. |
accountId | string | The ID of the account initiating the flow execution step. |
XBSettlementStepType
Parameter | Type | Description |
---|---|---|
XBSettlementStepType | string | Valid values: [ ON_RAMP, VAULT_ACCOUNT, OFF_RAMP, FIAT_DESTINATION ]. |
XBSettlementFlowSetupStep
Parameter | Type | Description |
---|---|---|
accountId | string | The ID of the account initiating the flow execution step. |
inputAmount | XBSettlementAsset | The type and amount of an asset input in the cross-border settlement configuration. |
outputAmount | XBSettlementAsset | The type and amount of an asset output in the cross-border settlement configuration. |
estimatedFeeAmount | XBSettlementAsset | The type and amount of asset fees estimated in the cross-border settlement configuration. |
estimatedTime | number | The amount of time estimated for the complete cross-border settlement flow setup step to be executed. |
XBSettlementFlowSetupModel
Parameter | Type | Description |
---|---|---|
tenantId | string | The ID of the tenant. |
flowId | string | [Optional] The ID of the settlement flow configuration. |
configId | string | The ID of the cross-border settlement configuration. |
steps | XBSettlementFlowStepsRecord | The specified steps for the cross-border settlement flow configuration. |
inputAmount | XBSettlementAsset | The type and amount of an asset input in the cross-border settlement configuration. |
outputAmount | XBSettlementAsset | The type and amount of an asset output in the cross-border settlement configuration. |
totalEstimatedFeeAmount | XBSettlementAsset | The type and total amount of asset fees estimated in the cross-border settlement configuration. |
totalEstimatedTime | number | The amount of total time estimated for each cross-border settlement flow setup step to be executed. |
XBSettlementFlowExecutionModel
Parameter | Type | Description |
---|---|---|
tenantId | string | The ID of the tenant. |
flowId | string | The ID of the settlement flow configuration. |
configId | string | The ID of the cross-border settlement configuration. |
steps | XBSettlementFlowExecutionStep | The instructions for the specified cross-border settlement flow configuration step. |
inputAmount | XBSettlementAsset | The type and amount of an asset input in the cross-border settlement configuration. |
outputAmount | XBSettlementAsset | The type and amount of an asset output in the cross-border settlement configuration. |
totalFees | XBSettlementAsset | The type and amount of total asset fees in the cross-border settlement configuration. |
initiatedAt | number | The time the flow execution was initiated. |
initiatedBy | string | The ID of the user who initiated the flow execution. |
state | XBSettlementFlowExecutionStatus | The status of the flow execution. |
XBSettlementConfigStepsRecord
Parameter | Type | Description |
---|---|---|
stepType | XBSettlementStepType | The type of step specified in the configuration. |
accountId | string | The ID of the account initiating the flow execution step. |
XBSettlementFlowStepsRecord
Parameter | Type | Description |
---|---|---|
stepType | XBSettlementStepType | The type of step specified in the configuration. |
XBSettlementFlowSetupStep | XBSettlementFlowSetupStep | The arrangement and setup of steps for the cross-border configuration flow. |
XBSettlementAsset
Parameter | Type | Description |
---|---|---|
amount | string | The amount of the asset being used in the cross-border settlement. |
assetId | string | The ID of the specific asset type being used in the cross-border settlement. |
Users
User
Parameter | Type | Description |
---|---|---|
id | string | User ID on the Fireblocks platform. |
firstName | string | First name. |
lastName | string | Last name. |
role | string | The role of the user in the workspace, one of the options as described here. |
string | The email of the user. | |
enabled | boolean | The status of the user in the workspace. |
General Objects
ConfigChangeRequestStatus
Parameter | Type | Description |
---|---|---|
status | string | [ WAITING_FOR_APPROVAL, APPROVED, CANCELLED, REJECTED, FAILED ]. |
API Co-Signer
Overview
The API Co-Signer is a component that holds an MPC key share of a customer's Fireblocks Vault and a Configuration Change Key for automated signing and approvals. The key share is used to securely sign transactions initiated via the API. The Configuration Change Key is used to approve new unmanaged wallet additions in the Fireblocks Vault.
The API Co-Signer can be provisioned with a Co-Signer Callback Handler, an HTTPS server that receives signing requests from the API Co-Signer and returns to the Co-Signer either an approval or rejection response. For more details on how to handle a Co-Signer request and how to structure your response, please see the Automated Signer Callback section below.
Please refer to this article for Callback Handler setup instruction.
Automated Signer Callback
In case the API Co-Signer is configured with a callback, it will send a POST request to the Callbck Handler, a predefined HTTPS server that should respond with APPROVE, REJECT or IGNORE action. IGNORE can be returned only for transaction authorization or configuration change.
The POST request will contain a JWT encoded message signed with the Co-Signer's private key. The Callback Handler should use the Co-Signer's public key to verify every incoming JWT is signed correctly by the Co-Signer.
The callback response shall be a JWT encoded message signed with the callback handler's private key. The private key must be the one paired with the public key provided to the Co-Signer during setup of the Callback Handler.
This Callback Handler should listen on the endpoints described below and respond accordingly to the needed action.
Transaction Signing Callback Handler
# -*- coding: utf-8 -*-
"""
App runner
"""
# System imports
from pathlib import Path
# Third-party imports
import falcon
import jwt
callback_handler_prikey = None
cosigner_pubkey = None
class JWTTransferRequest(object):
def on_post(self, req, resp):
raw_req = req.bounded_stream.read()
req = jwt.decode(raw_req, cosigner_pubkey, algorithms=["RS256"])
resp.body = jwt.encode({'action': 'APPROVE', 'requestId': req['requestId']}, callback_handler_prikey, algorithm="RS256")
resp.status = falcon.HTTP_200
# Load keys.
f1 = Path("callback_handler.pem")
if f1.is_file(): callback_handler_prikey = f1.read_bytes()
f2 = Path("cosigner_pubkey.pem")
if f2.is_file(): cosigner_pubkey = f2.read_bytes()
# Create falcon app
app = falcon.API()
app.add_route('/v2/tx_sign_request', JWTTransferRequest())
app.add_route('/v2/config_change_sign_request', JWTTransferRequest())
POST /v2/tx_sign_request
Returns a CallbackResponse object.
Parameters
Parameter | Type | Description |
---|---|---|
requestId | string | Unique identifier for the call - to be returned in the response. |
txId | string | Fireblocks' internal transaction ID. |
operation | TransactionOperation | [optional] Transaction operation type, the default is "TRANSFER". |
sourceType | string | Whether the transfer is from Fireblocks vault or exchange (VAULT or EXCHANGE). |
sourceId | string | The ID of the vault account or the exchange account UUID. |
destType | string | The destination of the transaction (VAULT or EXCHANGE or UNMANAGED). |
destAddressType | string | WHITELISTED or ONE_TIME. |
destId | string | The ID of the destination. |
asset | string | The asset symbol. |
amount | number | The amount of the transfer. |
amountStr | string | The amount of the transfer in a string representation. |
requestedAmount | string | The requested amount to withdraw, might be different from the transferred amount in case of a gross transaction. |
destAddress | string | The destination address of the transfer. (Note: When destAddressType uses a one-time address on EVM-compatible blockchains, this will be the contract address. The destinations parameter will consistently retrieve a the transactions destination address.) |
fee | string | [optional] The fee of the transaction. |
note | string | [optional] The note that is passed with the transaction body request. |
destinations | Array of TransactionRequestCallbackDestination | Fireblocks supports multiple destinations for UTXO-based blockchains. For other blockchains, this array will always be composed of one element. |
extraParameters | [optional] JSON object | Protocol / operation specific parameters. |
rawTx | Array of RawTx | List of the actual transactions that are sent to the blockchain. Some Fireblocks transactions, especially if they are UTXO-based, represent multiple transactions that are sent to the blockchain. In this case this list will contain more than one object. |
players | Array of string | List of the 3 co-signers that participated in signing this transaction. Each co-signer is represented by a Device ID. Fireblocks splits every transaction to 2 co-signers in Fireblocks SaaS and 1 co-signer either on a user’s mobile device or on a user-hosted API co-signer. |
Configuration Approval Callback Handler
POST /v2/config_change_sign_request
Returns a CallbackResponse object.
Parameters sent
Parameter | Type | Description |
---|---|---|
requestId | string | Unique identifier for the call - taken from the request. |
type | string | [ UNMANAGED_WALLET, EXCHANGE, FIAT_ACCOUNT ]. |
extraInfo | JSON object | Either AddressInfo or ThirdPartyInfo json object. |
Co-Signer Data Objects
AddressInfo
Parameter | Type | Description |
---|---|---|
subType | string | The specific exchange, fiat account or unmanaged wallet (either INTERNAL / EXTERNAL). |
walletName | string | The name of the wallet as defined in the workspace. |
walletId | string | Fireblocks' internal wallet ID. |
asset | string | Wallet's asset. |
address | string | The address of the asset in the wallet. |
tag | string | [optional] For assets that have tag/memo (XRP/EOS/XLM); for the fiat providers: Signet (by Signature), SEN (by Silvergate), or BLINC (by BCB Group), it is the Bank Transfer Description. |
ThirdPartyInfo
Parameter | Type | Description |
---|---|---|
subType | string | The specific exchange, fiat account or unmanaged wallet (either INTERNAL / EXTERNAL). |
accountName | string | The name of the account. |
accountId | string | The ID of the account. |
apiKey | string | Third party's API key. |
addresses | string | [optional] A JSON formated "key":"value" string, where the key is an asset symbol (asset symbols can be retrieved at the supported-assets and the value is its address. There can be multiple entries in the JSON. |
CallbackResponse
Parameter | Type | Description |
---|---|---|
action | string | [APPROVE, REJECT, IGNORE]. |
requestId | string | The unique identifier of the call that was received in the approval request. |
rejectionReason | string | Free text of the rejection reason for logging purposes. |
API Responses
HTTP Status Code
- 200 -
OK
- Request processed as expected. - 400 -
INVALID_REQUEST
- Request is not well-formed, violates schema or incorrect fields. - 401 -
NOT_AUTHORIZED
- The API key doesn't match the signature or doesn't have permissions to perform the request. - 403 -
FORBIDDEN
- The API key's permissions doesn't match the needed permission to complete the request. - 404 -
RESOURCE_NOT_FOUND
- The requested resource doesn't exist. - 429 -
RATE_LIMIT_REACHED
- Too many requests. Blocked due to rate limiting. - 5XX - Something went wrong on Fireblocks' end
API Error Codes
Error Code | HTTP Status Code | Constant |
---|---|---|
1000 | 400 | GET_VAULT_ACCOUNTS_INVALID_PARAMS |
1001 | 500 | GET_VAULT_ACCOUNTS_UNEXPECTED_ERROR |
1002 | 400 | POST_VAULT_ACCOUNTS_INVALID_PARAMS |
1003 | 500 | POST_VAULT_ACCOUNTS_UNEXPECTED_ERROR |
1004 | 400 | GET_VAULT_ACCOUNT_BY_ID_NOT_FOUND |
1005 | 500 | GET_VAULT_ACCOUNT_BY_ID_UNEXPECTED_ERROR |
1006 | 400 | GET_VAULT_ASSET_FAILED_NOT_FOUND |
1007 | 500 | GET_VAULT_ASSET_FAILED_UNEXPECTED_ERROR |
1008 | 400 | CREATE_VAULT_ASSET_FAILED_INVALID_PARAMS |
1009 | 500 | CREATE_VAULT_ASSET_FAILED_UNEXPECTED_ERROR |
1010 | 400 | CREATE_VAULT_ASSET_ADDRESS_FAILED_INVALID_PARAMS |
1011 | 500 | CREATE_VAULT_ASSET_ADDRESS_FAILED_UNEXPECTED_ERROR |
1012 | 500 | GET_VAULT_ASSET_ADDRESS_FAILED_UNEXPECTED_ERROR |
1013 | 400 | PUT_VAULT_ACCOUNTS_INVALID_PARAMS |
1014 | 500 | PUT_VAULT_ACCOUNTS_UNEXPECTED_ERROR |
1015 | 400 | PUT_ADDRESS_ID_INVALID_PARAMS |
1016 | 500 | PUT_ADDRESS_ID_UNEXPECTED_ERROR |
1017 | 400 | HIDE_VAULT_ACCOUNT_NOT_FOUND |
1018 | 500 | HIDE_VAULT_ACCOUNT_SEND_FAILED |
1019 | 400 | HIDE_VAULT_ACCOUNT_INVALID_PARAMS |
1020 | 400 | UNHIDE_VAULT_ACCOUNT_NOT_FOUND |
1021 | 500 | UNHIDE_VAULT_ACCOUNT_SEND_FAILED |
1022 | 400 | UNHIDE_VAULT_ACCOUNT_INVALID_PARAMS |
1025 | 400 | CREATE_VAULT_ASSET_UNSUPPORTED_ERROR |
1026 | 400 | CREATE_VAULT_ASSET_NOT_ALLOWED_ERROR |
1027 | 400 | MAX_SPENDABLE_AMOUNT_ASSET_NOT_ALLOWED_ERROR |
1028 | 400 | MAX_SPENDABLE_AMOUNT_INVALID_PARAMETERS |
1029 | 500 | MAX_SPENDABLE_AMOUNT_INTERNAL_ERROR |
1030 | 500 | MAX_SPENDABLE_AMOUNT_UNEXPECTED_ERROR |
1031 | 400 | GET_VAULT_ASSETS_BLANCE_INVALID_PARAMETERS |
1032 | 400 | GET_VAULT_ASSETS_BLANCE_NOT_FOUND_ERROR |
1033 | 500 | GET_VAULT_ASSETS_BLANCE_UNEXPECTED_ERROR |
1034 | 400 | CREATE_VAULT_ASSET_FAILED_INVALID_ASSET_TESTNET |
1101 | 500 | GET_EXCHANGE_ACCOUNTS_UNEXPECTED_ERROR |
1102 | 500 | GET_EXCHANGE_ACCOUNT_BY_ID_UNEXPECTED_ERROR |
1103 | 400 | GET_EXCHANGE_ACCOUNT_BY_ID_NOT_FOUND |
1104 | 500 | GET_EXCHANGE_ASSET_BY_ID_UNEXPECTED_ERROR |
1105 | 400 | GET_EXCHANGE_ASSET_BY_ID_NOT_FOUND |
1106 | 400 | INTERNAL_TRANSFER_INVALID_PARAMS |
1107 | 400 | INTERNAL_TRANSFER_UNEXPECTED_ERROR |
1201 | 500 | GET_INTERNAL_WALLETS_UNEXPECTED_ERROR |
1202 | 400 | CREATE_INTERNAL_WALLET_INVALID_PARAMS |
1202 | 500 | CREATE_INTERNAL_WALLET_UNEXPECTED_ERROR |
1203 | 500 | GET_INTERNAL_WALLET_BY_ID_UNEXPECTED_ERROR |
1204 | 400 | GET_INTERNAL_WALLET_BY_ID_INVALID_PARAMS |
1205 | 500 | DELETE_INTERNAL_WALLET_BY_ID_UNEXPECTED_ERROR |
1206 | 400 | DELETE_INTERNAL_WALLET_BY_ID_INVALID_PARAMS |
1207 | 500 | CREATE_INTERNAL_WALLET_ASSET_UNEXPECTED_ERROR |
1208 | 400 | CREATE_INTERNAL_WALLET_ASSET_INVALID_PARAMS |
1209 | 400 | GET_INTERNAL_WALLET_ASSET_INVALID_PARAMS |
1210 | 500 | GET_INTERNAL_WALLET_ASSET_UNEXPECTED_ERROR |
1211 | 400 | DELETE_INTERNAL_WALLET_ASSET_INVALID_PARAMS |
1212 | 500 | DELETE_INTERNAL_WALLET_ASSET_UNEXPECTED_ERROR |
1213 | 400 | CREATE_INTERNAL_WALLET_ASSET_UNSUPPORTED_ERROR |
1214 | 400 | CREATE_INTERNAL_WALLET_ASSET_NOT_ALLOWED_ERROR |
1215 | 400 | CREATE_INTERNAL_WALLET_ASSET_ALREADY_EXISTS_ERROR |
1216 | 400 | CREATE_INTERNAL_WALLET_ASSSET_INVALID_ADDRESS |
1301 | 400 | GET_EXTERNAL_WALLETS_UNEXPECTED_ERROR |
1302 | 400 | CREATE_EXTERNAL_WALLET_INVALID_PARAMS |
1302 | 500 | CREATE_EXTERNAL_WALLET_UNEXPECTED_ERROR |
1303 | 500 | GET_EXTERNAL_WALLET_BY_ID_UNEXPECTED_ERROR |
1304 | 400 | GET_EXTERNAL_WALLET_BY_ID_INVALID_PARAMS |
1305 | 500 | DELETE_EXTERNAL_WALLET_BY_ID_UNEXPECTED_ERROR |
1306 | 400 | DELETE_EXTERNAL_WALLET_BY_ID_INVALID_PARAMS |
1307 | 500 | CREATE_EXTERNAL_WALLET_ASSET_UNEXPECTED_ERROR |
1308 | 400 | CREATE_EXTERNAL_WALLET_ASSET_INVALID_PARAMS |
1309 | 400 | GET_EXTERNAL_WALLET_ASSET_INVALID_PARAMS |
1310 | 500 | GET_EXTERNAL_WALLET_ASSET_UNEXPECTED_ERROR |
1311 | 400 | DELETE_EXTERNAL_WALLET_ASSET_INVALID_PARAMS |
1312 | 500 | DELETE_EXTERNAL_WALLET_ASSET_UNEXPECTED_ERROR |
1313 | 400 | CREATE_EXTERNAL_WALLET_ASSET_UNSUPPORTED_ERROR |
1314 | 400 | CREATE_EXTERNAL_WALLET_ASSET_NOT_ALLOWED_ERROR |
1315 | 400 | CREATE_EXTERNAL_WALLET_ASSET_ALREADY_EXISTS_ERROR |
1316 | 400 | CREATE_EXTERNAL_WALLET_ASSET_INVALID_ADDRESS |
1401 | 400 | CREATE_TRANSACTION_UNSUPPORTED_ACTION |
1402 | 400 | CREATE_TRANSACTION_SOURCE_BALANCE |
1403 | 400 | CREATE_TRANSACTION_DESTINATION_BALANCE |
1404 | 500 | CREATE_TRANSACTION_UNEXPECTED_ERROR |
1405 | 400 | GET_TRANSACTION_NOT_FOUND |
1406 | 400 | CANCEL_TRANSACTION_FAILED |
1408 | 400 | GET_TRANSACTION_INVALID_PARAMS |
1409 | 400 | CREATE_TRANSACTION_INVALID_PARAMS |
1410 | 400 | CREATE_TRANSACTION_UNMANAGED_WALLET_CONTAINER_NOT_FOUND |
1411 | 400 | CREATE_TRANSACTION_UNMANAGED_WALLET_NOT_FOUND |
1412 | 400 | CREATE_TRANSACTION_UNMANAGED_WALLET_SUSPENDED |
1421 | 400 | SET_CONFIRMATION_THRESHOLD_FAILED_TRANSACTIONS |
1422 | 400 | SET_CONFIRMATION_THRESHOLD_FAILED_TX_HASH |
1423 | 400 | GET_TRANSACTIONS_BY_TXHASH_NOT_FOUND |
1424 | 400 | CREATE_TRANSACTION_DESTINATION_RIPPLE_INVALID |
1425 | 400 | CREATE_TRANSACTION_RIPPLE_MISSING_TAG |
1426 | 400 | UNFREEZE_TRANSACTION_FAILED |
1427 | 400 | CREATE_TRANSACTION_SOURCE_ERROR |
1428 | 400 | CREATE_TRANSACTION_DESTINATION_ERROR |
1429 | 400 | VALIDATE_ADDRESS_INVALID_PARAMETER |
1430 | 500 | VALIDATE_ADDRESS_UNEXPECTED_ERROR |
1431 | 400 | VALIDATE_ADDRESS_NOT_FOUND |
1432 | 400 | CREATE_TRANSACTION_INVALID_AMOUNT |
1433 | 400 | CREATE_TRANSACTION_INVALID_DEST_TAG |
1434 | 400 | FREEZE_TRANSACTION_FAILED |
1435 | 400 | LIST_UNSPENTS_UNKNOWN_ASSET |
1436 | 400 | LIST_UNSPENTS_UNEXPECTED_ERROR |
1437 | 400 | RESTRICTED_SOURCE |
1438 | 400 | CREATE_TRANSACTION_EXTERNAL_ID_ALREADY_EXISTS |
1440 | 400 | DROP_TRANSACTION_FAILED |
1441 | 400 | GAS_PRICE_TOO_LOW_FOR_RBF |
1443 | 400 | RBF_TRANSACTION_ALREADY_MINED |
1450 | 400 | BLOCKCHAIN_TRANSACTIONS_BLOCKED |
1501 | 500 | GET_SUPPORTED_ASSETS_UNEXPECTED_ERROR |
1601 | 400 | GET_CONNECTION_BY_ID_NOT_FOUND |
1602 | 400 | GET_CONNECTION_BY_ID_UNAUTHORIZED |
1702 | 500 | GET_FIAT_ACCOUNT_BY_ID_UNEXPECTED_ERROR |
1703 | 400 | GET_FIAT_ACCOUNT_BY_ID_NOT_FOUND |
1705 | 400 | GET_FIAT_ASSET_BY_ID_NOT_FOUND |
1706 | 400 | REDEEM_TO_DDA_INVALID_PARAMS |
1707 | 400 | REDEEM_TO_DDA_UNEXPECTED_ERROR |
1708 | 400 | DEPOSIT_FROM_DDA_INVALID_PARAMS |
1709 | 400 | DEPOSIT_FROM_DDA_UNEXPECTED_ERROR |
1801 | 500 | TRANSFER_ASSIST_SERVICE_ERROR |
1901 | 400 | ESTIMATE_FEES_UNKNOWN_ASSET |
1902 | 400 | ESTIMATE_FEES_INVALID_ASSET |
1903 | 400 | ESTIMATE_FEES_CALCULATING_FAILED |
1904 | 400 | ESTIMATE_FEES_INVALID_PARAMS |
1905 | 400 | ESTIMATE_FEES_INSUFFICIENT_FUNDS |
2001 | 500 | PUBLIC_KEY_UNEXPECTED_ERROR |
2002 | 400 | PUBLIC_KEY_NOT_FOUND |
2101 | 400 | GAS_STATION_INVALID_PARAMS |
2102 | 500 | GAS_STATION_UNEXPECTED_ERROR |
2103 | 400 | AML_INVALID_PARAMS |
2104 | 500 | AML_UNEXPECTED_ERROR |
2105 | 400 | AML_POLICY_NOT_FOUND |
2106 | 400 | AML_PROVIDER_CONFIGURATION_NOT_FOUND |
2201 | 400 | ALLOCATE_UNKOWN_ASSET |
2202 | 400 | ALLOCATED_ACCOUNT_NOT_FOUND |
2203 | 500 | ALLOCATE_INTERNAL_ERROR |
2204 | 400 | ALLOCATE_TO_FEE_BANK_PROHIBITED |
9001 | 400 | INVALID_CUSTOMER_REF_ID |
9002 | 401 | ACCESS_DENIED_FOR_IP |
9003 | 400 | IDEMPOTENCY_KEY_INVALID |
9005 | 400 | IDEMPOTENCY_KEY_IN_PROGRESS |
Webhook
Overview
Setting a webhook will allow you to get notifications for events that happen on your Fireblocks workspace. You can receive notifications on events in your workspace such as incoming/outgoing transactions, transactions status update, new vault accounts, new wallets, new external/internal addresses and many more.
In order to connect a Webhook to your Fireblocks workspace please refer to this article. Once your Webhook is connected to your Fireblocks workspace, you will start receiving notification on events in that workspace. All events will be sent with the following headers (the public key for verifying the signature can be found here):
- Fireblocks-Signature = Base64(RSA512(WEBHOOK_PRIVATE_KEY, SHA512(eventBody)))
- Fireblocks-API-Version = "1.4.0"
Fireblocks will send a POST request to the URL(s) associated with the workspace and expect a 200 response. If no response is received, Fireblocks will resend the request several more times with an increasing delay between each attempt, the retry attemps will be taken after [ 15, 45, 105,225, 465, 945, 1905, 3825, 7665, 15345 ] seconds.
On the language tabs you can find examples on how to setup up the server and verify the signature header of the request.
Event Types
Below you can find the list of all events your webhook will receive notifications for.
# -*- coding: utf-8 -*-
"""
App runner
"""
# Third-party imports
import falcon
import json
import rsa
import base64
FIREBLOCKS_PUBLIC_KEY = """
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0+6wd9OJQpK60ZI7qnZG
jjQ0wNFUHfRv85Tdyek8+ahlg1Ph8uhwl4N6DZw5LwLXhNjzAbQ8LGPxt36RUZl5
YlxTru0jZNKx5lslR+H4i936A4pKBjgiMmSkVwXD9HcfKHTp70GQ812+J0Fvti/v
4nrrUpc011Wo4F6omt1QcYsi4GTI5OsEbeKQ24BtUd6Z1Nm/EP7PfPxeb4CP8KOH
clM8K7OwBUfWrip8Ptljjz9BNOZUF94iyjJ/BIzGJjyCntho64ehpUYP8UJykLVd
CGcu7sVYWnknf1ZGLuqqZQt4qt7cUUhFGielssZP9N9x7wzaAIFcT3yQ+ELDu1SZ
dE4lZsf2uMyfj58V8GDOLLE233+LRsRbJ083x+e2mW5BdAGtGgQBusFfnmv5Bxqd
HgS55hsna5725/44tvxll261TgQvjGrTxwe7e5Ia3d2Syc+e89mXQaI/+cZnylNP
SwCCvx8mOM847T0XkVRX3ZrwXtHIA25uKsPJzUtksDnAowB91j7RJkjXxJcz3Vh1
4k182UFOTPRW9jzdWNSyWQGl/vpe9oQ4c2Ly15+/toBo4YXJeDdDnZ5c/O+KKadc
IMPBpnPrH/0O97uMPuED+nI6ISGOTMLZo35xJ96gPBwyG5s2QxIkKPXIrhgcgUnk
tSM7QYNhlftT4/yVvYnk0YcCAwEAAQ==
-----END PUBLIC KEY-----
"""
signature_pub_key = rsa.PublicKey.load_pkcs1_openssl_pem(FIREBLOCKS_PUBLIC_KEY)
class RequestBodyMiddleware(object):
def process_request(self, req, resp):
req.body = req.bounded_stream.read()
class AuthMiddleware(object):
def process_request(self, req, resp):
signature = req.get_header('Fireblocks-Signature')
if signature is None:
raise falcon.HTTPUnauthorized('Signature required')
if not self._signature_is_valid(req.body, signature):
raise falcon.HTTPUnauthorized('Invalid signature')
def _signature_is_valid(self, body, signature):
try:
hashing_alg = rsa.verify(body, base64.b64decode(signature), signature_pub_key)
return hashing_alg == "SHA-512"
except rsa.pkcs1.VerificationError:
return False
class DummyRequest(object):
def on_post(self, req, resp):
obj = json.loads(req.body.decode("utf-8"))
print(obj)
resp.status = falcon.HTTP_201
# Create falcon app
app = falcon.API(
middleware=[
RequestBodyMiddleware(),
AuthMiddleware()
]
)
app.add_route('/webhook', DummyRequest())
if __name__ == '__main__':
from wsgiref import simple_server # NOQA
httpd = simple_server.make_server('127.0.0.1', 8000, app)
httpd.serve_forever()
const crypto = require("crypto");
const express = require("express");
const bodyParser = require('body-parser')
const port = 3000;
const publicKey = `-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0+6wd9OJQpK60ZI7qnZG
jjQ0wNFUHfRv85Tdyek8+ahlg1Ph8uhwl4N6DZw5LwLXhNjzAbQ8LGPxt36RUZl5
YlxTru0jZNKx5lslR+H4i936A4pKBjgiMmSkVwXD9HcfKHTp70GQ812+J0Fvti/v
4nrrUpc011Wo4F6omt1QcYsi4GTI5OsEbeKQ24BtUd6Z1Nm/EP7PfPxeb4CP8KOH
clM8K7OwBUfWrip8Ptljjz9BNOZUF94iyjJ/BIzGJjyCntho64ehpUYP8UJykLVd
CGcu7sVYWnknf1ZGLuqqZQt4qt7cUUhFGielssZP9N9x7wzaAIFcT3yQ+ELDu1SZ
dE4lZsf2uMyfj58V8GDOLLE233+LRsRbJ083x+e2mW5BdAGtGgQBusFfnmv5Bxqd
HgS55hsna5725/44tvxll261TgQvjGrTxwe7e5Ia3d2Syc+e89mXQaI/+cZnylNP
SwCCvx8mOM847T0XkVRX3ZrwXtHIA25uKsPJzUtksDnAowB91j7RJkjXxJcz3Vh1
4k182UFOTPRW9jzdWNSyWQGl/vpe9oQ4c2Ly15+/toBo4YXJeDdDnZ5c/O+KKadc
IMPBpnPrH/0O97uMPuED+nI6ISGOTMLZo35xJ96gPBwyG5s2QxIkKPXIrhgcgUnk
tSM7QYNhlftT4/yVvYnk0YcCAwEAAQ==
-----END PUBLIC KEY-----`.replace(/\\n/g, "\n");
const app = express();
app.use(bodyParser.json());
app.post("/webhook", (req, res) => {
const message = JSON.stringify(req.body);
const signature = req.headers("Fireblocks-Signature");
const verifier = crypto.createVerify('RSA-SHA512');
verifier.write(message);
verifier.end();
const isVerified = verifier.verify(publicKey, signature, "base64");
console.log("Verified:", isVerified);
res.send("ok");
});
app.listen(port, () => {
console.log(`Webhook running at http://localhost:${port}`);
});
Event | Data | Description |
---|---|---|
TRANSACTION_CREATED | TransactionCreated | Sent upon any new transaction identified in the workspace. |
TRANSACTION_STATUS_UPDATED | TransactionStatusUpdated | Sent upon any change in the status of a transaction or number of confirmations update. |
TRANSACTION_APPROVAL_STATUS_UPDATED | TransactionApprovalStatusUpdated | Sent with every approval based on the Transaction Authorization Policy. |
VAULT_ACCOUNT_ADDED | VaultAccountAdded | Sent upon addition of a new vault account in the workspace. |
VAULT_ACCOUNT_ASSET_ADDED | VaultAccountAssetAdded | Sent upon addition of a new asset under a vault account. |
INTERNAL_WALLET_ASSET_ADDED | InternalWalletAssetAdded | Sent upon addition of a new asset under an internal wallet. |
EXTERNAL_WALLET_ASSET_ADDED | ExternalWalletAssetAdded | Sent upon addition of a new asset under an external wallet. |
EXCHANGE_ACCOUNT_ADDED | ExchangeAccountAdded | Sent upon addition of a new exchange account. |
FIAT_ACCOUNT_ADDED | FiatAccountAdded | Sent upon addition of a new fiat account. |
NETWORK_CONNECTION_ADDED | NetworkConnectionAdded | Sent upon addition of a new network connection. |
Event Objects
TransactionCreated
Parameter | Type | Description |
---|---|---|
type | string | TRANSACTION_CREATED |
tenantId | string | Unique id of your Fireblocks' workspace. |
timestamp | number | Timestamp in milliseconds. |
data | TransactionDetails | All the transaction information. |
TransactionStatusUpdated
Parameter | Type | Description |
---|---|---|
type | string | TRANSACTION_STATUS_UPDATED |
tenantId | string | Unique id of your Fireblocks' workspace. |
timestamp | number | Timestamp in milliseconds. |
data | TransactionDetails | All the transaction information. |
TransactionApprovalStatusUpdated
Parameter | Type | Description |
---|---|---|
type | string | TRANSACTION_APPROVAL_STATUS_UPDATED. |
tenantId | string | Unique id of your Fireblocks' workspace. |
timestamp | number | Timestamp in milliseconds. |
data | TransactionDetails | All the transaction information. |
VaultAccountAdded
Parameter | Type | Description |
---|---|---|
type | string | VAULT_ACCOUNT_ADDED. |
tenantId | string | Unique id of your Fireblocks' workspace. |
timestamp | number | Timestamp in milliseconds. |
data | VaultAccount | Vault Account details. |
VaultAccountAssetAdded
Parameter | Type | Description |
---|---|---|
type | string | VAULT_ACCOUNT_ASSET_ADDED. |
tenantId | string | Unique id of your Fireblocks' workspace. |
timestamp | number | Timestamp in milliseconds. |
data | AssetAddedData | Vault-Account-Asset details. |
AssetAddedData
Parameter | Type | Description |
---|---|---|
accountId | string | The ID of the vault account under which the wallet was added. |
tenantId | string | Unique id of your Fireblocks' workspace. |
accountName | string | The name of the vault account under which the wallet was added. |
assetId | string | Wallet's asset |
InternalWalletAssetAdded
Parameter | Type | Description |
---|---|---|
type | string | INTERNAL_WALLET_ASSET_ADDED. |
tenantId | string | Unique id of your Fireblocks' workspace. |
timestamp | number | Timestamp in milliseconds. |
data | WalletAssetWebhook | Internal wallet details. |
ExternalWalletAssetAdded
Parameter | Type | Description |
---|---|---|
type | string | EXTERNAL_WALLET_ASSET_ADDED. |
tenantId | string | Unique id of your Fireblocks' workspace. |
timestamp | number | Timestamp in milliseconds. |
data | WalletAssetWebhook | External wallet details. |
ExchangeAccountAdded
Parameter | Type | Description |
---|---|---|
type | string | EXCHANGE_ACCOUNT_ADDED. |
tenantId | string | Unique id of your Fireblocks' workspace. |
timestamp | number | Timestamp in milliseconds. |
data | ThirdPartyWebhook | Exchange accounts details. |
FiatAccountAdded
Parameter | Type | Description |
---|---|---|
type | string | FIAT_ACCOUNT_ADDED. |
tenantId | string | Unique id of your Fireblocks' workspace. |
timestamp | number | Timestamp in milliseconds. |
data | ThirdPartyWebhook | Fiat account details. |
NetworkConnectionAdded
Parameter | Type | Description |
---|---|---|
type | string | NETWORK_CONNECTION_ADDED. |
tenantId | string | Unique id of your Fireblocks' workspace. |
timestamp | number | Timestamp in milliseconds. |
data | NetworkConnection | Network connection details. |
Data Objects
WalletAssetWebhook
Parameter | Type | Description |
---|---|---|
assetId | string | The wallet's asset. |
walletId | string | The ID of the wallet. |
walletName | string | The name of wallet. |
address | string | The address of the wallet. |
tag | string | For XRP wallets, the destination tag; for EOS/XLM, the memo; for the fiat providers (Signet by Signature, SEN by Silvergate, or BLINC by BCB Group), the Bank Transfer Description. |
activationTime | string | The time the wallet will be activated in case wallets activation postponed according to workspace definition. |
ThirdPartyWebhook
Parameter | Type | Description |
---|---|---|
id | string | Id of the thirdparty account on the Fireblocks platform. |
subType | string | The specific exchange, fiat account or unmanaged wallet (either INTERNAL / EXTERNAL). |
name | string | Account name. |
Resend
Resend all failed webhook notifications
result = fireblocks.resend_webhooks()
const result = await fireblocks.resendWebhooks();
The above command returns
webhookCount
which is the number of resent webhok notifications.
Resends all the failed webhooks pending the backoff retry mechanism to be resent.
HTTP Request
POST /v1/webhooks/resend
Response
Returns 200 on success.
Resend missed webhooks per transaction
result = fireblocks.resend_transaction_webhooks_by_id(txId, resend_created, resend_status_updated)
const result = await fireblocks.resendTransactionWebhooksById(txId, resendCreated, resendStatusUpdated);
Returns 200 on successs
Resend a missing webhook notification per specific transaction.
HTTP Request
POST /v1/webhooks/resend/{txId}
URL Parameters
Parameter | Description |
---|---|
txId | The ID of the transaction to resend the webhook for. |
Body Parameters
Parameter | Type | Description |
---|---|---|
resendCreated | boolean | Resend the TRANSACTION_CREATED event for the given txId. |
resendStatusUpdated | boolean | Resend the latest TRANSACTION_STATUS_UPDATED event for the given txId. |
Response
Returns 200 on success.
Transfer Statuses
TransactionStatus
- SUBMITTED - The transaction was submitted to the Fireblocks system and is being processed
- QUEUED - Transaction is queued. Pending for another transaction to be processed
- PENDING_AUTHORIZATION - The transaction is pending authorization by other users (as defined in the Transaction Authorization Policy)
- PENDING_SIGNATURE - The transaction is pending the initiator to sign the transaction
- BROADCASTING - The transaction is pending broadcast to the blockchain network
- PENDING_3RD_PARTY_MANUAL_APPROVAL - The transaction is pending manual approval as required by the 3rd party, usually an email approval
- PENDING_3RD_PARTY - The transaction is pending approval by the 3rd party service (e.g. exchange)
- CONFIRMING - Pending confirmation on the blockchain
- PARTIALLY_COMPLETED - (Only for Aggregated transactions) One or more of the transaction records have completed successfully
- PENDING_AML_SCREENING - In case the AML screening feature is enabled, transaction is pending AML screening result
- COMPLETED - Successfully completed
- CANCELLED - The transaction was cancelled or rejected by the user on the Fireblocks platform or by the 3rd party service from which the funds are withdrawn
- REJECTED - The transaction was rejected by the Fireblocks system or by the 3rd party service
- BLOCKED - The transaction was blocked due to a policy rule
- FAILED - The transaction has failed
TransactionSubStatus
- INSUFFICIENT_FUNDS - Not enough funds to fulfill the withdraw request
- AMOUNT_TOO_SMALL - Attempt to withdraw an amount below the allowed minimum
- UNSUPPORTED_ASSET - Asset is not supported
- UNAUTHORISED__MISSING_PERMISSION - Third party (e.g. exchange) API missing permission
- INVALID_SIGNATURE - Invalid transaction signature
- API_INVALID_SIGNATURE - Third party (e.g. exchange) API call invalid signature
- UNAUTHORISED__MISSING_CREDENTIALS - Missing third party (e.g. exchange) credentials
- UNAUTHORISED__USER - Attempt to initiate or approve a transaction by an unauthorised user
- UNAUTHORISED__DEVICE - Unauthorised user's device
- INVALID_UNMANAGED_WALLET - Unmanaged wallet is disabled or does not exist
- INVALID_EXCHANGE_ACCOUNT - Exchange account is disabled or does not exist
- INSUFFICIENT_FUNDS_FOR_FEE - Not enough balance to fund the requested transaction
- INVALID_ADDRESS - Unsupported address format
- WITHDRAW_LIMIT - Transaction exceeds the exchange's withdraw limit
- API_CALL_LIMIT - Exceeded third party (e.g. exchange) API call limit
- ADDRESS_NOT_WHITELISTED - Attempt to withdraw from an exchange to a non-whitelisted address
- TIMEOUT - The transaction request has timed out
- CONNECTIVITY_ERROR - Network error
- THIRD_PARTY_INTERNAL_ERROR - Received an internal error response from a third party service
- CANCELLED_EXTERNALLY - Transaction was canceled by a third party service
- INVALID_THIRD_PARTY_RESPONSE - Unrecognized third party response
- VAULT_WALLET_NOT_READY - Vault wallet is not ready
- MISSING_DEPOSIT_ADDRESS - Could not retrieve a deposit address from the exchange
- ONE_TIME_ADDRESS_DISABLED - Transferring to non-whitelisted addresses is disabled in your workspace.
- INTERNAL_ERROR - Internal error while processing the transaction
- UNKNOWN_ERROR - Unexpected error
- AUTHORIZER_NOT_FOUND - No authorizer found to approve the operation or the only authorizer found is the initiator
- INSUFFICIENT_RESERVED_FUNDING - Some assets require a minimum of reserved funds being kept on the account
- MANUAL_DEPOSIT_ADDRESS_REQUIRED - Error while retrieving a deposit address from an exchange. Please generate a deposit address for your exchange account
- INVALID_FEE - Transaction fee is not in the allowed range
- ERROR_UNSUPPORTED_TRANSACTION_TYPE - Attempt to execute an unsupported transaction Type
- UNSUPPORTED_OPERATION - Unsupported operation
- 3RD_PARTY_PROCESSING - The transaction is pending approval by the 3rd party service (e.g. exchange)
- PENDING_BLOCKCHAIN_CONFIRMATIONS - Pending Blockchain confirmations
- 3RD_PARTY_CONFIRMING - Pending confirmation on the exchange
- CONFIRMED - Confirmed on the blockchain
- 3RD_PARTY_COMPLETED - Completed on the 3rd party service (e.g. exchange)
- REJECTED_BY_USER - The transaction was rejected by one of the signers
- CANCELLED_BY_USER - The transaction was canceled via the Console or the API
- 3RD_PARTY_CANCELLED - Cancelled on the exchange
- 3RD_PARTY_REJECTED - Rejected or not approved in time by user
- REJECTED_AML_SCREENING - Rejected on AML Screening
- BLOCKED_BY_POLICY - Transaction is blocked due to a policy rule
- FAILED_AML_SCREENING - AML screening failed
- PARTIALLY_FAILED - Only for Aggregated transactions. One or more of the associated transaction records failed
- 3RD_PARTY_FAILED - Transaction failed at the exchange
- DROPPED_BY_BLOCKCHAIN - The transaction was replaced by another transaction with higher fee
- REJECTED_BY_BLOCKCHAIN - Transaction was rejected by the Blockchain due to too low fees, bad inputs or bad nonce
- INVALID_FEE_PARAMS - Fee parameters are inconsistent or unknown.
- MISSING_TAG_OR_MEMO - A tag or memo is required to send funds to a third party address, including all exchanges.
- SIGNING_ERROR - The transaction signing failed, resubmit the transaction to sign again.
- GAS_LIMIT_TOO_LOW - The transaction was rejected because the gas limit was set too low
- TOO_MANY_INPUTS - The transaction includes more inputs than the allowed limit (only for UTXO based blockchains)
- MAX_FEE_EXCEEDED - Gas price is currently above selected max fee
- ACTUAL_FEE_TOO_HIGH - Chosen fee is below current price
- INVALID_CONTRACT_CALL_DATA - Transaction data was not encoded properly
- INVALID_NONCE_TOO_LOW - Illegal nonce
- INVALID_NONCE_TOO_HIGH - Illegal nonce
- INVALID_NONCE_FOR_RBF - No matching nonce
- FAIL_ON_LOW_FEE - Current blockchain fee is higher than selected
- TOO_LONG_MEMPOOL_CHAIN - Too many unconfirmed transactions from this address
- TX_OUTDATED - Nonce already used
- INCOMPLETE_USER_SETUP - MPC setup was not completed
- SIGNER_NOT_FOUND - Signer not found
- INVALID_TAG_OR_MEMO - Invalid Tag or Memo
- ZERO_BALANCE_IN_PERMANENT_ADDRESS - Not enough BTC on legacy permanent address
- NEED_MORE_TO_CREATE_DESTINATION - Insufficient funds for creating destination account
- NON_EXISTING_ACCOUNT_NAME - Account does not exist
- ENV_UNSUPPORTED_ASSET - Asset is not supported under this workspace settings
NetworkStatus
- DROPPED - Transaction that were dropped by the blockchain (for example wasn't accepted due to low fee)
- BROADCASTING - Broadcasting to the blockchain
- CONFIRMING - Pending confirmations
- FAILED - The transaction has failed at the blockchain
- CONFIRMED - Confirmed on the blockchain
Changelog
18-08-2023
- Added deprecation notice for docs.fireblocks.com
27-03-2023
- Fix the success status code for
DELETE /v1/external_wallets/{walletId}
to 201
12-01-2023
- Added new
systemMessages
parameter toTransactionDetails
response to containSystemMessageInfo
objects that give more context to system based blocks or warnings.
22-12-2022
- Updated Generating a CSR, Signing a request, and JWT structure articles within the "Getting Started" section.
16-11-2022
- Removed Automated Transaction Flow Diagram from API Co-Signer Overview section.
2-11-2022
- Some typos around the
GET /internalWallets
endpoint call. - Added
XDB_Asset
to list ofAssetTypeResponse
type parameters. - Added a note about the
GET /users
endpoint: “Please note that this endpoint is available only for API keys with Admin permissions.”
13-10-2022
- New /payments payouts & cross-border (XB) settlement calls and objects have been added.
25-08-2022
GET /v1/transactions
: Updatedstatus
param description to clarify it only accepts a single statusGET /v1/network_connections/{connectionId}
: Updated JSON response to includenativeAsset
anddecimals
fields- Fixed SDK examples for following endpoints:
POST /v1/transactions/estimate_fee
POST /v1/transactions/{txId}/set_confirmation_threshold
- Added
txid
to body params for the following endpoints:POST /v1/transactions/{txId}/set_confirmation_threshold
:POST /v1/txHash/{txHash}/set_confirmation_threshold
- Added a new section on Balance Decimal Precision. Also added clarifications for the
balance
param within the following objects:- VaultAsset
- WalletAsset
- ExchangeAsset
- ExchangeType
- GasStationInfo
POST /v1/transactions
: RemovedfeePayerInfo
from body params
24-08-2022
DestinationTransferPeerPath
: RevisedoneTimeAddress
parameter to include that it is optionalGET /v1/transactions
sourceType: Added GAS_STATION, UNKNOWN, OEC_PARTNER to match swagger file- Fixed SDK examples for
/v1/gas_station
,/v1/transactions
and/v1/vault/accounts/{vaultAccountId}/set_auto_fuel
TransactionOperation
: Removed ENABLE_ASSET and alphabetized operationsGET /v1/vault/accounts/{vaultAccountId}/{assetId}/unspent_inputs
: Clarified response should return an array
05-07-2022
- Fixed
TradingAccountType
object parameters
05-05-2022
- Added
TRON_TRC20
toAssetTypeResponse
03-05-2022
- Added the
input
object to theUnspentInputsData
object - Updated the response of the
GET /v1/vault/accounts/{vaultAccountId}/{assetId}/unspent_inputs
endpoint
05-01-2022
- Added a new endpoint to refresh the balance of a specific asset in a Vault Account,
POST /v1/vault/accounts/{vaultAccountId}/{assetId}/balance
.
29-12-2021
- Added a new endpoint for resending missed webhooks per transaction,
POST /v1/webhooks/resend/{txId}
- Updated Co-Signer Callback data. Please note that for this update a new Co-Signer version must be installed.
17-11-2021
- Added
bip44AddressIndex
field in the response in the VaultAccountAssetAddress and CreateAddressResponse data objects.
22-10-2021
- Added
index
field in the response in the TransactionDetails data object. - Added
staked
,blockHeight
andblockHash
fields in the response in the VaultAsset data object. - Added a new endpoint to resend all previously failed pending webhook events,
POST /v1/webhooks/resend
.
17-10-2021
- Added
assetId
query parameter in theGET /v1/vault/accounts
request for retrieving the balance of the specific asset.
08-10-2021
- Added
forceSweep
parameter in the transaction request body for DOT transaction. When this flag is set to "true", Fireblocks will allow emptying the DOT wallet.
07-10-2021
- Added
authorizationInfo
parameter in the transaction request body and in the TransactionDetails data object. - Added
GET /v1/users
endpoint. This endpoint is accesible only for API key with Admin permissions. - Added
TRANSACTION_APPROVAL_STATUS_UPDATED
webhook notification event. Sent upon every approval based on the Transaction Authorization Policy.
6-10-2021 - Breaking Change!!
- Fixing the response of
GET /v1/estimate_network_fee
for DOGE. After the fix thefeePerByte
value will be in Satoshi and not DOGE.
06-09-2021
- Added
treatAsGrossAmount
parameter in the transaction request body and in the TransactionDetails data object. - Added BlockInfo object in the TransactionDetails data object response.
11-08-2021
- Added
externalTxId
parameter in the transaction request body and in the TransactionDetails data object. - Added a new endpoint
GET /v1/transactions/external_tx_id/{externalTxId}
to allow retrieving a transaction based on the provided external ID.
10-08-2021 - Breaking Change!!
- Fixing returned HTTP Error codes:
* All API responses can be found in the API Response section.
* Input validation failure of URL or body params will return404
or400
respectfully, instead of the current500
response.
* All510
HTTP Status Code responses currently returned by the Fireblocks API will be changed to400
. - Fixing the returned value of
type
field in thedestination
object of TransferPeerPathResponse from UNKNOWN to ONE_TIME_ADDRESS (both REST API and webhook).
11-07-2021
- Added
sourceAddress
for account based assets (ETH, BSC etc.) in the TransactionDetails data object. - Added several new transaction sub-statuses:
INVALID_FEE_PARAMS
,MISSING_TAG_OR_MEMO
,SIGNING_ERROR
,GAS_LIMIT_TOO_LOW
andTOO_MANY_INPUTS
in TransactionSubStatus.
31-05-2021
- Added support for Dogecoin. DOGE can be now passed as the
assetId
. - EOS - Moved to the PowerUp model instead of CPU and Network staking.
autoStaking
,cpuStaking
,networkStaking
in the body request of "Create new Transaction" will be ignored and PowerUp will be applied instead.totalStakedCPU
,totalStakedNetwork
,selfStakedCPU
,selfStakedNetwork
,pendingRefundCPU
,pendingRefundNetwork
in the VaultAccount will be 0.
18-05-2021
- Added new endpoint to retrieve unspent inputs,
GET /v1/vault/accounts/{vaultAccountId}/{assetId}/unspent_inputs
. - New optional paramater can be passed in
POST /v1/transactions
"extraParameters" to include or exclude specific inputs.
11-05-2021
- Added new query parameter, "minAmountThreshold", to only retrieve assets with balance above the requested threshold,
GET /v1/vault/accounts/