Skip to main content
POST
/
api
/
v1
/
assets
Add asset
curl --request POST \
  --url https://api.paratro.com/api/v1/assets \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "account_id": "<string>",
  "chain": "<string>"
}
'
{
  "asset_id": "ast_r1s2t3u4v5",
  "account_id": "acc_m1n2o3p4q5",
  "wallet_id": "wal_a1b2c3d4e5f6",
  "client_id": "cli_x1y2z3",
  "chain": "ethereum",
  "network": "mainnet",
  "symbol": "USDT",
  "name": "Tether USD",
  "decimals": 6,
  "asset_type": "ERC20",
  "balance": "1000.50",
  "locked_balance": "0.00",
  "is_active": true,
  "created_at": "2026-01-15T10:40:00Z",
  "contract_address": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
}

Add Asset

Add a token (native or contract-based) to an account. Asset configuration — contract address, decimals, asset type — is resolved automatically by the system.
account_id
string
required
Target account ID (max 36 characters).
symbol
string
required
Token symbol: ETH, TRX, USDT, USDC, BNB, MATIC, BTC, SOL.
chain
string
Required for EVM accounts to specify which asset chain to use, for example ethereum, bsc, polygon, arbitrum, optimism, avalanche, or base. For non-EVM accounts, omit this field.

Response

{
  "asset_id": "ast_01HXYZ...",
  "account_id": "acc_01HXYZ...",
  "wallet_id": "w_01HXYZ...",
  "client_id": "c_01HXYZ...",
  "chain": "ethereum",
  "network": "mainnet",
  "symbol": "USDT",
  "name": "Tether USD",
  "contract_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
  "decimals": 6,
  "asset_type": "ERC20",
  "balance": "0",
  "locked_balance": "0",
  "is_active": true,
  "created_at": "2025-01-15T10:30:45+08:00"
}
FieldTypeDescription
asset_typestringNATIVE, ERC20, BEP20, TRC20
balancestringAvailable balance (decimal string)
locked_balancestringLocked balance (decimal string)
contract_addressstringToken contract address (0x for native assets)

Errors

HTTPCodeCondition
400invalid_parameterInvalid parameters or unsupported symbol
404not_foundAccount not found
400asset_already_existsAsset already added to this account
400account_not_activeAccount is not active

Authorizations

Authorization
string
header
required

JWT access token obtained from the /api/v1/auth/token endpoint.

Body

application/json
account_id
string
required

The account ID to add the asset to.

Maximum string length: 36
symbol
enum<string>
required

The token symbol.

Available options:
ETH,
TRX,
USDT,
USDC,
BNB,
MATIC,
BTC,
SOL
chain
string

Enabled chain name. Required for EVM accounts so the gateway can resolve the specific asset chain.

Response

Asset added successfully.

asset_id
string
required

Unique identifier for the asset.

Example:

"ast_r1s2t3u4v5"

account_id
string
required

The account ID this asset belongs to.

Example:

"acc_m1n2o3p4q5"

wallet_id
string
required

The wallet ID this asset belongs to.

Example:

"wal_a1b2c3d4e5f6"

client_id
string
required

The client ID that owns this asset.

Example:

"cli_x1y2z3"

chain
string
required

Asset chain returned by the gateway.

Example:

"ethereum"

network
string
required

Asset network returned by the gateway.

Example:

"mainnet"

symbol
string
required

The token symbol.

Example:

"USDT"

name
string
required

The full name of the token.

Example:

"Tether USD"

decimals
integer
required

The number of decimal places for the token.

Example:

6

asset_type
enum<string>
required

The type of the asset based on its token standard.

Available options:
NATIVE,
ERC20,
BEP20,
TRC20
Example:

"ERC20"

balance
string
required

The current available balance.

Example:

"1000.50"

locked_balance
string
required

The amount currently locked in pending transactions.

Example:

"0.00"

is_active
boolean
required

Whether the asset is currently active.

Example:

true

created_at
string<date-time>
required

Timestamp when the asset was added.

Example:

"2026-01-15T10:40:00Z"

contract_address
string | null

The smart contract address for the token. Null for native tokens.

Example:

"0xdAC17F958D2ee523a2206206994597C13D831ec7"