Integrate Mistex
into your product

Build on top of our no-KYC exchange. Get access to 1200+ trading pairs, real-time rates, and instant order creation via a simple REST API.

Getting Started

The Mistex API allows partners to programmatically create exchanges, fetch real-time rates, and monitor order statuses. All endpoints return JSON.

Base URLhttps://mistex.io/api/v1
ProtocolHTTPS only
FormatJSON (Content-Type: application/json)
Rate limit60 requests/minute (default for public endpoints)

Public endpoints (/currencies, /rates) require no authentication. Partner endpoints (/partner/*) require HMAC-SHA256 signing.

Default rate limit is 60 requests/minute for unauthenticated requests. Partners with API keys receive higher limits. To increase your rate limit, please contact support.

Authentication

Partner endpoints use HMAC-SHA256 authentication. Every request must include two headers:

X-API-KeyYour partner API key
X-SignatureHMAC-SHA256(api_secret, request_body)
Content-Typeapplication/json

The signature is computed over the raw JSON request body using your API secret as the key. For GET requests with no body, sign an empty string.

python
import hmac
import hashlib
import json
import requests

API_KEY = "your_api_key"
API_SECRET = "your_api_secret"
BASE_URL = "https://mistex.io/api/v1"

body = json.dumps({
    "coin_from": "BTC",
    "network_from": "BTC",
    "coin_to": "XMR",
    "network_to": "XMR",
    "amount_from": 0.05,
    "rate_type": "float",
    "recipient_address": "48vKMSe5p..."
})

signature = hmac.new(
    API_SECRET.encode(),
    body.encode(),
    hashlib.sha256
).hexdigest()

response = requests.post(
    f"{BASE_URL}/partner/orders",
    headers={
        "X-API-Key": API_KEY,
        "X-Signature": signature,
        "Content-Type": "application/json"
    },
    data=body
)

print(response.json())
GET/api/v1/currencies

List Currencies

Returns all active currencies and their networks. Use this to populate your UI with available coins, show min/max amounts, and determine which networks are supported.

No parameters required. No authentication needed.

Response

json
[
  {
    "id": "a1b2c3d4-...",
    "coin": "BTC",
    "network": "BTC",
    "name": "Bitcoin",
    "is_active": true,
    "is_deposit_enabled": true,
    "is_withdraw_enabled": true,
    "min_amount": 0.0005,
    "max_amount": 100.0,
    "min_confirmations": 2,
    "decimals": 8,
    "is_memo": false,
    "explorer_tx_url": "https://blockchair.com/bitcoin/transaction/{txid}",
    "explorer_address_url": "https://blockchair.com/bitcoin/address/{address}",
  },
  {
    "id": "e5f6g7h8-...",
    "coin": "USDT",
    "network": "TRC20",
    "name": "Tether",
    "is_active": true,
    "is_deposit_enabled": true,
    "is_withdraw_enabled": true,
    "min_amount": 10.0,
    "max_amount": 500000.0,
    "min_confirmations": 20,
    "decimals": 6,
    "is_memo": false,
    "explorer_tx_url": "https://tronscan.org/#/transaction/{txid}",
    "explorer_address_url": "https://tronscan.org/#/address/{address}",
  }
]

cURL

bash
curl -X GET "https://mistex.io/api/v1/currencies"
GET/api/v1/rates

Get Exchange Rate

Fetch the current exchange rate for a trading pair. Supports both floating and fixed rate types.

Query Parameters

NameTypeRequiredDescription
coin_fromstringYesSource coin ticker (e.g. BTC)
coin_tostringYesDestination coin ticker (e.g. USDT)
network_fromstringNoSource network (e.g. BTC, ERC20, TRC20)
network_tostringNoDestination network
amountnumberNoAmount to exchange (uses min_amount if omitted)
rate_typestringNo"float" (default) or "fixed"

Example Request

http
GET /api/v1/rates?coin_from=BTC&coin_to=USDT&network_from=BTC&network_to=TRC20&amount=1

Response

json
{
  "coin_from": "BTC",
  "coin_to": "USDT",
  "rate_type": "float",
  "rate": 68518.82,
  "spread_pct": 0.5,
  "min_amount": 0.0013,
  "max_amount": 43.35,
  "expires_in": null
}

The min_amount and max_amountfields represent the exchange limits for this pair. There is no separate limits endpoint — use this response to validate user input before creating an order.

cURL

bash
curl -X GET "https://mistex.io/api/v1/rates?coin_from=BTC&coin_to=USDT&network_from=BTC&network_to=TRC20&amount=1"
POST/api/v1/partner/ordersAuth required

Create Order

Create a new exchange order. Returns a deposit address where the user should send funds. The order expires if no deposit is received within 30 minutes.

Request Body

NameTypeRequiredDescription
coin_fromstringYesSource coin ticker
network_fromstringYesSource network
coin_tostringYesDestination coin ticker
network_tostringYesDestination network
amount_fromnumberYesAmount to send (must be > 0)
rate_typestringYes"float" or "fixed"
recipient_addressstringYesWallet address to receive funds
recipient_address_tagstringNoMemo/tag for coins that require it (XRP, XLM, etc.)
refund_addressstringNoRefund address if exchange fails

Example Request

json
{
  "coin_from": "BTC",
  "network_from": "BTC",
  "coin_to": "XMR",
  "network_to": "XMR",
  "amount_from": 0.05,
  "rate_type": "float",
  "recipient_address": "48vKMSe5p...your_xmr_address",
  "refund_address": "bc1q...your_btc_address"
}

Response (201 Created)

json
{
  "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "short_id": "MX-8A3F2D",
  "status": "waiting_deposit",
  "created_at": "2026-04-07T12:34:56Z",
  "expires_at": "2026-04-07T13:04:56Z",
  "coin_from": "BTC",
  "network_from": "BTC",
  "coin_to": "XMR",
  "network_to": "XMR",
  "amount_from_expected": 0.05,
  "amount_to_expected": 5.431,
  "rate_type": "float",
  "rate_quoted": 108.62,
  "deposit_address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
  "deposit_address_tag": null,
  "recipient_address": "48vKMSe5p...your_xmr_address",
  "deposit_txid": null,
  "deposit_confirmations": null,
  "deposit_confirmations_required": 2,
  "payout_txid": null,
  "spread_pct": 0.5
}

cURL

bash
curl -X POST "https://mistex.io/api/v1/partner/orders" \
  -H "X-API-Key: your_api_key" \
  -H "X-Signature: <hmac_sha256_signature>" \
  -H "Content-Type: application/json" \
  -d '{
    "coin_from": "BTC",
    "network_from": "BTC",
    "coin_to": "XMR",
    "network_to": "XMR",
    "amount_from": 0.05,
    "rate_type": "float",
    "recipient_address": "48vKMSe5p...your_xmr_address",
    "refund_address": "bc1q...your_btc_address"
  }'
GET/api/v1/partner/orders/{order_id}Auth required

Get Order Status

Fetch the current status and details of an existing order. You can only query orders created by your partner account.

Path Parameters

NameTypeRequiredDescription
order_idUUIDYesThe order ID returned when creating the order

Response

json
{
  "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "short_id": "MX-8A3F2D",
  "status": "exchanging",
  "created_at": "2026-04-07T12:34:56Z",
  "expires_at": "2026-04-07T13:04:56Z",
  "coin_from": "BTC",
  "network_from": "BTC",
  "coin_to": "XMR",
  "network_to": "XMR",
  "amount_from_expected": 0.05,
  "amount_to_expected": 5.431,
  "rate_type": "float",
  "rate_quoted": 108.62,
  "deposit_address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
  "deposit_address_tag": null,
  "recipient_address": "48vKMSe5p...your_xmr_address",
  "deposit_txid": "a1b2c3d4e5f6...",
  "deposit_confirmations": 2,
  "deposit_confirmations_required": 2,
  "payout_txid": null,
  "spread_pct": 0.5
}

cURL

bash
curl -X GET "https://mistex.io/api/v1/partner/orders/f47ac10b-58cc-4372-a567-0e02b2c3d479" \
  -H "X-API-Key: your_api_key" \
  -H "X-Signature: <hmac_sha256_signature>"

Order Statuses

An order progresses through these statuses during its lifecycle:

StatusDescription
waiting_depositOrder created, waiting for user to send funds to the deposit address
confirmingDeposit transaction detected, waiting for blockchain confirmations
exchangingDeposit confirmed, exchange is in progress
sendingExchange complete, payout transaction is being sent
completedPayout sent successfully. The order is done
expiredNo deposit received within the time limit
refundingExchange failed, refund is being processed
refundedRefund sent to the refund address
failedOrder failed (contact support with order ID)
waiting_depositconfirmingexchangingsendingcompleted

Error Codes

All errors return a JSON body with a detail field describing the issue.

json
{
  "detail": "Invalid API key"
}
CodeMessageDescription
400Bad RequestMissing or invalid parameters. Check the response body for details
401UnauthorizedInvalid API key or HMAC signature
403ForbiddenPartner account is not active, or action not permitted
404Not FoundOrder not found or does not belong to your partner account
422Unprocessable EntityValidation error (e.g. amount below minimum)
429Too Many RequestsRate limit exceeded. Slow down requests
500Internal Server ErrorUnexpected error. Retry or contact support

Ready to integrate?

Sign up as a partner to receive your API key and start building.

Become a partner →