Get signed prices at a timestamp
https://pyth-lazer.dourolabs.app/v1/priceAn API key or short-lived access token, in an Authorization: Bearer <token> header.
Returns a price update for the requested feeds at an exact timestamp. Select a signed payload format to use the update for verification.
Specify the timestamp in Unix microseconds. For fixed-rate channels, the timestamp must align with the channel interval. For example, a 200 ms channel requires a timestamp divisible by 200,000 microseconds. If no update matches, the endpoint returns HTTP 404.
Without a signature: Get prices at a timestamp →
v1/pricecurl "https://pyth-lazer.dourolabs.app/v1/price" \
-H "Authorization: Bearer $PYTH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel": "fixed_rate@200ms",
"formats": ["evm"],
"properties": ["price", "bestBidPrice", "bestAskPrice", "exponent"],
"timestamp": 1758830400000000,
"priceFeedIds": [1, 2],
"jsonBinaryEncoding": "hex",
"parsed": true
}'{
"parsed": {
"priceFeeds": [
{
"priceFeedId": 1,
"bestAskPrice": "11294045000000",
"bestBidPrice": "11293998000000",
"exponent": -8,
"price": "11294021500000"
},
{
"priceFeedId": 2,
"bestAskPrice": "418737500000",
"bestBidPrice": "418730000000",
"exponent": -8,
"price": "418733750000"
}
],
"timestampUs": "1758830400000000"
},
"evm": {
"data": "2a22999a0000000000000000c0e3a4b7…",
"encoding": "hex"
}
}Request body
application/jsonSend a JSON object with these fields.
channelRequiredThe channel that determines the update frequency.
- real_time
- fixed_rate@50ms
- fixed_rate@200ms
- fixed_rate@1000ms
formatsRequiredPayload formats to include in each update, with no duplicates. An empty array requests no binary payloads. With a payload format, a request can include at most 255 feeds.
- evm
- solana
- leEcdsa
- leUnsigned
propertiesRequiredFeed properties to include in each update. Specify at least one property. Duplicate values are not allowed.
- price
- bestBidPrice
- bestAskPrice
- publisherCount
- exponent
- confidence
- fundingRate
- fundingTimestamp
- fundingRateInterval
- marketSession
- emaPrice
- emaConfidence
- feedUpdateTimestamp
timestampintegerRequiredThe exact update timestamp, in Unix microseconds. If no update matches, the endpoint returns HTTP 404.
Provide either priceFeedIds or symbols, but not both. Use numeric IDs, such as 1 for BTC/USD, or symbols, such as Crypto.BTC/USD. The array must contain at least one entry and no duplicates.
Select feeds by pyth_lazer_id in priceFeedIds, not by symbol. Feed symbols can change when we correct symbology, and a symbol may later point to a different asset. A pyth_lazer_id never changes.
priceFeedIdsinteger[] | nullsymbolsstring[] | nulljsonBinaryEncodingstringDefault base64Encoding to use for binary payloads in JSON responses.
- base64default
- hex
parsedbooleanDefault trueIf true, includes decoded update values in the parsed response field.
Response
200 · application/jsonReturns a JSON object with the following fields.
parsedobjectDecoded feed values for this update. Omitted when the request sets parsed to false.
priceFeedsobject[]Feed values included in this update.
priceFeedIdintegerNumeric ID of the price feed.
bestAskPricestringBest ask price, before applying exponent. Included for price feeds when requested in properties and a value is available.
bestBidPricestringBest bid price, before applying exponent. Included for price feeds when requested in properties and a value is available.
exponentintegerPower of ten that scales the decimal fields: decimal value = mantissa * 10^exponent. Included when requested in properties.
pricestringPrice, before applying exponent. On funding-rate feeds, the funding price. Included when requested in properties and a value is available.
confidenceintegerConfidence interval of the price, before applying exponent. Included for price feeds when requested in properties and a value is available.
emaConfidenceintegerExponential moving average of the confidence interval, before applying exponent. Included for price feeds when requested in properties and a value is available.
emaPricestringExponential moving average of the price, before applying exponent. Included for price feeds when requested in properties and a value is available.
Show 6 moreShow fewer
feedUpdateTimestampintegerFeed update timestamp, in Unix microseconds. Included when requested in properties.
fundingRateintegerPerpetual futures funding rate, before applying exponent. Included for funding-rate feeds when requested in properties and a value is available.
fundingRateIntervalintegerTime between funding rate updates, in microseconds. Included for funding-rate feeds that define an interval, when requested in properties.
fundingTimestampintegerTimestamp of the latest funding rate, in Unix microseconds. Included for funding-rate feeds when requested in properties and a value is available.
marketSessionstringMarket session of the feed update. Included when requested in properties.
- regular
- preMarket
- postMarket
- overNight
- closed
publisherCountintegerNumber of publishers contributing to the update. Included when requested in properties.
timestampUsstringThe update timestamp, in Unix microseconds.
evmleEcdsaleUnsignedsolanaobjectEach payload contains encoding and data. The evm, solana, and leEcdsa payloads include signatures. The leUnsigned payload does not include a signature.
datastringBinary payload encoded using the format specified by encoding.
encodingstringThe encoding of data.
- base64
- hex
Status codes returned when a request fails.
- 400
- The request is invalid. Possible causes include an invalid body, an unknown symbol, an unsupported channel for a feed, or more than 255 feeds when requesting a payload format.
- 401
- The API key or access token is invalid.
- 403
- Authentication is missing, the credentials do not grant access to a requested feed or channel, or a requested feed ID does not exist.
- 404
- No update matches the timestamp for these feeds.
- 429
- The request rate limit for this API key was exceeded.
- 503
- Historical price retrieval is unavailable on this deployment.