Object Queries
Get Object Details
Query an object with all available fields:query GetObjectDetails($id: SuiAddress!) {
object(address: $id) {
address
version
digest
storageRebate
owner {
__typename
... on AddressOwner {
owner {
address
}
}
... on Shared {
initialSharedVersion
}
... on Parent {
parent {
address
}
}
... on Immutable {
__typename
}
}
previousTransactionBlock {
digest
}
asMoveObject {
hasPublicTransfer
contents {
type {
repr
layout
signature
}
json
bcs
}
}
display {
key
value
error
}
}
}
Get Object History
query GetObjectHistory($id: SuiAddress!, $first: Int) {
object(address: $id) {
address
version
previousTransactionBlock {
digest
sender {
address
}
effects {
timestamp
}
}
# Get historical versions
asMoveObject {
contents {
type {
repr
}
}
}
}
}
Get Dynamic Fields
query GetDynamicFields($parentId: SuiAddress!, $first: Int, $after: String) {
object(address: $parentId) {
dynamicFields(first: $first, after: $after) {
nodes {
name {
type {
repr
}
json
bcs
}
value {
... on MoveObject {
contents {
type {
repr
}
json
}
}
... on MoveValue {
type {
repr
}
json
bcs
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
}
Address Queries
Get Address Information
query GetAddress($address: SuiAddress!) {
address(address: $address) {
address
balance(type: "0x2::sui::SUI") {
coinType {
repr
}
coinObjectCount
totalBalance
}
objects(first: 10) {
nodes {
address
version
asMoveObject {
contents {
type {
repr
}
}
}
}
}
transactionBlocks(first: 10) {
nodes {
digest
effects {
timestamp
status
}
}
}
}
}
Get All Balances
query GetAllBalances($address: SuiAddress!) {
address(address: $address) {
balances {
nodes {
coinType {
repr
}
coinObjectCount
totalBalance
}
}
}
}
Get Coins by Type
query GetCoins(
$address: SuiAddress!
$type: String
$first: Int
$after: String
) {
address(address: $address) {
coins(type: $type, first: $first, after: $after) {
nodes {
address
version
coinBalance
asCoin {
coinBalance
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
}
Transaction Queries
Get Transaction Block
query GetTransactionBlock($digest: String!) {
transactionBlock(digest: $digest) {
digest
sender {
address
}
gasInput {
gasSponsor {
address
}
gasPrice
gasBudget
gasPayment {
nodes {
address
}
}
}
kind {
__typename
... on ProgrammableTransactionBlock {
inputs {
nodes {
__typename
}
}
transactions {
nodes {
__typename
}
}
}
}
effects {
status
errors
timestamp
checkpoint {
sequenceNumber
}
gasEffects {
gasObject {
address
}
gasSummary {
computationCost
storageCost
storageRebate
nonRefundableStorageFee
}
}
objectChanges {
nodes {
address
idCreated
idDeleted
outputState {
address
version
}
}
}
balanceChanges {
nodes {
owner {
address
}
amount
coinType {
repr
}
}
}
}
events {
nodes {
sendingModule {
package {
address
}
name
}
type {
repr
}
sender {
address
}
json
bcs
}
}
}
}
Query Transaction Blocks
query QueryTransactionBlocks(
$filter: TransactionBlockFilter
$first: Int
$after: String
) {
transactionBlocks(filter: $filter, first: $first, after: $after) {
nodes {
digest
sender {
address
}
effects {
status
timestamp
gasEffects {
gasSummary {
computationCost
storageCost
}
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
{
"filter": {
"signAddress": "0x..."
},
"first": 50
}
{
"filter": {
"recvAddress": "0x..."
},
"first": 50
}
Event Queries
Query Events
query QueryEvents($filter: EventFilter, $first: Int, $after: String) {
events(filter: $filter, first: $first, after: $after) {
nodes {
sendingModule {
package {
address
}
name
}
type {
repr
}
sender {
address
}
timestamp
json
bcs
transactionBlock {
digest
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
{
"filter": {
"eventType": "0x2::coin::CoinCreated<0x2::sui::SUI>"
},
"first": 20
}
{
"filter": {
"sender": "0x..."
},
"first": 20
}
{
"filter": {
"emittingPackage": "0x2"
},
"first": 20
}
Checkpoint Queries
Get Checkpoint
query GetCheckpoint($id: UInt53!) {
checkpoint(id: { sequenceNumber: $id }) {
sequenceNumber
timestamp
networkTotalTransactions
previousCheckpointDigest
epoch {
epochId
referenceGasPrice
}
transactionBlocks(first: 10) {
nodes {
digest
effects {
status
}
}
}
}
}
Query Checkpoints
query QueryCheckpoints($first: Int, $after: String) {
checkpoints(first: $first, after: $after) {
nodes {
sequenceNumber
timestamp
networkTotalTransactions
epoch {
epochId
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
Epoch Queries
Get Current Epoch
query GetCurrentEpoch {
epoch {
epochId
referenceGasPrice
startTimestamp
endTimestamp
validatorSet {
totalStake
pendingActiveValidatorsSize
activeValidators(first: 100) {
nodes {
name
description
imageUrl
address {
address
}
votingPower
stakingPoolActivationEpoch
stakingPoolSuiBalance
rewardsPool
poolTokenBalance
pendingStake
pendingTotalSuiWithdraw
apy
}
}
}
}
}
Get Epoch by ID
query GetEpoch($id: UInt53!) {
epoch(id: $id) {
epochId
referenceGasPrice
startTimestamp
endTimestamp
totalCheckpoints
totalTransactions
totalGasFees
totalStakeRewards
validatorSet {
totalStake
}
}
}
Package Queries
Get Package
query GetPackage($id: SuiAddress!) {
object(address: $id) {
address
version
asMovePackage {
modules {
nodes {
name
fileFormatVersion
functions {
nodes {
name
visibility
isEntry
parameters {
repr
}
return {
repr
}
}
}
structs {
nodes {
name
abilities
typeParameters {
constraints
}
fields {
name
type {
repr
}
}
}
}
}
}
}
}
}
Combining Queries
Get Complete Address Profile
query GetAddressProfile($address: SuiAddress!) {
address(address: $address) {
address
# Balances
balances(first: 100) {
nodes {
coinType {
repr
}
totalBalance
}
}
# Recent transactions
transactionBlocks(first: 10) {
nodes {
digest
effects {
timestamp
status
}
}
}
# Owned objects
objects(first: 20) {
nodes {
address
asMoveObject {
contents {
type {
repr
}
}
}
}
}
}
}