Getting Started
The Mistex API allows partners to programmatically create exchanges, fetch real-time rates, and monitor order statuses. All endpoints return JSON.
https://mistex.io/api/v1HTTPS onlyJSON (Content-Type: application/json)60 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:
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.
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())/api/v1/currenciesList 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
[
{
"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
curl -X GET "https://mistex.io/api/v1/currencies"/api/v1/ratesGet Exchange Rate
Fetch the current exchange rate for a trading pair. Supports both floating and fixed rate types.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
coin_from | string | Yes | Source coin ticker (e.g. BTC) |
coin_to | string | Yes | Destination coin ticker (e.g. USDT) |
network_from | string | No | Source network (e.g. BTC, ERC20, TRC20) |
network_to | string | No | Destination network |
amount | number | No | Amount to exchange (uses min_amount if omitted) |
rate_type | string | No | "float" (default) or "fixed" |
Example Request
GET /api/v1/rates?coin_from=BTC&coin_to=USDT&network_from=BTC&network_to=TRC20&amount=1Response
{
"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
curl -X GET "https://mistex.io/api/v1/rates?coin_from=BTC&coin_to=USDT&network_from=BTC&network_to=TRC20&amount=1"/api/v1/partner/ordersAuth requiredCreate 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
| Name | Type | Required | Description |
|---|---|---|---|
coin_from | string | Yes | Source coin ticker |
network_from | string | Yes | Source network |
coin_to | string | Yes | Destination coin ticker |
network_to | string | Yes | Destination network |
amount_from | number | Yes | Amount to send (must be > 0) |
rate_type | string | Yes | "float" or "fixed" |
recipient_address | string | Yes | Wallet address to receive funds |
recipient_address_tag | string | No | Memo/tag for coins that require it (XRP, XLM, etc.) |
refund_address | string | No | Refund address if exchange fails |
Example Request
{
"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)
{
"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
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"
}'/api/v1/partner/orders/{order_id}Auth requiredGet Order Status
Fetch the current status and details of an existing order. You can only query orders created by your partner account.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
order_id | UUID | Yes | The order ID returned when creating the order |
Response
{
"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
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:
| Status | Description |
|---|---|
waiting_deposit | Order created, waiting for user to send funds to the deposit address |
confirming | Deposit transaction detected, waiting for blockchain confirmations |
exchanging | Deposit confirmed, exchange is in progress |
sending | Exchange complete, payout transaction is being sent |
completed | Payout sent successfully. The order is done |
expired | No deposit received within the time limit |
refunding | Exchange failed, refund is being processed |
refunded | Refund sent to the refund address |
failed | Order failed (contact support with order ID) |
Error Codes
All errors return a JSON body with a detail field describing the issue.
{
"detail": "Invalid API key"
}| Code | Message | Description |
|---|---|---|
400 | Bad Request | Missing or invalid parameters. Check the response body for details |
401 | Unauthorized | Invalid API key or HMAC signature |
403 | Forbidden | Partner account is not active, or action not permitted |
404 | Not Found | Order not found or does not belong to your partner account |
422 | Unprocessable Entity | Validation error (e.g. amount below minimum) |
429 | Too Many Requests | Rate limit exceeded. Slow down requests |
500 | Internal Server Error | Unexpected error. Retry or contact support |
Ready to integrate?
Sign up as a partner to receive your API key and start building.
Become a partner →