Real-Time Signals

Push-based wallet and token events as they are indexed. Subscribe once; receive events when transfers match your filters.

Endpoint

WSS wss://api.monadatlas.com/ws/signals

API key required. Use X-API-Key header or query param: wss://api.monadatlas.com/ws/signals?api_key=YOUR_KEY

Subscribe

After connecting, send a JSON message with method: "atlas_subscribe" and optional filters:

{
  "method": "atlas_subscribe",
  "params": {
    "wallets": ["0xabc...", "0xdef..."],
    "events": ["wallet_funded", "wallet_token_buy", "wallet_token_sell", "wallet_native_out"],
    "tokens": ["0xtoken..."]
  }
}
  • wallets — Watch these addresses. Empty = all wallets (subject to limits).
  • events — Event types to receive. Omit = all events.
  • tokens — Filter by token contract. Empty = all tokens.

Event Types

EventDescription
wallet_fundedNative MON received (recipient)
wallet_native_outNative MON sent (sender)
wallet_token_buyERC20/721/1155 received (recipient)
wallet_token_sellERC20/721/1155 sent (sender)

Push Payload

{
  "id": 12345,
  "event": "wallet_funded",
  "direction": "in",
  "wallet": "0xabc...",
  "from": "0xfunding...",
  "to": "0xabc...",
  "tokenAddress": null,
  "tokenId": null,
  "amount": null,
  "valueWei": "1000000000000000000",
  "value_mon": "1.0",
  "txHash": "0x...",
  "blockNumber": 72400000,
  "blockHash": "0x...",
  "logIndex": null,
  "eventIndex": 0,
  "timestamp": "2026-05-04T12:00:00.000Z",
  "transferType": "native_internal",
  "chainId": 143,
  "received_at": "2026-05-04T12:00:01.250Z",
  "received_at_ms": 1746360001250,
  "funding_age_ms": 1250,
  "funding_age": "1s"
}
FieldDescription
idTransfer id (for deduplication)
direction"in" for wallet_funded/wallet_token_buy, "out" for outflows
valueWeiNative value in wei (native transfers only)
value_monHumanized MON amount (native transfers only)
funding_age_msMilliseconds between block timestamp and signal push — measures how fresh the data is
funding_ageHuman-readable age (e.g. "1s", "3m 12s", "2h 15m")
transferType"native" (direct), "native_internal" (contract), "erc20", "erc721", "erc1155"
received_at / received_at_msServer push timestamp (ISO and epoch ms)
timestampBlock timestamp when the transfer occurred on-chain
chainIdMonad mainnet (143)
blockHash, logIndex, eventIndex, tokenIdFor correlation with on-chain data

Example (Node.js)

const WebSocket = require('ws');
const ws = new WebSocket('wss://api.monadatlas.com/ws/signals?api_key=YOUR_KEY');

ws.on('open', () => {
  ws.send(JSON.stringify({
    method: 'atlas_subscribe',
    params: {
      wallets: ['0xYourWatchedWallet...'],
      events: ['wallet_funded', 'wallet_token_buy']
    }
  }));
});

ws.on('message', (data) => {
  const msg = JSON.parse(data);
  if (msg.event) {
    console.log('Transfer:', msg.event, msg.wallet, msg.txHash);
  } else {
    console.log('Subscribed:', msg);
  }
});

Notes

  • Indexed data: Events are pushed when transfers are indexed, not at block production. Slight delay vs raw chain.
  • Reconnect: Resubscribe after reconnect; no server-side state is persisted.
  • vs /ws: /ws is standard eth_subscribe (blocks, logs). /ws/signals is Atlas-specific wallet/token events.