Overview
Fireblocks offers native support for hundreds of EVM tokens across multiple blockchains. You can add your own tokens on other networks as long as we support the network.
Fireblocks provides an API to retrieve information about all supported assets, including their unique Fireblocks ID, symbol, contract address (if applicable), and more. This lets customers see a comprehensive list of supported assets and integrate them into their operations.
Listing assets supported on Fireblocks
Use the List assets endpoint to view detailed information about all assets supported by Fireblocks in your workspace.
Key Points
- Global vs. Local support: Some assets are supported globally across all Fireblocks workspaces, while others are supported locally for specific workspaces. The level of support depends on the token's popularity among Fireblocks customers.
- Comprehensive information: The API returns detailed information about each asset, including its unique Fireblocks ID, symbol, contract address, and other relevant details.
By using this endpoint, customers can ensure they have up-to-date information on all supported assets, enabling them to manage their portfolios and transactions more effectively.
Code example
import { readFileSync } from 'fs';
import { Fireblocks, BasePath } from '@fireblocks/ts-sdk';
import type { FireblocksResponse, BlockchainsAssetsApiListAssetsRequest, ListAssetsResponse } from '@fireblocks/ts-sdk';
// Set the environment variables for authentication
process.env.FIREBLOCKS_BASE_PATH = BasePath.Sandbox; // or assign directly to "https://sandbox-api.fireblocks.io/v1"
process.env.FIREBLOCKS_API_KEY = "my-api-key";
process.env.FIREBLOCKS_SECRET_KEY = readFileSync("./fireblocks_secret.key", "utf8");
const fireblocks = new Fireblocks();
let body: BlockchainsAssetsApiListAssetsRequest = {
// string | Blockchain id of the assets (optional)
blockchainId: "0f672204-a28b-464a-b318-a387abd3d3c7",
// AssetClass | Assets class (optional)
assetClass: param_value,
// string | Assets onchain symbol (optional)
symbol: "ETH",
// AssetScope | Scope of the assets (optional)
scope: param_value,
// boolean | Are assets deprecated (optional)
deprecated: false,
// Array<string> | A list of asset IDs (max 100) (optional)
ids: ["3ed32525-70df-45c8-bae3-e69ab56dc095","3a3b5f06-61e7-44f0-9962-4425b55795ff","SHANI5_B75VRLGX_MUPA"],
// string | Next page cursor to fetch (optional)
pageCursor: "MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==",
// number | Items per page (optional)
pageSize: 500,
// string | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. (optional)
idempotencyKey: idempotencyKey_example,
};
fireblocks.blockchainsAssets.listAssets(body).then((res: FireblocksResponse<ListAssetsResponse>) => {
console.log('API called successfully. Returned data: ' + JSON.stringify(res, null, 2));
}).catch((error:any) => console.error(error));
from fireblocks.models.asset_class import AssetClass
from fireblocks.models.asset_scope import AssetScope
from fireblocks.models.list_assets_response import ListAssetsResponse
from fireblocks.client import Fireblocks
from fireblocks.client_configuration import ClientConfiguration
from fireblocks.exceptions import ApiException
from fireblocks.base_path import BasePath
from pprint import pprint
# load the secret key content from a file
with open('your_secret_key_file_path', 'r') as file:
secret_key_value = file.read()
# build the configuration
configuration = ClientConfiguration(
api_key="your_api_key",
secret_key=secret_key_value,
base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1"
)
# Enter a context with an instance of the API client
with Fireblocks(configuration) as fireblocks:
blockchain_id = '0f672204-a28b-464a-b318-a387abd3d3c7' # str | Blockchain id of the assets (optional)
asset_class = fireblocks.AssetClass() # AssetClass | Assets class (optional)
symbol = 'ETH' # str | Assets onchain symbol (optional)
scope = fireblocks.AssetScope() # AssetScope | Scope of the assets (optional)
deprecated = false # bool | Are assets deprecated (optional)
ids = ['[\"3ed32525-70df-45c8-bae3-e69ab56dc095\",\"3a3b5f06-61e7-44f0-9962-4425b55795ff\",\"SHANI5_B75VRLGX_MUPA\"]'] # List[str] | A list of asset IDs (max 100) (optional)
page_cursor = 'MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==' # str | Next page cursor to fetch (optional)
page_size = 500 # float | Items per page (optional) (default to 500)
idempotency_key = 'idempotency_key_example' # str | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. (optional)
try:
# List assets
api_response = fireblocks.blockchains_assets.list_assets(blockchain_id=blockchain_id, asset_class=asset_class, symbol=symbol, scope=scope, deprecated=deprecated, ids=ids, page_cursor=page_cursor, page_size=page_size, idempotency_key=idempotency_key).result()
print("The response of BlockchainsAssetsApi->list_assets:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling BlockchainsAssetsApi->list_assets: %s\n" % e)
// Import classes:
import com.fireblocks.sdk.ApiClient;
import com.fireblocks.sdk.ApiException;
import com.fireblocks.sdk.ApiResponse;
import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
import com.fireblocks.sdk.api.BlockchainsAssetsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class Example {
public static void main(String[] args) {
ConfigurationOptions configurationOptions = new ConfigurationOptions()
.basePath(BasePath.Sandbox)
.apiKey("my-api-key")
.secretKey("my-secret-key");
Fireblocks fireblocks = new Fireblocks(configurationOptions);
String blockchainId = "0f672204-a28b-464a-b318-a387abd3d3c7"; // String | Blockchain id of the assets
AssetClass assetClass = AssetClass.fromValue("NATIVE"); // AssetClass | Assets class
String symbol = "ETH"; // String | Assets onchain symbol
AssetScope scope = AssetScope.fromValue("GLOBAL"); // AssetScope | Scope of the assets
Boolean deprecated = false; // Boolean | Are assets deprecated
List<String> ids = Arrays.asList(); // List<String> | A list of asset IDs (max 100)
String pageCursor = "MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA=="; // String | Next page cursor to fetch
BigDecimal pageSize = new BigDecimal("500"); // BigDecimal | Items per page
String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
try {
CompletableFuture<ApiResponse<ListAssetsResponse>> response = fireblocks.blockchainsAssets().listAssets(blockchainId, assetClass, symbol, scope, deprecated, ids, pageCursor, pageSize, idempotencyKey);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
System.err.println("Exception when calling BlockchainsAssetsApi#listAssets");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
e.printStackTrace();
} catch (ApiException e) {
System.err.println("Exception when calling BlockchainsAssetsApi#listAssets");
System.err.println("Status code: " + e.getCode());
System.err.println("Response headers: " + e.getResponseHeaders());
System.err.println("Reason: " + e.getResponseBody());
e.printStackTrace();
}
}
}
Response example
...
{
id: '6646e391-574f-4a3d-9039-ead75f16e5f3',
legacyId: 'BTC',
metadata: {
scope: 'GLOBAL',
verified: false,
deprecated: false,
media: [
{
url: 'https://static.fireblocks.io/storage-service/e6662901-d396-42e4-ac9e-1828fcc11e6e',
type: 'image/svg+xml'
},
{
url: 'https://static.fireblocks.io/storage-service/294d3f54-adb2-4edb-921e-56c3477deaa2',
type: 'image/png'
}
]
},
blockchainId: 'b7436683-8c79-4935-8cef-62991e90f7d0',
displayName: 'Bitcoin',
displaySymbol: 'BTC',
assetClass: 'NATIVE',
onchain: { symbol: 'BTC', name: 'Bitcoin', decimals: 8 }
},
{
id: '9f9f7062-df90-4fc0-8697-96685184358d',
legacyId: 'ETH',
metadata: {
scope: 'GLOBAL',
verified: false,
deprecated: false,
media: [
{
url: 'https://static.fireblocks.io/storage-service/9b9e3a53-bedd-43a3-a3fd-55dd258c743e',
type: 'image/svg+xml'
},
{
url: 'https://static.fireblocks.io/storage-service/5fe5912f-7231-4dd8-b1d5-8210987f981b',
type: 'image/png'
}
],
},
blockchainId: 'e85208ff-3b15-44e9-af14-0ed0280b2a15',
displayName: 'Ether',
displaySymbol: 'ETH',
assetClass: 'NATIVE',
onchain: { symbol: 'ETH', name: 'Ether', decimals: 18 }
},
{
id: 'be43bbfb-f2b2-46fa-9494-b00e7398f5d3',
legacyId: 'USDC_E_B6VRZV18_0E5F',
metadata: { scope: 'LOCAL', verified: false, deprecated: false },
blockchainId: 'f83681ce-709f-478d-a987-39ae102b8797',
displayName: 'Bridged USDC (Stargate)',
displaySymbol: 'USDC.e',
assetClass: 'FT',
onchain: {
symbol: 'USDC.e',
name: 'Bridged USDC (Stargate)',
address: '0x78adD880A697070c1e765Ac44D65323a0DcCE913',
decimals: 6,
standards: [ 'ERC20' ]
}
{
id: '01c50d6e-454e-464d-b3dd-0407a629d8f5',
legacyId: 'SOL_USDC_JKVK',
metadata: { scope: 'LOCAL', verified: false, deprecated: false },
blockchainId: 'b257a37a-6cfc-4ae6-80bf-1578229467bd',
displayName: 'USD Coin',
displaySymbol: 'USDC',
assetClass: 'FT',
onchain: {
symbol: 'USDC',
name: 'USD Coin',
address: '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU',
decimals: 6,
standards: [ 'SPL' ]
}
...