Pyth Core upgrade July 31, 2026. Every Core user will need an API Key. Learn more →
Developer Hub

Sui

Sui-specific notes for the Pyth Core upgrade.

These notes complement the main upgrade guide for Sui consumers.

SuiManual upgrade is required

There is no automatic upgrade path on Sui. Apps reference the Pyth package by object ID, and the DAO cannot swap that for you. Complete the steps below before July 31, 2026.

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

Move your Hermes calls to the new Hermes endpoint

If you use SuiPriceServiceConnection from @pythnetwork/pyth-sui-js, point it at the upgraded endpoint and pass your Pyth API key:

import { SuiPriceServiceConnection } from "@pythnetwork/pyth-sui-js";

const connection = new SuiPriceServiceConnection(
  "https://pyth.dourolabs.app/hermes",
  { accessToken: process.env.PYTH_API_KEY },
);

If your SuiPriceServiceConnection doesn't accept an accessToken in its second constructor argument, you're on an outdated version of @pythnetwork/pyth-sui-js. Upgrade to the latest.

Swap your contract address

On Sui, swapping the Pyth Core contract address means updating the Pyth package rev in your Move.toml. The full list of upgraded Pyth State, Pyth Package, Wormhole State, and Wormhole Package IDs is on the contract addresses page.

Current Pyth Core users reference the Pyth package in their Move.toml:

[dependencies.pyth]
git = "https://github.com/pyth-network/pyth-crosschain.git"
subdir = "target_chains/sui/contracts"
rev = "sui-contract-mainnet"

The upgraded Pyth Core package is available at a new rev:

[dependencies.pyth]
git = "https://github.com/pyth-network/pyth-crosschain.git"
subdir = "target_chains/sui/contracts"
rev = "sui-pro-compatible-contract-mainnet"  # or sui-pro-compatible-contract-testnet

Sui package compatibility may force you to keep both. Per Sui's custom package upgrade policies, you may need to keep the original Pyth package alongside the upgraded one in your Move.toml. Rename one to avoid a naming conflict:

[dependencies.pyth]
git = "https://github.com/pyth-network/pyth-crosschain.git"
subdir = "target_chains/sui/contracts"
rev = "sui-contract-mainnet"

[dependencies.pyth_pro_compatible]
git = "https://github.com/pyth-network/pyth-crosschain.git"
subdir = "target_chains/sui/contracts"
rev = "sui-pro-compatible-contract-mainnet"  # or sui-pro-compatible-contract-testnet
rename-from = "pyth"

Then use the renamed package in your source code:

use pyth_pro_compatible::price_info::PriceInfoObject;

Upgraded Sui Addresses

View on the contract addresses page →