Skip to main content
GET
Quotes
When available, 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

Pass next_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 lists 400, 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 under data.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. With output="batches", returns flat PyArrow record batches; with output="dataframe", returns an eager Pandas DataFrame.

Example response

Standard quote ladder (FermiSwap, BopAMM, Kipseli, Tempest, TaurusFi):
Metric quote ladder (includes pool field):
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 session
  • exchange_timestamp: Ethereum block timestamp (milliseconds)
  • exchange_sequence: venue-provided sequence number or null
  • source: PropAMM source identifier
  • type: always "record" for standardized events

Data structure

Under data:
  • 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 identifier
  • block_number: block containing the quote ladder
  • block_hash: canonical block hash
  • parent_hash: parent block hash
  • transaction_hash: transaction containing the quote ladder
  • transaction_index: transaction position within block
  • router: PropAMM router contract address
  • oracle: oracle contract address (nullable when not applicable)
  • pool: pool contract address (Metric only, omitted for other sources)
  • token_in: input token contract address
  • token_out: output token contract address
  • token_in_decimals: decimal precision for input token
  • token_out_decimals: decimal precision for output token
  • quotes: array of quote objects

Quote objects

Each quote in the quotes 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_id is deterministic across retries; Metric includes its pool address in the ID
  • Market metadata: Each uploaded .jsonl.zst file starts with a metadata row containing source and market. The market field is intentionally omitted from individual data rows
  • Nullable fields: oracle is nullable when not applicable; pool is omitted unless applicable (Metric only)
  • Standardization only: Only quote_ladder records 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.
  • 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