Get API key
On-chain updates

Get signed prices at a timestamp

posthttps://pyth-lazer.dourolabs.app/v1/price

An 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 →

postv1/price
curl "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
  }'
Response
{
  "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/json

Send a JSON object with these fields.

channelRequired

The channel that determines the update frequency.

  • real_time
  • fixed_rate@50ms
  • fixed_rate@200ms
  • fixed_rate@1000ms
formatsRequired

Payload 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
propertiesRequired

Feed 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
timestampintegerRequired

The exact update timestamp, in Unix microseconds. If no update matches, the endpoint returns HTTP 404.

Feedsone of the 2Required

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[] | null
symbolsstring[] | null
jsonBinaryEncodingstringDefault base64

Encoding to use for binary payloads in JSON responses.

  • base64default
  • hex
parsedbooleanDefault true

If true, includes decoded update values in the parsed response field.

Response

200 · application/json

Returns a JSON object with the following fields.

parsedobject

Decoded feed values for this update. Omitted when the request sets parsed to false.

priceFeedsobject[]

Feed values included in this update.

priceFeedIdinteger

Numeric ID of the price feed.

bestAskPricestring

Best ask price, before applying exponent. Included for price feeds when requested in properties and a value is available.

bestBidPricestring

Best bid price, before applying exponent. Included for price feeds when requested in properties and a value is available.

exponentinteger

Power of ten that scales the decimal fields: decimal value = mantissa * 10^exponent. Included when requested in properties.

pricestring

Price, before applying exponent. On funding-rate feeds, the funding price. Included when requested in properties and a value is available.

confidenceinteger

Confidence interval of the price, before applying exponent. Included for price feeds when requested in properties and a value is available.

emaConfidenceinteger

Exponential moving average of the confidence interval, before applying exponent. Included for price feeds when requested in properties and a value is available.

emaPricestring

Exponential moving average of the price, before applying exponent. Included for price feeds when requested in properties and a value is available.

Show 6 more
feedUpdateTimestampinteger

Feed update timestamp, in Unix microseconds. Included when requested in properties.

fundingRateinteger

Perpetual futures funding rate, before applying exponent. Included for funding-rate feeds when requested in properties and a value is available.

fundingRateIntervalinteger

Time between funding rate updates, in microseconds. Included for funding-rate feeds that define an interval, when requested in properties.

fundingTimestampinteger

Timestamp of the latest funding rate, in Unix microseconds. Included for funding-rate feeds when requested in properties and a value is available.

marketSessionstring

Market session of the feed update. Included when requested in properties.

  • regular
  • preMarket
  • postMarket
  • overNight
  • closed
publisherCountinteger

Number of publishers contributing to the update. Included when requested in properties.

timestampUsstring

The update timestamp, in Unix microseconds.

evmleEcdsaleUnsignedsolanaobject

Each payload contains encoding and data. The evm, solana, and leEcdsa payloads include signatures. The leUnsigned payload does not include a signature.

datastring

Binary payload encoded using the format specified by encoding.

encodingstring

The encoding of data.

  • base64
  • hex

Errors

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.