This docs site has been deprecated. Please visit developers.fireblocks.com
NAV Navbar
Python JavaScript

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:

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 results after this cursor.
after string [optional] cursor string, if specified then we give the next results before this cursor.
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 and name 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:

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.

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.

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.
{
   "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.
email 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.
email 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

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 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

TransactionSubStatus

NetworkStatus

Changelog

18-08-2023

27-03-2023

12-01-2023

22-12-2022

16-11-2022

2-11-2022

13-10-2022

25-08-2022

24-08-2022

05-07-2022

05-05-2022

03-05-2022

   

05-01-2022

   

29-12-2021

   

17-11-2021

   

22-10-2021

   

17-10-2021

   

08-10-2021

   

07-10-2021

   

6-10-2021 - Breaking Change!!

   

06-09-2021

   

11-08-2021

   

10-08-2021 - Breaking Change!!

   

11-07-2021

31-05-2021

18-05-2021

11-05-2021