Skip to main content
Stream live market data instead of polling. Nexus exposes a SockJS + STOMP WebSocket at /ws/market that relays real-time token prices, DEX swaps, and dApp blueprint events. There are two ways to get WebSocket access:
  1. Included with your plan. Scale, Enterprise, and Unlimited plans include streaming using the plan’s own connection and message limits. (Builder and Growth do not include WebSocket access by default.)
  2. A WebSocket package, attached per API key, which adds streaming to a plan that doesn’t include it or overrides the per-key limits:
PackageConcurrent connectionsMessages / mo
Starter2100,000
Pro102,000,000
UnlimitedUnlimitedUnlimited
Enterprise includes WebSocket Unlimited. Plan access and per-key packages are managed from your account.

Connecting

  • Endpoint: wss://nexus.gerowallet.io/ws/market (SockJS)
  • Protocol: STOMP
  • Auth: API key via ?access_token=nexus_… query parameter or Authorization: Bearer nexus_… header
Access is checked at connection time. Connections without an allowed package/tier are rejected during the handshake; exceeding your concurrent-connection or monthly-message quota caps or closes the connection.

Topics

Subscribe to these STOMP destinations (server → client):
DestinationStreams
/topic/market/pricesAll token prices - sends a current snapshot on subscribe, then live updates
/topic/market/prices/{assetId}A single token’s price - snapshot on subscribe, then updates
/topic/swapsGlobal DEX swap events (executed swaps, cancellations, limit-order fills)
/topic/dapp/{id}/eventsEvents for a registered blueprint dApp
Client → server control:
DestinationPurpose
/app/market/unsubscribeUnsubscribe from a token’s price stream (send the assetId)

Example

import SockJS from 'sockjs-client';
import { Client } from '@stomp/stompjs';

const client = new Client({
  webSocketFactory: () =>
    new SockJS('https://nexus.gerowallet.io/ws/market?access_token=nexus_your_api_key_here'),
  onConnect: () => {
    // Live price for one token (current snapshot arrives first)
    client.subscribe('/topic/market/prices/lovelace', (msg) =>
      console.log('price', JSON.parse(msg.body)),
    );
    // Global swap feed
    client.subscribe('/topic/swaps', (msg) =>
      console.log('swap', JSON.parse(msg.body)),
    );
  },
});

client.activate();
Each delivered message counts toward your package’s monthly message quota. Subscribe only to the tokens/feeds you need; use /app/market/unsubscribe when you no longer need a per-token stream.