POST /api/v1/pairs

List active trading pairs with supported rate types.

POST/api/v1/pairsAuth optional

Every 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 /api/v1/price.

Body served from a 30-second server-side cache. The empty-body convention {} is honoured. No filter fields are accepted today.

Request

Body
(empty body)object
Send {}. Unsigned callers may omit auth headers. Signed callers HMAC the literal two bytes {}.

Response

200 OK
{
  "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"]
    }
  ]
}
Fields
data[].fromstring
Source asset id (see /api/v1/currencies).
data[].tostring
Destination asset id (see /api/v1/currencies).
data[].fromNetworkstring
Network of the source asset.
data[].toNetworkstring
Network of the destination asset.
data[].rateTypesarray<"FLOAT"|"FIXED">
Rate modes you can request on /api/v1/price. Most deployments expose FLOAT; an operator may additionally enable FIXED per installation — the actual set returned here is the source of truth.

Errors

codemsgHTTPDescription
11UPSTREAM_ERROR503A required upstream is temporarily unavailable. Retry with exponential backoff.

Code examples

# /api/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.

Partner API.
Same engine as 0trace.

A private partner integration surface. Signed quotes, server-side pricing, webhook delivery, multiple reference codes, and a self-serve cabinet — all backed by the production exchange engine.

Need help?

Questions? Answers.

A partner integration surface on top of the same exchange engine that powers 0trace.io. You connect with a signed REST contract, query quotes, open orders, and receive webhook notifications. Our liquidity, our pricing, our payouts. You focus on your product.
No. The API is private and invite-only, aligned with the privacy posture of 0trace itself. There is no KYC, no identity collection, and no source-of-funds reporting required of partners or their end users.
Submit a request through our partner application form at 0trace.io/api/contact-sales and we’ll reply within three business days.
Traffic is encrypted in transit (TLS). Every request is signed with HMAC-SHA256 over the exact request body bytes and gated by a nonce-based replay window. Pricing, fees, and payout amounts are computed server-side. Payouts run on an isolated service that re-verifies each transfer against the on-chain deposit before broadcasting.
A per-partner sliding-window weight budget, default 2500 wu/min (≈50 creates/minute). Endpoint weights: /api/v1/create is 50, /api/v1/qr is 5, every other endpoint is 1. XML feeds run on a separate public bucket. Exceeding the budget returns 429 with a Retry-After header. To raise your cap, send your projected per-endpoint call rate to your operator contact.
Two ways to earn. Revenue share: send us traffic with your referral link and earn a share of our service fee on every order — the visitor sees our live rate. Markup: integrate through the API and add your own margin on top of our rate, shown in your own interface. Use either, or both.
Yes. 0trace operates its own liquidity pool across every supported asset and network. Quotes are recomputed server-side at order creation against the live feed. Payouts are direct, with no third-party intermediary.
Bitcoin, Ethereum, BSC, Solana, Tron, Monero, and Arbitrum One — covering native coins plus the major stablecoins on each network (USDT, USDC, USDC.e).
Yes. We push signed events for order.status_changed and partner.paid_out; you subscribe to the ones you want in your cabinet.

Follow us on X for the latest updates.

Subscribe