API Documentation
Introduction
The ArkonSwap API is a JSON REST API for fetching live rates, creating cross-chain swaps, and earning integrator fees. It's designed for aggregators, wallets, and any service that wants to offer private, non-custodial swaps.
All responses follow a consistent envelope:
// success { "success": true, "data": { ... } } // error { "success": false, "error": { "code": "...", "message": "..." } }
Authentication
Most endpoints require an API key passed in the X-API-Key header. The /rates and /pairs endpoints are public and need no key. Get a key by registering (see below).
X-API-Key: ak_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Register a partner key
Self-register to receive an API key. The key is returned once — store it securely.
| Field | Type | Notes |
|---|---|---|
| partner_name required | string | Your service name |
| partner_url | string | Your website |
| fee_percent | number | 0–5, your integrator fee |
| fee_address | string | EVM payout address |
| fee_address_sol | string | Solana payout address |
| fee_address_btc | string | Bitcoin payout address |
curl -X POST https://arkonswap.io/api/v1/register \ -H "Content-Type: application/json" \ -d '{ "partner_name": "CoolAggregator", "fee_percent": 0.5, "fee_address": "0xYourEvmAddress" }'
Get rates
Returns all current exchange rates (all pairs against XMR), refreshed every minute.
curl https://arkonswap.io/api/v1/rates
{
"success": true,
"data": {
"rates": [
{ "from": "BTC", "to": "XMR", "rate": "191.43", "eta": "25 min" }
],
"updated_at": "2026-06-03 12:40:00",
"base": "XMR"
}
}
Get pairs
Returns all supported tokens with their chain, decimals and minimum swap value.
curl https://arkonswap.io/api/v1/pairs
Get a quote
| Field | Type | Notes |
|---|---|---|
| from required | string | Source token key (e.g. BTC) |
| to required | string | Destination token key (e.g. XMR) |
| amount required | number | Human amount to send |
curl -X POST https://arkonswap.io/api/v1/quote \ -H "X-API-Key: ak_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{ "from": "BTC", "to": "XMR", "amount": 0.01 }'
Create an order
| Field | Type | Notes |
|---|---|---|
| from required | string | Source token key |
| to required | string | Destination token key |
| amount required | number | Human amount to send |
| to_address required | string | Destination wallet address |
curl -X POST https://arkonswap.io/api/v1/order \ -H "X-API-Key: ak_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{ "from": "BTC", "to": "XMR", "amount": 0.01, "to_address": "4AdUndXHHZ..." }'
Returns a deposit_address and deposit_amount. Send exactly that amount to complete the swap.
Order status
The verify parameter (the order's destination address) is required to access order details — this prevents unauthorized enumeration of orders.
curl "https://arkonswap.io/api/v1/order/ABC123?verify=4AdUndXHHZ..." \ -H "X-API-Key: ak_live_xxxxx"
Possible statuses: awaiting_deposit, deposit_detected, deposit_confirmed, executing_swap, completed, expired, failed, refunding, refunded.
Integrator fees
Set fee_percent (0–5%) when registering, along with payout addresses. Your fee is automatically deducted from each swap routed through your key and sent to your configured address. Fees on EVM and XMR swaps go to fee_address, Solana to fee_address_sol, Bitcoin to fee_address_btc.
Rate limits
| Endpoint | Limit |
|---|---|
| /rates, /pairs | 120 / min / IP |
| /register | 5 / 10 min / IP |
| /quote, /order, /order/{id} | 60 / min / key |
Need higher limits? Reach out via Telegram.
Error codes
| HTTP | Code | Meaning |
|---|---|---|
| 400 | invalid_token / verify_required | Bad request parameters |
| 401 | unauthorized | Missing or invalid API key |
| 404 | not_found | Order not found / verify failed |
| 422 | fee_address_required | Fee set without payout address |
| 429 | — | Rate limit exceeded |
| 502 | quote_failed / order_failed | Upstream temporarily unavailable |
Ready to integrate? Register a key and start swapping. Questions? Ping us on Telegram.