Endpoint Details
- URL:
wss://api.mobula.io - Event Type:
token-details
Subscription Formats
Thetoken-details endpoint supports subscribing to multiple token addresses for real-time token data.
Multiple Tokens Subscription (Recommended)
Subscribe to multiple tokens using thetokens array format:
Parameters
tokens(required): Array of token subscription items, each containing:blockchain(required): Blockchain identifier (e.g.,"evm:1","solana")address(required): Token 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 token. See Update Rate Throttling below
Token Addresses Only: This endpoint is for subscribing to token addresses. For pool-specific subscriptions, use the
market-details endpoint instead.Real-Time Updates
After subscribing, you’ll receive real-time updates whenever new trades occur involving the subscribed tokens.Real-Time Trade Updates for Token Subscriptions
When trades happen involving subscribed tokens, you’ll receive updates with trade information:Optional Fields Behavior
Security Object Fields
All fields intokenData.security are optional — only present when data is available for the token. A missing field means the check was not performed, not that the token is safe.
EVM vs Solana availability: Most fields apply to EVM chains.
noMintAuthority is Solana-specific. isHoneypot, isNotOpenSource, renounced, locked, isWhitelisted, isMintable, modifyableTax, and selfDestruct are EVM-only.| Field | Type | Description |
|---|---|---|
buyTax | string | Buy fee as a percentage string (e.g. "5.00" = 5%). Present when a transfer tax is charged on buys. |
sellTax | string | Sell fee as a percentage string (e.g. "10.00" = 10%). Present when a transfer tax is charged on sells. |
transferPausable | boolean | Whether the contract owner can pause all token transfers. |
top10Holders | string | Percentage of total supply held by the top 10 wallets (e.g. "42.50"). |
isBlacklisted | boolean | Whether the contract contains a blacklist mechanism that can block specific addresses from trading. |
isHoneypot | boolean | Whether the token is a honeypot — users can buy but cannot sell. (EVM only) |
isNotOpenSource | boolean | Whether the contract source code is not verified/open source on-chain. (EVM only) |
renounced | boolean | Whether contract ownership has been renounced (owner is the zero address). (EVM only) |
locked | string | Percentage of liquidity that is locked (e.g. "80.00"). (EVM only) |
isWhitelisted | boolean | Whether the contract has a whitelist mechanism restricting who can trade. (EVM only) |
balanceMutable | boolean | Whether the contract owner can arbitrarily modify token balances. |
lowLiquidity | string | Indicates low liquidity status (e.g. "true" or "false"). |
burnRate | string | Percentage of each transaction automatically burned (e.g. "2.50"). |
isMintable | boolean | Whether the contract allows minting new tokens after deployment. (EVM only) |
modifyableTax | boolean | Whether the contract owner can change the buy/sell tax rates. (EVM only) |
selfDestruct | boolean | Whether the contract contains a self-destruct function. (EVM only) |
liquidityBurnPercentage | number | Percentage of liquidity pool tokens that have been burned. |
noMintAuthority | boolean | Whether the mint authority has been disabled (safe = true). (Solana only) |
Unsubscribing from the Stream
Unsubscribe from All Token-Details Streams
Unsubscribe from Specific Subscription
Unsubscribe from Specific Subscription with Type
Unsubscribe from Specific Tokens (Partial Unsubscription)
You can unsubscribe from specific tokens while keeping others active in the same subscription:Unsubscribe from Multiple Specific Tokens
Unsubscribe from Specific Tokens 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 tokens, leaving other tokens in those subscriptions active.Update Rate Throttling
You can control how frequently the server sends update messages per token 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 token:
maxUpdatesPerMinute: 100 → minimum interval of 600ms between two delivered updates for the same token.
- Interval-based, not budget-based: The server enforces a cooldown between updates. Once an update is delivered, all subsequent updates for that token are dropped until the interval elapses. There is no counter that depletes — after each delivered update, the cooldown simply restarts.
- Per-token throttle: Each token is throttled independently. Subscribing to 5 tokens with
maxUpdatesPerMinute: 60means each token 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 token 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 token) |
| 60 | 1s | One update per second per token |
| 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