diff --git a/apps/developer-hub/content/docs/price-feeds/core/best-practices.mdx b/apps/developer-hub/content/docs/price-feeds/core/best-practices.mdx
index ed18dc9571..877212afc8 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/best-practices.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/best-practices.mdx
@@ -7,6 +7,8 @@ slug: /price-feeds/core/best-practices
This page provides some technical details about Pyth price feeds that are necessary to use them safely and correctly.
Please read this page before using Pyth price feeds in your application.
+
+
## Fixed-Point Numeric Representation
Price feeds represent numbers in a fixed-point format. The same exponent is used for both the price and confidence interval. The integer representation of these values can be computed by multiplying by `10^exponent`. As an example, imagine Pyth reported the following values for AAPL/USD:
@@ -64,7 +66,7 @@ Derivative protocols are encouraged to consider the following strategies to miti
1. **Use Delayed Settlement**: Derivative protocols can introduce a delay between the time an order is created and the time it is executed. This delay gives the protocol time to observe price changes and reject trades/transactions that profit over latency.
Suppose a user submits a trade transaction at a time `t`. The protocol should execute the trade by using the price at the time `t`, which will be available to the protocol after a short delay.
- The protocol can fetch this price update of a specific timestamp from [Hermes](https://hermes.pyth.network/docs/#/rest/timestamp_price_updates) and can use [`parsePriceFeedUpdates()`](https://api-reference.pyth.network/price-feeds/evm/parsePriceFeedUpdates) to parse the prices and submit to prevent price frontrunning.
+ The protocol can fetch this price update of a specific timestamp from [Hermes](https://pyth.dourolabs.app/hermes/docs/#/rest/timestamp_price_updates) and can use [`parsePriceFeedUpdates()`](https://api-reference.pyth.network/price-feeds/evm/parsePriceFeedUpdates) to parse the prices and submit to prevent price frontrunning.
1. **Use a Spread**: Pyth provides a confidence interval for each price update. Derivative protocols can use this confidence interval to determine the range in which the true price probably lies.
By using the lower bound of the confidence interval, derivative protocols can protect themselves from price manipulation that drives the price down. By using the upper bound of the confidence interval, derivative protocols can protect themselves from price manipulation that drives the price up.
@@ -89,7 +91,7 @@ Protocols offering executable prices are encouraged to consider the following ri
1. **Staleness in Executable Prices**: Adversaries may see price updates before your protocol does, or they may select favorable historical price updates that satisfy staleness constraints.
This latency advantage allows sophisticated traders to exploit price differences.
**Use `getPriceNoOlderThan()` with strict staleness thresholds** when filling orders.
- For delayed execution models, fetch the price at the order timestamp from [Hermes](https://hermes.pyth.network/docs/#/rest/timestamp_price_updates) and parse it using [`parsePriceFeedUpdates()`](https://api-reference.pyth.network/price-feeds/evm/parsePriceFeedUpdates).
+ For delayed execution models, fetch the price at the order timestamp from [Hermes](https://pyth.dourolabs.app/hermes/docs/#/rest/timestamp_price_updates) and parse it using [`parsePriceFeedUpdates()`](https://api-reference.pyth.network/price-feeds/evm/parsePriceFeedUpdates).
1. **High Volatility and Wide Confidence Intervals**: During periods of high volatility, large price moves widen confidence intervals and can cause significant slippage relative to your executable quote.
The executable price you quote may not reflect the true market price when confidence intervals are wide.
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/aptos.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/aptos.mdx
index bcf083e558..f9906f9d7d 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/aptos.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/aptos.mdx
@@ -8,6 +8,8 @@ import CopyAddress from "../../../../../src/components/CopyAddress";
Pyth is currently deployed on Aptos Mainnet, Aptos Testnet, and Movement devnet.
+
+
When deploying contracts using Pyth, the [named addresses](https://diem.github.io/move/address.html#named-addresses) `pyth`, `wormhole` and `deployer` need to be defined at compile time. These addresses are the same across both Aptos Mainnet and Testnet:
| Named Address | Value |
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/cosmwasm.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/cosmwasm.mdx
index d4f8f5ec24..33afcdddfb 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/cosmwasm.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/cosmwasm.mdx
@@ -6,6 +6,8 @@ slug: /price-feeds/core/contract-addresses/cosmwasm
Pyth is currently available on the following cosmwasm chains:
+
+
### Stable
| Network | Contract address |
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/evm.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/evm.mdx
index 90bd36333b..087ae349a9 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/evm.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/evm.mdx
@@ -8,6 +8,8 @@ import CopyAddress from "../../../../../src/components/CopyAddress";
Pyth is currently available on the EVM networks below using Pyth Stable price sources that are accessible via Hermes Stable.
+
+
## Mainnets
| Network | Contract address |
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/fuel.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/fuel.mdx
index 529012c599..f30ddaaa96 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/fuel.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/fuel.mdx
@@ -8,6 +8,8 @@ import CopyAddress from "../../../../../src/components/CopyAddress";
Pyth is currently deployed on Fuel Mainnet and Fuel Testnet.
+
+
| Network | Contract address |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Fuel Mainnet | |
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/index.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/index.mdx
index 4ed85ac495..1837df41dc 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/index.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/index.mdx
@@ -7,6 +7,8 @@ slug: /price-feeds/core/contract-addresses
The following sections list the addresses of deployed Pyth Price Feed contracts across blockchains.
The contracts are split by ecosystem into several different documents:
+
+
- [EVM](/price-feeds/core/contract-addresses/evm)
- [Solana/SVM](/price-feeds/core/contract-addresses/solana)
- [Aptos](/price-feeds/core/contract-addresses/aptos)
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/iota.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/iota.mdx
index 8c1d5c24fd..a4f1214ab5 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/iota.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/iota.mdx
@@ -6,6 +6,8 @@ slug: /price-feeds/core/contract-addresses/iota
Pyth is currently deployed on IOTA mainnet and testnet.
+
+
#### IOTA mainnet
| Name | Address |
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/movement.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/movement.mdx
index 9cd6e24c79..b561f4e719 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/movement.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/movement.mdx
@@ -6,6 +6,8 @@ slug: /price-feeds/core/contract-addresses/movement
import CopyAddress from "../../../../../src/components/CopyAddress";
+
+
## Mainnet
Use the following addresses for the Movement Mainnet and testnets:
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/near.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/near.mdx
index b506ce95fe..49df88900e 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/near.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/near.mdx
@@ -4,6 +4,8 @@ description: List of Pyth price feed contract addresses on NEAR networks
slug: /price-feeds/core/contract-addresses/near
---
+
+
| Network | Contract address |
| ------------ | --------------------- |
| NEAR Mainnet | `pyth-oracle.near` |
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/solana.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/solana.mdx
index a9229c7a4e..7315c7594a 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/solana.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/solana.mdx
@@ -8,6 +8,8 @@ import CopyAddress from "../../../../../src/components/CopyAddress";
The Pyth Oracle consists of two different programs.
+
+
The **Solana receiver program** is deployed at the following addresses:
| Network | Program address |
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/starknet.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/starknet.mdx
index d31127184c..9dfb659604 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/starknet.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/starknet.mdx
@@ -8,6 +8,8 @@ import CopyAddress from "../../../../../src/components/CopyAddress";
Pyth is deployed on both Starknet Mainnet and Testnet.
+
+
| Network | Contract address |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Starknet Mainnet | |
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/sui.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/sui.mdx
index 028a2cf0a8..185917021c 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/sui.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/sui.mdx
@@ -6,6 +6,8 @@ slug: /price-feeds/core/contract-addresses/sui
Pyth is currently available on the following sui-based chains:
+
+
### Stable channel
#### Sui Mainnet
diff --git a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/ton.mdx b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/ton.mdx
index 236033d10a..9b0f11dad3 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/ton.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/contract-addresses/ton.mdx
@@ -8,6 +8,8 @@ import CopyAddress from "../../../../../src/components/CopyAddress";
Pyth is currently deployed on TON Mainnet and TON Testnet. If you are using the deprecated TON Mainnet deployment, please migrate to the new address.
+
+
| Network | Contract address |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| TON Mainnet (deprecated) | |
diff --git a/apps/developer-hub/content/docs/price-feeds/core/create-your-first-pyth-app/evm/part-2.mdx b/apps/developer-hub/content/docs/price-feeds/core/create-your-first-pyth-app/evm/part-2.mdx
index 5b35c88e69..396adea7bb 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/create-your-first-pyth-app/evm/part-2.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/create-your-first-pyth-app/evm/part-2.mdx
@@ -20,6 +20,8 @@ This part of the tutorial will conver the following:
before continuing.
+
+
## Deploy the contract
Now, let's deploy the contract to a test network.
@@ -99,10 +101,26 @@ Let's try out the deployed contract.
In order to do so, we will need to get a price update to pass to the `updateAndMint` function.
We can fetch this update from Hermes:
+
+
+
+```bash copy
+curl -s -H "Authorization: Bearer $PYTH_API_KEY" \
+ "https://pyth.dourolabs.app/hermes/v2/updates/price/latest?&ids[]=$ETH_USD_ID" | jq -r ".binary.data[0]" > price_update.txt
+```
+
+
+
+
```bash copy
-curl -s "https://hermes.pyth.network/v2/updates/price/latest?&ids[]=$ETH_USD_ID" | jq -r ".binary.data[0]" > price_update.txt
+# Authentication becomes required on July 31, 2026.
+curl -s -H "Authorization: Bearer $PYTH_API_KEY" \
+ "https://hermes.pyth.network/v2/updates/price/latest?&ids[]=$ETH_USD_ID" | jq -r ".binary.data[0]" > price_update.txt
```
+
+
+
This command will fetch a fresh price update from Hermes and save it in the file `price_update.txt`.
The update is a binary payload represented as a hexadecimal string.
@@ -242,7 +260,9 @@ async function run() {
client,
});
- const connection = new HermesClient("https://hermes.pyth.network");
+ const connection = new HermesClient("https://pyth.dourolabs.app/hermes", {
+ accessToken: process.env.PYTH_API_KEY,
+ });
const priceIds = [process.env["ETH_USD_ID"] as string];
const priceFeedUpdateData = await connection.getLatestPriceUpdates(priceIds);
console.log("Retrieved Pyth price update:");
diff --git a/apps/developer-hub/content/docs/price-feeds/core/fetch-price-updates.mdx b/apps/developer-hub/content/docs/price-feeds/core/fetch-price-updates.mdx
index c6767634a0..9650621dca 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/fetch-price-updates.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/fetch-price-updates.mdx
@@ -15,6 +15,8 @@ The following guide explains how to fetch price updates.
Price updates can be submitted to the Pyth Price Feeds contract to update the on-chain price.
Please see [What is a Pull Oracle?](/price-feeds/core/pull-updates) to learn more.
+
+
Price updates are served from [Hermes](/price-feeds/core/how-pyth-works/hermes), which
provides three different ways to fetch price updates:
@@ -36,11 +38,28 @@ Use the `/v2/updates/price/latest` endpoint to fetch the latest price update for
This endpoint allows you to fetch the latest price updates for multiple feeds in a single request.
For example, the following command retrieves the latest price updates for BTC/USD and ETH/USD:
+
+
+
+```bash copy
+curl -X 'GET' \
+ -H "Authorization: Bearer $PYTH_API_KEY" \
+ 'https://pyth.dourolabs.app/hermes/v2/updates/price/latest?ids%5B%5D=0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43&ids%5B%5D=0xc96458d393fe9deb7a7d63a0ac41e2898a67a7750dbd166673279e06c868df0a'
+```
+
+
+
+
```bash copy
+# Authentication becomes required on July 31, 2026.
curl -X 'GET' \
+ -H "Authorization: Bearer $PYTH_API_KEY" \
'https://hermes.pyth.network/v2/updates/price/latest?ids%5B%5D=0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43&ids%5B%5D=0xc96458d393fe9deb7a7d63a0ac41e2898a67a7750dbd166673279e06c868df0a'
```
+
+
+
The output will be similar to the following containing the requested price update:
```bash
@@ -96,7 +115,7 @@ The output will be similar to the following containing the requested price updat
}
```
-Hermes offers several other endpoints for retrieving price updates. For more information, see the [Hermes API Reference](https://hermes.pyth.network/docs/#/).
+Hermes offers several other endpoints for retrieving price updates. For more information, see the [Hermes API Reference](https://pyth.dourolabs.app/hermes/docs/#/).
## Streaming
@@ -108,7 +127,8 @@ The connection will automatically close after 24 hours to prevent resource leaks
For example, to stream price updates for BTC/USD, run:
```bash copy
-curl -N 'https://hermes.pyth.network/v2/updates/price/stream?ids[]=0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43'
+curl -N -H "Authorization: Bearer $PYTH_API_KEY" \
+ 'https://pyth.dourolabs.app/hermes/v2/updates/price/stream?ids[]=0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43'
```
The output is a stream of events containing the requested price updates, similar to the following:
@@ -125,7 +145,9 @@ Pyth provides a typescript SDK for Hermes to fetch price updates.
The [`HermesClient`](https://github.com/pyth-network/pyth-crosschain/blob/main/apps/hermes/client/js/src/HermesClient.ts#L41) class in this [SDK](https://github.com/pyth-network/pyth-crosschain/tree/main/apps/hermes/client/js) connects to Hermes to fetch and stream price updates.
```typescript copy
-const connection = new HermesClient("https://hermes.pyth.network", {});
+const connection = new HermesClient("https://pyth.dourolabs.app/hermes", {
+ accessToken: process.env.PYTH_API_KEY,
+});
const priceIds = [
// You can find the ids of prices at https://docs.pyth.network/price-feeds/price-feeds
diff --git a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/aptos.mdx b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/aptos.mdx
index 27f11e5b35..45b2191541 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/aptos.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/aptos.mdx
@@ -8,6 +8,8 @@ import { Callout } from "fumadocs-ui/components/callout";
This guide explains how to use real-time Pyth data in Aptos applications.
+
+
## Configuring the `Move.toml` file
Add the Pyth Contract to your project dependencies in the `Move.toml` file:
diff --git a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/cosmwasm.mdx b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/cosmwasm.mdx
index baccef1698..208fb1bc5f 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/cosmwasm.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/cosmwasm.mdx
@@ -7,6 +7,8 @@ slug: /price-feeds/core/use-real-time-data/pull-integration/cosmwasm
Cosmwasm contracts can update and fetch the Pyth prices using the Pyth Cosmwasm Contract, deployed on their network.
The documented source code can be found [here](https://github.com/pyth-network/pyth-crosschain/tree/main/target_chains/cosmwasm/contracts/pyth).
+
+
## Update Price Feeds
The mechanism by which price feeds are updated on Cosmwasm is explained [here](../../pull-updates). The [@pythnetwork/price-service-client](https://github.com/pyth-network/pyth-crosschain/tree/main/price_service/client/js) typescript package can be used to fetch the latest price feed data which then can be passed to the contract as the `UpdatePriceFeeds` ExecuteMsg.
diff --git a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/fuel.mdx b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/fuel.mdx
index 65c8a9e8ae..f7d0b7eb0e 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/fuel.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/fuel.mdx
@@ -9,6 +9,8 @@ import { Tab, Tabs } from "fumadocs-ui/components/tabs";
This guide explains how to use real-time Pyth data in Fuel contracts.
+
+
## Install the Pyth SDK
Use the following dependency in your `Forc.toml` file to use the latest Pyth Fuel package:
diff --git a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/iota.mdx b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/iota.mdx
index d8a97dd771..7e2a7027e9 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/iota.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/iota.mdx
@@ -9,6 +9,8 @@ import { Tab, Tabs } from "fumadocs-ui/components/tabs";
This guide explains how to use real-time Pyth data in IOTA applications.
+
+
## Install Pyth SDK
Use the following dependency in your `Move.toml` file to use the latest Pyth IOTA package and its dependencies:
diff --git a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/near.mdx b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/near.mdx
index 03f625b84b..8a075f94c4 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/near.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/near.mdx
@@ -4,6 +4,8 @@ description: Consume Pyth Network prices in Near applications
slug: /price-feeds/core/use-real-time-data/pull-integration/near
---
+
+
## Pyth on NEAR
Pyth price feeds on NEAR are managed through the main NEAR Pyth smart
diff --git a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/solana.mdx b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/solana.mdx
index 965b4f80ae..3a8a9960e3 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/solana.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/solana.mdx
@@ -8,6 +8,8 @@ import { Callout } from "fumadocs-ui/components/callout";
This guide explains how to use real-time Pyth data in Solana applications.
+
+
## Install Pyth SDKs
Pyth provides two SDKs for Solana applications to cover the on- and off-chain portions of the integration:
@@ -155,18 +157,37 @@ To use price update accounts, the frontend code needs to perform two different t
#### Fetch price updates
-Use `PriceServiceConnection` from `@pythnetwork/hermes-client` to fetch Pyth price updates from Hermes:
+Use `HermesClient` from `@pythnetwork/hermes-client` to fetch Pyth price updates from Hermes. The new endpoint `pyth.dourolabs.app/hermes` is the upgraded backend (recommended); the current `hermes.pyth.network` keeps working until cutover and requires an API key from July 31, 2026:
+
+
+
+
+```typescript copy
+import { HermesClient } from "@pythnetwork/hermes-client";
+
+const priceServiceConnection = new HermesClient(
+ "https://pyth.dourolabs.app/hermes",
+ { accessToken: process.env.PYTH_API_KEY },
+);
+```
+
+
+
```typescript copy
import { HermesClient } from "@pythnetwork/hermes-client";
-// The URL below is a public Hermes instance operated by the Pyth Data Association.
-// Hermes is also available from several third-party providers listed here:
-// https://docs.pyth.network/price-feeds/api-instances-and-providers/hermes
+// Authentication becomes required on July 31, 2026.
const priceServiceConnection = new HermesClient(
- "https://hermes.pyth.network/",
- {},
+ "https://hermes.pyth.network",
+ { accessToken: process.env.PYTH_API_KEY },
);
+```
+
+
+
+
+```typescript copy
// Hermes provides other methods for retrieving price updates. See
// https://hermes.pyth.network/docs for more information.
diff --git a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/stacks.mdx b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/stacks.mdx
index 0106cd4a1c..301fadca3b 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/stacks.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/stacks.mdx
@@ -10,6 +10,8 @@ import { Callout } from "fumadocs-ui/components/callout";
This guide explains how to use real-time Pyth data in [Clarity](https://clarity-lang.org/) smart contracts on Stacks.
+
+
## Write Contract Code
The Pyth protocol integration for Stacks is available as a Beta on both testnet and mainnet networks, to help developers test, give feedback, and ensure the reliability and stability of the integration.
diff --git a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/starknet.mdx b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/starknet.mdx
index d95fdc3582..ac3608a07e 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/starknet.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/starknet.mdx
@@ -9,6 +9,8 @@ import { Tab, Tabs } from "fumadocs-ui/components/tabs";
This guide explains how to use real-time Pyth data in Starknet contracts.
+
+
## Install the Pyth SDK
Use the following dependency in your `Scarb.toml` file to use the latest Pyth Starknet package:
diff --git a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/sui.mdx b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/sui.mdx
index 3845a53206..523520f098 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/sui.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/sui.mdx
@@ -9,6 +9,15 @@ import { Tab, Tabs } from "fumadocs-ui/components/tabs";
This guide explains how to use real-time Pyth data in Sui applications.
+
+
+
+ After **July 31, 2026**, replace the Pyth package `rev` below with
+ `sui-pro-compatible-contract-mainnet` (or `sui-pro-compatible-contract-testnet`)
+ and update the Pyth State / Wormhole State IDs to the [upgraded Sui addresses](/price-feeds/core/upgrade/contracts#sui).
+ See the [upgrade guide](/price-feeds/core/upgrade/preparing) for details.
+
+
## Install Pyth SDK
Use the following dependency in your `Move.toml` file to use the latest Pyth Sui package and its dependencies:
@@ -136,9 +145,10 @@ import { Ed25519Keypair } from "@mysten/sui/keypairs/ed25519";
/// Step 1: Get the off-chain data.
const connection = new SuiPriceServiceConnection(
- "https://hermes-beta.pyth.network", // [!] Only for Sui Testnet
- // "https://hermes.pyth.network/", // Use this for Mainnet
+ "https://pyth.dourolabs.app/hermes", // upgraded endpoint
+ // Or: "https://hermes.pyth.network" — auth required from July 31, 2026
{
+ accessToken: process.env.PYTH_API_KEY,
// Provide this option to retrieve signed price updates for on-chain contracts!
priceFeedRequestConfig: {
binary: true,
@@ -237,7 +247,7 @@ You can run this example with `npm run example-relay`. A full command that updat
```bash
export SUI_KEY=YOUR_PRIV_KEY;
npm run example-relay -- --feed-id "5a035d5440f5c163069af66062bac6c79377bf88396fa27e6067bfca8096d280" \
---hermes "https://hermes-beta.pyth.network" \
+--hermes "https://pyth.dourolabs.app/hermes" \
--full-node "https://fullnode.testnet.sui.io:443" \
--pyth-state-id "0x243759059f4c3111179da5878c12f68d612c21a8d54d85edc86164bb18be1c7c" \
--wormhole-state-id "0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790"
@@ -245,7 +255,7 @@ npm run example-relay -- --feed-id "5a035d5440f5c163069af66062bac6c79377bf88396f
### Contract Addresses
-Consult [Sui Contract Addresses](../../contract-addresses/sui) to find the package IDs.
+Consult [Sui Contract Addresses](../../contract-addresses/sui) to find the current package IDs, or the [upgraded Sui addresses](/price-feeds/core/upgrade/contracts#sui) for the post-July 31, 2026 upgrade.
### Pyth Price Feed IDs
diff --git a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/ton.mdx b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/ton.mdx
index 7c16e308d2..15bc2d0244 100644
--- a/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/ton.mdx
+++ b/apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/ton.mdx
@@ -9,6 +9,8 @@ import { Tab, Tabs } from "fumadocs-ui/components/tabs";
This guide explains how to use real-time Pyth data in TON applications.
+
+
## Install the Pyth SDK
Install the Pyth TON SDK and other necessary dependencies using npm:
diff --git a/apps/developer-hub/src/components/MigrationFlow/UpgradeCallout.tsx b/apps/developer-hub/src/components/MigrationFlow/UpgradeCallout.tsx
new file mode 100644
index 0000000000..97b5c51fbf
--- /dev/null
+++ b/apps/developer-hub/src/components/MigrationFlow/UpgradeCallout.tsx
@@ -0,0 +1,88 @@
+import { Callout } from "fumadocs-ui/components/callout";
+import Link from "next/link";
+
+type Chain =
+ | "index"
+ | "evm"
+ | "sui"
+ | "solana"
+ | "aptos"
+ | "cosmwasm"
+ | "fuel"
+ | "iota"
+ | "movement"
+ | "near"
+ | "starknet"
+ | "ton";
+
+const CHAIN_LABELS: Record, string> = {
+ evm: "EVM",
+ sui: "Sui",
+ solana: "Solana",
+ aptos: "Aptos",
+ cosmwasm: "CosmWasm",
+ fuel: "Fuel",
+ iota: "IOTA",
+ movement: "Movement",
+ near: "NEAR",
+ starknet: "Starknet",
+ ton: "TON",
+};
+
+const SUPPORTED_SIMPLE = new Set(["sui", "solana"]);
+const SUPPORTED_PARTIAL = new Set(["evm"]);
+
+type Props = { chain: Chain };
+
+export const UpgradeCallout = ({ chain }: Props) => {
+ const upgradeGuide = "/price-feeds/core/upgrade/preparing";
+ const upgradedAddressesRoot = "/price-feeds/core/upgrade/contracts";
+ const contactMail = "mailto:data@dourolabs.xyz";
+
+ if (chain === "index") {
+ return (
+
+ Pyth Core upgrades on July 31, 2026. See the{" "}
+ upgrade guide and the{" "}
+ upgraded contract addresses{" "}
+ for chains in the upgrade. Contact the team{" "}
+ if your chain isn't listed.
+
+ );
+ }
+
+ const label = CHAIN_LABELS[chain];
+ const upgradedAddresses = `${upgradedAddressesRoot}#${chain}`;
+
+ if (SUPPORTED_SIMPLE.has(chain)) {
+ return (
+
+ Pyth Core upgrades on July 31, 2026. The addresses
+ below are auto-upgraded by the DAO at cutover. See the{" "}
+ upgrade guide and the{" "}
+ upgraded {label} addresses.
+
+ );
+ }
+
+ if (SUPPORTED_PARTIAL.has(chain)) {
+ return (
+
+ Pyth Core upgrades on July 31, 2026. Check the{" "}
+ upgraded {label} addresses for
+ chains in the upgrade and the{" "}
+ upgrade guide for how to upgrade.{" "}
+ Contact the team if your chain isn't
+ listed.
+
+ );
+ }
+
+ return (
+
+ Pyth Core upgrades on July 31, 2026. Pyth Core on {label}{" "}
+ will be dropped at the upgrade. Contact the team{" "}
+ if you need support.
+
+ );
+};
diff --git a/apps/developer-hub/src/components/MigrationFlow/index.ts b/apps/developer-hub/src/components/MigrationFlow/index.ts
index 6e7e74a53c..0773aba85b 100644
--- a/apps/developer-hub/src/components/MigrationFlow/index.ts
+++ b/apps/developer-hub/src/components/MigrationFlow/index.ts
@@ -1,3 +1,4 @@
export { ActiveStepHighlighter } from "./ActiveStepHighlighter";
export { BranchSection } from "./BranchSection";
export { BranchToggle } from "./BranchToggle";
+export { UpgradeCallout } from "./UpgradeCallout";
diff --git a/apps/developer-hub/src/mdx-components.tsx b/apps/developer-hub/src/mdx-components.tsx
index f57dd8238f..ebf3c9176b 100644
--- a/apps/developer-hub/src/mdx-components.tsx
+++ b/apps/developer-hub/src/mdx-components.tsx
@@ -8,6 +8,7 @@ import { APICard, APICards } from "./components/APICard";
import { BinaryFormatCards } from "./components/BinaryFormatCards";
import { FieldCodePanel } from "./components/FieldCodePanel";
import { MermaidDiagram } from "./components/MermaidDiagram";
+import { UpgradeCallout } from "./components/MigrationFlow";
import { PropertyCard } from "./components/PropertyCard";
import { PropertyFieldLinker } from "./components/PropertyFieldLinker";
import { YouTubeEmbed } from "./components/YouTubeEmbed";
@@ -31,5 +32,6 @@ export function getMDXComponents(components?: MDXComponents): MDXComponents {
MermaidDiagram,
PropertyCard,
PropertyFieldLinker,
+ UpgradeCallout,
};
}