{
"type": "subscribe",
"channel": "account",
"id": "0xAbCd...1234"
}{
"type": "subscribed",
"channel": "accountTransferUpdates",
"id": "0xAbCd...1234",
"contents": {
"isSnapshot": true,
"accountTransferEvents": [
{
"type": "DEPOSIT",
"eventId": "dep-abc123",
"status": "APPLIED",
"amount": "100.00",
"netQuoteBalance": "1234.56",
"globalSequenceId": 9600000001,
"accountSequenceNum": 42
}
]
}
}{
"type": "channel_data",
"channel": "accountTransferUpdates",
"id": "0xAbCd...1234",
"contents": {
"isSnapshot": false,
"accountTransferEvents": [
{
"type": "WITHDRAWAL",
"eventId": "wdl-xyz789",
"status": "APPLIED",
"amount": "250.00",
"netQuoteBalance": "984.56",
"globalSequenceId": 9600000002,
"accountSequenceNum": 43
}
]
}
}Account transfer updates
Endpoint:
wss://api.arcus.xyz/v1/ws— one socket multiplexes every channel and RPC request. Click Connect, then send the example subscribe message below to start receiving data.
Account transfer events (deposits, withdrawals, transfers, referral claims) for an account. Snapshot on subscribe contains the most recent events newest-first (isSnapshot: true); each streaming update carries a single event (isSnapshot: false) as it is applied by the engine.
Amounts and balances are human-readable decimal strings in quote currency. globalSequenceId gives strict ordering across all engine events. The equivalent REST read is GET /v1/accountTransferUpdates.
Spot collateral deposits and withdrawals carry spotAssetId (spot asset id) and spotAssetDisplayName (display name); amount is then a size in that asset’s own units and the event does not change netQuoteBalance. Five engine-originated lending cash legs also stream here (quote currency, no spotAssetId): LENDING_DRAW, INTEREST_SETTLEMENT, SEIZURE_PAYMENT, CLAIM_REPAYMENT, and LOAN_SETTLEMENT_PAYMENT. None of these affect netDeposits.
Every event carries status: APPLIED, or REJECTED with the reason code in rejectReason (e.g. INSUFFICIENT_COLLATERAL). A rejected operation moved no funds, so its netQuoteBalance and accountSequenceNum are the pre-operation values. Rejections stream only to the account that initiated the operation, and appear in the snapshot like any other event.
{
"type": "subscribe",
"channel": "account",
"id": "0xAbCd...1234"
}{
"type": "subscribed",
"channel": "accountTransferUpdates",
"id": "0xAbCd...1234",
"contents": {
"isSnapshot": true,
"accountTransferEvents": [
{
"type": "DEPOSIT",
"eventId": "dep-abc123",
"status": "APPLIED",
"amount": "100.00",
"netQuoteBalance": "1234.56",
"globalSequenceId": 9600000001,
"accountSequenceNum": 42
}
]
}
}{
"type": "channel_data",
"channel": "accountTransferUpdates",
"id": "0xAbCd...1234",
"contents": {
"isSnapshot": false,
"accountTransferEvents": [
{
"type": "WITHDRAWAL",
"eventId": "wdl-xyz789",
"status": "APPLIED",
"amount": "250.00",
"netQuoteBalance": "984.56",
"globalSequenceId": 9600000002,
"accountSequenceNum": 43
}
]
}
}Recent account transfer events for the account, newest-first, sent once on subscribe (isSnapshot: true). accountTransferEvents is empty when the account has no recent events.
A single transfer event (isSnapshot: false, one entry in accountTransferEvents), emitted as each deposit / withdrawal / transfer is processed by the engine — applied or rejected.
Was this page helpful?