GET/v1/exchanges/{id}
The current state of one exchange. Same shape as the create response.
Request
GET /v1/exchanges/{id}. Needs x-api-key.
| Name | Required | Rule |
|---|---|---|
id | yes | Path. The id from create |
curl "$API/v1/exchanges/5d1f3c2e-8a1b-4c7d-9e0f-123456789abc" -H "x-api-key: $KEY"Response
The exchange object.
| Field | Meaning |
|---|---|
id | Exchange id |
status | One of the seven statuses |
from, to | Currency ids |
fromAmount | Amount to send |
toAmount | Amount that lands, net of fee; final at creation |
rate | toAmount per 1 fromAmount |
depositAddress | Send exactly fromAmount here, network fee on top; null until awaiting_deposit. For from=sn<N> it is a coldkey: send one transfer_stake on netuid N (origin and destination), not a transfer; see POST /v1/exchanges |
validUntil | Send-by deadline, unix seconds, usually about 5 minutes after awaiting_deposit; null until then |
fromAddress, toAddress | The addresses you gave |
fromTxHash | Your deposit transaction, once seen |
toTxHash | Our payout transaction; set on finished |
refundAsset, refundAddress | Set on refunded |
reason | Set only on failed; null on every other status |
createdAt, updatedAt | Unix seconds |
reference | Checkout account reference, or null |
{
"id": "5d1f3c2e-8a1b-4c7d-9e0f-123456789abc",
"status": "awaiting_deposit",
"from": "sol",
"to": "tao",
"fromAmount": "0.5",
"toAmount": "3.912",
"rate": "7.824",
"depositAddress": "7mv57M4Wkphb3Jm3kup53LiqmJHEFPFfBWucUyfyQFzi",
"validUntil": 1756900612,
"fromAddress": "9s4hVRU5nfPF9Er9Y5FexDjxNtvZSYmnVEujxHCX5Gsb",
"toAddress": "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty",
"fromTxHash": null,
"toTxHash": null,
"refundAsset": null,
"refundAddress": null,
"reason": null,
"createdAt": 1756900000,
"updatedAt": 1756900012,
"reference": null
}List
GET /v1/exchanges returns the last 100 exchanges for the account, newest first, with the same object shape. Pass updatedSince=<unix> to return every exchange updated at or after that inclusive cursor without the 100-row cap.
curl "$API/v1/exchanges" -H "x-api-key: $KEY"Errors
| HTTP | Code | Extra fields | When |
|---|---|---|---|
| 401 | unauthorized | — | Missing or invalid x-api-key |
| 403 | geo_blocked | — | Request from a blocked region |
| 404 | not_found | — | No exchange with this id on your account (one exchange only) |
| 429 | rate_limited | retryAfter | Over the limit; see Rate limits |
Notes
- Poll every 3 seconds and stop at
finished,refunded, orfailed. Normal order ispending→awaiting_deposit→confirming→exchanging→finished. pendingusually becomesawaiting_depositwithin a few seconds, at most about 30. If not, keep polling: it ends asawaiting_depositorfailed(pool_lostorreserve_rejected, credit refunded) within 15 minutes.- Send before
validUntil. - After a deposit,
confirmingandexchangingusually finish within a few minutes; the destination chain's confirmations set the pace. Never stop polling before a terminal status.
