Feed updates
KLP.KXRCC_25DEC31_T5/USDremovedKLP.KXRCC_25DEC31_T4/USDremovedKLP.KXRCC_25DEC31_T3/USDremovedKLP.KXRCC_25DEC31_T2/USDremovedKLP.KXRCC_25DEC31_T1/USDremovedKLP.KXMLB_25_TOR/USDremovedKLP.KXMLB_25_SEA/USDremovedKLP.KXMLB_25_PHI/USDremovedKLP.KXMLB_25_NYY/USDremovedKLP.KXMLB_25_MIL/USDremovedKLP.KXMLB_25_LAD/USDremovedKLP.KXMLB_25_DET/USDremovedKLP.KXMLB_25_CHC/USDremovedKLP.KXMAYORNYCPARTY_25_R/USDremoved
View all
Developer Hub

Symbology & Reference Data

Field-by-field reference for Pyth Pro symbol metadata: identifiers, classification, data quality, trading schedules, and futures expiration

Pyth Pro publishes reference data describing every feed it offers: identifiers, classification, data-quality parameters, trading schedules, and (for derivatives) expiration metadata. This data is distinct from the real-time price payload: it describes what a feed is, not its current value.

Reference data is served by the Symbology & Reference Data API:

GET https://pyth.dourolabs.app/v1/symbols

The endpoint returns one JSON object per feed. This page documents every field on that object. For the request schema and query parameters for filtering (for example by asset_type or instrument_type), see the interactive API reference.

Example response

Every feed is returned as a single JSON object with the same top-level shape. The tabs below show feeds that populate different optional fields, depending on asset class and instrument type.

BKNG, a US equity with regular, pre_market, post_market, and over_night sessions, a nasdaq_symbol, and a corporate_actions stock split:

{
  "pyth_lazer_id": 992,
  "name": "BKNG",
  "symbol": "Equity.US.BKNG/USD",
  "description": "BOOKING HOLDINGS INC / US DOLLAR",
  "asset_type": "equity",
  "instrument_type": "spot",
  "exponent": -5,
  "cmc_id": null,
  "interval": null,
  "min_publishers": 3,
  "min_channel": "fixed_rate@200ms",
  "state": "stable",
  "schedule": "America/New_York;0930-1600,0930-1600,0930-1600,0930-1600,0930-1600,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1127/0930-1300,1224/0930-1300,1225/C",
  "market_session_schedule": {
    "regular": "America/New_York;0930-1600,0930-1600,0930-1600,0930-1600,0930-1600,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1127/0930-1300,1224/0930-1300,1225/C",
    "pre_market": "America/New_York;0400-0930,0400-0930,0400-0930,0400-0930,0400-0930,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1225/C",
    "post_market": "America/New_York;1600-2000,1600-2000,1600-2000,1600-2000,1600-2000,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1225/C",
    "over_night": "America/New_York;0000-0400&2000-2400,0000-0400&2000-2400,0000-0400&2000-2400,0000-0400&2000-2400,0000-0400,C,2000-2400;0118/C,0119/2000-2400,0215/C,0216/2000-2400,0402/0000-0400,0403/C,0524/C,0525/2000-2400,0618/0000-0400,0619/C,0702/0000-0400,0703/C,0906/C,0907/2000-2400,1125/0000-0400,1126/2000-2400,1224/0000-0400,1225/C,1231/0000-0400,0101/C"
  },
  "market_sessions": {
    "regular": {
      "min_pub": 3,
      "schedule": "America/New_York;0930-1600,0930-1600,0930-1600,0930-1600,0930-1600,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1127/0930-1300,1224/0930-1300,1225/C",
      "state": "stable"
    },
    "pre_market": {
      "min_pub": 2,
      "schedule": "America/New_York;0400-0930,0400-0930,0400-0930,0400-0930,0400-0930,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1225/C",
      "state": "stable"
    },
    "post_market": {
      "min_pub": 2,
      "schedule": "America/New_York;1600-2000,1600-2000,1600-2000,1600-2000,1600-2000,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1225/C",
      "state": "stable"
    },
    "over_night": {
      "min_pub": 2,
      "schedule": "America/New_York;0000-0400&2000-2400,0000-0400&2000-2400,0000-0400&2000-2400,0000-0400&2000-2400,0000-0400,C,2000-2400;0118/C,0119/2000-2400,0215/C,0216/2000-2400,0402/0000-0400,0403/C,0524/C,0525/2000-2400,0618/0000-0400,0619/C,0702/0000-0400,0703/C,0906/C,0907/2000-2400,1125/0000-0400,1126/2000-2400,1224/0000-0400,1225/C,1231/0000-0400,0101/C",
      "state": "stable"
    }
  },
  "hermes_id": "e90b679a7e4ca0d591abb634959d38a535c2036c6b121c520a82cff111ff7d12",
  "nasdaq_symbol": "BKNG",
  "quote_currency": "USD",
  "corporate_actions": [
    {
      "event_type": "SPLIT",
      "activation": {
        "us_equity_ex_date": {
          "ex_date": "2026-04-06"
        }
      },
      "adjustment_factor_numerator": "25",
      "adjustment_factor_denominator": "1"
    }
  ],
  "groups": []
}

Every field is documented below.

Field reference

Field invariants

Useful guarantees when mapping these fields in your own systems:

  • name is not guaranteed to be unique; the same short name can appear on more than one feed.
  • symbol is unique, but in rare cases it can change without notice. Use pyth_lazer_id as the stable key for external mappings.
  • asset_type and instrument_type are open enums whose set of values can grow over time, so handle unknown values gracefully.

Identity & naming

FieldTypeDescription
pyth_lazer_idu32Stable numeric identifier for the feed in Pyth Pro. Use it when subscribing to prices.
namestringShort symbol name, e.g. BTCUSD. Dated futures suffix the family root with a month code and year digit, e.g. the EM (E-mini S&P 500) family becomes EMU6; see Futures Terminology.
symbolstringFully-qualified Pyth symbol, e.g. Crypto.BTC/USD or Equity.US.EMU6/USD. Encodes asset class, optional region, root, and quote currency.
descriptionstringHuman-readable description, e.g. BITCOIN / US DOLLAR.
hermes_idstring?Hex feed ID used by Pyth Core / Hermes for the same underlying. null when the feed has no Pyth Core counterpart.
nasdaq_symbolstring?Nasdaq ticker, for equities sourced via Nasdaq. null when not applicable.
cmc_idinteger?CoinMarketCap ID, for crypto assets. null when not applicable.

Classification

FieldTypeDescription
asset_typestringBroad asset class (open enum, may grow). Current values include crypto, equity, fx, commodity, metal, interest-rate, rates, crypto-index, crypto-redemption-rate, funding-rate, nav, kalshi.
instrument_typestringInstrument form: spot, future, perp, rate, index, or nav. May be an empty string when unspecified.
quote_currencystringCurrency the price is quoted in, e.g. USD, EUR, KRW, JPY.
groupsstring[]Discovery/grouping tags, e.g. pyth-indices. Empty for most feeds.

Pricing & data quality

FieldTypeDescription
exponenti16Decimal exponent: actual_price = mantissa × 10^exponent. Same meaning as in the price payload.
min_publishersu16Minimum number of publishers required for the feed to produce a price.
min_channelstringHighest-frequency channel the feed supports: real_time, fixed_rate@50ms, or fixed_rate@200ms. You can subscribe at this channel or any slower one.
statestringLifecycle state: stable (live), coming_soon (announced, not yet publishing), or inactive (retired/expired).
intervalstring?Funding interval for funding-rate feeds (instrument type rate), e.g. 8h. null otherwise.

Scheduling

FieldTypeDescription
schedulestringThe regular session's trading schedule, in the form TZ;<weekly>;<holidays>. Each day is open (O), closed (C), or a set of hour ranges (e.g. 0000-1700&1800-2400). Identical to market_session_schedule.regular.
market_session_scheduleobjectA schedule string per session, keyed by session name (regular, pre_market, post_market, over_night).
market_sessionsobjectThe full per-session configuration: each session carries its own schedule, min_pub, and state.

Three schedule fields, three altitudes

These describe the same trading calendar at increasing detail:

  • schedule: the regular session's schedule (identical to market_session_schedule.regular), not a union across sessions.
  • market_session_schedule: a schedule string for each session the feed has (regular, pre_market, post_market, over_night).
  • market_sessions: the richest form, carrying per-session schedule plus min_pub and state.

The price payload's marketSession field tells you which of these sessions is currently active for a given update.

Pick an example or paste a schedule string to decode it into market hours:

TimezoneAmerica/New_York
MondayOpen 24h
TuesdayOpen 24h
WednesdayOpen 24h
ThursdayOpen 24h
FridayOpen 24h
SaturdayOpen 24h
SundayOpen 24h

Futures

expiration_time describes an individual dated feed. The other three fields describe the chain that feed belongs to — the family of feeds measuring the same underlying at different expirations — and carry the same values on every feed in the chain.

FieldTypeDescription
expiration_timestring?Expiration timestamp (RFC 3339) for a dated futures feed, e.g. 2026-12-15T13:30:00-05:00.
symbol_chain_idstring?Root symbol for the chain of all the futures that measure the same underlying with different expiration times, e.g. CA for the cocoa chain that CAZ6 belongs to. Note this is the bare root, not a fully-qualified symbol. null for feeds that are not part of a futures chain.
expiration_patternstring[]?The total set of expirations per a single year applicable to the chain, as lowercase three-letter month abbreviations, e.g. ["mar", "may", "jul", "sep", "dec"].
availability_patternstring[]?The subset of expirations per single year already priced or expected to be priced by Pyth, as month codes, e.g. ["H", "K", "N", "U", "Z"].

The two patterns use different encodings

expiration_pattern lists month abbreviations (mar), availability_pattern lists month codes (H). Normalize before comparing them. The two often differ in length as well as encoding: copper (CC) expires in all twelve months but Pyth prices only ["H", "K", "N", "U", "Z"].

Chains with no fixed annual cycle — such as the LME 3-month feeds (Metal.AL3M/USD) — report ["none"] for both.

Corporate actions

FieldTypeDescription
corporate_actionsobject[]?Corporate actions on an equity feed. Each entry has an event_type (e.g. SPLIT), an activation block with the effective date (e.g. us_equity_ex_date.ex_date), and adjustment_factor_numerator / adjustment_factor_denominator. See the Equity example.

Accessing the data

  • Symbology & Reference Data API: GET /v1/symbols returns the full catalog.
  • Filter to your entitlements: pass ?entitled_only=true to return only the symbols your API key is entitled to, instead of the full catalog.
  • Interactive docs: explore the request schema and filtering parameters in the OpenAPI reference.

On this page