Get prices at a timestamp
https://pyth.dourolabs.app/v1/{channel}/priceAn API key or short-lived access token, in an Authorization: Bearer <token> header.
Returns prices for the requested feeds at an exact timestamp, without signed payloads.
Specify the timestamp in Unix microseconds. For fixed-rate channels, the timestamp must align with the channel interval. If no update matches, the endpoint returns an empty array.
For on-chain verification: Get signed prices at a timestamp →
v1/{channel}/pricecurl "https://pyth.dourolabs.app/v1/real_time/price?ids=1&ids=2×tamp=1758830400000000" \
-H "Authorization: Bearer $PYTH_API_KEY"[
{
"channel": 1,
"channel_name": "real_time",
"price_feed_id": 1,
"publish_time": 1684137600000000,
"best_ask_price": 101,
"best_bid_price": 99,
"confidence": 100,
"ema_confidence": 100,
"ema_price": 100,
"exponent": -8,
"feed_update_timestamp": 1684137600000000,
"funding_rate": 100,
"funding_rate_interval": null,
"funding_timestamp": 1684137600000000,
"market_session": "regular",
"price": 100,
"publisher_count": 1
}
]Replace the placeholders in the URL path with these values.
channelRequiredThe channel that determines the update frequency.
Add these parameters to the URL query string.
idsinteger[]RequiredIDs of the price feeds to retrieve.
timestampstringRequiredThe exact timestamp to retrieve, in Unix microseconds.
split_adjustedbooleanOptionalScale prices published before a stock split into post-split terms. Defaults to false.
Response
200 · application/jsonReturns a JSON array. Each item contains the following fields.
channelintegerNumeric ID of the update channel.
channel_nameName of the update channel.
- real_time
- fixed_rate@50ms
- fixed_rate@200ms
- fixed_rate@1000ms
price_feed_idintegerNumeric ID of the price feed.
publish_timeintegerPublication timestamp of the update, in Unix microseconds.
best_ask_priceinteger | nullBest ask price, before applying exponent.
best_bid_priceinteger | nullBest bid price, before applying exponent.
confidenceinteger | nullConfidence interval of the price, before applying exponent.
ema_confidenceinteger | nullExponential moving average of the confidence interval, before applying exponent.
ema_priceinteger | nullExponential moving average of the price, before applying exponent.
exponentinteger | nullPower of ten that scales the decimal fields: decimal value = mantissa * 10^exponent.
feed_update_timestampinteger | nullFeed update timestamp, in Unix microseconds.
funding_rateinteger | nullPerpetual futures funding rate, before applying exponent.
funding_rate_intervalinteger | nullTime between funding rate updates, in microseconds.
funding_timestampinteger | nullTimestamp of the latest funding rate, in Unix microseconds.
market_sessionstring | nullMarket session of the feed update.
- regular
- preMarket
- postMarket
- overNight
- closed
priceinteger | nullPrice, before applying exponent. On funding-rate feeds, the funding price.
publisher_countinteger | nullNumber of publishers contributing to the update.
Status codes returned when a request fails.
- 400
- A requested price feed is not ready, or is unavailable on this channel.
- 401
- Authentication is missing.
- 403
- The credentials do not grant access to a requested price feed.
- 404
- A requested price feed does not exist, or is not visible to these credentials.
- 429
- The request rate limit for this API key was exceeded.