POST /v1/pairs
List active trading pairs with supported rate types.
/api/v1/pairsAuth optionalEvery active trading pair the engine accepts right now. Pairs whose from or to asset has been deactivated are silently filtered out (same behaviour as the public SwapCard), so a pair listed here is always quotable on /v1/price.
Body served from a 30-second server-side cache. The empty-body convention {} is honoured. No filter fields are accepted today.
Request
(empty body)object{}. Unsigned callers may omit auth headers. Signed callers HMAC the literal two bytes {}.Response
{
"code": 0,
"msg": "",
"data": [
{
"from": "btc",
"to": "usdt_trc20",
"fromNetwork": "Bitcoin",
"toNetwork": "Tron",
"rateTypes": ["FLOAT"]
},
{
"from": "eth",
"to": "xmr",
"fromNetwork": "Ethereum",
"toNetwork": "Monero",
"rateTypes": ["FLOAT"]
}
]
}data[].fromstringdata[].tostringdata[].fromNetworkstringdata[].toNetworkstringdata[].rateTypesarray<"FLOAT"|"FIXED">FLOAT; an operator may additionally enable FIXED per installation — the actual set returned here is the source of truth.Errors
| code | msg | HTTP | Description |
|---|---|---|---|
| 11 | UPSTREAM_ERROR | 503 | A required upstream is temporarily unavailable. Retry with exponential backoff. |
Code examples
# /v1/pairs lists active trading pairs. Auth is optional.
APIKEY="rWqZ...Rg"
APISECRET="G1JV...n4"
NONCE=$(openssl rand -hex 16)
BODY='{}'
SIGN=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$APISECRET" | sed 's/^.* //')
curl -sS -X POST "https://0trace.io/api/v1/pairs" \
-H "Content-Type: application/json" \
-H "X-API-KEY: $APIKEY" \
-H "X-API-SIGN: $SIGN" \
-H "X-API-NONCE: $NONCE" \
--data "$BODY"Rate limit
Weight 1 per call. Unsigned calls bypass the per-partner bucket; signed calls are charged 1 weight unit each.
Notes
Response carries Cache-Control: no-store; the 30-second server-side cache is the only freshness contract. There is no streaming feed for pair toggles. Re-poll the catalog when you need a fresh view.