Page cover

Solana Staking API

Seamless Integration for Institutional Solana Staking

Solana staking APIs provide developers with powerful tools to interact with the Solana blockchain's staking functionality. These APIs allow users to delegate SOL tokens to validators, monitor staking rewards, track validator performance, and manage stake accounts programmatically. Ideal for building wallets, staking dashboards, or automated staking strategies, these APIs offer fast, scalable access to staking data and operations on one of the highest-performance blockchains in the ecosystem.

SolanaStakeIntent

POST SolanaStakeIntent

Returns an unsigned transaction that can be used to delegate your tokens to the validator specified in the request.

Name
Value

Content-Type

application/json

Authorization

<API Key>

Body

### 🧪 Example Mutation

```graphql
mutation SolanaStakeIntent {
    SolanaStakeIntent(
        input: {
            network: "devnet",               # String!
            amount: "1000000000",            # String!
            delegator_address: "5xo1...",    # String!
            staking_authority: "5xo1...",    # String!
            withdrawal_authority: "5xo1...", # String
            plan_id: "plan_Wgx..."           # String
        }
    ) {
        ... on StakingResponse {
            stake_intent_id
            customerId
            network
            plan_id
            protocol
            solana {
                amount
                expiration_time
                stake_account_public_key
                stake_id
                staking_authority
                unsigned_transaction
                validator_public_key
                withdrawal_authority
            }
        }
        ... on ErrorResponse {
            __typename
            code
            message
        }
    }
}

Response

{
    "data": {
        "SolanaStakeIntent": {
            "stake_intent_id": "stake_intent_Wgx98Rbi8nQuL9ddn3mTk1",
            "customer_id": "SatoshiNakamoto-xUYJbPw9hw",
            "plan_id": "plan_Wgx98Rbi8nQuL9ddn3mTk1",
            "protocol": "solana",
            "network": "mainnet",
            "solana": {
                "stake_id": "stake_Wgx98Rbi8nQuL9ddn3mTk1",
                "amount": "100",
                "validator_public_key": "0xa1d1ad0714035353258038e964ae9675dc0252ee22cea896825c01458e1807bfad2f9969338798548d9858a571f7425c",
                "staking_authority": "5xot9PVkphiX2adznghwrAuxGs2zeWisNSxMW6hU6Hkj",
                "withdrawal_authority": "0xa1d1ad0714035353258038e964ae9675dc0252ee22cea896825c01458e1807bfad2f9969338798548d9858a571f7425c",
                "stake_account_public_key": "5xot9PVkphiX2adznghwrAuxGs2zeWisNSxMW6hU6Hkj",
                "unsigned_transaction": "0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120087fed394b43849eebef1e88873cd9efdbe33136656e5148e659b8b2f33625d40000000000000000000000000000000000000000000000000000000000000030b81748644e23c4d950f9dd709f3eb73d5eacd9657997e1d9dde7c4ebd8a6519ecb9d0a7fb603d3b68e023278f9650122000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020010000000000000000000000c509bb854c526af4cee5e037089f7aa8e091d8870000000000000000000000000000000000000000000000000000000000000060b36b79b4b206c0310472c117fa40c05342b5dc3e89f98f42c9da3ce6450d4c603cad55248017fd4eca3ab277cca64569193e4d487f5b2ea78a2bcdc81926c313c05842a3af318967a775783bba22519e8b8886587efa99aa7dab5784f792b187\n",
                "expiration_time": 1689939023
            }
        }
    }
}

SolanaDeactivateIntent

### 🧪 Example Mutation

```graphql
mutation SolanaDeactivateIntent {
    SolanaDeactivateIntent(
        input: {
            network: "devnet",              # String!
            amount: "1000000000",           # String!
            withdrawal_authority: "5xo1..." # String
            staking_authority: "5xo1..."    # String
            delegator_address: "5xo1..."    # String
        }
    ) {
        ... on DeactivateResponse {
            deactivate_intent_id
            customerId
            protocol
            network
            walletAddress
            solana {
                total_deactivated_amount
                walletAddress
                deactivates {
                    unsigned_transaction
                    stake_account_authority
                    stake_account_address
                    withdrawal_authority
                    stake_id
                    amount
                    expiration_time
                }
                splits {
                    unsigned_transaction
                    stake_account_authority
                    new_stake_account_address
                    new_stake_id
                    splitted_stake_account_address
                    splitted_stake_id
                    amount
                }
            }
        }
        ... on ErrorResponse {
            code
            message
        }
    }
}

Response

{
    "data": {
        "SolanaDeactivateIntent": {
            "deactivate_intent_id": "4ba06e89-8c29-483e-ac36-318de5aa7364",
            "customer_id": "SatoshiNakamoto-xUYJbPw9hw",
            "protocol": "solana",
            "network": "mainnet",
            "solana": {
                "deactivates": [
                    {
                        "unsigned_transaction": "0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120087fed394b43849eebef1e88873cd9efdbe33136656e5148e659b8b2f33625d40000000000000000000000000000000000000000000000000000000000000030b81748644e23c4d950f9dd709f3eb73d5eacd9657997e1d9dde7c4ebd8a6519ecb9d0a7fb603d3b68e023278f9650122000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020010000000000000000000000c509bb854c526af4cee5e037089f7aa8e091d8870000000000000000000000000000000000000000000000000000000000000060b36b79b4b206c0310472c117fa40c05342b5dc3e89f98f42c9da3ce6450d4c603cad55248017fd4eca3ab277cca64569193e4d487f5b2ea78a2bcdc81926c313c05842a3af318967a775783bba22519e8b8886587efa99aa7dab5784f792b187\n",
                        "stake_account_authority": "5xot9PVkphiX2adznghwrAuxGs2zeWisNSxMW6hU6Hkj",
                        "stake_account_address": "5xot9PVkphiX2adznghwrAuxGs2zeWisNSxMW6hU6Hkj",
                        "withdrawal_authority": "5xot9PVkphiX2adznghwrAuxGs2zeWisNSxMW6hU6Hkj",
                        "stake_id": "stake_Wgx98Rbi8nQuL9ddn3mTk1",
                        "amount": "100",
                        "expiration_time": 1689939023
                    }
                ],
                "splits": [
                    {
                        "unsigned_transaction": "0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120087fed394b43849eebef1e88873cd9efdbe33136656e5148e659b8b2f33625d40000000000000000000000000000000000000000000000000000000000000030b81748644e23c4d950f9dd709f3eb73d5eacd9657997e1d9dde7c4ebd8a6519ecb9d0a7fb603d3b68e023278f9650122000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020010000000000000000000000c509bb854c526af4cee5e037089f7aa8e091d8870000000000000000000000000000000000000000000000000000000000000060b36b79b4b206c0310472c117fa40c05342b5dc3e89f98f42c9da3ce6450d4c603cad55248017fd4eca3ab277cca64569193e4d487f5b2ea78a2bcdc81926c313c05842a3af318967a775783bba22519e8b8886587efa99aa7dab5784f792b187\n",
                        "stake_account_authority": "5xot9PVkphiX2adznghwrAuxGs2zeWisNSxMW6hU6Hkj",
                        "new_stake_account_address": "5xot9PVkphiX2adznghwrAuxGs2zeWisNSxMW6hU6Hkj",
                        "new_stake_id": "stake_Wgx98Rbi8nQuL9ddn3mTk1",
                        "splitted_stake_account_address": "5xot9PVkphiX2adznghwrAuxGs2zeWisNSxMW6hU6Hkj",
                        "splitted_stake_id": "stake_Wgx98Rbi8nQuL9ddn3mTk1",
                        "amount": "100"
                    }
                ],
                "total_deactivated_amount": "100"
            },
            walletAddress: String
        }
    }
}

SolanaCancelDeactivateIntent

POST SolanaCancelDeactivateIntent Cancels a previously issued deactivation intent by specifying its ID.

Body

### 🧪 Example Mutation

```graphql
mutation SolanaCancelDeactivateIntent {
    SolanaCancelDeactivateIntent(
        input: {
            network: "devnet",                                           # String!
            deactivate_intent_id: "204ce7fe-0bab-4a3b-b98b-d082f5770a6c" # String!
    }
  ) {
    code
    message
  }
}

Response

{
    data: {
        SolanaCancelDeactivateIntent: {
            code: 500,                          # Number
            message: "Invalid public key input" # String
    }
  }
}

SolanaWithdrawalIntent

POST SolanaWithdrawalIntent

This endpoint is used to request withdrawal transactions that will be executed against available deactivated accounts. If you request more funds than are currently unlocked, the API will return an error indicating the maximum possible withdrawal.

You will receive at least one unsigned transaction (potentially multiple) that needs to be signed in order to complete the withdrawal. Body

### 🧪 Example Mutation

```graphql
mutation SolanaWithdrawalIntent {
    SolanaWithdrawalIntent(
        input: {
            network: "devnet"               # String!
            amount: "1000000000"            # String!
            withdrawal_address: "5xo1...",  # String!
            delegator_address: "5xo1..."    # String!
            withdrawal_authority: "5xo1..." # String!
        }
    ) {
        ... on WithdrawalIntentResponse {
            withdrawal_intent_id
            customerId
            protocol
            network
            solana {
                total_withdraw_amount
                withdraws {
                    unsigned_transaction
                    withdrawal_authority_public_key
                    stake_account_address
                    stake_id
                    amount
                    expiration_time
                }
            }
        }
        ... on ErrorResponse {
            code
            message
        }
    }
}

Response

{
    data: {
        SolanaWithdrawalIntent{
            withdrawal_intent_id, # String
            customerId, # String
            protocol, # String
            network, # String
            solana {
                total_withdraw_amount, # String!
                withdraws {
                    unsigned_transaction, # String!
                    withdrawal_authority_public_key, # String!
                    stake_account_address, # String!
                    stake_id, # String!
                    amount, # String!
                    expiration_time, # Int!
                }
            }
        }
    }
}

SolanaCancelWithdrawlIntent

POST SolanaCancelWithdrawalIntent

Cancels a previously issued withdrawal intent by specifying its ID. Body

### 🧪 Example Mutation

```graphql
mutation SolanaCancelWithdrawalIntent {
    SolanaCancelWithdrawalIntent(
        input: {
            network: 'devnet', # String!,
            intent_id: "..."   # String!
        }
    ) {
        code
        message
    }
}

Response

{
    data: {
        SolanaCancelWithdrawalIntent{
            code,   # Int!
            message # String!
        }
    }
}

SolanaGetStakeAccounts

POST SolanaGetStakeAccounts Retrieve all of the stake accounts. Body

🧪 Example Query

query SolanaGetStakeAccounts {
    SolanaGetStakeAccounts(
        input: {
            network: null,
            walletAddress: null,
            page: null,
            per_page: null
        }
    ) {
        ... on Error {
            code
            message
        }
        ... on GetStakeAccountsResponse {
            stake_accounts {
                status
                amount
                stake_account_address
                stake_account_authority
                withdrawal_authority
                delegator_address
                vote_account
                network
            }
            pagination {
                page
                per_page
                total
            }
        }
    }
}

Response

{
    data: {
        SolanaGetStakeAccounts: {
    	    stake_accounts: {
                status, 		 # String
		amount,			 # String
		stake_account_address, 	 # String
		stake_account_authority, # String
		withdrawal_authority,	 # String
		delegator_address, 	 # String
		vote_account, 		 # String
		network, 		 # String
            }
	    pagination: {
                page,		         # Int
                per_page,		 # Int
		total		         # Int
	    }
        }
    }
}

SolanaGetDeactivationIntents

POST SolanaGetDeactivateIntents

Retrieve a list of all outstanding deactivation intents. Body

### 🧪 Example Query

```graphql
query SolanaGetDeactivationIntents{
  SolanaGetDeactivationIntents(input: {network: "devnet", walletAddress: ""}) {
    ... on RetrieveDeactivationResponse {
      protocol
      network
      customerId
      solana {
        deactivates {
          amount
          expiration_time
          stake_account_address
          stake_account_authority
          stake_id
          unsigned_transaction
          withdrawal_authority
        }
        splits {
          amount
          new_stake_account_address
          new_stake_id
          splitted_stake_account_address
          splitted_stake_id
          stake_account_authority
          unsigned_transaction
        }
        total_deactivated_amount
        walletAddress
      }
    }
    ... on ErrorResponse {
      __typename
      code
      message
    }
  }
}

Response

{
  data: {
    "SolanaGetDeactivationIntents": {
            "protocol": "solana",
            "network": "devnet",
            "customerId": "128554f4-0071-7072-01f8-be5c70e48162",
            "solana": [ 
                {
                    "deactivates": [
                        {
                            "amount": "100000000",
                            "expiration_time": 1746530154,
                            "stake_account_address": "DunL5cf8DUyC6F8c67EsfJPdbNWixaX9y6yRapiCHwLV",
                            "stake_account_authority": "9zmDS8uYXSLaDCV9gqyPQeHRLPaZvFJV9dN6oTFzCwVU",
                            "stake_id": "8c24f524-22d0-4af2-af3a-23b6c3b430d2",
                            "unsigned_transaction": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100020485a99849ac66f619f6d272aa6f58d829072be14f9f2c2b2e329b32547f205f93bfd1b2e4d7c0993647351dbde5da9246d7028ca59865525589970468c4992f1206a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000006a7d51718c774c928566398691d5eb68b5eb8a39b4b6d5c73555b2100000000230947ecc06cda78f79713dc81a433c90e0ab2162940336a312d47c52df280780102030103000405000000",
                            "withdrawal_authority": "9zmDS8uYXSLaDCV9gqyPQeHRLPaZvFJV9dN6oTFzCwVU"
                        }
                    ],
                    "splits": [
                        {
                            "amount": "100000000",
                            "new_stake_account_address": "DunL5cf8DUyC6F8c67EsfJPdbNWixaX9y6yRapiCHwLV",
                            "new_stake_id": "2c249579-980b-4c1d-89dd-f5d3a1bd7f21",
                            "splitted_stake_account_address": "J5zhkQwQiJoTYtnCy39o1Ue4yBJS7cSJKfvPe7DHBo8k",
                            "splitted_stake_id": "1b497871-54ec-46e0-a2ae-764595faefeb",
                            "stake_account_authority": "9zmDS8uYXSLaDCV9gqyPQeHRLPaZvFJV9dN6oTFzCwVU",
                            "unsigned_transaction": "02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c2a2dc27221a592a06914d6f39cc4cabef7dc398bce118176e9aaa560fdc60ec5cddea3350f7dde45265fb42963e6b09122b3400401da37ee24c924d264c80c0200020585a99849ac66f619f6d272aa6f58d829072be14f9f2c2b2e329b32547f205f93bfd1b2e4d7c0993647351dbde5da9246d7028ca59865525589970468c4992f12fdde3ed797b92766c098b1224f3c1e9fa798d03ad06a9d06417ba6ee98b6b249000000000000000000000000000000000000000000000000000000000000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc000000000c06019e387771aee679c5adf2a00acd2aaeafab6f8340e6d0e8e100c9f3178a60203020001340000000080d5220000000000c80000000000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000004030201000c0300000000e1f50500000000"
                        }
                    ],
                    "total_deactivated_amount": "100000000",
                    "walletAddress": null
                },
                {
                    "deactivates": [
                        {
                            "amount": "1000000000",
                            "expiration_time": 1746525362,
                            "stake_account_address": "AARXFqEwHHfmo9AYDd6KCm2ysghTJN8bvKuhEgH4QGt7",
                            "stake_account_authority": "9zmDS8uYXSLaDCV9gqyPQeHRLPaZvFJV9dN6oTFzCwVU",
                            "stake_id": "2d56cbaf-a9aa-4633-b6ad-f0ec406b6406",
                            "unsigned_transaction": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100020485a99849ac66f619f6d272aa6f58d829072be14f9f2c2b2e329b32547f205f93882322e6ffeb183cc5484db6a2e8af597abc630e4aff0f968e7036e34e3927b806a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000006a7d51718c774c928566398691d5eb68b5eb8a39b4b6d5c73555b2100000000d4732682e0ccb82122e84c76f8412241e75814bb1896d2fa55cc8ee9ecb879920102030103000405000000",
                            "withdrawal_authority": "9zmDS8uYXSLaDCV9gqyPQeHRLPaZvFJV9dN6oTFzCwVU"
                        }
                    ],
                    "splits": [
                        {
                            "amount": "1000000000",
                            "new_stake_account_address": "AARXFqEwHHfmo9AYDd6KCm2ysghTJN8bvKuhEgH4QGt7",
                            "new_stake_id": "87fd69d2-27a7-4f72-8c96-9bf33361ff94",
                            "splitted_stake_account_address": "FNCWPTnfS5oTz497ro21ppXx2HuxdBJmvZRv2ecfWAfF",
                            "splitted_stake_id": "dbd96604-66ea-4f0a-8543-53f4b5111c4a",
                            "stake_account_authority": "9zmDS8uYXSLaDCV9gqyPQeHRLPaZvFJV9dN6oTFzCwVU",
                            "unsigned_transaction": "020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049617870a4c5030e3e28d04dfd475b77eed484db13d709114b41c7278b6c1a3ab7518fcb6d259b9aabe764a79059f9a496852d306773cdaf0f14e459c60af4060200020585a99849ac66f619f6d272aa6f58d829072be14f9f2c2b2e329b32547f205f93882322e6ffeb183cc5484db6a2e8af597abc630e4aff0f968e7036e34e3927b8d571d31909f5c53ec6a22e841010f5e23bf53e6d7088ccaec910feb7b2c17976000000000000000000000000000000000000000000000000000000000000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc000000000edecda83fe27879b86775fedfcbe28504592464677ed0abe093fb8869c12db340203020001340000000080d5220000000000c80000000000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000004030201000c0300000000ca9a3b00000000"
                        }
                    ],
                    "total_deactivated_amount": "1000000000",
                    "walletAddress": null
                },
                
            ]
        }
  }
}

SolanaGetDeactivatableAmount

POST SolanaGetDeactivatableAmount

Returns the total staked amount that can be deactivated across all wallets of the user. If any prior deactivation intent was left unsigned, it will be automatically canceled.

You can specify the optional wallets parameter to get the total deactivatable amount in specific wallets.

Body

### 🧪 Example Query

```graphql
query SolanaGetDeactivatableAmount{
    SolanaGetDeactivatableAmount(
    input: {network: "devnet", delegator_address: "9zmDS8uYXSLaDCV9gqyPQeHRLPaZvFJV9dN6oTFzCwVU", staking_authority: "", withdrawal_authority: ""}
  ) {
    ... on GetDeactivatableResponse {
      protocol
      network
      amount
      currency
    }
    ... on ErrorResponse {
      __typename
      code
      message
    }
  }
}

Response

{
  "data": {
        "SolanaGetDeactivatableAmount": {
            "protocol": "solana",
            "network": "devnet",
            "amount": "2.113002137",
            "currency": "SOL"
        }
    }
}

SolanaGetWithdrawableAmount

POST SolanaGetWithdrawableAmount

Returns total amount that can be withdrawn across all wallets of the user. If any prior withdrawal intent was left unsigned, it will be automatically canceled.

You can specify the optional wallets parameter to get the total withdrawable amount in specific wallets. Body

### 🧪 Example Query

```graphql
query SolanaGetWithdrawableAmount{
   SolanaGetWithdrawableAmount(
    input: {network: "devnet", delegator_address: "9zmDS8uYXSLaDCV9gqyPQeHRLPaZvFJV9dN6oTFzCwVU", withdrawal_authority: "9zmDS8uYXSLaDCV9gqyPQeHRLPaZvFJV9dN6oTFzCwVU"}
  ) {
    ... on WithdrawableAmount {
      __typename
      amount
      currency
      network
      protocol
    }
    ... on Error {
      __typename
      code
      message
    }
  }
}

Response

{
  data: {
    "SolanaGetWithdrawableAmount": {
            "__typename": "WithdrawableAmount",
            "amount": "0",
            "currency": "SOL",
            "network": "devnet",
            "protocol": "solana"
        }
  }
}

SolanaListWithdrawalIntents

POST SolanaListWithdrawalIntents

Retrieve a list of all outstanding withdrawal intents Body

### 🧪 Example Query

```graphql
query SolanaListWithdrawalIntents{
 SolanaListWithdrawalIntents(input: {network: "devnet"}) {
    ... on ListWithdrawalIntentsResponse {
      customerId
      network
      protocol
      solana {
        customerId
        network
        protocol
        solana {
          total_withdraw_amount
          withdraws {
            amount
            expiration_time
            stake_account_address
            stake_id
            unsigned_transaction
            withdrawal_authority_public_key
          }
        }
        withdrawal_intent_id 
      }
    }
    ... on ErrorResponse {
      __typename
      code
      message
    }
  }
}

Response

{
  data: {
    "SolanaListWithdrawalIntents": {
            "customerId": "128554f4-0071-7072-01f8-be5c70e48162",
            "network": "devnet",
            "protocol": "solana",
            "solana": [
                {
                    "customerId": "128554f4-0071-7072-01f8-be5c70e48162",
                    "network": "devnet",
                    "protocol": "solana",
                    "solana": {
                        "total_withdraw_amount": "1002282180",
                        "withdraws": [
                            {
                                "amount": "1002282180",
                                "expiration_time": 1746529533,
                                "stake_account_address": "FNCWPTnfS5oTz497ro21ppXx2HuxdBJmvZRv2ecfWAfF",
                                "stake_id": "stake_urryb5nsef",
                                "unsigned_transaction": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100030585a99849ac66f619f6d272aa6f58d829072be14f9f2c2b2e329b32547f205f93d571d31909f5c53ec6a22e841010f5e23bf53e6d7088ccaec910feb7b2c1797606a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000006a7d51718c774c928566398691d5eb68b5eb8a39b4b6d5c73555b210000000006a7d517193584d0feed9bb3431d13206be544281b57b8566cc5375ff4000000f4aa59e2c5fd9459af399e0602506cac45a081ef8baabaddfd029b0303d1edee01020501000304000c04000000c49cbd3b00000000",
                                "withdrawal_authority_public_key": "9zmDS8uYXSLaDCV9gqyPQeHRLPaZvFJV9dN6oTFzCwVU"
                            }
                        ]
                    },
                    "withdrawal_intent_id": "8ddac346-820e-4120-90e4-fd08fa1aea3b"
                },
               ]
        }
  }
}

Last updated