Skip to content

Queries ​

All read-only, all free. These are what the dashboard is built on.

config ​

json
{ "config": {} }

Admin, denoms, unbonding period, batch window, validator set and weights, fee, minimums, max_validators, paused flag, rewards vault, deposit cap.

state ​

json
{ "state": {} }

Pool accounting:

FieldMeaning
total_pooled_atomATOM backing the vATOM supply
total_receipt_supplyvATOM outstanding
pending_claim_atomOwed to redeemers, unsettled — open and in-flight batches
claimable_reserve_atomFinalized, awaiting claim
vesting_rewardsReward lump currently vesting into the rate
vesting_started_atWhen that window began
last_observed_unbonding_secondsThe unbonding period the chain most recently demonstrated. Zero until the first batch is processed
current_unbond_batch_idThe batch accepting requests now

exchange_rate ​

json
{ "exchange_rate": {} }

Returns atom_per_vatom — vesting-adjusted, the same basis mint and redeem use.

withdrawal ​

json
{ "withdrawal": { "request_id": 7 } }

One withdrawal, enriched with everything needed to display it honestly:

FieldMeaning
withdrawalThe raw record: owner, receiver, recorded ATOM, batch, timestamps, claimed
claimable_atnull until the batch is processed. Then the chain's own completion time
forecast_maturityThe maturity is a local estimate — treat timings as provisional
slashing_effectnull until finalized. Below 1 means the batch was slashed
payout_atomWhat claim would pay right now. null until finalized, because the haircut is unknowable before that. Once claimed, the amount actually paid, recorded at claim time
ready_to_claimWhether this withdrawal has reached the point in its lifecycle where it can be paid: processed, matured, finalized, unclaimed, and not paused. Not "the caller may claim" — claim also requires the sender to be the owner or receiver, and a query has no sender, so check that yourself if you did not fetch by claimant

Do not display atom_amount as a promise

The raw atom_amount is the recorded obligation, not a guarantee. Rendering it as "you will receive X" is mis-selling — use payout_atom once finalized, and say the amount is unknown before that. Everything in this response exists to make that distinction expressible.

withdrawals ​

json
{ "withdrawals": { "claimant": "cosmos1…", "start_after": null, "limit": 30 } }

A claimant's withdrawals, newest ids last. claimant matches either the owner or the receiver, since either can claim. Default page 30, maximum 100.

batch ​

json
{ "batch": { "batch_id": 3 } }
FieldMeaning
statusOpen (accepting requests) or Unbonding
total_atomRecorded obligation — the fixed denominator for the haircut
backingLive slash-adjusted backing, what actually gets undelegated
request_countRequests in the batch
first_arrival_atEarliest completion time among its entries
claimable_atLatest completion time — when all its ATOM has arrived
forecast_maturityMaturity is estimated rather than chain-reported
slashing_effectFraction actually received, once finalized
unclaimed_atomRealized ATOM not yet claimed
claimed_countClaims settled so far
arrival_observed_heightHeight at which the batch was first seen matured. null until then. Settlement is only permitted at a strictly greater height, so the balance read happens after the chain has delivered

total_atom and backing are equal absent any slash.

batches ​

json
{ "batches": { "start_after": null, "limit": 30 } }

pending_finalization ​

json
{ "pending_finalization": {} }

Batches processed but not yet finalized — the keeper work queue, and where a forecast-maturity batch surfaces. This drives the dashboard's unbonding pipeline table.

See also ​

Running on a testnet. See the risks page for what holding vATOM involves.