Query Mina GraphQL API

Learn how to query the Mina GraphQL API using DataHub

You don't need any tooling or clients to communicate with Mina GraphQL API. Simply head over to DataHub service page and grab your API token, then open up GraphQL UI:

https://mina-mainnet--graphql.datahub.figment.io/apikey/REPLACE_YOUR_API_KEY/graphql

Make sure to replace the API key in the link!

Network status

We can check out the node/network status by running the following query:

query status {
  daemonStatus {
    syncStatus
    stateHash
    numAccounts
    chainId
    commitId
    catchupStatus
    blockchainLength
  }
}

You'll get an output like:

{
  "data": {
    "daemonStatus": {
      "syncStatus": "SYNCED",
      "stateHash": "3NKQhPYhJgxvzjrnGYfcYx4azdashoU4HKa5kSRoqVEh8i36o9mm",
      "numAccounts": 1954,
      "chainId": "5f704cc0c82e0ed70e873f0893d7e06f148524e3f0bdae2afb02e7819a0c24d1",
      "commitId": "a8893ab6dd8a68171e7b99a5dc6b76940411350b",
      "catchupStatus": [
        "to_build_breadcrumb",
        "to_initial_validate",
        "finished",
        "to_verify",
        "to_download",
        "wait_for_parent"
      ],
      "blockchainLength": 4778
    }
  }
}

Latest Blocks

Pull information about latest 10 blocks:

query blocks {
  bestChain(maxLength: 10) {
    stateHash
    protocolState {
      consensusState {
        blockHeight
      }
    }
  }
}

Example output:

{
  "data": {
    "bestChain": [
      {
        "stateHash": "3NKVcbeedJ6tHUb9GAD7hucwK8vfupnTfa9KNpZPWAdjy18aV8AS",
        "protocolState": {
          "consensusState": {
            "blockHeight": "4770"
          }
        }
      },
      {
        "stateHash": "3NLjoNzTnTWSB1G4E2Twf9tVhqPicn3K3UsQ8NJmUmFKvpVsU7fe",
        "protocolState": {
          "consensusState": {
            "blockHeight": "4771"
          }
        }
      },
      {
        "stateHash": "3NLRbB6KPZrQmvhe4GHobWscid7CEH5B5xv33rn4gJNkjasprPRm",
        "protocolState": {
          "consensusState": {
            "blockHeight": "4772"
          }
        }
      },
      {
        "stateHash": "3NK9drYacgJJKZLuyBkd5wFuBNmqAmTWRs6sNfuB8KfMsJqQAQtW",
        "protocolState": {
          "consensusState": {
            "blockHeight": "4773"
          }
        }
      },
      {
        "stateHash": "3NKSRCsANY2hi9d1mNm15CSGfP6gFwWezzQ4eKrrChaKc3qMv4hf",
        "protocolState": {
          "consensusState": {
            "blockHeight": "4774"
          }
        }
      },
      {
        "stateHash": "3NLVTRP2YpyiFZ1rE7vuD84myiEBwQHxDLrppW48VWGdz9maH9mb",
        "protocolState": {
          "consensusState": {
            "blockHeight": "4775"
          }
        }
      },
      {
        "stateHash": "3NK8z2vszqRFdnVCoefnZN1b8RQfmyAR5aAN8pqBM7Y7gqQSGbUb",
        "protocolState": {
          "consensusState": {
            "blockHeight": "4776"
          }
        }
      },
      {
        "stateHash": "3NL5bpevCpb9UihrXDV1x3urMnWVyUrsEYqoJJtRZogXd5oUQrZU",
        "protocolState": {
          "consensusState": {
            "blockHeight": "4777"
          }
        }
      },
      {
        "stateHash": "3NKQhPYhJgxvzjrnGYfcYx4azdashoU4HKa5kSRoqVEh8i36o9mm",
        "protocolState": {
          "consensusState": {
            "blockHeight": "4778"
          }
        }
      },
      {
        "stateHash": "3NKfgwKwq3qWFFMNcr6BcAzv1BkZip3m6ADtr9htfjD6WftD3TrS",
        "protocolState": {
          "consensusState": {
            "blockHeight": "4779"
          }
        }
      }
    ]
  }
}

Current Block

We can obtain the latest canonical block and it's information with:

query block {
  bestChain(maxLength: 1) {
    creator
    stateHash
    stateHashField
    protocolState {
      blockchainState {
        date
        snarkedLedgerHash
      }
      previousStateHash
      consensusState {
        blockHeight
        blockchainLength
        epoch
        slot
        totalCurrency
      }
    }
    transactions {
      userCommands {
        amount
        fee
        from
        hash
      }
      coinbase
    }
  }
}

Example output:

{
  "data": {
    "bestChain": [
      {
        "creator": "B62qjCuPisQjLW7YkB22BR9KieSmUZTyApftqxsAuB3U21r3vj1YnaG",
        "stateHash": "3NKfgwKwq3qWFFMNcr6BcAzv1BkZip3m6ADtr9htfjD6WftD3TrS",
        "stateHashField": "21538604359563529269247680765381984336006730725137316435164719777253393337427",
        "protocolState": {
          "blockchainState": {
            "date": "1617151320000",
            "snarkedLedgerHash": "jx1obrfdK5zczX6bKZ8YkezJRq1PENhCA6SYbTRCdvpgsaJbSEN"
          },
          "previousStateHash": "3NKQhPYhJgxvzjrnGYfcYx4azdashoU4HKa5kSRoqVEh8i36o9mm",
          "consensusState": {
            "blockHeight": "4779",
            "blockchainLength": "4779",
            "epoch": "0",
            "slot": "6734",
            "totalCurrency": "808566652840039233"
          }
        },
        "transactions": {
          "userCommands": [
            {
              "amount": "1000",
              "fee": "10000000",
              "from": "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4",
              "hash": "CkpYREaq17zXtxxnLJBdnfVQ2BqjMTp3aE7CgxLk2yGwWi1WkjM7w"
            },
            {
              "amount": "1000",
              "fee": "10000000",
              "from": "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4",
              "hash": "CkpZKJXFdeTk6UN8EaML5CAo9KPkYWcgvtn8CGHkiYix94vqn8t8D"
            },
            {
              "amount": "1000",
              "fee": "10000000",
              "from": "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4",
              "hash": "CkpaLPq63CJsjtPxqfdAZFR8E9DadJ2e57GjoEpt6aq3CSLot9MP7"
            },
            {
              "amount": "1000",
              "fee": "10000000",
              "from": "B62qre3erTHfzQckNuibViWQGyyKwZseztqrjPZBv6SQF384Rg6ESAy",
              "hash": "Ckpa8USvMbVNANow4NGeoSfeFKfGhb1TjJNYTAFCh9dYLyKwFJoRg"
            },
            {
              "amount": "1000",
              "fee": "10000000",
              "from": "B62qre3erTHfzQckNuibViWQGyyKwZseztqrjPZBv6SQF384Rg6ESAy",
              "hash": "CkpZGkGQcYC4X2a7VGT2oRZGph3KSoajxnUkRz6hiHJ8MHDfY23Am"
            },
            {
              "amount": "1000",
              "fee": "10000000",
              "from": "B62qre3erTHfzQckNuibViWQGyyKwZseztqrjPZBv6SQF384Rg6ESAy",
              "hash": "CkpYRm7RcwgR5ivEFLWaa1vJnzdUuh9VRmrTiG83wSsLS6EarjJ8z"
            }
          ],
          "coinbase": "720000000000"
        }
      }
    ]
  }
}

Snark Pool

See a list of pending snark jobs with:

query snarkPool {
  snarkPool {
    fee
    prover
    workIds
  }
}

Example output:

{
  "data": {
    "snarkPool": [
      {
        "fee": "0",
        "prover": "B62qpLeuZDL7PxNsCqsJwWFPAmnixi5ay8Kz9NcNGBQU8jK19VpJQaY",
        "workIds": [
          343409785,
          151173040
        ]
      }
    ]
  }
}

Account Details

We can get account balance with:

query accDetails {
  account(publicKey: "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4") {
    delegate
    balance {
      blockHeight
      liquid
      locked
      stateHash
      total
      unknown
    }
    delegators {
      publicKey
    }
    publicKey
    stakingActive
    votingFor
    isDisabled
  }
}

Example output:

{
  "data": {
    "account": {
      "delegate": "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4",
      "balance": {
        "blockHeight": "4779",
        "liquid": "787133086000",
        "locked": "0",
        "stateHash": "3NKfgwKwq3qWFFMNcr6BcAzv1BkZip3m6ADtr9htfjD6WftD3TrS",
        "total": "787133086000",
        "unknown": "787133086000"
      },
      "delegators": [],
      "publicKey": "B62qix9vooX5NqJYo8nT6xWqCeQu5AJoS1ng6FRnUpVAra6PAZZ1CU4",
      "stakingActive": false,
      "votingFor": "3NK2tkzqqK5spR2sZ7tujjqPksL45M3UUrcA4WhCkeiPtnugyE2x",
      "isDisabled": false
    }
  }
}

Last updated