Getting Started

Staking on the Hyperliquid network using the Staking API consists of several main steps:

  1. Transfer tokens from the spot to staking balance.
  2. Create a delegate request.
  3. Sign and send the transaction to the network.

Get an authentication token to start using Staking API.

Request examples are provided using cURL.

1. Transfer Tokens to Staking Balance

Since staking on Hyperliquid happens within HyperCore, the HYPE tokens are required to be in the staking balance. Just like USDC can be transferred between perps and spot accounts, HYPE can be transferred between spot and staking balances.

  1. Send a POST request to /api/v1/hyperliquid/[network]/staking/transfer.

    Example request (for testnet network):

    curl --request POST \
         --url https://api-test.p2p.org/api/v1/hyperliquid/testnet/staking/transfer \
         --header 'accept: application/json' \
         --header 'authorization: Bearer <token>' \
         --header 'content-type: application/json' \
         --data '
    {
      "amount": 10,
      "delegatorAddress": "0x80f0cd23da5bf3a0101110cfd0f89c8a69a1384e"
    }
    '
    • amount — amount of tokens to transfer in HYPE.
    • delegatorAddressdelegator account address which keeps tokens.

    Example response:

    {
      "result": {
        "amount": "10",
        "unsignedTransaction": "string",
        "createdAt": "2025-10-01T12:00:00Z"
      },
      "error": {}
    }
    • amount — amount of tokens to transfer in HYPE.
    • unsignedTransaction — unsigned transaction in the hexadecimal format. Sign the transaction and submit it to the blockchain to perform the called action.
    • createdAt — timestamp of the transaction in the ISO 8601 format.
  2. Use unsignedTransaction to sign and send the transaction to Hyperliquid network.

    After the transaction has been successfully executed, the delegator staking balance can delegate transferred tokens to the P2P validator. Transfers from the spot to staking balance are instant.

2. Create Delegate Request

  1. Send a POST request to /api/v1/hyperliquid/[network]/staking/delegate.

    Example request (for testnet network):

    curl --request POST \
         --url https://api-test.p2p.org/api/v1/hyperliquid/testnet/staking/delegate \
         --header 'accept: application/json' \
         --header 'authorization: Bearer <token>' \
         --header 'content-type: application/json' \
         --data '
    {
      "amount": 10,
      "delegatorAddress": "0x80f0cd23da5bf3a0101110cfd0f89c8a69a1384e"
    }
    '
    • amount — amount of tokens to delegate.
    • delegatorAddress — delegator address on the Hyperliquid network.

    Example response:

    {
      "result": {
        "amount": "10",
        "unsignedTransaction": "string",
        "createdAt": "2025-10-01T12:00:00Z"
      },
      "error": {}
    }
    • amount — amount of tokens to delegate.
    • unsignedTransaction — unsigned transaction in the hexadecimal format. Sign the transaction and submit it to the blockchain to perform the called action.
    • createdAt — timestamp of the transaction in the ISO 8601 format.
  2. Use unsignedTransaction to sign and send the transaction to Hyperliquid network.

    After this transaction has been successfully executed, the delegator starts actively participating in staking through the P2P validator. Note that delegations have a lock-up duration of 1 day, which means that only after this period, delegations can be partially or fully undelegated.

    Rewards are accrued every minute and distributed to stakers every day. Rewards are redelegated automatically to the staked validator, i.e. compounded.

Get Delegator Summary

Additionally, check the delegator's active balances for HYPE spot balance, stake balance, active delegations and pending withdrawals by sending the GET request to /api/v1/hyperliquid/[network]/staking/info/[delegatorAddress].

Example request (for testnet network):

curl --request GET \
     --url https://api-test.p2p.org/api/v1/hyperliquid/testnet/staking/info/0x80f0cd23da5bf3a0101110cfd0f89c8a69a1384e \
     --header 'accept: application/json' \
     --header 'authorization: Bearer <token>' 
  • delegatorAddress — delegator address on the Hyperliquid network.

Example response:

{
  "result": {
    "spotBalance": 500.25,
    "stakeBalance": 250.75,
    "delegations": [
      {
        "amount": 100.5,
        "validator": "0x497beec89958848126c2ea65934ce430e1410ad2",
        "lockedUntil": "2024-12-31T23:59:59Z"
      }
    ],
    "pendingWithdrawal": 75
  },
  "error": {}
}
  • spotBalance — amount of tokens on the spot balance available to transfer to the staking balance.
  • stakeBalance — amount of tokens on the staking balance available to delegate.
  • delegations — list of all the delegations per delegator.
    • amount — amount of delegated tokens in HYPE.
    • validator — validator address.
    • lockedUntil — timestamp of the delegation expiration in the ISO 8601 format.
  • pendingWithdrawal — total amount of tokens withdrawn that are pending in the unstaking queue.

What's Next?