Realtime · Socket.IO

Wallets & blockchain

Max 50 wallet rooms per socket.

Subscribes

javascript
socket.emit("wallet:subscribe:project", { projectId: "6958511e8397f2dfa88090d8" })
socket.emit("wallet:subscribe:address", { addressId: "64a1b2c3d4e5f6789012345" })
socket.emit("wallet:subscribe:chain", { chain: "ethereum" })
socket.emit("wallet:subscribe:currency", { currency: "USDT" })
socket.emit("wallet:subscribe:project", { projectId: "6958511e8397f2dfa88090d8" })
socket.emit("wallet:subscribe:address", { addressId: "64a1b2c3d4e5f6789012345" })
socket.emit("wallet:subscribe:chain", { chain: "ethereum" })
socket.emit("wallet:subscribe:currency", { currency: "USDT" })

Ack example: { "projectId": "...", "room": "wallet:project:6958511e8397f2dfa88090d8" }

Server events (indexer)

EventUse
wallet:balance:updatedaddressId, address, chain, previousBalance, newBalance, balance, project, org
wallet:tx:detectedIncoming / detected
wallet:tx:broadcastOutgoing broadcast
wallet:tx:confirmedConfirmed on-chain
wallet:tx:failedFailure

Example wallet:balance:updated

json
{
  "addressId": "64a1b2c3d4e5f6789012345",
  "address": "0xabc...",
  "chain": "ethereum",
  "project": "6958511e8397f2dfa88090d8",
  "org": "69566c4ef0bdc3ae3e81b10a",
  "previousBalance": "0",
  "newBalance": "1.5",
  "balance": "1.5",
  "timestamp": "2026-03-18T10:00:00.000Z"
}
{
  "addressId": "64a1b2c3d4e5f6789012345",
  "address": "0xabc...",
  "chain": "ethereum",
  "project": "6958511e8397f2dfa88090d8",
  "org": "69566c4ef0bdc3ae3e81b10a",
  "previousBalance": "0",
  "newBalance": "1.5",
  "balance": "1.5",
  "timestamp": "2026-03-18T10:00:00.000Z"
}

Events may be emitted to multiple rooms (address, project, org, chain, currency).