Skip to content

Integration checklist

Use these rules when building a production consumer.

Amounts

Token amounts use a pair of fields:

json
{
  "mint": "So111...",
  "amountRaw": "14841398823",
  "amount": "14.841398823"
}
  • amountRaw is an integer string in the token's smallest units.
  • amount is a decimal string adjusted for token decimals.

Keep both as strings or use an arbitrary-precision decimal library. JavaScript number cannot represent every raw token amount exactly.

USD values

valueUsd is populated when one side of a trade is SOL or a stablecoin. It is null for trades where neither side can be priced that way.

minUsdAmount lets events with valueUsd: null through. Do not assume that setting the filter removes every unpriced event.

Time and finality

  • Only successful transactions are streamed.
  • blockTime can be null when Solana has not supplied it yet.
  • Tessium emits as soon as the network processes a transaction; it does not wait for block time to become available.

Subscription overlap

If you subscribe both to a token and to a wallet trading that token, one on-chain trade produces two events: one for each subscription. Deduplicate only when your application wants to merge those two views.

Use signature plus the cursor's event index when you need a stable event identity. A route can contain multiple events in one transaction.

New tokens

A newly created token is available for mint-scoped subscriptions immediately.

Reconnects

  1. Persist the last fully processed cursor per subscription.
  2. Reconnect with exponential backoff and jitter.
  3. Recreate each subscription with its saved cursor.
  4. Reorder replay and live events by cursor.
  5. Handle gap, dropped, and replay_rate_limited explicitly.

See Cursor & replay for replay windows and limits.

Slow consumers

Read continuously; move CPU-heavy work and database writes off the WebSocket reader. A dropped notice means data was already lost. A slow_consumer notice means the connection is closing.

Narrow broad subscriptions with server-side filters before scaling consumers.

Message size

Client messages may be at most 64 KB. Lists accept at most 50 values and strings at most 64 characters.

Realtime Solana data API