Get Transfer Status
Track the execution status of a transfer by quoteId.
GET /v1/statusReturns the current status of a transfer, identified by the quoteId returned from POST /v1/quote.
The response uses a normalized state that is the same across all backends, plus a backend-specific details object for additional context.
Request
| Query Parameter | Type | Required | Description |
|---|---|---|---|
quoteId | string | Yes | The identifier returned with a quote from POST /v1/quote. This is the anchor for every status lookup — it is issued by the API and identifies the specific quote and its backend. |
messageId | string | No | Source-transaction identifier for the transfer, treated as a single opaque value. On EVM-based routes this is the source transaction hash combined with the event index (e.g. 0xabc...-0); other chains follow their own native identifier format. Supply it together with quoteId once the source transaction is known. |
quoteId is always required. A messageId by itself cannot be resolved: it is not issued by the API, so on its own it cannot be tied to a specific quote — provide it only as a supplement to quoteId.
For most transfers, quoteId alone resolves status from quote time onward. Some backends identify the transfer only once the source transaction lands and cannot bind it to the quote on their own; for these, supply messageId after submitting so the API can track the correct on-chain execution. Until a source transaction is known, the status is reported as AWAITING_DEPOSIT.
curl 'https://rfq.axelar.network/v1/status?quoteId=quote_123'
curl 'https://rfq.axelar.network/v1/status?quoteId=quote_123&messageId=0xabc...-0'Response
{
"quoteId": "quote_123",
"state": "DONE",
"backend": {
"type": "intent",
"name": "Axelar Intents"
},
"source": {
"chain": "eip155:42161",
"txHash": "0xabc...",
"messageId": "0xabc...-0",
"timestamp": "2026-06-16T12:00:03Z"
},
"destination": {
"chain": "eip155:8453",
"txHash": "0xdef...",
"timestamp": "2026-06-16T12:00:48Z"
},
"output": {
"chain": "eip155:8453",
"token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "995000"
},
"refund": null,
"details": {}
}| Field | Type | Description |
|---|---|---|
quoteId | string | The quote this transfer was executed from, when known |
state | string | Normalized transfer state (see below) |
backend | object | The execution route serving the transfer (Backend) |
source | object | null | Source-chain execution: chain, txHash, messageId, timestamp. Null until the source transaction is observed. |
destination | object | null | Destination-chain delivery: chain, txHash, timestamp. Null until delivered. |
output | object | null | What the recipient actually received: chain, token, amount. Populated on DONE. |
refund | object | null | Populated on REFUNDED: chain, token, amount, txHash |
details | object | Backend-specific status context. Shape depends on backend.type; treat as informational. |
States
| State | Meaning |
|---|---|
AWAITING_DEPOSIT | The quote is known but no source-chain execution has been observed yet |
PENDING | The transfer has been submitted and is in flight |
DONE | The transfer completed and the recipient received the output |
REFUNDED | The transfer did not complete and funds were returned to the user on the source chain (refund populated) |
FAILED | The transfer reached a terminal failure |
NOT_FOUND | No transfer matches the supplied identifier |
NOT_FOUND is returned with HTTP 200: a well-formed lookup for an identifier the API does not (yet) recognize is not an error.
The response above shows a DONE transfer. The examples below show earlier states, where source, destination, and output are progressively filled in as the transfer advances.
AWAITING_DEPOSIT
The quote is known but no source-chain transaction has been observed yet.
{
"quoteId": "quote_123",
"state": "AWAITING_DEPOSIT",
"backend": {
"type": "intent",
"name": "Axelar Intents"
},
"source": null,
"destination": null,
"output": null,
"refund": null,
"details": {}
}PENDING
The source transaction has landed and the transfer is in flight; the destination has not been delivered yet.
{
"quoteId": "quote_123",
"state": "PENDING",
"backend": {
"type": "intent",
"name": "Axelar Intents"
},
"source": {
"chain": "eip155:42161",
"txHash": "0xabc...",
"messageId": "0xabc...-0",
"timestamp": "2026-06-16T12:00:03Z"
},
"destination": null,
"output": null,
"refund": null,
"details": {}
}Errors
| HTTP Status | Code | Meaning |
|---|---|---|
| 400 | INVALID_REQUEST | quoteId was not provided, or a parameter is malformed |
| 429 | RATE_LIMITED | Too many requests |
| 500 | INTERNAL_ERROR | Unexpected server error; safe to retry |