P2P trading and all other Bitania services are temporarily disabled until further notice. Only swaps are available for now.
REST API Endpoint

List supported currencies

POST /swap/currencies

List all supported currencies for instant swaps. Each currency includes availability flags (recv, send), its precision, the confirmations we wait for and the default minimum. Cache the list and refresh it every few hours; a currency can be switched off temporarily (node maintenance), so trust this endpoint over any static table. GET is accepted as well (sign it with GET as the method and an empty body).

Authentication: HMAC-signed (v2) request — X-API-KEY, X-API-SIGN, X-API-TIMESTAMP, X-API-NONCE headers. See the Swap Aggregator Guide.

Response 200

Success

{
  code: integer, e.g. 0 — 0 = success, 1 = error
  msg: string, e.g. "" — Error message (empty on success)
  data: array — List of supported currencies
    {
      code: string, e.g. "USDTTRC" — Currency code used in API requests
      coin: string, e.g. "USDT" — Coin ticker
      network: string, e.g. "TRX" — Chain: BTC, LTC, XMR, TRX, ETH, SOL or AVAX
      name: string, e.g. "Tether" — Display name
      recv: boolean, e.g. true — Whether this currency can be received by Bitania (the user sends it)
      send: boolean, e.g. true — Whether this currency can be sent by Bitania (the user receives it)
      precision: integer, e.g. 6 — Decimal places used for amounts
      reqConfirmations: integer, e.g. 1 — Confirmations Bitania waits for before crediting a deposit
      min: number, e.g. 20 — Default minimum send amount (a pair can raise it; /swap/pairs has the effective value)
    }
}

Example (live figures, as configured right now):

{ "code": 0, "msg": "", "data": [
  { "code": "BTC", "coin": "BTC", "network": "BTC", "name": "Bitcoin", "recv": true, "send": true, "precision": 8, "reqConfirmations": 1, "min": 0.001 },
  { "code": "LTC", "coin": "LTC", "network": "LTC", "name": "Litecoin", "recv": true, "send": true, "precision": 8, "reqConfirmations": 2, "min": 0.1 },
  { "code": "XMR", "coin": "XMR", "network": "XMR", "name": "Monero", "recv": true, "send": true, "precision": 8, "reqConfirmations": 5, "min": 0.05 },
  { "code": "TRX", "coin": "TRX", "network": "TRX", "name": "Tron", "recv": true, "send": true, "precision": 6, "reqConfirmations": 20, "min": 100 },
  { "code": "ETH", "coin": "ETH", "network": "ETH", "name": "Ethereum", "recv": true, "send": true, "precision": 8, "reqConfirmations": 12, "min": 0.01 },
  { "code": "SOL", "coin": "SOL", "network": "SOL", "name": "Solana", "recv": true, "send": true, "precision": 8, "reqConfirmations": 1, "min": 0.5 },
  { "code": "AVAX", "coin": "AVAX", "network": "AVAX", "name": "Avalanche", "recv": true, "send": true, "precision": 8, "reqConfirmations": 30, "min": 1 },
  { "code": "USDTTRC", "coin": "USDT", "network": "TRX", "name": "Tether", "recv": true, "send": true, "precision": 6, "reqConfirmations": 20, "min": 20 },
  { "code": "USDTERC", "coin": "USDT", "network": "ETH", "name": "Tether", "recv": true, "send": true, "precision": 6, "reqConfirmations": 12, "min": 50 }
] }

Response 400

Validation or business error

{
  code: integer, e.g. 1 — Error code (1)
  msg: string, e.g. "Missing required fields: from, to, amount" — Error message
  data: null
}

Response 401

Authentication failed: unknown or disabled key, IP not whitelisted (Invalid credentials), or a bad signature, stale timestamp or reused nonce (Invalid signature)

{
  code: integer, e.g. 1
  msg: string, e.g. "Invalid credentials"
  data: null
}

Response 429

Rate limit of this endpoint exhausted; wait retry_after seconds (also sent as the Retry-After header)

{
  code: integer, e.g. 1
  msg: string, e.g. "Rate limit exceeded. Please retry after 12 seconds."
  data: null
  retry_after: integer, e.g. 12
}