Get API key
Corporate actions

Get a feed

API version2026-09-29
gethttps://pyth.dourolabs.app/v3/intelligence/feeds/{id}

An API key or short-lived access token, in an Authorization: Bearer <token> header, and the API version above in a Pyth-Version header. Without it, requests get the newest version.

Returns a feed by its ID, spine or numeric price feed ID. The feed's base_asset, where it has one, is the asset that corporate actions belong to. expand=base_asset includes it in full.

getv3/intelligence/feeds/{id}
curl "https://pyth.dourolabs.app/v3/intelligence/feeds/922" \
  -H "Authorization: Bearer $PYTH_API_KEY" \
  -H "Pyth-Version: 2026-09-29"
Response
{
  "availability_pattern": [],
  "expiration_pattern": [],
  "exponent": -5,
  "groups": [],
  "id": "feed-01m14btkssejctyrzpnxzga945",
  "identifiers": [
    {
      "scheme": "hermes_id",
      "sessions": [],
      "value": "49f6b65cb1de6b10eaf75e7c03ca029c306d0357e91b5311b175084a5ad55688",
      "record_id": "idr-01m14btkssejdbq8pqev6f0mte"
    },
    {
      "scheme": "nasdaq_symbol",
      "sessions": [],
      "value": "AAPL"
    }
  ],
  "instrument_type": "spot",
  "kind": "price",
  "min_publishers": 1,
  "name": "AAPL",
  "price_adjustments": [],
  "pyth_lazer_id": 922,
  "sessions": [
    {
      "session_type": "regular",
      "type": "feed_session",
      "calendar": {
        "exceptions": [
          {
            "kind": "closed",
            "ranges": [],
            "recurs_annually": true,
            "date": "2026-12-25"
          }
        ],
        "timezone": "America/New_York",
        "week": [
          {
            "kind": "ranges",
            "ranges": [{ "end_minute": 960, "start_minute": 570 }],
            "weekday": "monday"
          },
          {
            "kind": "ranges",
            "ranges": [{ "end_minute": 960, "start_minute": 570 }],
            "weekday": "tuesday"
          },
          {
            "kind": "ranges",
            "ranges": [{ "end_minute": 960, "start_minute": 570 }],
            "weekday": "wednesday"
          },
          {
            "kind": "ranges",
            "ranges": [{ "end_minute": 960, "start_minute": 570 }],
            "weekday": "thursday"
          },
          {
            "kind": "ranges",
            "ranges": [{ "end_minute": 960, "start_minute": 570 }],
            "weekday": "friday"
          },
          {
            "kind": "closed",
            "ranges": [],
            "weekday": "saturday"
          },
          { "kind": "closed", "ranges": [], "weekday": "sunday" }
        ]
      },
      "feed": "feed-01m14btkssejctyrzpnxzga945",
      "id": "fsess-01m14btkssejgbsa622qp0w07k",
      "inherits": "msess-01m46040mpe4p95fmk1fs4aydn",
      "meta": { "recorded_at": "2026-10-02T15:15:57.535Z" },
      "min_publishers": 3
    }
  ],
  "state": "stable",
  "symbol": "Equity.US.AAPL/USD",
  "type": "feed",
  "unit": "asset",
  "visibility": "public",
  "asset_type": "equity",
  "base_asset": "asset-01m0a6sd8me54bsx692f90ws91",
  "description": "APPLE INC / US DOLLAR",
  "display_precision": 2,
  "exchange": "exch-01m14btkhqecd9xgb9ptp18cj1",
  "meta": { "recorded_at": "2026-10-02T15:15:57.535Z" },
  "min_channel": "fixed_rate@50ms",
  "quote_asset": "asset-01m14btkhresy9fe9afcf95sht",
  "source": "pyth",
  "spine": "equity.aapl.usd.57sc"
}

Path parameters

Replace the placeholders in the URL path with these values.

idstringRequired

The feed's ID, spine or numeric price feed ID (pyth_lazer_id), such as 922.

Query parameters

Add these parameters to the URL query string.

effectivestringOptional

Returns what was in effect at this instant, an RFC 3339 timestamp no later than now, using current knowledge. Feed records start in October 2026, so an earlier instant finds no feed. In a URL written by hand, write a + offset as %2B. Try it, and clients that encode query values such as Python's params, take + as is. Omit for the current state.

expandstringOptional

Relations to include in full instead of as IDs, comma-separated: base_asset, quote_asset, exchange.

Response

200 · application/json

Returns a JSON object with the following fields.

availability_patternstring[]

Futures month codes, F (January) to Z (December), in which the feed's futures chain is available, or none.

expiration_patternstring[]

Lowercase month names, jan to dec, in which the feed's futures chain expires, or none.

exponentinteger

Power of ten that scales the feed's values: decimal value = mantissa * 10^exponent.

groupsstring[]

Access groups the feed belongs to. Empty for feeds that do not require membership in an access group.

idstring

Permanent ID, such as feed-01m14btkssejctyrzpnxzga945.

identifiersobject[]

Every external identifier the feed carries.

schemestring

The identifier's scheme, such as hermes_id, nasdaq_symbol or cmc_id.

sessionsstring[]

The trading sessions the identifier applies to. Empty means every session.

  • regular
  • pre_market
  • post_market
  • over_night
  • unknown
valuestring

The identifier's value, such as AAPL.

record_idstring

ID of the identifier record behind this entry, where one exists.

instrument_typestring

The form of what the feed prices within its market, such as spot, future or index.

  • spot
  • future
  • perp
  • index
  • nav
  • rate
  • redemption_rate
  • twap
  • funding_rate
  • component
  • unknown
kindstring

What a feed publishes.

  • price
  • funding_rate
  • unknown
min_publishersinteger

Minimum number of publishers for the feed's sessions, unless a session sets its own.

namestring

Readable name of the feed.

price_adjustmentsobject[]

The price adjustments configured on the feed.

event_typestring

Corporate action event type.

  • split
  • reverse_split
  • cash_dividend
  • stock_dividend
  • spinoff
  • merger
  • ticker_change
  • delisting
  • rights_issue
  • unknown
ex_datestring

The ex-date the adjustment activates on, YYYY-MM-DD.

split_frominteger

Old share count: 1 for a 10-for-1 split, 10 for a 1-for-10 reverse split.

split_tointeger

New share count: 10 for a 10-for-1 split, 1 for a 1-for-10 reverse split.

pyth_lazer_idinteger

The feed's numeric ID in Pyth Price Feeds, as used in priceFeedIds.

sessionsobject[]

The feed's sessions, with their calendars.

session_typestring

Trading session type.

  • regular
  • pre_market
  • post_market
  • over_night
  • unknown
typestring

Always feed_session.

calendarobject

The session's resolved calendar, inheritance and overrides applied; absent where the session has no schedule.

exceptionsobject[]

Dated departures from the weekly pattern, such as a holiday or an early close.

kindstring

How a calendar day trades: open all day, closed, or open in the listed ranges.

  • open
  • closed
  • ranges
  • unknown
rangesobject[]

The open ranges, for kind: ranges.

end_minuteinteger

End of the open range, in minutes since local midnight. Exclusive.

start_minuteinteger

Start of the open range, in minutes since local midnight. Inclusive.

recurs_annuallyboolean

The exception applies on this month and day every year.

datestring

The venue-local date, YYYY-MM-DD. A recurring exception carries its next occurrence on or after the read's instant, so the date moves with effective.

labelstring

Readable label for the exception.

timezonestring

An IANA timezone name.

weekobject[]

The weekly pattern, one entry per weekday.

kindstring

How a calendar day trades: open all day, closed, or open in the listed ranges.

  • open
  • closed
  • ranges
  • unknown
rangesobject[]

The open ranges, for kind: ranges.

end_minuteinteger

End of the open range, in minutes since local midnight. Exclusive.

start_minuteinteger

Start of the open range, in minutes since local midnight. Inclusive.

weekdaystring

Day of the week.

  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
  • unknown
covered_throughstring

The last date the calendar is authored for, YYYY-MM-DD; absent when the pattern recurs indefinitely. Past it the calendar has no answer, which is not the same as closed.

feedstring | object

ID of the feed the session belongs to. Always an ID on these routes.

idstring

The session's id; absent where the session has no record of its own yet.

inheritsstring | object

ID of the exchange session template this session inherits from, where there is one.

metaobject

When the record, as served, last changed.

recorded_atstring

When the record last changed. A read pinned to an earlier effective instant reports the change behind what it shows, never a later one.

effective_atstring

The effective instant a single read was pinned to, echoed back; absent on an unpinned read. A list echoes it on its own meta.

min_publishersinteger

Minimum number of publishers for this session. Absent where the feed's min_publishers applies.

statestring

Feed lifecycle state.

  • coming_soon
  • stable
  • inactive
  • retired
  • expired
  • beta
  • unknown
symbolstring

Symbol, such as Equity.US.AAPL/USD. A symbol can change. The spine and the ID do not.

typestring

Always feed.

unitstring

Unit of the feed's value.

  • asset
  • percent
  • basis_points
  • ratio
  • points
  • unknown
visibilitystring

Who may see the feed.

  • public
  • restricted
  • internal
  • unlisted
  • unknown
asset_typestring

The market the feed's price comes from, such as equity, crypto, fx or commodity.

auction_datestring

For a feed that prices one dated debt security, such as a US Treasury bill, note or bond: the day it was sold at auction, YYYY-MM-DD.

base_assetstring | object

ID of the asset the feed prices. Corporate actions belong to this asset. Absent where the feed has no linked asset, as on non-equity feeds and some equity feeds. With expand=base_asset, the full asset, as Get an asset returns it.

derivation_typestring

For a feed derived from other feeds, how its value is derived, such as twap or ema.

descriptionstring

Readable description of the feed.

display_precisioninteger

Decimal places to round prices to for display. A negative value rounds left of the decimal point: -2 rounds to hundreds. Absent where the precision follows from exponent.

exchangestring | object

ID of the feed's exchange, where one is linked. With expand=exchange, the full exchange: id, lazer_exchange_id, name, asset_class, timezone, status, its session templates in sessions, and meta.

expires_atstring

When the instrument expires, for dated instruments.

interval_usinteger

The update cadence in microseconds, for feeds that have one (funding rates).

issue_datestring

The day that security was issued, YYYY-MM-DD.

maturity_datestring

The day that security matures, YYYY-MM-DD. This is the security's maturity, not the end of the feed (expires_at).

metaobject

When the record, as served, last changed.

recorded_atstring

When the record last changed. A read pinned to an earlier effective instant reports the change behind what it shows, never a later one.

effective_atstring

The effective instant a single read was pinned to, echoed back; absent on an unpinned read. A list echoes it on its own meta.

min_channelstring

Fastest update channel the feed supports, such as real_time or fixed_rate@200ms.

qualifierstring

A disambiguating qualifier for feeds that share a spine stem.

quote_assetstring | object

ID of the asset the price is quoted in, where one is linked. With expand=quote_asset, the full asset, as Get an asset returns it.

sourcestring

The feed's data source, such as pyth.

spinestring

Permanent readable handle, such as equity.aapl.usd.57sc, never reused. Works anywhere an ID does. Absent until one is issued.

symbol_chain_idstring

The futures chain this feed belongs to, e.g. VX.

Errors

Status codes returned when a request fails.

400
A parameter, ID or spine is malformed or names another kind of resource, effective is in the future, a query parameter is unknown (parameter_invalid), the Pyth-Version value is not served (version_unsupported), or the Authorization header is empty or not a bearer credential (credential_malformed).
401
The credential is missing or not recognized (credential_missing, credential_unknown).
403
The access token is expired or not valid (credential_rejected), or the credential does not grant access to this data.
404
No feed matches the ID, spine or price feed ID, or no feed was in effect at the effective instant (resource_missing).
429
Rate limit exceeded.
503
The service is temporarily unavailable.