Market Data
Quotes
Query PropAMM quote points over REST and quote ladder events with the SDK.
GET
Quotes
When available,
Metric quote ladder (includes pool field):
GET /quotes will return stored PropAMM quote points in global collector-time order. Use observation_id to fetch all points sampled in one quote observation.
Availability: GET /quotes is documented from the published OpenAPI contract but is not live yet. The SDK quote ladder guidance is below.
Request
Query parameters
Access and behavior
With no bounds, the latest hour is available anonymously; older history requires a Polaris API key.start and end are inclusive collector timestamps in Unix milliseconds. observation_id is an exact nonempty filter and is part of the cursor-bound query.
Response
items[] fields
Rows contain input and output asset identifiers, amounts, decimal scales, and on-chain context when available. The SDK quote ladder events below group quotes in a nested event envelope rather than returning one flat REST row per quote point.
Pagination
Passnext_cursor as cursor with the same filters. Stop when has_more is false, or when next_cursor is null for endpoints without has_more. A cursor is opaque; do not edit or reuse it with different filters.
Errors
The OpenAPI contract lists400, 401, 422, 429, 503. Error responses use error.code, error.message, and error.resolution. Narrow an expensive query after 422. Follow Retry-After after 429.
For the machine-readable contract, see the OpenAPI document.
SDK quote ladders
The REST endpoint returns flat quote points. The Python SDK method below yields standardized quote ladder events with multiple size points nested underdata.values.quotes. Use this shape for replay and quote-curve analysis.
Use client.propamm_quote_ladders() when you need quote ladders from PropAMMs. This method returns standardized quote ladder events across all supported PropAMM sources.
Supported sources
All six PropAMMs produce the same standardized v2 JSONL quote-ladder schema. The recorder uses the following static Ethereum address catalogue:Method signature
Parameters
Return value
A single-pass iterator of normalized quote ladder event dictionaries by default. Withoutput="batches", returns flat PyArrow record batches; with output="dataframe", returns an eager Pandas DataFrame.
Example response
Standard quote ladder (FermiSwap, BopAMM, Kipseli, Tempest, TaurusFi):Note: These examples use artificial addresses and amounts from test fixtures. Real events contain actual blockchain addresses and computed quote amounts.
Fields
PropAMM quote ladder events use the standard v2 event envelope with the following fields:Event envelope
collector_timestamp: when the recorder observed the envelope (milliseconds)collector_sequence: monotonic sequence number for the collector sessionexchange_timestamp: Ethereum block timestamp (milliseconds)exchange_sequence: venue-provided sequence number ornullsource: PropAMM source identifiertype: always"record"for standardized events
Data structure
Underdata:
data.series: always"quote_ladder"data.values: quote ladder contents
Quote ladder values
event_id: deterministic composite ID (transaction:source:router:token_in:token_out, or includes pool for Metric)chain_id: EVM chain identifierblock_number: block containing the quote ladderblock_hash: canonical block hashparent_hash: parent block hashtransaction_hash: transaction containing the quote laddertransaction_index: transaction position within blockrouter: PropAMM router contract addressoracle: oracle contract address (nullable when not applicable)pool: pool contract address (Metric only, omitted for other sources)token_in: input token contract addresstoken_out: output token contract addresstoken_in_decimals: decimal precision for input tokentoken_out_decimals: decimal precision for output tokenquotes: array of quote objects
Quote objects
Each quote in thequotes array contains:
amount_in: input amount as decimal string (preserves full uint256 range)amount_out: output amount as decimal string (preserves full uint256 range)
Important details
- Decimal strings: Quote amounts use decimal strings to preserve the full Ethereum uint256 range
- Deterministic IDs:
event_idis deterministic across retries; Metric includes its pool address in the ID - Market metadata: Each uploaded
.jsonl.zstfile starts with a metadata row containingsourceandmarket. The market field is intentionally omitted from individual data rows - Nullable fields:
oracleis nullable when not applicable;poolis omitted unless applicable (Metric only) - Standardization only: Only
quote_ladderrecords are standardized. Heartbeats, replay telemetry, state updates, and failures remain in raw format - No raw embedding: PropAMM explicitly disables embedding the original raw envelope into standardized rows
Example
How it works
client.propamm_quote_ladders() filters quote ladder rows from the standardized stream using snapshot-first replay. Each PropAMM source produces the same v2 JSONL schema, stored separately by logical source with market identifier.
The standardized events preserve the full fidelity of the original PropAMM quote ladders while normalizing the envelope structure for consistent querying across all six sources.
Related documentation
- PropAMMs for discovery, normalization, and quote-curve comparison workflows
- Events for the complete v2 event envelope specification
- Raw Data for venue-native capture rows
- Quickstart for getting started with the Python SDK