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

# Reference

> Key facts, message types, schemas, and coverage details for the Price API.

## Pricing Behavior

The stream publishes indicative prices for direct RFQ transactions. Request a firm quote before you execute a trade.

A direct EVM quote includes a ready-to-broadcast `tx` object. Broadcast it before its expiry time.

## Quote Expiry

The `expiry_type` parameter controls the target expiry window for streamed prices.

| Expiry type | Window | Best for |
| - | - | - |
| `standard` | \~60-75s, depending on the chain | Most integrations |
| `short` | \~5s on Ethereum, \~3s on other chains | Low-latency execution infrastructure |

Short expiry quotes offer better prices because the market maker's risk window is smaller. However, they require fast execution infrastructure - you need to sign and broadcast within a single block.

<Warning>
  If you request `short` expiry quotes from the RFQ API, subscribe to the `short` expiry pricing stream to get matching indicative prices. Mixing expiry types between the stream and firm quotes will give you inaccurate pre-trade estimates.
</Warning>

## Requesting Specific Pairs

By default the stream sends every pair on the network. To receive only the pairs you care about, pass one `pair` query parameter per pair:

```
wss://api.bebop.xyz/pmm/ethereum/v3/pricing?format=protobuf&pair=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48&pair=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/0xdAC17F958D2ee523a2206206994597C13D831ec7
```

Each message then contains only your requested pairs, in the same schema as the full stream. Use this when you track a fixed set of pairs and want smaller messages instead of filtering the full snapshot client-side.

Pair filtering works with both `format=json` and `format=protobuf`, and combines with the other connection parameters (`gasless`, `expiry_type`, `fast`, `show_makers`).

<Info>
  Pair filtering must be enabled for your API key. Without it the connection is rejected with `Invalid credentials` - request access via the [support page](/support).
</Info>

### Limitations

| Limit | Detail |
| - | - |
| **Max 25 pairs** | A connection accepts up to 25 `pair` parameters. More than that rejects the connection. |
| **Addresses, not symbols** | Each `pair` must use contract addresses as `BASE/QUOTE` (e.g. `0xC02a.../0xA0b8...`). Resolve symbols via `GET /pmm/{network}/v3/tokenlist`. |
| **Known tokens only** | Both tokens must exist in the token list for that network, otherwise the connection is rejected. |
| **Base and quote must differ** | Pairs like `WETH/WETH` are rejected. |
| **Duplicates are ignored** | Repeating the same pair (in any casing) counts once. |

An invalid `pair` value rejects the connection with a reason such as `Pairs must use the BASE/QUOTE address format`, `Pairs must contain valid token addresses`, `Pair tokens must exist in the token list`, `Pair tokens must be different`, or `A maximum of 25 pairs is supported`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.