Getting Started

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

  1. Create a delegate request.
  2. Sign and send the transaction to the network.

Get an authentication token to start using Staking API.

Request examples are provided using cURL.

1. Create delegate request

Send a POST request to /api/v2/monad/{network}/delegators/{delegatorAddress}/stakes/delegations.

Example request (for testnet network):

curl --request POST \
     --url https://api-test.p2p.org/api/v2/monad/testnet/delegators/0x1234567890abcdef1234567890abcdef12345678/stakes/delegations \
     --header 'accept: application/json' \
     --header 'authorization: Bearer <token>' \
     --header 'content-type: application/json' \
     --data '
{
  "gas": {
    "priorityPricePerGas": "21000",
    "maxPricePerGas": "1000000000"
  },
  "amount": "1000000000000000000"
}
'
  • delegatorAddress — delegator address on the Monad network.
  • amount — amount of tokens to delegate in Wei (1 MON = 10¹⁸ Wei).
  • gas — computational effort required to execute the transaction measured in gas units (optional). If not specified, the values will be set due to the network load.
    • priorityPricePerGas — price per unit of gas in Wei, which is added to the EIP-1559 block's base fee. This added fee is used to incentivize validators to prioritize this transaction.
    • maxPricePerGas — maximum price per unit of gas this transaction will pay for the combined EIP-1559 block's base fee and this transaction's priority fee in Wei.

Example response:

{
  "result": {
    "amount": "1000000000000000000",
    "createdAt": "2025-05-06T10:40:00.000Z",
    "delegatorAddress": "0x1234567890abcdef1234567890abcdef12345678",
    "gas": {
      "gasLimit": "260850",
      "priorityPricePerGas": "1000000000",
      "maxPricePerGas": "2000000000"
    },
    "unsignedTransaction": "0x02f8758301e24004...",
    "validatorId": 1
  },
  "error": {}
}
  • amount — amount of tokens to delegate in Wei (1 MON = 10¹⁸ Wei).
  • createdAt — timestamp of the transaction in the ISO 8601 format.
  • delegatorAddress — delegator address on the Monad network.
  • gas — computational effort required to execute the transaction measured in gas units:
    • gasLimit — maximum gas limit for the transaction.
    • priorityPricePerGas — price per unit of gas in Wei, which is added to the EIP-1559 block's base fee. This added fee is used to incentivize validators to prioritize this transaction.
    • maxPricePerGas — maximum price per unit of gas this transaction will pay for the combined EIP-1559 block's base fee and this transaction's priority fee in Wei.
  • unsignedTransaction — unsigned transaction in the hexadecimal format. Sign the transaction and submit it to the blockchain to perform the called action.
  • validatorId — ID of the validator to which tokens are delegated.

2. Sign and send transaction

Use unsignedTransaction to sign and send the transaction to the Monad network.

To check the transaction status, send a GET request to /api/v2/monad/{network}/transactions/{transactionHash}/status.

Example request (for testnet network):

curl --request GET \
     --url https://api-test.p2p.org/api/v2/monad/testnet/transactions/0x8d80b8ed85b578eeb873731101a926221701ee48218f6c9b83895f7ac1535641/status \
     --header 'accept: application/json' \
     --header 'authorization: Bearer <token>' \
     --header 'content-type: application/json'
  • transactionHash — hash of the transaction.

Example response:

{
  "result": {
    "transactionHash": "0xdef456...789abc",
    "status": "success",
    "blockNumber": 1234567,
    "gasUsed": 21000,
    "createdAt": "2025-05-06T10:40:00.000Z"
  },
  "error": {}
}
  • transactionHash — hash of the transaction.
  • status — transaction status: pending, success, reverted or unknown.
  • blockNumber — unique identifier of the block in which the transaction has been included. Only defined if the transaction status is success or reverted.
  • gasUsed — amount of gas spent for the transaction.
  • createdAt — timestamp of the transaction in the ISO 8601 format.

After this transaction has been successfully executed, the delegator starts actively participating in staking through the P2P validator.

Since the rewards are not auto-compounded, use the separate endpoints to manually claim or compound rewards to the staked validator.

What's next?