> ## Documentation Index
> Fetch the complete documentation index at: https://docs.p2p.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Monad

> Unified API + Monad Integration Workflow

In the following guide, the integration process for the `monad` chain is covered. The Monad integration aligns with the general [Unified API process](/docs/unified-api-getting-started) but with network-specific parameters.

[Get an authentication token](/docs/authentication) to start using the Unified API.

Request examples are provided using [cURL](https://curl.se/).

> To check the integration guides for other chains, refer to the [Networks Supported](/docs/unified-api-networks) section.

<Note>
  **Key Monad-specific details**

  * `chain` — always set to `monad` for Monad-related requests.
  * `network` — environment in which the transaction is processed: `mainnet` or `testnet` (testnet).
  * `stakerAddress` — account address initiating staking, unstaking or withdrawal transactions.
  * `extra.amount` — amount of tokens in Wei (1 MON = 10¹⁸ Wei); the root-level `amount` field is not used.

  The Unified API flow only supports stake, unstake, and withdraw operations. Compound and claim rewards operations are available via the [direct Monad API](/reference/monad) integration.
</Note>

## Staking flow

### 1. Create staking request

Send a POST request to [/api/v1/unified/staking/stake](/reference/unified-create-stake-transaction).

Example request:

<CodeGroup>
  ```bash bash theme={null}
  curl --request POST \
       --url https://api.p2p.org/api/v1/unified/staking/stake \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer <token>' \
       --data '{
      "chain": "monad",
      "network": "mainnet",
      "stakerAddress": "0x1234567890abcdef1234567890abcdef12345678",
      "amount": 1,
      "extra": {
        "amount": "1000000000000000000",
        "gas": {
          "maxPricePerGas": "50000000000",
          "priorityPricePerGas": "2000000000"
        }
      }
    }'
  ```
</CodeGroup>

* `chain` — blockchain network, always set to `monad` for Monad-related requests.

* `network` — environment in which the transaction is processed: `mainnet` or `testnet` for testnet.

* `stakerAddress` — account address initiating the staking transaction.

* `amount` — not used, any value is ignored; see the `extra.amount` field.

* `extra` — additional parameters:

  * `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.

    * `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.
    * `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.

Example response:

<CodeGroup>
  ```json JSON theme={null}
  {
      "amount": 0,
      "stakerAddress": "0x1234567890abcdef1234567890abcdef12345678",
      "unsignedTransactionData": "0x02f8...",
      "createdAt": "2026-03-06T12:00:00.000Z",
      "extraData": {
        "gas": {
          "gasLimit": "100000",
          "maxPricePerGas": "50000000000",
          "priorityPricePerGas": "2000000000"
        },
        "validatorId": 1,
        "amount": "1000000000000000000"
      }
    }
  ```
</CodeGroup>

* `amount` — always set to 0 for Monad; the real stake amount is provided in the `extra.amount` field.

* `stakerAddress` — account address initiating the staking transaction.

* `unsignedTransactionData` — unsigned transaction in Base64 encrypted format. The object contains the list of data fields to be used to construct the staking transaction.

* `createdAt` — timestamp of the transaction in ISO 8601 format.

* `extraData` — additional transaction details:

  * `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.

  * `validatorId` — ID of the validator to which tokens are delegated.

  * `amount` — amount of tokens to delegate in Wei (1 MON = 10¹⁸ Wei).

### 2. Sign and send transaction

Use `unsignedTransactionData` to [sign](/docs/unified-api-signing-transaction) the transaction using the Monad-specific signing logic.

To broadcast the signed transaction to the Monad network, send a POST request to [/api/v1/unified/transaction/broadcast](/reference/unified-transaction-send).

Example request:

<CodeGroup>
  ```bash bash theme={null}
  curl --request POST \
       --url https://api.p2p.org/api/v1/unified/transaction/broadcast \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer <token>' \
       --data '{
      "chain": "monad",
      "network": "mainnet",
      "stakerAddress": "0x1234567890abcdef1234567890abcdef12345678",
      "signedTransaction": "0x02f87a82..."
    }'
  ```
</CodeGroup>

* `chain` — blockchain network.
* `network` — environment in which the transaction is processed.
* `stakerAddress` — Monad account address initiating the staking transaction.
* `signedTransaction` — signed transaction in Base64 encrypted format, which contains all transaction details (e.g., accounts, instructions, and signatures) required to broadcast the transaction to the network.

Example response:

<CodeGroup>
  ```json JSON theme={null}
  {
      "status": "broadcasted",
      "extraData": {
        "transactionHash": "0xabc123...",
        "broadcastedAt": "2026-03-06T12:01:00.000Z"
      }
    }
  ```
</CodeGroup>

* `status` — transaction status: `pending`, `broadcasted`, or `failed`.

* `extraData` — additional transaction details:

  * `transactionHash` — hash of the transaction.
  * `broadcastedAt` — timestamp of the transaction in the ISO 8601 format.

## Unstaking flow

### 1. Create unstaking request

Send a POST request to [/api/v1/unified/staking/unstake](/reference/unified-create-unstake-transaction).

Example request:

<CodeGroup>
  ```bash bash theme={null}
  curl --request POST \
       --url https://api.p2p.org/api/v1/unified/staking/unstake \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer <token>' \
       --data '{
      "chain": "monad",
      "network": "mainnet",
      "stakerAddress": "0x1234567890abcdef1234567890abcdef12345678",
      "extra": {
        "amount": "500000000000000000",
        "gas": {
          "maxPricePerGas": "50000000000",
          "priorityPricePerGas": "2000000000"
        }
      }
    }'
  ```
</CodeGroup>

* `chain` — blockchain network.

* `network` — environment in which the transaction is processed.

* `stakerAddress` — account address initiated the staking transaction.

* `extra` — additional parameters:

  * `amount` — amount of tokens to unstake 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:

<CodeGroup>
  ```json JSON theme={null}
  {
      "stakerAddress": "0x1234567890abcdef1234567890abcdef12345678",
      "unsignedTransactionData": "0x02f8...",
      "createdAt": "2026-03-06T12:00:00.000Z",
      "extraData": {
        "gas": {
          "gasLimit": "120000",
          "maxPricePerGas": "50000000000",
          "priorityPricePerGas": "2000000000"
        },
        "validatorId": 1,
        "withdrawId": 3,
        "amount": "500000000000000000"
      }
    }
  ```
</CodeGroup>

* `stakerAddress` — account address initiated the staking transaction.

* `unsignedTransactionData` — unsigned transaction in Base64 encrypted format. The object contains the list of data fields to be used to construct the unstaking transaction.

* `createdAt` — timestamp of the transaction in the ISO 8601 format.

* `extraData` — additional transaction details:

  * `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.

  * `validatorId` — ID of the validator to which tokens are delegated.

  * `withdrawId` — identifier of the withdrawal request represented as an integer between 0 and 255; required for the withdrawal operation.

  * `amount` — amount of tokens to unstake in Wei (1 MON = 10¹⁸ Wei).

### 2. Sign and send transaction

Use `unsignedTransactionData` to [sign and send](/docs/unified-api-signing-transaction) the transaction following the Monad-specific signing logic.

### 3. Create withdrawal request

Send a POST request to [/api/v1/unified/staking/withdraw](/reference/unified-create-withdraw-transaction).

Example request:

<CodeGroup>
  ```bash bash theme={null}
  curl --request POST \
       --url https://api-test.p2p.org/api/v1/unified/staking/withdraw \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer <token>' \
       --data '{
      "chain": "monad",
      "network": "mainnet",
      "stakerAddress": "0x1234567890abcdef1234567890abcdef12345678",
      "extra": {
        "withdrawId": 3,
        "gas": {
          "maxPricePerGas": "50000000000",
          "priorityPricePerGas": "2000000000"
        }
      }
    }'
  ```
</CodeGroup>

* `chain` — blockchain network.

* `network` — environment in which the transaction is processed.

* `stakerAddress` — account address initiating the withdrawal transaction.

* `extra` — additional parameters:

  * `withdrawId` — identifier of the withdrawal request from the previous unstake response.

  * `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:

<CodeGroup>
  ```json JSON theme={null}
    {
      "stakerAddress": "0x1234567890abcdef1234567890abcdef12345678",
      "unsignedTransactionData": "0x02f8...",
      "createdAt": "2026-03-06T12:00:00.000Z",
      "extraData": {
        "gas": {
          "gasLimit": "80000",
          "maxPricePerGas": "50000000000",
          "priorityPricePerGas": "2000000000"
        },
        "validatorId": 1,
        "withdrawId": 3
      }
    }
  ```
</CodeGroup>

* `stakerAddress` — account address initiated the withdrawal transaction.

* `unsignedTransactionData` — unsigned transaction in Base64 encrypted format. The object contains the list of data fields to be used to construct the staking transaction.

* `createdAt` — timestamp of the transaction in the ISO 8601 format.

* `extraData` — additional transaction details:

  * `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.

  * `validatorId` — ID of the validator from which the tokens are undelegated.

  * `withdrawId` — identifier of the withdrawal request.

### 4. Sign and send transaction

Use `unsignedTransactionData` to [sign and send](/docs/unified-api-signing-transaction) the transaction following the Monad-specific signing logic.


## Related topics

- [Unified API Reference](/reference/unified-create-stake-transaction.md)
- [Integration Workflow Example](/docs/unified-api-getting-started.md)
- [Networks Supported](/docs/unified-api-networks.md)
