Get a feed
API version2026-09-29https://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.
v3/intelligence/feeds/{id}curl "https://pyth.dourolabs.app/v3/intelligence/feeds/922" \
-H "Authorization: Bearer $PYTH_API_KEY" \
-H "Pyth-Version: 2026-09-29"{
"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"
}Replace the placeholders in the URL path with these values.
idstringRequiredThe feed's ID, spine or numeric price feed ID (pyth_lazer_id), such as 922.
Add these parameters to the URL query string.
effectivestringOptionalReturns 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.
expandstringOptionalRelations to include in full instead of as IDs, comma-separated: base_asset, quote_asset, exchange.
Response
200 · application/jsonReturns 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.
exponentintegerPower 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.
idstringPermanent ID, such as feed-01m14btkssejctyrzpnxzga945.
identifiersobject[]Every external identifier the feed carries.
schemestringThe 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
valuestringThe identifier's value, such as AAPL.
record_idstringID of the identifier record behind this entry, where one exists.
instrument_typestringThe 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
kindstringWhat a feed publishes.
- price
- funding_rate
- unknown
min_publishersintegerMinimum number of publishers for the feed's sessions, unless a session sets its own.
namestringReadable name of the feed.
price_adjustmentsobject[]The price adjustments configured on the feed.
event_typestringCorporate action event type.
- split
- reverse_split
- cash_dividend
- stock_dividend
- spinoff
- merger
- ticker_change
- delisting
- rights_issue
- unknown
ex_datestringThe ex-date the adjustment activates on, YYYY-MM-DD.
split_fromintegerOld share count: 1 for a 10-for-1 split, 10 for a 1-for-10 reverse split.
split_tointegerNew share count: 10 for a 10-for-1 split, 1 for a 1-for-10 reverse split.
pyth_lazer_idintegerThe feed's numeric ID in Pyth Price Feeds, as used in priceFeedIds.
sessionsobject[]The feed's sessions, with their calendars.
session_typestringTrading session type.
- regular
- pre_market
- post_market
- over_night
- unknown
typestringAlways feed_session.
calendarobjectThe 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.
kindstringHow 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_minuteintegerEnd of the open range, in minutes since local midnight. Exclusive.
start_minuteintegerStart of the open range, in minutes since local midnight. Inclusive.
recurs_annuallybooleanThe exception applies on this month and day every year.
datestringThe 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.
labelstringReadable label for the exception.
timezonestringAn IANA timezone name.
weekobject[]The weekly pattern, one entry per weekday.
kindstringHow 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_minuteintegerEnd of the open range, in minutes since local midnight. Exclusive.
start_minuteintegerStart of the open range, in minutes since local midnight. Inclusive.
weekdaystringDay of the week.
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
- unknown
covered_throughstringThe 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 | objectID of the feed the session belongs to. Always an ID on these routes.
idstringThe session's id; absent where the session has no record of its own yet.
inheritsstring | objectID of the exchange session template this session inherits from, where there is one.
metaobjectWhen the record, as served, last changed.
recorded_atstringWhen the record last changed. A read pinned to an earlier effective instant reports the change behind what it shows, never a later one.
effective_atstringThe effective instant a single read was pinned to, echoed back; absent on an unpinned read. A list echoes it on its own meta.
min_publishersintegerMinimum number of publishers for this session. Absent where the feed's min_publishers applies.
statestringFeed lifecycle state.
- coming_soon
- stable
- inactive
- retired
- expired
- beta
- unknown
symbolstringSymbol, such as Equity.US.AAPL/USD. A symbol can change. The spine and the ID do not.
typestringAlways feed.
unitstringUnit of the feed's value.
- asset
- percent
- basis_points
- ratio
- points
- unknown
visibilitystringWho may see the feed.
- public
- restricted
- internal
- unlisted
- unknown
asset_typestringThe market the feed's price comes from, such as equity, crypto, fx or commodity.
auction_datestringFor 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 | objectID 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_typestringFor a feed derived from other feeds, how its value is derived, such as twap or ema.
descriptionstringReadable description of the feed.
display_precisionintegerDecimal 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 | objectID 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_atstringWhen the instrument expires, for dated instruments.
interval_usintegerThe update cadence in microseconds, for feeds that have one (funding rates).
issue_datestringThe day that security was issued, YYYY-MM-DD.
maturity_datestringThe day that security matures, YYYY-MM-DD. This is the security's maturity, not the end of the feed (expires_at).
metaobjectWhen the record, as served, last changed.
recorded_atstringWhen the record last changed. A read pinned to an earlier effective instant reports the change behind what it shows, never a later one.
effective_atstringThe effective instant a single read was pinned to, echoed back; absent on an unpinned read. A list echoes it on its own meta.
min_channelstringFastest update channel the feed supports, such as real_time or fixed_rate@200ms.
qualifierstringA disambiguating qualifier for feeds that share a spine stem.
quote_assetstring | objectID 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.
sourcestringThe feed's data source, such as pyth.
spinestringPermanent readable handle, such as equity.aapl.usd.57sc, never reused. Works anywhere an ID does. Absent until one is issued.
symbol_chain_idstringThe futures chain this feed belongs to, e.g. VX.
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.