Pyth Pro: Update to price `payload` in API Responses

Hey everyone,

We’re making changes to the price field in Pyth Pro API response payloads. Here’s what you need to know.

What’s Changing

1. New field: feedUpdateTimestamp

We’re introducing feedUpdateTimestamp — a feed-level timestamp that represents the exact time the returned price was last produced. Use this to determine how fresh the price data is. The existing global timestamp (timestampUs) remains unchanged and continues to function separately.

2. price will no longer return null when there’s no aggregate

Previously, if an aggregate couldn’t be produced (e.g. the market is closed, or there aren’t enough publishers), price would return null. Going forward, we’ll return the latest available price instead — meaning the price value stays the same as before the gap.

To check whether the price is current, use feedUpdateTimestamp.

Note: For brand-new feeds that have never received a valid price, null can still be returned. Once a feed receives its first valid price, the price field is expected to remain non-null from that point on.

What You Should Do

  • Stop relying on price = null as a signal. If your integration checks for null prices to detect stale data or market closures, update that logic.

  • Use feedUpdateTimestamp to determine how recent the returned price is and build your staleness checks around it.

Example Response

json

{
  "type": "streamUpdated",
  "subscriptionId": 1,
  "parsed": {
    "timestampUs": "1758690761750000",
    "priceFeeds": [
      {
        "priceFeedId": 1,
        "price": "11223872331053",
        "bestBidPrice": "11222498842767",
        "bestAskPrice": "11224513591935",
        "publisherCount": 9,
        "exponent": -8,
        "confidence": 1373488286,
        "marketSession": "regular",
        "feedUpdateTimestamp": 1758690761740000
      }
    ]
  },
  "evm": {
    "encoding": "base64",
    "data": "0x..."
  }
}

Quick summary of the fields:

Field What it represents
price Latest available price (no longer null when aggregate unavailable)
feedUpdateTimestamp When this specific price was last produced (feed-level freshness)
timestampUs Global event timestamp (unchanged)

Ensure your systems are compatible before March 15, 2026. The feedUpdateTimestamp field is already live and you can start relying on this. The change on the price behaviour comes to effect end of month.

If you have questions or run into issues during migration, drop them in this thread and we’ll help you out.