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

# Reference

> Topic grammar, stream families, and expiry behavior for the price feed.

## Stream Families

Two topic families cover TetraFi's liquidity, both carried on the same WebSocket connection:

| Family              | Topic pattern                                          | Covers                                    | Sizing            |
| ------------------- | ------------------------------------------------------ | ----------------------------------------- | ----------------- |
| **Corridor prices** | `prices:{srcChain}:{input}:{dstChain}:{output}:{tier}` | On-chain pairs, same-chain or cross-chain | Tiered: `1k`-`1m` |
| **OTC prices**      | `prices:otc:{inputSymbol}:{outputSymbol}:{tier}`       | OTC venue symbols                         | Tiered: `1k`-`1m` |

**Corridor topics** name assets by chain and address, so a subscription prices exactly the route you'd trade - including cross-chain corridors where the two legs live on different networks.

**OTC topics** use venue symbols for desk-quoted markets. The tier suffix works identically: subscribe at the notional you intend to trade, because a `1m` clip does not price like a `10k` clip.

<Tip>
  **Match your stream to your execution.** Estimate with the same corridor and tier you'll request firm quotes for - a `10k`-tier estimate tells you little about a seven-figure fill.
</Tip>

## Snapshot Payload

Every event on a price topic carries a complete snapshot - never a delta. The essentials:

| Field           | Meaning                                                                                                                                                                                                                                                                                     |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `seq`           | Monotonic per-stream sequence - use it for change detection                                                                                                                                                                                                                                 |
| `levels`        | Per-solver best prices for the reference amount, ranked by output descending                                                                                                                                                                                                                |
| `solverCount`   | How many sources contributed to this snapshot                                                                                                                                                                                                                                               |
| `stale`         | `true` when no source responded within the staleness window - the numbers shown are aging                                                                                                                                                                                                   |
| `vwap`          | Simple average across responding sources (absent for single-source snapshots)                                                                                                                                                                                                               |
| `bids` / `asks` | Optional two-sided depth ladders: `{price, size, solverId}` entries, decimal-normalized as output-per-input, best-first (bids descending, asks ascending). Present when a depth-capable source contributes; each entry names its source so one dead feed never poisons the rest of the book |

Amounts in `levels` are raw token units as strings; ladder prices and sizes are decimal-normalized numbers - the same numbers the [protobuf depth stream](/price-api/quickstart) carries, produced by the same aggregation pass.

## Quote Expiry

Streamed prices are indicative and continuously refreshed; firm quotes carry a hard `validUntil`. When you move from estimate to execution, the validity window you request (via `minValidUntil` on the intent) shapes the pricing you receive:

| Validity request                  | Who can use it      | Typical horizon                  | Suits                                                                               |
| --------------------------------- | ------------------- | -------------------------------- | ----------------------------------------------------------------------------------- |
| Standard (unset)                  | All integrations    | Around a minute, chain-dependent | Flows with a human in the loop - no automation pressure on the sign-and-submit hop  |
| Tight (near-term `minValidUntil`) | Automated pipelines | Down to a few seconds            | Programmatic executors chasing the spread improvement a smaller LP risk window buys |

Shorter windows price tighter because the LP holds risk for less time - but your sign-and-submit hop must complete inside the window, or the order refunds through the escrow.

<Warning>
  Keep your estimation horizon and your firm-quote horizon aligned. Estimating from long-horizon streamed prices while requesting tight-window firm quotes (or vice versa) will systematically skew your pre-trade numbers. See [Short Expiry](/rfq-api/guides/short-expiry) for the execution-side view.
</Warning>
