Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/fuseio/fuse-docs/llms.txt

Use this file to discover all available pages before exploring further.

The Staking API provides endpoints for managing token staking on the Fuse Network. Use it to discover available staking options with APR and TVL data, stake or unstake tokens from a wallet, and query the staked balances and earned rewards for any address. All staking actions return encoded contract call data that your application submits on-chain.

Base URL

https://api.fuse.io/api/v0/staking

Authentication

All requests require a public API key passed as a query parameter:
?apiKey=YOUR_PUBLIC_API_KEY
Get your API key from the Fuse Console.

GET /staking_options

Returns all available staking options on Fuse Network, including token details, APR, TVL, and staking provider information.

Request parameters

apiKey
string
required
Your public API key.

Response

An array of staking option objects.
[].tokenAddress
string
Contract address of the token that can be staked.
[].tokenSymbol
string
Symbol of the stakeable token (e.g., FUSE).
[].tokenName
string
Full name of the stakeable token.
[].tokenLogoURI
string
URL of the token’s logo image.
[].unStakeTokenAddress
string
Contract address of the token received when unstaking (receipt token).
[].stakingProviderId
string
Unique identifier for the staking provider or contract.
[].expired
boolean
Whether this staking option has expired and is no longer accepting new stakes.
[].stakingApr
number
Annual percentage rate for staking rewards, expressed as a decimal (e.g., 0.12 for 12%).
[].tvl
number
Total value locked in this staking option, in USD.

Example

curl "https://api.fuse.io/api/v0/staking/staking_options?apiKey=YOUR_API_KEY"
[
  {
    "tokenAddress": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
    "tokenSymbol": "FUSE",
    "tokenName": "Fuse",
    "tokenLogoURI": "https://example.com/fuse-logo.png",
    "unStakeTokenAddress": "0xUnstakeTokenAddress",
    "stakingProviderId": "fuse-validator-pool",
    "expired": false,
    "stakingApr": 0.12,
    "tvl": 5000000
  }
]

POST /stake

Stakes a specified amount of tokens from a wallet. Returns the contract address and encoded ABI call data to submit on-chain.

Request parameters

apiKey
string
required
Your public API key.

Request body

accountAddress
string
required
The wallet address that will stake the tokens.
tokenAmount
string
required
The amount of tokens to stake, in base units (before applying decimals).
tokenAddress
string
required
The contract address of the token to stake. Use the tokenAddress from the /staking_options response.

Response

contractAddress
string
The staking contract address to send the transaction to.
encodedABI
string
The ABI-encoded call data for the staking transaction. Pass this as the data field in the transaction.

Example

curl -X POST "https://api.fuse.io/api/v0/staking/stake?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountAddress": "0xYourWalletAddress",
    "tokenAmount": "1000000000000000000",
    "tokenAddress": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
  }'
{
  "contractAddress": "0xStakingContractAddress",
  "encodedABI": "0xabcdef1234567890..."
}
After receiving the contractAddress and encodedABI, submit the transaction from your application using your Web3 provider. The accountAddress must have sufficient token balance to complete the stake.

POST /unstake

Unstakes a specified amount of previously staked tokens and returns them to the wallet. Returns encoded contract call data.

Request parameters

apiKey
string
required
Your public API key.

Request body

accountAddress
string
required
The wallet address that holds the staked tokens.
tokenAmount
string
required
The amount of staked tokens to withdraw, in base units.
tokenAddress
string
required
The contract address of the original staked token.

Response

contractAddress
string
The staking contract address to send the unstake transaction to.
encodedABI
string
The ABI-encoded call data for the unstaking transaction.

Example

curl -X POST "https://api.fuse.io/api/v0/staking/unstake?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountAddress": "0xYourWalletAddress",
    "tokenAmount": "1000000000000000000",
    "tokenAddress": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
  }'
{
  "contractAddress": "0xStakingContractAddress",
  "encodedABI": "0xfedcba0987654321..."
}

GET /staked_tokens/

Returns the staking summary for a specific wallet address, including total value staked, total earned rewards, and per-token staking details.

Request parameters

apiKey
string
required
Your public API key.
accountAddress
string
required
The wallet address to query staked token information for.

Response

totalStakedAmountUSD
number
Total value of all staked tokens for this address, denominated in USD.
totalEarnedAmountUSD
number
Total value of staking rewards earned by this address, denominated in USD.
stakedTokens
array
Array of staking option objects representing each active stake. Each object has the same structure as entries in the /staking_options response, with the addition of the staked balance.
stakedTokens[].tokenAddress
string
Token contract address.
stakedTokens[].tokenSymbol
string
Token symbol.
stakedTokens[].tokenName
string
Token name.
stakedTokens[].stakingApr
number
Annual percentage rate for rewards.
stakedTokens[].tvl
number
Total value locked in this staking option.
stakedTokens[].stakingProviderId
string
Staking provider identifier.
stakedTokens[].expired
boolean
Whether this staking option has expired.

Example

curl "https://api.fuse.io/api/v0/staking/staked_tokens/0xYourWalletAddress?apiKey=YOUR_API_KEY"
{
  "totalStakedAmountUSD": 1500.00,
  "totalEarnedAmountUSD": 48.75,
  "stakedTokens": [
    {
      "tokenAddress": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
      "tokenSymbol": "FUSE",
      "tokenName": "Fuse",
      "stakingApr": 0.12,
      "tvl": 5000000,
      "stakingProviderId": "fuse-validator-pool",
      "expired": false
    }
  ]
}

Error responses

statusCode
integer
HTTP status code of the error.
errorMessage
string
Human-readable error description.
error
string
Short error code.
StatusMeaning
403Forbidden — invalid or missing API key

Build docs developers (and LLMs) love