Preparing for the Pyth Core upgrade
Everything you need to upgrade your Pyth Core integration before July 31, 2026.
Pyth Network is upgrading Pyth Core on July 31, 2026. Your existing integration keeps working: the on-chain Pyth contract is upgraded by the Pyth DAO on July 31, and Hermes requests are redirected to the upgraded backend automatically. The one new requirement is authentication on Hermes: every Hermes user needs a Pyth API Key by July 31.
For background on what's changing and why, see the upgrade overview. For a walkthrough of the signers, data flow, and contracts behind the upgrade, see How the Pyth Core upgrade works.
All Hermes users need a Pyth API Key by July 31, 2026 — the upgraded Hermes endpoint requires authentication, even for users who wait for the automatic upgrade. Register at Pyth Terminal →
Does this apply to you?
- Your app calls
hermes.pyth.network? Get a Pyth API Key in Step 1. - You use Pyth Core contracts on-chain? Choose: swap addresses now, or wait for the automatic upgrade (see the decision section below).
- You only use a protocol that already integrates Pyth? No action needed from your side.
Your upgrade path
Step 1: Get a Pyth API Key
Required for everyone who calls Hermes. Sign up at Pyth Terminal: a free trial is included, paid plans cover ongoing use.
Sign up at Pyth Terminal
Step 2: Upgrade now or wait for automatic?
After Step 1, choose how and when to move to the upgraded infrastructure. Your choice is saved in the URL so you can share or bookmark a specific path.
Sui consumers must upgrade manually
The "Wait for automatic" path does not apply on Sui. Apps reference the Pyth package by object ID, and the DAO cannot swap that for you. See the Sui upgrade guide.
| Upgrade now (recommended) | Wait for automatic | |
|---|---|---|
| Timing | You choose | July 31, 2026 |
| Downtime | Up to you | Brief, during the switch |
| Hermes endpoint | Switch to the new Hermes endpoint now | Start using hermes.pyth.network with an API key before the cutover |
| Contract address | You swap to the upgraded Pyth Core Contract | DAO upgrades the current Pyth Core Contract for you |
Upgrading Now
This is the recommended path, as it makes the July 31 cutover a non-event for your integration. Please note that if you swap the endpoint but not the contract address or vice versa you won't be able to verify price updates.
Move your Hermes calls to the new Hermes endpoint
Switch your Hermes base URL from hermes.pyth.network to pyth.dourolabs.app/hermes and add your API key that you got in Step 1. The routes and response shapes are unchanged. The upgraded endpoint is a drop-in replacement.
curl -H "Authorization: Bearer $PYTH_API_KEY" \
"https://pyth.dourolabs.app/hermes/v2/updates/price/latest?ids[]=0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"import { HermesClient } from "@pythnetwork/hermes-client";
const client = new HermesClient("https://pyth.dourolabs.app/hermes", {
accessToken: process.env.PYTH_API_KEY,
});Routes and response shapes are unchanged. The upgraded endpoint is a drop-in replacement. See the new Hermes API reference for the full surface.
Deploy 1 and 2 in the same release. The upgraded endpoint serves payloads only the upgraded Pyth Core Contract verifies. If you ship these separately, price updates can fail until both changes are live. If you cannot deploy both together, use a forward-compatible strategy like the one in the Automatic Upgrade section.
Swap your contract address
Swap your existing Pyth contract address for the upgraded Pyth Core Contract on your chain. The upgraded Pyth Core Contract preserves the Pyth Core interface. No other code changes are needed.
View all upgraded Pyth Core Contract addresses.
After the swap, you're done before the July 31 cutover.
Per-chain guides
Waiting for the Automatic Upgrade
Not applicable to Sui
This path does not apply on Sui. Apps reference the Pyth package by object ID, and the DAO cannot swap that for you. Follow the Sui upgrade guide instead.
At the cutover on July 31, the Pyth DAO upgrades your on-chain contract a few moments before hermes.pyth.network starts serving the upgraded payload.
During that brief gap, the price updates served by hermes.pyth.network cannot verify against your upgraded contract, while those served by pyth.dourolabs.app/hermes can.
A potential strategy to stay live without timing the switch yourself is to fetch from both URLs every request and submit whichever payload verifies:
import { HermesClient } from "@pythnetwork/hermes-client";
const oldHermes = new HermesClient("https://hermes.pyth.network");
const newHermes = new HermesClient("https://pyth.dourolabs.app/hermes", {
accessToken: process.env.PYTH_API_KEY,
});
// Fetch from both. Only one payload verifies on-chain at any given time.
const [oldUpdate, newUpdate] = await Promise.all([
oldHermes.getLatestPriceUpdates(priceIds),
newHermes.getLatestPriceUpdates(priceIds),
]);
// Simulate each; submit the one that doesn't revert.
for (const update of [newUpdate, oldUpdate]) {
try {
await pythContract.simulate.updatePriceFeeds([update.binary.data], { value: fee });
await pythContract.write.updatePriceFeeds([update.binary.data], { value: fee });
break;
} catch {
// doesn't verify yet — try the other one
}
}Chain support
Pyth Core will be supported on the chains listed on the upgraded Pyth Core Contract addresses page. If your chain isn't listed, contact the team. Additional support is available by custom arrangement.
Feed support
Nearly all current Pyth Core feeds remain available after the upgrade, with new ones added. Look up your specific feeds on the feed explorer. If a feed you depend on isn't listed, contact the team.