setup
Setup — Authentication & Configuration
Get API Keys
Register at portal.trustwallet.com to obtain:
- Access ID — identifies your application
- HMAC Secret — used to sign requests
Base URLs
| Base URL | Auth | Used By |
|---|---|---|
https://tws.trustwallet.com |
HMAC-SHA256 | Token prices, security, swap quotes, on/off-ramp, market listings, assets |
Rate Limits
The free tier is limited to 1 request per second across all authenticated endpoints. Exceeding this returns 429 Too Many Requests. Space sequential API calls at least 1 second apart.
HMAC-SHA256 Signing
Every request to the tws.trustwallet.com base URL must include four headers computed from the request.
Required Headers
| Header | Value |
|---|---|
X-TW-CREDENTIAL |
Your Access ID |
X-TW-NONCE |
Random UUID (v4), unique per request |
X-TW-DATE |
Current UTC date in RFC 2822 format (e.g., Thu, 27 Feb 2026 12:00:00 GMT) |
Authorization |
HMAC-SHA256 Signature={base64_signature} |
Content-Type |
application/json |
Signature Algorithm
- Build the plaintext by joining these 6 fields with semicolons (
;):
METHOD;PATH;SORTED_QUERY;ACCESS_ID;NONCE;DATE
| Field | Description | Example |
|---|---|---|
METHOD |
HTTP method, uppercase | GET, POST |
PATH |
URL path without host or query string | /v1/balance |
SORTED_QUERY |
Query parameters sorted alphabetically by key, joined with &. Empty string if no query params. Raw values (not URL-encoded). |
address=0xabc&coin=60 |
ACCESS_ID |
Your Access ID | 870dfxaa... |
NONCE |
Same UUID from X-TW-NONCE header |
a1b2c3d4-e5f6-... |
DATE |
Same date from X-TW-DATE header |
Thu, 27 Feb 2026 12:00:00 GMT |
-
Compute the HMAC-SHA256 of the plaintext using your HMAC Secret as the key.
-
Base64-encode the result.
-
Set the
Authorizationheader toHMAC-SHA256 Signature={base64_result}.
Pseudocode
nonce = random_uuid_v4()
date = utc_date_rfc2822()
// Sort query params alphabetically by key
sorted_query = sort_by_key(query_params).map(k + "=" + v).join("&")
plaintext = METHOD + ";" + path + ";" + sorted_query + ";" + access_id + ";" + nonce + ";" + date
signature = base64(hmac_sha256(hmac_secret, plaintext))
headers = {
"X-TW-CREDENTIAL": access_id,
"X-TW-NONCE": nonce,
"X-TW-DATE": date,
"Authorization": "HMAC-SHA256 Signature=" + signature,
"Content-Type": "application/json"
}
Example (JavaScript / Node.js)
import { createHmac, randomUUID } from 'node:crypto';
function signRequest(method, path, query, accessId, hmacSecret) {
const date = new Date().toUTCString();
const nonce = randomUUID();
// Sort query params by key (raw values, not URL-encoded)
const sortedQuery = query
? [...new URLSearchParams(query).entries()]
.sort((a, b) => a[0].localeCompare(b[0]))
.map(([k, v]) => `${k}=${v}`)
.join('&')
: '';
const plaintext = [method.toUpperCase(), path, sortedQuery, accessId, nonce, date].join(';');
const signature = createHmac('sha256', hmacSecret).update(plaintext).digest('base64');
return {
'X-TW-CREDENTIAL': accessId,
'X-TW-NONCE': nonce,
'X-TW-DATE': date,
'Authorization': `HMAC-SHA256 Signature=${signature}`,
'Content-Type': 'application/json',
};
}
Example (Python)
import hmac, hashlib, base64, uuid
from datetime import datetime, timezone
from urllib.parse import parse_qs
def sign_request(method, path, query, access_id, hmac_secret):
date = datetime.now(timezone.utc).strftime('%a, %d %b %Y %H:%M:%S GMT')
nonce = str(uuid.uuid4())
# Sort query params by key
if query:
params = parse_qs(query, keep_blank_values=True)
sorted_query = '&'.join(
f'{k}={v[0]}' for k, v in sorted(params.items())
)
else:
sorted_query = ''
plaintext = ';'.join([method.upper(), path, sorted_query, access_id, nonce, date])
signature = base64.b64encode(
hmac.new(hmac_secret.encode(), plaintext.encode(), hashlib.sha256).digest()
).decode()
return {
'X-TW-CREDENTIAL': access_id,
'X-TW-NONCE': nonce,
'X-TW-DATE': date,
'Authorization': f'HMAC-SHA256 Signature={signature}',
'Content-Type': 'application/json',
}
Asset ID Format
Trust Wallet uses a compact asset ID across all APIs:
- Native coin:
c{coinId}— e.g.,c60(ETH),c714(BNB),c501(SOL) - Token:
c{coinId}_t{contractAddress}— e.g.,c60_t0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48(USDC on Ethereum)
The coinId follows the SLIP-44 standard.
Supported Chains
Trust Wallet supports 100+ chains. Below is the complete list grouped by type.
EVM Chains
| Chain | Coin ID | Symbol | Chain ID |
|---|---|---|---|
| Ethereum | 60 | ETH | 1 |
| BNB Smart Chain (BSC) | 714 | BNB | 56 |
| Polygon | 966 | MATIC | 137 |
| Avalanche C-Chain | 10009000 | AVAX | 43114 |
| Arbitrum | 10042221 | ETH | 42161 |
| Optimism | 10000070 | ETH | 10 |
| Base | 10008453 | ETH | 8453 |
| Fantom | 10000250 | FTM | 250 |
| Sonic | — | S | — |
| Linea | — | ETH | 59144 |
| zkSync Era | — | ETH | 324 |
| Scroll | — | ETH | 534352 |
| Blast | — | ETH | 81457 |
| Manta Pacific | — | ETH | 169 |
| Mantle | — | MNT | 5000 |
| Polygon zkEVM | — | ETH | 1101 |
| Cronos | — | CRO | 25 |
| Gnosis (xDai) | — | xDAI | 100 |
| Celo | — | CELO | 42220 |
| Aurora | — | ETH | 1313161554 |
| Moonbeam | — | GLMR | 1284 |
| Moonriver | — | MOVR | 1285 |
| Boba | — | ETH | 288 |
| Metis | — | METIS | 1088 |
| KuCoin Community Chain | — | KCS | 321 |
| Klaytn (Kaia) | — | KLAY | 8217 |
| IoTeX (EVM) | — | IOTX | 4689 |
| Ronin | — | RON | 2020 |
| Viction | — | VIC | 88 |
| Neon | — | NEON | 245022934 |
| opBNB | — | BNB | 204 |
| Merlin | — | BTC | 4200 |
| Acala (EVM) | — | ACA | 787 |
| Conflux eSpace | — | CFX | 1030 |
| Kava (EVM) | — | KAVA | 2222 |
| ZetaChain (EVM) | — | ZETA | 7000 |
| BounceBit | — | BB | — |
| zkLink Nova | — | ETH | — |
| Ethereum Classic | — | ETC | 61 |
| ThunderCore | — | TT | 108 |
| Wanchain | — | WAN | 888 |
| GoChain | — | GO | 60 |
| Callisto | — | CLO | 820 |
| Harmony | — | ONE | — |
| Evmos (EVM) | — | EVMOS | 9001 |
| Monad | — | MON | — |
| MegaETH | — | ETH | — |
| Plasma | — | — | — |
Solana
| Chain | Coin ID | Symbol |
|---|---|---|
| Solana | 501 | SOL |
Bitcoin & UTXO Chains
| Chain | Coin ID | Symbol |
|---|---|---|
| Bitcoin | 0 | BTC |
| Litecoin | 2 | LTC |
| Dogecoin | 3 | DOGE |
| Bitcoin Cash | 145 | BCH |
| Zcash | 133 | ZEC |
| Dash | 5 | DASH |
| Ravencoin | 175 | RVN |
| DigiByte | 20 | DGB |
| Decred | 42 | DCR |
| Qtum | 2301 | QTUM |
| Groestlcoin | 17 | GRS |
| Viacoin | 14 | VIA |
| Firo | 136 | FIRO |
| Flux (Zelcash) | 19167 | FLUX |
Cosmos Ecosystem
| Chain | Coin ID | Symbol |
|---|---|---|
| Cosmos Hub | 118 | ATOM |
| Osmosis | 10000118 | OSMO |
| THORChain | 931 | RUNE |
| Kava | 459 | KAVA |
| Terra | 330 | LUNA |
| Injective | — | INJ |
| Sei | — | SEI |
| Stride | — | STRD |
| Axelar | — | AXL |
| Neutron | — | NTRN |
| Akash | — | AKT |
| Agoric | — | BLD |
| Juno | — | JUNO |
| Stargaze | — | STARS |
| Crypto.org | — | CRO |
| Evmos (Cosmos) | — | EVMOS |
| Greenfield | — | BNB |
| ZetaChain (Cosmos) | — | ZETA |
Other L1 Chains
| Chain | Coin ID | Symbol |
|---|---|---|
| Tron | 195 | TRX |
| Aptos | 637 | APT |
| TON | 607 | TON |
| Sui | 784 | SUI |
| NEAR | 397 | NEAR |
| Solana | 501 | SOL |
| Polkadot | 354 | DOT |
| Kusama | 434 | KSM |
| Cardano | 1815 | ADA |
| XRP Ledger | 144 | XRP |
| Stellar | 148 | XLM |
| Algorand | 283 | ALGO |
| Tezos | 1729 | XTZ |
| Internet Computer | 223 | ICP |
| MultiversX | 508 | EGLD |
| VeChain | 818 | VET |
| Filecoin | 461 | FIL |
| Zilliqa | 313 | ZIL |
| ICON | 74 | ICX |
| Waves | 5741564 | WAVES |
| Nano | 165 | XNO |
| Ontology | 1024 | ONT |
| Theta | 500 | THETA |
| Nebulas | 2718 | NAS |
| Aion | 425 | AION |
| Aeternity | 457 | AE |
| IoTeX | 304 | IOTX |
| FIO | 235 | FIO |
| Nimiq | 242 | NIM |
Chain Key vs Chain ID
When using domain-based endpoints (e.g., swap), use the chain key (the identifier used in API routing), not the internal chain ID. For most chains they are the same, but notably:
| Chain Key (use this) | Internal Chain ID |
|---|---|
bsc |
smartchain |
ethereum |
ethereum |
polygon |
polygon |
solana |
solana |
More from trustwallet/tw-agent-skills
trust-wallet-api
Trust Wallet API for crypto data — token search, prices, trending tokens, swap quotes, market data, security checks, address validation, asset info, and coin status across 100+ blockchains. Use whenever the user asks about crypto prices, token info, swap rates, market cap, trending coins, token risk, honeypot detection, address validation, or wants to call the Trust Wallet / tws.trustwallet.com API directly. Covers HMAC-SHA256 authentication, supported chains, and all REST endpoints.
83trust-wallet-cli
Trust Wallet CLI (`twak`) — install, create wallets, check balances, send tokens, swap, view history, set price alerts, DCA automations, limit orders, manage ERC-20 approvals, check token risk, browse trending/DApps, and run x402 micropayments. Use whenever the user wants to use the twak CLI, manage a crypto wallet from the terminal, send or swap tokens via command line, check portfolio, create price alerts, set up DCA, create limit orders, approve ERC-20 spenders, or interact with Trust Wallet from a shell. Also covers MCP server setup for AI agents.
82trust-wallet-sdk
Trust Wallet open-source libraries — Wallet Core (HD wallets, address derivation, tx signing in Swift/Kotlin/TypeScript/Go for 140+ chains), Web3 Provider (dApp connection for Ethereum/Solana/Cosmos/Bitcoin/Aptos/TON/Tron), deep linking, browser extension integration, WalletConnect, token assets repository, and Barz ERC-4337 smart wallet. Use when working with trustwallet/wallet-core, @trustwallet/wallet-core, trust-web3-provider, Trust Wallet deep links, token logos/metadata from trustwallet/assets, or Barz account abstraction.
68your-skill-name
One sentence — what this skill does and when Claude should use it.
59assets
Work with the Trust Wallet assets repository — look up token logos and metadata, list assets by blockchain, and contribute new assets (add logo, info.json, update tokenlist). Use when the user asks about token logos, asset listings, adding a token to Trust Wallet, or querying trustwallet/assets.
11wallet-core
Build with Trust Wallet Core — HD wallet creation, address derivation, and transaction signing across 140+ blockchains. Use when working with trustwallet/wallet-core, @trustwallet/wallet-core, or implementing key generation and signing in Swift, Kotlin, TypeScript, or Go.
11