---
url: /en/reference/catalog.md
---
# Catalog

Catalog: supported chains and assets, address validation

## Validate address

```http
POST /v1/addresses/validate
```

API key scope: `read`

Validate address: whether the format is valid and whether it is an in-platform address (withdrawals to in-platform addresses are internal transfers, not on-chain)

**Request body**

| Field | Type | Description |
|---|---|---|
| `address` | string | Address |
| `chain_code` | string | Chain code |

Request example:

```json
{
  "address": "TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf",
  "chain_code": "TRON"
}
```

**Response** (200, `AddressValidation`)

| Field | Type | Description |
|---|---|---|
| `internal` | boolean | Whether it is a user deposit address on this platform; if so, withdrawals to it are internal transfers (instant, not on-chain, no fee) |
| `normalized_address` | string | Normalized address (lowercase for EVM); empty when invalid |
| `valid` | boolean | Whether the format is valid |

Response example:

```json
{
  "internal": false,
  "normalized_address": "TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf",
  "valid": false
}
```

On failure the unified error body is returned; see [Errors](/en/guide/errors).

## Supported assets

```http
GET /v1/assets
```

API key scope: `read`

Supported assets: chain × token (decimals, contract, minimum deposit / withdrawal, fee); filterable by chain

**Parameters**

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `chain_code` | query | string | no | Chain code: optional; omit to return assets on all enabled chains |

**Response** (200, `AssetList`)

| Field | Type | Description |
|---|---|---|
| `assets` | object (Asset)\[] |  |
| `assets[].chain_code` | string |  |
| `assets[].contract_address` | string | Contract address; empty for native coins |
| `assets[].decimals` | integer |  |
| `assets[].deposit_enabled` | boolean |  |
| `assets[].explorer_url_template` | string | Block explorer transaction URL template; replace {txHash} with the transaction hash |
| `assets[].min_deposit_amount` | string | Amounts below are decimal strings in the main unit |
| `assets[].min_withdraw_amount` | string |  |
| `assets[].token_code` | string | Token code, e.g. USDT |
| `assets[].token_name` | string |  |
| `assets[].withdraw_enabled` | boolean |  |
| `assets[].withdraw_fee` | string |  |

Response example:

```json
{
  "assets": [
    {
      "chain_code": "TRON",
      "contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
      "decimals": 6,
      "deposit_enabled": false,
      "explorer_url_template": "https://tronscan.org/#/transaction/{txHash}",
      "min_deposit_amount": "1",
      "min_withdraw_amount": "10",
      "token_code": "USDT",
      "token_name": "Tether USD",
      "withdraw_enabled": false,
      "withdraw_fee": "1"
    }
  ]
}
```

On failure the unified error body is returned; see [Errors](/en/guide/errors).

## Supported chains

```http
GET /v1/chains
```

API key scope: `read`

Supported chains: only enabled chains are returned

**Response** (200, `ChainList`)

| Field | Type | Description |
|---|---|---|
| `chains` | object (Chain)\[] |  |
| `chains[].code` | string | Chain code: TRON / ETH / BSC |
| `chains[].evm_chain_id` | string | EVM chainId (e.g. "1", "56"); empty for TRON |
| `chains[].name` | string |  |

Response example:

```json
{
  "chains": [
    {
      "code": "TRON",
      "evm_chain_id": "",
      "name": "TRON"
    }
  ]
}
```

On failure the unified error body is returned; see [Errors](/en/guide/errors).
