Skip to main content

GraphQL

GMX provides GraphQL endpoints powered by Subsquid for querying indexed on-chain data.

NetworkURL
Arbitrum Onehttps://gmx.squids.live/gmx-synthetics-arbitrum:prod/api/graphql
Avalanche C-Chainhttps://gmx.squids.live/gmx-synthetics-avalanche:prod/api/graphql
Botanixhttps://gmx.squids.live/gmx-synthetics-botanix:prod/api/graphql

Schema changes

2026-03-10 - Staking power and account analytics added

The GraphQL schema now exposes staking power analytics plus expanded daily account aggregates for PnL and capital-tracking queries.

New entities.

EntityWhat it provides
StakingPowerPer-account staking power state, including accumulatedPower, currentStakedBalance, historicalMaxStaked, lastPowerResetAt, and powerResetCount
NetworkStakingPowerNetwork-wide staking power totals through totalAccumulatedPower, totalCurrentStaked, and lastUpdateTimestamp

Expanded analytics fields.

EntityAdded fields
AccountStataccount, period, dayTimestamp, netCapitalDelta, maxNetCapitalRunningDelta
PositionmaxCapital

These additions let you query staking-power history and daily account-level capital changes without replaying raw position-change events yourself.

Example query.

query AccountAnalytics($account: String!) {
stakingPower(id: $account) {
accumulatedPower
currentStakedBalance
historicalMaxStaked
lastPowerResetAt
powerResetCount
}

accountStats(
where: { account_eq: $account, period_eq: "1d" }
orderBy: dayTimestamp_DESC
limit: 7
) {
dayTimestamp
netCapitalDelta
maxNetCapitalRunningDelta
volume
realizedPnl
}
}

2026-02-24 — Transaction entity removed

The Transaction entity type has been removed from the GraphQL schema. This change is live on all main endpoints. A backward-compatible endpoint is available until March 1, 2026:

https://gmx.squids.live/gmx-synthetics-arbitrum@786bd0/api/graphql

Field changes. Entities that previously referenced transaction: Transaction! now expose a flat transactionHash: String! field. The timestamp field that was nested inside Transaction is now a top-level field on each entity.

EntityOld fieldNew field
TradeActiontransaction: Transaction!transactionHash: String!
ClaimActiontransaction: Transaction!transactionHash: String!
OrdercreatedTxn: Transaction!createdTxnHash: String!
OrdercancelledTxn: TransactioncancelledTxnHash: String
OrderexecutedTxn: TransactionexecutedTxnHash: String
SwapFeesInfotransaction: Transaction!transactionHash: String!
SwapInfotransaction: Transaction!transactionHash: String!
PositionFeesEntitytransaction: Transaction!transactionHash: String!
Distributiontransaction: Transaction!transactionHash: String!

Sort field changes. Sort values that referenced the transaction relation are replaced with direct field sorts:

Old sort valueNew sort value
transaction_timestamp_DESCtimestamp_DESC
transaction_timestamp_ASCtimestamp_ASC

Example migration. A TradeAction query before and after:

# Before
tradeActions(limit: 50, orderBy: transaction_timestamp_DESC) {
eventName
transaction {
timestamp
hash
}
}

# After
tradeActions(limit: 50, orderBy: timestamp_DESC) {
eventName
timestamp
transactionHash
}