Skip to main content

Endpoints

API Usage

Once you have access to the Staking API with a validated user and existing API keys, you can start using this service.

Try it live

tip

Every endpoint on this page can be executed from the interactive Swagger console, using your own X-API-KEY.

The machine-readable OpenAPI schema is available at:

Authentication

In order to use the Staking API endpoints you need to include your API KEY.

tip

Heads up! To obtain a valid API key required for authentication, please refer to the Authentication > Create API keys section of the documentation.

Header:

NameDescriptionExample valueRequired
X-API-KEYYour api key value<API_KEY_VALUE>
X-NETWORKBlockchain network identifier143

X-NETWORK header

Use the X-NETWORK header to select the Monad network (currently 143 for Monad Mainnet).

info

If you omit the header the API falls back to the default Monad network configured for your account.

tip

Need another Monad environment exposed? Let us know at [email protected].

List available networks

Use this helper endpoint to obtain the list of Monad staking networks that are currently enabled for your API key.

  • Endpoint: /api/v1/monad/native/networks

Response payload fields:

FieldTypeRequiredDescription
namestringInternal blockchain entry name
typestringBlockchain type string (always ETHEREUM)
chain_idstringChain identifier (currently 143)
is_defaultbooleantrue when this network is used as fallback

Example

curl "https://staking-api.stakely.io/api/v1/monad/native/networks" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143"

Response:

[
{
"name": "monad",
"type": "ETHEREUM",
"chain_id": "143",
"is_default": true
}
]

Delegate action

Craft a delegate transaction:

  • Endpoint: /api/v1/monad/native/action/delegate

Description

This endpoint will craft a delegate transaction ready to be signed. The transaction will delegate the specified amount to the validator.

Request body parameters

FieldTypeRequiredDescription
addressstringAddress that will perform the staking action
amountnumberAmount to delegate in ether units

Returned

FieldTypeRequiredDescription
serialized_tx_hexstringSerialized transaction hex string ready to be signed
unsigned_tx_hash_hexstringUnsigned tx hash hex string used for offline signing integrations
payloadobjectTransaction payload object

Example

curl -X POST "https://staking-api.stakely.io/api/v1/monad/native/action/delegate" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143" \
-H "Content-Type: application/json" \
-d '{
"address": "0xb794f5ea0ba39494ce839613fffba74279579268",
"amount": 0.5
}'

Response:

{
"serialized_tx_hex": "03b8ef9558b9a2d9f2d4c1f4f8bafce1a6df628d6c521474d6823b6e3223d9e8af",
"unsigned_tx_hash_hex": "1a6edb7358323bafca52b1755f3ad985754dc23887110b65429373ed83321500",
"payload": {
"type": "0x0",
"nonce": "0x5fe08",
"gasLimit": "0x30d40",
"to": "0x169856275ddca01b2fcdc63c4f1b0adf72a4cf10",
"value": "0x16345785d8a0000",
"data": "0x18f72950...",
"gasPrice": "0x2887734d"
}
}

Undelegate action

Craft an undelegate transaction:

  • Endpoint: /api/v1/monad/native/action/undelegate

Description

This endpoint will craft an undelegate transaction ready to be signed. The undelegated amount will be placed in a withdrawal slot and can be withdrawn after the withdrawal epoch.

Request body parameters

FieldTypeRequiredDescription
addressstringAddress that will perform the undelegation
amountnumberAmount to undelegate in ether units
withdrawIdnumberWithdrawal slot identifier (0-255)

Returned

FieldTypeRequiredDescription
serialized_tx_hexstringSerialized transaction hex string ready to be signed
unsigned_tx_hash_hexstringUnsigned tx hash hex string used for offline signing integrations
payloadobjectTransaction payload object

Example

curl -X POST "https://staking-api.stakely.io/api/v1/monad/native/action/undelegate" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143" \
-H "Content-Type: application/json" \
-d '{
"address": "0xb794f5ea0ba39494ce839613fffba74279579268",
"amount": 0.5,
"withdrawId": 0
}'

Response:

{
"serialized_tx_hex": "03b8ef9558b9a2d9f2d4c1f4f8bafce1a6df628d6c521474d6823b6e3223d9e8af",
"unsigned_tx_hash_hex": "1a6edb7358323bafca52b1755f3ad985754dc23887110b65429373ed83321500",
"payload": {
"type": "0x0",
"nonce": "0x5fe08",
"gasLimit": "0x30d40",
"to": "0x169856275ddca01b2fcdc63c4f1b0adf72a4cf10",
"value": "0x16345785d8a0000",
"data": "0x18f72950...",
"gasPrice": "0x2887734d"
}
}

Withdraw action

Craft a withdraw transaction:

  • Endpoint: /api/v1/monad/native/action/withdraw

Description

Once the withdrawal is available (after the withdrawal epoch), you can claim it. This action will craft a withdraw transaction for the specified withdrawal slot.

Request body parameters

FieldTypeRequiredDescription
addressstringAddress requesting the withdrawal
withdrawIdnumberWithdrawal slot identifier to claim from (0-255)

Returned

FieldTypeRequiredDescription
serialized_tx_hexstringSerialized transaction hex string ready to be signed
unsigned_tx_hash_hexstringUnsigned tx hash hex string used for offline signing integrations
payloadobjectTransaction payload object

Example

curl -X POST "https://staking-api.stakely.io/api/v1/monad/native/action/withdraw" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143" \
-H "Content-Type: application/json" \
-d '{
"address": "0xb794f5ea0ba39494ce839613fffba74279579268",
"withdrawId": 0
}'

Response:

{
"serialized_tx_hex": "03b8ef9558b9a2d9f2d4c1f4f8bafce1a6df628d6c521474d6823b6e3223d9e8af",
"unsigned_tx_hash_hex": "1a6edb7358323bafca52b1755f3ad985754dc23887110b65429373ed83321500",
"payload": {
"type": "0x0",
"nonce": "0x5fe08",
"gasLimit": "0x30d40",
"to": "0x169856275ddca01b2fcdc63c4f1b0adf72a4cf10",
"value": "0x16345785d8a0000",
"data": "0x18f72950...",
"gasPrice": "0x2887734d"
}
}

Claim rewards action

Craft a claim rewards transaction:

  • Endpoint: /api/v1/monad/native/action/claim-rewards

Description

This endpoint will craft a claim rewards transaction ready to be signed. It allows you to claim accumulated staking rewards.

Request body parameters

FieldTypeRequiredDescription
addressstringAddress that will claim rewards

Returned

FieldTypeRequiredDescription
serialized_tx_hexstringSerialized transaction hex string ready to be signed
unsigned_tx_hash_hexstringUnsigned tx hash hex string used for offline signing integrations
payloadobjectTransaction payload object

Example

curl -X POST "https://staking-api.stakely.io/api/v1/monad/native/action/claim-rewards" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143" \
-H "Content-Type: application/json" \
-d '{
"address": "0xb794f5ea0ba39494ce839613fffba74279579268"
}'

Response:

{
"serialized_tx_hex": "03b8ef9558b9a2d9f2d4c1f4f8bafce1a6df628d6c521474d6823b6e3223d9e8af",
"unsigned_tx_hash_hex": "1a6edb7358323bafca52b1755f3ad985754dc23887110b65429373ed83321500",
"payload": {
"type": "0x0",
"nonce": "0x5fe08",
"gasLimit": "0x30d40",
"to": "0x169856275ddca01b2fcdc63c4f1b0adf72a4cf10",
"value": "0x16345785d8a0000",
"data": "0x18f72950...",
"gasPrice": "0x2887734d"
}
}

Compound action

Craft a compound rewards transaction:

  • Endpoint: /api/v1/monad/native/action/compound

Description

This endpoint will craft a compound rewards transaction ready to be signed. It automatically reinvests your accumulated rewards back into your stake position.

Request body parameters

FieldTypeRequiredDescription
addressstringAddress that will compound rewards

Returned

FieldTypeRequiredDescription
serialized_tx_hexstringSerialized transaction hex string ready to be signed
unsigned_tx_hash_hexstringUnsigned tx hash hex string used for offline signing integrations
payloadobjectTransaction payload object

Example

curl -X POST "https://staking-api.stakely.io/api/v1/monad/native/action/compound" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143" \
-H "Content-Type: application/json" \
-d '{
"address": "0xb794f5ea0ba39494ce839613fffba74279579268"
}'

Response:

{
"serialized_tx_hex": "03b8ef9558b9a2d9f2d4c1f4f8bafce1a6df628d6c521474d6823b6e3223d9e8af",
"unsigned_tx_hash_hex": "1a6edb7358323bafca52b1755f3ad985754dc23887110b65429373ed83321500",
"payload": {
"type": "0x0",
"nonce": "0x5fe08",
"gasLimit": "0x30d40",
"to": "0x169856275ddca01b2fcdc63c4f1b0adf72a4cf10",
"value": "0x16345785d8a0000",
"data": "0x18f72950...",
"gasPrice": "0x2887734d"
}
}

Prepare action

Gathers signature and unsigned tx:

  • Endpoint: /api/v1/monad/native/action/prepare

Description

Prepare a signed transaction by gathering the provided signatures (r, s, v) with the unsigned transaction hex string:

Request body parameters

FieldTypeRequiredDescription
serialized_tx_hexstringUnsigned serialized transaction hex string ready to be signed
rstringr part of the ECDSA signature in hex
sstrings part of the ECDSA signature in hex
vnumberv part of the ECDSA signature

Returned

FieldTypeRequiredDescription
signed_tx_hexstringSigned transaction hex string ready to be broadcasted

Example

curl -X POST "https://staking-api.stakely.io/api/v1/monad/native/action/prepare" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143" \
-H "Content-Type: application/json" \
-d '{
"serialized_tx_hex": "03b8ef9558b9a2d9f2d4c1f4f8bafce1a6df628d6c521474d6823b6e3223d9e8af",
"r": "6da2b6fe309b629720bc3d1d3a8befb3f461e3b53ccee85c55d10b11d3a3d263",
"s": "085fe4bb8ff0c04e4e41a2ba44609f894b9a70f4330de726d1403ee21b65e685",
"v": 34035
}'

Response:

{
"signed_tx_hex": "0xf9014b1f8455bd900c83030d4094169856275d...ad908c2b5b15"
}

Broadcast action

Broadcast a signed transaction:

  • Endpoint: /api/v1/monad/native/action/broadcast

Description

Broadcast a signed transaction. Usually you will broadcast the signed transaction returned in prepare previous step:

Request body parameters

FieldTypeRequiredDescription
signed_tx_hexstringSigned transaction hex string ready to be broadcasted

Returned

FieldTypeRequiredDescription
tx_hashstringTransaction hash of the broadcasted transaction

Example

curl -X POST "https://staking-api.stakely.io/api/v1/monad/native/action/broadcast" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143" \
-H "Content-Type: application/json" \
-d '{
"signed_tx_hex": "0xf9014b1f8455bd900c83030d4094169856275d...ad908c2b5b15"
}'

Response:

{
"tx_hash": "0x23273dacef9d64fdb2c790e9f9f4c13574125078a272059dac2473bc8bfba163"
}

Stake balance

Get stake balance for the given address:

  • Endpoint: /api/v1/monad/native/stake-balance/{address}

Description

Get stake balance and rewards information for the given delegator address. All values are returned in ether units.

Request parameters

ParameterInTypeRequiredDescription
addresspathstringDelegator address to query

Returned

FieldTypeRequiredDescription
stakenumberCurrent staked amount in ether units
accRewardPerTokennumberAccumulated reward per token (converted from wei to ether)
unclaimedRewardsnumberUnclaimed rewards available in ether units
deltaStakenumberDelta stake amount in ether units
nextDeltaStakenumberNext delta stake amount (as number)
deltaEpochnumberDelta epoch number
nextDeltaEpochnumberNext delta epoch number

Example

curl "https://staking-api.stakely.io/api/v1/monad/native/stake-balance/0xb794f5ea0ba39494ce839613fffba74279579268" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143"

Response:

{
"stake": 100.5,
"accRewardPerToken": 0.000123456,
"unclaimedRewards": 2.345,
"deltaStake": 0.1,
"nextDeltaStake": 0.05,
"deltaEpoch": 123,
"nextDeltaEpoch": 124
}

Withdrawal requests

Get withdrawal requests for the given address:

  • Endpoint: /api/v1/monad/native/withdrawals/{address}

Description

Get withdrawal requests for the given delegator address. You can optionally filter by withdrawal ID range using query parameters. All values are returned in ether units.

Request parameters

ParameterInTypeRequiredDescription
addresspathstringDelegator address to query withdrawal requests for
startWithdrawIdquerynumberStart withdrawal id (defaults to 0)
endWithdrawIdquerynumberEnd withdrawal id (defaults to 255)

Returned

FieldTypeRequiredDescription
validatorIdnumberValidator ID
delegatorstringDelegator address
startWithdrawIdnumberStart withdrawal ID in the range
endWithdrawIdnumberEnd withdrawal ID in the range
validRequestsGetWithdrawalRequestResponseDto[]List of valid withdrawal requests with converted values
errorsMonadWithdrawalRequestErrorDto[]List of errors encountered during withdrawal request retrieval

Each errors item:

FieldTypeRequiredDescription
withdrawIdnumber
messagestring

Example

curl "https://staking-api.stakely.io/api/v1/monad/native/withdrawals/0xb794f5ea0ba39494ce839613fffba74279579268" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143"

Response:

{
"validatorId": 66,
"delegator": "0xb794f5ea0ba39494ce839613fffba74279579268",
"startWithdrawId": 0,
"endWithdrawId": 255,
"validRequests": [
{
"withdrawId": 0,
"withdrawalAmount": 10.5,
"accRewardPerToken": 0.000123456,
"withdrawEpoch": 123
}
],
"errors": [
{
"withdrawId": null,
"message": null
}
]
}

Withdrawal request

Get a single withdrawal request:

  • Endpoint: /api/v1/monad/native/withdrawal/{address}/{withdrawId}

Description

Get a single withdrawal request for the given delegator address and withdrawal slot ID. All values are returned in ether units.

Request parameters

ParameterInTypeRequiredDescription
addresspathstringDelegator address
withdrawIdpathnumberWithdrawal slot identifier (0-255)

Returned

FieldTypeRequiredDescription
withdrawIdnumberWithdrawal slot identifier
withdrawalAmountnumberWithdrawal amount in ether units (converted from wei)
accRewardPerTokennumberAccumulated reward per token in ether units (converted from wei)
withdrawEpochnumberEpoch number when withdrawal becomes available

Example

curl "https://staking-api.stakely.io/api/v1/monad/native/withdrawal/0xb794f5ea0ba39494ce839613fffba74279579268/0" \
-H "X-API-KEY: $STAKELY_API_KEY" \
-H "X-NETWORK: 143"

Response:

{
"withdrawId": 0,
"withdrawalAmount": 10.5,
"accRewardPerToken": 0.000123456,
"withdrawEpoch": 123
}