These need no key.
HTTP
GET /chains
GET /chains/:chainId/assetsGET /chains:
JSON
{
"chains": [
{ "chain_id": "1", "name": "Ethereum Mainnet", "family": "evm", "is_testnet": false, "min_confirmations": 12, "explorer_url": "https://etherscan.io" },
{ "chain_id": "bitcoin-mainnet", "name": "Bitcoin Mainnet", "family": "bitcoin", "is_testnet": false, "min_confirmations": 2, "explorer_url": "https://mempool.space" }
],
"count": 2,
"mainnets": 2,
"testnets": 0
}GET /chains/1/assets:
JSON
{
"assets": [
{ "id": "uuid", "chain_id": "1", "type": "native", "contract_address": null, "symbol": "ETH", "name": "Ethereum", "decimals": 18, "enabled": true },
{ "id": "uuid", "chain_id": "1", "type": "erc20", "contract_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "symbol": "USDC", "name": "USD Coin", "decimals": 6, "enabled": true }
],
"count": 2
}The list is abridged here. Use contract_address as assetContract when you invoice a token, and send assetType: "erc20" for any token — on Tron the asset's type reads trc20, but the invoice API takes erc20 for every token.