Endpoint Details
- URL:
wss://api.mobula.io - Event Type:
market-details
Subscription Formats
Themarket-details endpoint supports subscribing to multiple pool addresses for real-time market data.
Multiple Pools Subscription (Recommended)
Subscribe to multiple pools using thepools array format:
Parameters
pools(required): Array of pool subscription items, each containing:blockchain(required): Blockchain identifier (e.g.,"evm:1","solana")address(required): Pool address
subscriptionId(optional): Unique identifier for your WebSocket connection. Auto-generated if not providedsubscriptionTracking(optional, default:false): Include subscription details in response logs for debuggingmaxUpdatesPerMinute(optional): Limit how often the server sends updates for each pool. See Update Rate Throttling below
Pool Addresses Only: This endpoint is for subscribing to pool addresses. For token-specific subscriptions, use the
token-details endpoint instead.Real-Time Updates
After subscribing, you’ll receive real-time updates whenever new trades occur on the subscribed pools.Real-Time Trade Updates for Pool Subscriptions
When trades happen on subscribed pool addresses, you’ll receive updates with trade information:Optional Fields Behavior
Unsubscribing from the Stream
Unsubscribe from All Market-Details Streams
Unsubscribe from Specific Subscription
Unsubscribe from Specific Subscription with Type
Unsubscribe from Specific Pools (Partial Unsubscription)
You can unsubscribe from specific pools while keeping others active in the same subscription:Unsubscribe from Multiple Specific Pools
Unsubscribe from Specific Pools in a Specific Subscription
If you didn’t provide a
subscriptionId when subscribing, one is auto-generated. To retrieve it, set "subscriptionTracking": true in the subscription payload.For partial unsubscriptions without subscriptionId, the system will automatically find and modify subscriptions that contain the specified pools, leaving other pools in those subscriptions active.Update Rate Throttling
You can control how frequently the server sends update messages per pool using themaxUpdatesPerMinute field. This is useful for reducing bandwidth on dashboards that don’t need every single trade update.
How It Works
Despite the name,maxUpdatesPerMinute does not set a budget that gets consumed over a minute. Instead, it sets a minimum interval between delivered updates per pool:
maxUpdatesPerMinute: 100 → minimum interval of 600ms between two delivered updates for the same pool.
- Interval-based, not budget-based: The server enforces a cooldown between updates. Once an update is delivered, all subsequent updates for that pool are dropped until the interval elapses. There is no counter that depletes — after each delivered update, the cooldown simply restarts.
- Per-pool throttle: Each pool is throttled independently. Subscribing to 5 pools with
maxUpdatesPerMinute: 60means each pool sends at most 1 update/second. - Dropped, not buffered: When an update arrives during the cooldown, it is silently dropped — not queued or aggregated. The next update arriving after the interval has elapsed will be delivered normally.
Burst Behavior Example
WithmaxUpdatesPerMinute: 100 (interval = 600ms), if a pool receives a burst of 50 updates in 1 second:
| Time | Event | Result |
|---|---|---|
| t=0ms | Update 1 arrives | Delivered (cooldown starts) |
| t=50ms | Updates 2–10 arrive | Dropped (still within 600ms cooldown) |
| t=600ms | Update ~20 arrives | Delivered (cooldown elapsed, restarts) |
| t=800ms | Updates ~25–50 arrive | Dropped (still within new 600ms cooldown) |
| t=2s | Next update arrives | Delivered normally |
Reference Values
maxUpdatesPerMinute | Effective interval | Description |
|---|---|---|
| 600 | 100ms | Maximum rate (~10 updates/sec per pool) |
| 60 | 1s | One update per second per pool |
| 6 | 10s | One update every 10 seconds |
| 1 | 60s | One update per minute (minimum rate) |
When
maxUpdatesPerMinute is not provided, no throttle is applied and updates are delivered as fast as they arrive.Implementation Example
Connection Keepalive (Ping/Pong)
To maintain active WebSocket connections and prevent timeouts, you can use the ping/pong mechanism: Send ping:Support
Can’t find what you’re looking for? Reach out to us, response times < 1h.Support
Telegram
Support
Slack
Need help?
Email