WebSocket API

Notification Channel

Authenticated deposit, withdrawal, transfer, and subaccount notification stream

Channel name: notification

Authentication

You must send a successful auth message before subscribing.

{ "op": "sub", "channel": "notification" }

No params field is required. The stream is account-scoped; you receive notifications for your account and its subaccounts.

Message Types

This channel emits update messages only; there is no snapshot.

{
  "channel": "notification",
  "type": "update",
  "data": {
    "notification_type": "deposit.confirmed",
    "timestamp": 1234567890,
    "payload": {
      "asset": "USDC",
      "amount": "1000.00",
      "tx_hash": "0xabcd...",
      "block_time": 1234567890
    }
  },
  "gsn": 12345,
  "ts": "1234567890000000000"
}

deposit.received notifications are unsequenced (sent before the deposit is confirmed on-chain) and carry gsn: 0.

Notification Types

notification_typePayloadDescription
deposit.receivedDepositPayloadDeposit detected, pending confirmation
deposit.confirmedDepositPayloadDeposit confirmed on-chain
withdrawal.completedWithdrawalPayloadWithdrawal settled on-chain
withdrawal.failedWithdrawalPayloadWithdrawal failed
subaccount.createdSubaccountPayloadSubaccount created
subaccount.frozenSubaccountPayloadSubaccount frozen
subaccount.unfrozenSubaccountPayloadSubaccount unfrozen
subaccount.deletedSubaccountPayloadSubaccount deleted
transfer.sentTransferPayloadTransfer submitted, pending on-chain settlement
transfer.receivedTransferPayloadTransfer submitted, pending on-chain settlement
transfer.completedTransferPayloadTransfer settled on-chain
transfer.failedTransferPayloadTransfer failed on-chain

Transfer notifications fire on internal fund transfers between accounts under the same main account (e.g. main-to-sub, sub-to-sub). transfer.sent and transfer.received fire immediately when the transfer is accepted (sender's balance is reserved). transfer.completed or transfer.failed fires once the on-chain transaction settles - both sender and receiver receive this notification.

{
  "channel": "notification",
  "type": "update",
  "data": {
    "notification_type": "transfer.sent",
    "timestamp": 1700000000,
    "payload": {
      "from": "0x1234...sender",
      "to": "0x5678...receiver",
      "asset": "USDC",
      "amount": "500.00"
    }
  },
  "gsn": 6000,
  "ts": "1700000000000000000"
}

Fields

Envelope

FieldTypeDescription
channelstringChannel name ("notification")
typestringMessage type ("update")
dataobjectNotification data payload (see below)
gsnnumberGlobal sequence number (0 for deposit.received)
tsstringEvent timestamp in nanoseconds

Data Payload

FieldTypeDescription
notification_typestringOne of the notification types above
timestampnumberEvent time in Unix seconds. Optional — omitted for deposit.received; fall back to the envelope ts (nanoseconds) in that case.
payloadobjectType-specific payload (see below)

DepositPayload / WithdrawalPayload

FieldTypeDescription
assetstringAsset symbol (e.g. "USDC")
amountstringAmount
tx_hashstringOn-chain transaction hash
noncenumberWithdrawal nonce (WithdrawalPayload only)
block_timenumberBlock timestamp in Unix seconds

SubaccountPayload

FieldTypeDescription
main_addressstringMain account address
subaccount_addressstringSubaccount address
tx_hashstringOn-chain transaction hash
block_timenumberBlock timestamp in Unix seconds

TransferPayload

FieldTypeDescription
fromstringSender account address
tostringReceiver account address
assetstringAsset symbol (e.g. "USDC")
amountstringTransfer amount
tx_hashstringOn-chain transaction hash (transfer.completed/failed only)
block_timenumberBlock timestamp in Unix seconds (transfer.completed/failed only)

On this page