GET /transfers/{id}
Read a committed ordinary transfer
Read a committed ordinary transfer.
operationId: fetchOrdinaryTransfer
Declared server:
https://api.testnet.nexus.xyz/v1. See Networks.
Not reachable through CCXT. Ordinary cross-owner payments use a recoverable owner signature and enrollment. CCXT transfer moves funds between balances of the same owner; no CCXT custody/signing adapter is shipped for this operation.
Authentication: ownerSignature.
The sender and recipient can read the same immutable receipt. An unrelated valid signer receives 404, as does an unknown id. Use an empty GET body.
Owner consent is an EIP-712 typed-data signature by the account's own key: recoverable secp256k1 in X-Signature (65-byte hex r || s || v; low-S, v 0/1 or 27/28). Domain {name: "Nexus Exchange", version: "1", chainId: 20056}, no verifyingContract, the same domain POST /withdrawals signs under. Each operation signs its own struct, named below; X-Timestamp is its timestampMs and must be within 30 seconds of server time, and on the two writes X-Nonce is its nonce. Every string field is signed exactly as sent. Both root and /api/v1 paths sign the same struct. The deployment domain is a struct field, sent in the body for POST and in the query for GET. HMAC/API-key, bearer-only and agent authority cannot authorize these operations. The server sets Cache-Control: no-store. Signed struct: OrdinaryTransferReceipt(address account,string domain,uint64 transferId,uint64 timestampMs), with transferId from the path. A receipt read carries no after, limit or client_transfer_id.
Reduced shape when Accounts serves this read (ENG-18394). A deployment answers this operation either from the Engine, which states every field below, or from Accounts' durable transfer projection, which records balance movements and not the Engine's receipt. From the projection: source or destination is null for a side not yet recorded (a half-recorded transfer; status is still committed), client_transfer_id and domain are always null, committed_at_ms is an approximation of the commit time, amount is the absolute value, and balance on the history is null. A transfer whose id is not yet known as a plain number is not listed and cannot be read by id. A transfer that has just committed can be absent until it is recorded, so a 404 for an id you were just given may be transient. Ids and the cursor are unchanged: history is ascending by numeric transfer id, after is exclusive, and next_cursor is the last returned id.
Recoverable secp256k1 owner signature over an EIP-712 typed-data struct, one per operation. This is not an HMAC API key or an agent signature. See each ordinary transfer operation for its struct.
Owner account signing this read.
^(0x)?[0-9a-fA-F]{40}$Deployment domain, included in the signature.
^[A-Za-z0-9_-]+$Unix milliseconds, the timestampMs field of the signed struct; within 30 seconds of server time.
^[0-9]+$Committed result or authoritative read.
^[1-9][0-9]*$null when this side of the transfer is not recorded yet. null only on reads served from Accounts' projection; the Engine and the POST response always state it.
^(0x)?[0-9a-fA-F]{40}$null when this side of the transfer is not recorded yet. null only on reads served from Accounts' projection; the Engine and the POST response always state it.
^(0x)?[0-9a-fA-F]{40}$^[0-9]+\.[0-9]{6}$The projection holds no client transfer ids. null only on reads served from Accounts' projection; the Engine and the POST response always state it.
^[A-Za-z0-9_-]+$The projection does not record the deployment domain. null only on reads served from Accounts' projection; the Engine and the POST response always state it.
^[A-Za-z0-9_-]+$Unix milliseconds. On reads served from Accounts' projection this is an approximation of the commit time.
INVALID_TRANSFER_REQUEST for invalid intent/domain/precision; TRANSFER_RISK_REJECTED for insufficient cash, open exposure, liquidation or system-loss constraints.
TRANSFER_SIGNATURE_REQUIRED: missing, forged, stale, agent or replayed POST owner proof. No additional payment was created.
TRANSFER_ACCOUNT_INELIGIBLE or TRANSFER_OUTFLOW_BLOCKED: ordinary enrollment or live source controls do not permit this request.
TRANSFER_NOT_FOUND: id is absent or not visible to the signed account.
TRANSFER_READ_UNAVAILABLE: retry the signed read; no payment was submitted by this read.
TRANSFERS_UNAVAILABLE: disabled/unconfigured service, unavailable durable writer, invalid/expired control permit, pending committed fills or receipt capacity reached. No successful outcome is implied.
GET /v1/transfers/{id}?account=text&domain=text HTTP/1.1
Host: api.testnet.nexus.xyz
X-Signature: YOUR_API_KEY
X-Timestamp: text
Accept: */*
{
"transfer_id": "text",
"status": "committed",
"asset": "USDX",
"source": null,
"destination": null,
"amount": "text",
"client_transfer_id": null,
"domain": null,
"committed_at_ms": 1
}API version 0.9.131
Last updated

