Monad Atlas

Real-Time Signals

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

Endpoint

URL 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

{
  "event": "wallet_funded",
  "wallet": "0xabc...",
  "from": "0xfunding...",
  "to": "0xabc...",
  "tokenAddress": null,
  "amount": null,
  "valueWei": "1000000000000000000",
  "value_mon": "1",
  "txHash": "0x...",
  "blockNumber": 60923800,
  "timestamp": "2026-03-12T18:00:00.000Z",
  "transferType": "native",
  "received_at": "2026-03-12T18:00:01.234Z",
  "received_at_ms": 1710262801234
}

Fields: value_mon — humanized MON (native only). received_at / received_at_ms — push time (for latency). direction — "in" or "out". id — transfer id (dedup). chainId — Monad mainnet (143). blockHash, logIndex, eventIndex, tokenId — for correlation.

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.