Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

API
validators.history

Staking

validators.history

One validator across epochs: stake, voting power, commission, gas price, rewards, APY.

Details

Endpoint
GET /v1/validators/:address/history
Credits
2
Rate class
Light. Counts against your light requests per second.

Returns one row per epoch, newest first, for a validator address. Each row has the stake and voting power at that epoch, commission in basis points, the gas price it quoted, the staking rewards it earned in MIST, its name and the APY for the epoch. APY is the pool exchange rate growth over the epoch, annualised with the real length of that epoch. Page back with cursor, which is an epoch number. An address that was never a validator returns not_found.

Parameters

NameTypeDescription
addressrequiredstringThe validator's Sui address (0x...).
limitintegerEpochs per page, default 30.From 1 to 100.
cursorstringCursor from the previous page: return epochs older than this epoch number.

Request

Send your key in the x-api-key header, or leave it out to use the keyless tier.

curl
curl "https://api.tide.ad/v1/validators/0x4fffd0005522be4bc029724c7f0f6ed7093a6bf3a09b90e62f61dc15181e1a3e/history?limit=5" \
  -H "x-api-key: YOUR_API_KEY"
TypeScript
const res = await fetch("https://api.tide.ad/v1/validators/0x4fffd0005522be4bc029724c7f0f6ed7093a6bf3a09b90e62f61dc15181e1a3e/history?limit=5", {
  headers: {
    "x-api-key": process.env.TIDE_API_KEY!,
  },
});
const data = await res.json();

Response

JSON
{
  "address": "0x4fffd0005522be4bc029724c7f0f6ed7093a6bf3a09b90e62f61dc15181e1a3e",
  "items": [
    {
      "epoch": 1301,
      "name": "Mysten-1",
      "stakeMist": "219788811024583733",
      "votingPowerPct": 3.14,
      "commissionBps": 200,
      "gasPrice": 100,
      "poolRewardMist": "8053301963736",
      "storageFundRewardMist": "7067206",
      "suiPerPoolToken": 1.1060761182058683,
      "apyPct": 1.32,
      "epochHours": 24
    },
    {
      "epoch": 1300,
      "name": "Mysten-1",
      "stakeMist": "222103698655495214",
      "votingPowerPct": 3.14,
      "commissionBps": 200,
      "gasPrice": 100,
      "poolRewardMist": "8050463137905",
      "storageFundRewardMist": "6787216",
      "suiPerPoolToken": 1.1060363661821637,
      "apyPct": 1.307,
      "epochHours": 24
    },
    {
      "epoch": 1299,
      "name": "Mysten-1",
      "stakeMist": "222158600462281443",
      "votingPowerPct": 3.14,
      "commissionBps": 200,
      "gasPrice": 100,
      "poolRewardMist": "8037901021788",
      "storageFundRewardMist": "5553658",
      "suiPerPoolToken": 1.1059970259752367,
      "apyPct": 1.304,
      "epochHours": 24
    }
  ],
  "cursor": "1297",
  "asOf": {
    "checkpoint": 341521489,
    "timestamp": "2026-11-04T10:02:43.396Z",
    "lagMs": 772
  }
}

Long lists are cut to a few items here.