This endpoint is only available to Growth and Enterprise plans.
Product demo
Coming soon.Endpoint details
Mobula now provides two dedicated WSS endpoints Why? Because EVM and Solana work very differently under the hood. If we tried to send both through a single WebSocket channel, things would get messy:- The event queue would get backed up under heavy traffic
- Messages would arrive slower or even drop
- Scaling would be harder since both ecosystems compete for the same resources
- Faster and more reliable streams
- Independent scaling (EVM traffic won’t affect Solana, and vice-versa)
- Stable event delivery, even when network activity spikes
You cannot mix Solana subscriptions on the EVM endpoint (and vice-versa).
Always use the correct endpoint for the chain you’re working with.
Always use the correct endpoint for the chain you’re working with.
EVM Chains
- Endpoint:
wss://stream-evm-prod.mobula.io/ - Supported events:
swap,transfer,swap-enriched - Subscription Payload:
The EVM address in the filters must be lowercase.
SVM Chains
- Endpoint:
wss://stream-sol-prod.mobula.io/ - Supported events:
swap,transfer,swap-enriched - Subscription Payload:
Usage Examples
Before diving into the examples, make sure to check the data models for both EVM and SVM chains for swaps and transfers. Pro Tip for Devs: Dive into these data models and experiment with filters — your imagination is the only limit! Mix
and / or, combine keys, and watch your streams come alive!- Explore
poolType,poolAddress,transactionFrom,transactionTo, and other keys in the data models. - Combine multiple conditions using
and/oroperators to capture exactly the events you want. - Mix and match filters across swaps and transfers to suit your application needs.
Filter Swaps by Pools
This stream captures all swaps from eitherraydium or raydium-clmm pools.
Filter Swap-Enriched by Pools
This stream captures allswap-enriched events from either raydium or raydium-clmm pools. The returned data is enriched, including:
- Derived swap view
- Base and quote token details
- Token metadata
Filter Transfer by Contract Address
This stream captures all swaps for a specificpoolAddress and poolType.
Filter Transfers by Sender
This stream captures all transfers sent to a specificaddress.
Filter Transfers From Sender and Receiver
This stream captures all transfers sent from or received by specificaddresses.
Filter Swaps by Pool Address (Batch)
This stream listens for all swap events associated with one or more specificpoolAddress values.
- Using the
"in"filter lets you efficiently capture swaps where thepoolAddressmatches any address in your provided list. - You can also apply similar logic to other fields such as
from,to, orpoolType— depending on what aspect of the swap you want to track.
Filter Swaps by Pool Type and Sender Address
This stream tracks all swap events that match specificpoolType values and originate from one or more given swapSenderAddress values.It’s perfect if you want to monitor swap activity from certain wallets while limiting results to specific pool categories (like Uniswap pools). By combining
"in" filters inside an "and" block, you can precisely define your tracking logic:
- Only capture swaps from specific wallet addresses
- AND make sure they belong to one of your target DEX pool types
Parameters
chainIds: details hereevents:swap,transfers,swap-enrichedfilters: details heresubscriptionId (optional): A unique ID for your WebSocket connection. If not provided, it is automatically generated by the server.subscriptionTracking (optional, default: false): Set this to true to include the subscriptionId and additional connection details in the response logs. Helpful for debugging and managing multiple active streams.
Implementation example
Let’s take a look at:You can use the Network tab in your browser to see the WSS requests.
Unsubscribing from the stream
You can unsubscribe from the stream by sending an unsubscribe message:- Unsubscribe from all active streams: Send an empty payload as shown above. This will terminate all active subscriptions associated with the current WebSocket connection.
- Unsubscribe from a specific subscriptionId: Include the relevant subscriptionId in the payload: