> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mobula.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Enriched Swap Events Stream

> Real-time WebSocket stream for enriched swap events with derived token and balance context

<Tip> This endpoint is only available to Growth and Enterprise plans. </Tip>

## Endpoint Details

Use this stream when raw swaps are not enough and you need derived base/quote context, token metadata, and post-balance fields.

| Chain family | Endpoint                           | Event           |
| ------------ | ---------------------------------- | --------------- |
| EVM          | `wss://stream-evm-prod.mobula.io/` | `swap-enriched` |
| Solana       | `wss://stream-sol-prod.mobula.io/` | `swap-enriched` |

<Warning>
  Do not mix Solana `chainIds` on the EVM endpoint, or EVM `chainIds` on the Solana endpoint.
</Warning>

<Note>The EVM addresses used in filters must be lowercase.</Note>

## Subscription Payload

```json theme={null}
{
  "type": "stream",
  "authorization": "YOUR_API_KEY",
  "payload": {
    "name": "SolanaEnrichedSwaps",
    "chainIds": ["solana:solana"],
    "events": ["swap-enriched"],
    "filters": {
      "or": [
        { "eq": ["poolType", "raydium"] },
        { "eq": ["poolType", "raydium-clmm"] }
      ]
    },
    "subscriptionId": "solana-enriched-swaps",
    "subscriptionTracking": true
  }
}
```

## Response Frame

Every message uses the standard Multi-Events frame:

```json theme={null}
{
  "data": {
    "type": "swap-enriched",
    "poolAddress": "4WYhS4JwJQsqfVfNx2uN9ZoRhrMTTsYo8kjdTLvFtSDy",
    "poolType": "raydium-clmm",
    "transactionHash": "snFJGsc6gUyZHpYTbxVQQnDYpWSuPUJ4NTdvTJHTX6Wyd2Amsb3MTbNeyDe9VzkRVf87DhQ1aV79Ptnq2fZufei",
    "baseToken": "HjgFP3f1nc9kxD71YQXxD1fWHZLNp6b5ARdvhfVKpgCP",
    "quoteToken": "So11111111111111111111111111111111111111112",
    "baseTokenData": {
      "symbol": "TOKEN",
      "name": "Token",
      "priceUSD": 0.0000123
    },
    "postBalanceBaseToken": "49131790086269",
    "postBalanceRecipientBaseToken": "0",
    "date": "2026-06-08T00:18:34.613Z"
  },
  "chainId": "solana:solana",
  "duplicateCount": 1,
  "subscriptionId": "solana-enriched-swaps"
}
```

See the [Curated Data Model](/indexing-stream/stream/data-model/curated-data-model#enriched-swap-model) for the full enriched swap payload.

## Common Filters

### Pool Types

```json theme={null}
{
  "or": [
    { "eq": ["poolType", "raydium"] },
    { "eq": ["poolType", "raydium-clmm"] }
  ]
}
```

### Specific Pool

```json theme={null}
{
  "eq": ["poolAddress", "68L2iPWLtkRuxhHBYVJLSzaApBVuM6DNqLL1pEywbDGR"]
}
```

### Wallet Activity

```json theme={null}
{
  "or": [
    { "eq": ["swapSenderAddress", "7rhFTmUrRSQsL2b3YDoTuSC2sBQUeN9smbSHpne3vowa"] },
    { "eq": ["swapRecipient", "7rhFTmUrRSQsL2b3YDoTuSC2sBQUeN9smbSHpne3vowa"] }
  ]
}
```

## Parameters

* **`chainIds`** (required): Chain identifiers, for example `["evm:8453"]` or `["solana:solana"]`.
* **`events`** (required): Must include `swap-enriched`.
* **`filters`** (optional): Filter conditions. See [filters](/indexing-stream/stream/filters).
* **`subscriptionId`** (optional): Identifier copied into matching responses.
* **`subscriptionTracking`** (optional, default: `false`): Include subscription details in response logs.
* **`tag`** (optional): Usage tag shown in the dashboard breakdown.

## Keepalive

```json theme={null}
{ "event": "ping" }
```

## Unsubscribe

```json theme={null}
{
  "type": "unsubscribe",
  "authorization": "YOUR_API_KEY",
  "payload": {
    "subscriptionId": "solana-enriched-swaps"
  }
}
```
