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
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.
Heads up! To obtain a valid API key required for authentication, please refer to the Authentication > Create API keys section of the documentation.
Header:
| Name | Description | Example value | Required |
|---|---|---|---|
X-API-KEY | Your api key value | <API_KEY_VALUE> | ✅ |
X-NETWORK | Blockchain network identifier | 143 | ⚪ |
X-NETWORK header
Use the X-NETWORK header to select the Monad network (currently 143 for Monad Mainnet).
If you omit the header the API falls back to the default Monad network configured for your account.
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:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✅ | Internal blockchain entry name |
type | string | ✅ | Blockchain type string (always ETHEREUM) |
chain_id | string | ✅ | Chain identifier (currently 143) |
is_default | boolean | ✅ | true 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
| Field | Type | Required | Description |
|---|---|---|---|
address | string | ✅ | Address that will perform the staking action |
amount | number | ✅ | Amount to delegate in ether units |
Returned
| Field | Type | Required | Description |
|---|---|---|---|
serialized_tx_hex | string | ✅ | Serialized transaction hex string ready to be signed |
unsigned_tx_hash_hex | string | ✅ | Unsigned tx hash hex string used for offline signing integrations |
payload | object | ✅ | Transaction 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
| Field | Type | Required | Description |
|---|---|---|---|
address | string | ✅ | Address that will perform the undelegation |
amount | number | ✅ | Amount to undelegate in ether units |
withdrawId | number | ✅ | Withdrawal slot identifier (0-255) |
Returned
| Field | Type | Required | Description |
|---|---|---|---|
serialized_tx_hex | string | ✅ | Serialized transaction hex string ready to be signed |
unsigned_tx_hash_hex | string | ✅ | Unsigned tx hash hex string used for offline signing integrations |
payload | object | ✅ | Transaction 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
| Field | Type | Required | Description |
|---|---|---|---|
address | string | ✅ | Address requesting the withdrawal |
withdrawId | number | ✅ | Withdrawal slot identifier to claim from (0-255) |
Returned
| Field | Type | Required | Description |
|---|---|---|---|
serialized_tx_hex | string | ✅ | Serialized transaction hex string ready to be signed |
unsigned_tx_hash_hex | string | ✅ | Unsigned tx hash hex string used for offline signing integrations |
payload | object | ✅ | Transaction 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
| Field | Type | Required | Description |
|---|---|---|---|
address | string | ✅ | Address that will claim rewards |
Returned
| Field | Type | Required | Description |
|---|---|---|---|
serialized_tx_hex | string | ✅ | Serialized transaction hex string ready to be signed |
unsigned_tx_hash_hex | string | ✅ | Unsigned tx hash hex string used for offline signing integrations |
payload | object | ✅ | Transaction 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
| Field | Type | Required | Description |
|---|---|---|---|
address | string | ✅ | Address that will compound rewards |
Returned
| Field | Type | Required | Description |
|---|---|---|---|
serialized_tx_hex | string | ✅ | Serialized transaction hex string ready to be signed |
unsigned_tx_hash_hex | string | ✅ | Unsigned tx hash hex string used for offline signing integrations |
payload | object | ✅ | Transaction 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
| Field | Type | Required | Description |
|---|---|---|---|
serialized_tx_hex | string | ✅ | Unsigned serialized transaction hex string ready to be signed |
r | string | ✅ | r part of the ECDSA signature in hex |
s | string | ✅ | s part of the ECDSA signature in hex |
v | number | ✅ | v part of the ECDSA signature |
Returned
| Field | Type | Required | Description |
|---|---|---|---|
signed_tx_hex | string | ✅ | Signed 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
| Field | Type | Required | Description |
|---|---|---|---|
signed_tx_hex | string | ✅ | Signed transaction hex string ready to be broadcasted |
Returned
| Field | Type | Required | Description |
|---|---|---|---|
tx_hash | string | ✅ | Transaction 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
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
address | path | string | ✅ | Delegator address to query |
Returned
| Field | Type | Required | Description |
|---|---|---|---|
stake | number | ✅ | Current staked amount in ether units |
accRewardPerToken | number | ✅ | Accumulated reward per token (converted from wei to ether) |
unclaimedRewards | number | ✅ | Unclaimed rewards available in ether units |
deltaStake | number | ✅ | Delta stake amount in ether units |
nextDeltaStake | number | ✅ | Next delta stake amount (as number) |
deltaEpoch | number | ✅ | Delta epoch number |
nextDeltaEpoch | number | ✅ | Next 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
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
address | path | string | ✅ | Delegator address to query withdrawal requests for |
startWithdrawId | query | number | ⚪ | Start withdrawal id (defaults to 0) |
endWithdrawId | query | number | ⚪ | End withdrawal id (defaults to 255) |
Returned
| Field | Type | Required | Description |
|---|---|---|---|
validatorId | number | ✅ | Validator ID |
delegator | string | ✅ | Delegator address |
startWithdrawId | number | ✅ | Start withdrawal ID in the range |
endWithdrawId | number | ✅ | End withdrawal ID in the range |
validRequests | GetWithdrawalRequestResponseDto[] | ✅ | List of valid withdrawal requests with converted values |
errors | MonadWithdrawalRequestErrorDto[] | ✅ | List of errors encountered during withdrawal request retrieval |
Each errors item:
| Field | Type | Required | Description |
|---|---|---|---|
withdrawId | number | ✅ | |
message | string | ✅ |
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
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
address | path | string | ✅ | Delegator address |
withdrawId | path | number | ✅ | Withdrawal slot identifier (0-255) |
Returned
| Field | Type | Required | Description |
|---|---|---|---|
withdrawId | number | ✅ | Withdrawal slot identifier |
withdrawalAmount | number | ✅ | Withdrawal amount in ether units (converted from wei) |
accRewardPerToken | number | ✅ | Accumulated reward per token in ether units (converted from wei) |
withdrawEpoch | number | ✅ | Epoch 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
}