---
updatedAt: 2026-05-20T06:31:11.000Z
---

Fetch the complete documentation index at: https://docs.blockdaemon.com/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Post Stake Intent

Reserves one or more available validators and returns an unsigned transaction.
Supports 0x01 withdrawal address types.
The validators will remain reserved for 90 days or until the returned transaction is signed and confirmed in the network. Blockdaemon reserves the right to free any allocated resources if the transaction is not confirmed in time.

A single transaction can create up to 250 validators through the use of the Blockdaemon [batch deposit contract](https://gitlab.com/Blockdaemon/open-source/eth2-batch-deposit-contract) which delivers over 50% reduction in gas fees when compared to submitting individual transactions for each deposit.

To complete the staking process, you must sign an Ethereum transaction with a [data field](https://ethereum.org/en/developers/docs/transactions/#the-data-field) set to match the returned `unsigned_transaction` property of the response. The `recipient` of the transaction must be set to the `contract_address` property of the response. The account signing the transaction must have the sufficient balance to create the requested number of validators and this amount must be provided as the value of the signed transaction.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "version": "1.0.0",
    "title": "Staking API",
    "description": "The Blockdaemon Staking API simplifies and streamlines institutional cryptocurrency staking. The API allows developers to interact with blockchain networks and perform various staking-related operations, such as delegating and undelegating tokens, in a single, unified interface.\n\nWith the Staking API, you can quickly and easily build and deploy applications that automate staking activities and increase efficiency in your blockchain operations.",
    "contact": {
      "name": "Blockdaemon",
      "email": "info@blockdaemon.com",
      "url": "https://blockdaemon.com"
    },
    "x-logo": {
      "url": "https://assets-global.website-files.com/633c5e06513fa35f3391a5f9/645d33beb6fa65f6cfb95eb8_BD%20Logo%20Stack%20-%20Purple.svg",
      "backgroundColor": "#fafafa",
      "altText": "Blockdaemon logo"
    }
  },
  "x-readme": {
    "explorer-enabled": false
  },
  "servers": [
    {
      "url": "https://svc.blockdaemon.com/boss"
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "description": "When signing up for a staking account, you are provided with an API key.\n\nTo authenticate a Staking API request, pass your API key in the `X-API-Key` header.",
        "type": "apiKey",
        "in": "header",
        "name": "X-API-KEY"
      }
    },
    "parameters": {
      "IdempotencyKey": {
        "in": "header",
        "name": "Idempotency-Key",
        "description": "the unique idempotency key for this request",
        "example": "f1c971b4-7114-4c4b-8ad2-a6f9e33e2cd0",
        "schema": {
          "type": "string",
          "format": "uuid"
        },
        "required": false
      },
      "EthereumNetwork": {
        "name": "network",
        "in": "path",
        "description": "Ethereum network",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/EthereumNetwork"
        }
      },
      "ValidatorType": {
        "name": "validator_type",
        "in": "query",
        "description": "Type of validator to create (0x01 for standard, 0x02 for Pectra)",
        "required": false,
        "schema": {
          "type": "string",
          "enum": [
            "0x01",
            "0x02"
          ],
          "default": "0x01"
        }
      }
    },
    "responses": {
      "InternalServerError": {
        "description": "Internal server error.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "InvalidRequest": {
        "description": "Invalid request.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "description": "Error response envelope",
              "required": [
                "code",
                "message"
              ],
              "properties": {
                "code": {
                  "type": "integer",
                  "format": "int32",
                  "description": "Error code",
                  "example": 400
                },
                "message": {
                  "type": "string",
                  "description": "Error Message",
                  "example": "Detailed human-readable diagnostic message regarding any invalid request parameters"
                }
              }
            }
          }
        }
      },
      "NoValidatorsError": {
        "description": "Insufficient validators available to process Stake Intent request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Header 'X-API-Key' missing.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/UnauthorizedError"
            }
          }
        }
      }
    },
    "schemas": {
      "CommonStakeIntentResponse": {
        "type": "object",
        "required": [
          "stake_intent_id",
          "customer_id"
        ],
        "properties": {
          "stake_intent_id": {
            "$ref": "#/components/schemas/StakeIntentId"
          },
          "customer_id": {
            "$ref": "#/components/schemas/CustomerId"
          },
          "plan_id": {
            "$ref": "#/components/schemas/PlanId"
          }
        }
      },
      "CustomerId": {
        "type": "string",
        "description": "Unique identifier for a customer",
        "example": "SatoshiNakamoto-xUYJbPw9hw",
        "minimum": 1
      },
      "Error": {
        "type": "object",
        "description": "Error response envelope",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32",
            "description": "Error code",
            "example": 500
          },
          "message": {
            "type": "string",
            "description": "Error Message",
            "example": "A descriptive error message"
          }
        }
      },
      "EthereumAddress": {
        "type": "string",
        "description": "Hex-encoded Ethereum [account or smart contract address](https://ethereum.org/en/developers/docs/accounts/).",
        "format": "hex",
        "pattern": "^0x[a-fA-F0-9]{40}$",
        "example": "0x00000000219ab540356cBB839Cbe05303d7705Fa"
      },
      "EthereumNetwork": {
        "type": "string",
        "description": "Ethereum network",
        "enum": [
          "mainnet",
          "hoodi"
        ]
      },
      "EthereumWithdrawalCredentials": {
        "type": "string",
        "format": "hex",
        "pattern": "^0x0(0|1)[a-fA-F0-9]{62}$",
        "example": "0x0092c20062cee70389f1cb4fa566a2be5e2319ff43965db26dbaa3ce90b9df99",
        "description": "Hexadecimal encoded [withdrawal credentials](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/validator.md#withdrawal-credentials) which can be either a BLS public key or an Ethereum account address.\n\nThis parameter currently accepts ETH1 and BLS withdrawal credentials, but it is considered deprecated after the Capella/Shanghai fork. All users are now advised to use an ETH1 withdrawal address, specified through the `withdrawal_address` parameter as this is required to enable the ongoing accrual of rewards.\n\nFor more information regarding creating withdrawal credentials, please see the official [Ethereum Launchpad FAQ](https://launchpad.ethereum.org/en/faq#withdrawal-credentials)."
      },
      "Gwei": {
        "type": "string",
        "description": "Amount of ETH (denominated in Gwei).",
        "pattern": "^[1-9]\\d{10,}$",
        "example": "32000000000"
      },
      "NewStakeIntentEthereum": {
        "type": "object",
        "description": "Stake intent for the Ethereum protocol.",
        "required": [
          "stakes"
        ],
        "properties": {
          "stakes": {
            "type": "array",
            "description": "Stakes for the Ethereum protocol.",
            "minItems": 1,
            "maxItems": 250,
            "additionalProperties": false,
            "items": {
              "$ref": "#/components/schemas/NewStakeIntentEthereumStake"
            }
          },
          "plan_id": {
            "$ref": "#/components/schemas/PlanId"
          }
        }
      },
      "NewStakeIntentEthereumStake": {
        "type": "object",
        "description": "Details of a individual Ethereum Stake request.",
        "required": [
          "amount",
          "withdrawal_address"
        ],
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Gwei"
          },
          "withdrawal_address": {
            "$ref": "#/components/schemas/EthereumAddress"
          },
          "quantity": {
            "$ref": "#/components/schemas/Quantity"
          },
          "fee_recipient": {
            "$ref": "#/components/schemas/FeeRecipient"
          }
        }
      },
      "PlanId": {
        "type": "string",
        "description": "This feature enables you to stake to validators from the specified plan(s). When no plan id is specified, validators across all plans that match the API route will be available for staking. If it is a shared plan, you can to stake to validators on a shared node from the specified plan.",
        "example": "plan_Wgx98Rbi8nQuL9ddn3mTk1"
      },
      "PublicKey": {
        "type": "string",
        "description": "A BLS public Key.",
        "format": "base64",
        "example": "0xa1d1ad0714035353258038e964ae9675dc0252ee22cea896825c01458e1807bfad2f9969338798548d9858a571f7425c"
      },
      "Quantity": {
        "type": "integer",
        "format": "int32",
        "description": "Number of validators to create that will share the same withdrawal credentials.",
        "minimum": 1
      },
      "StakeId": {
        "description": "Unique stake identifier.",
        "type": "string",
        "format": "base58",
        "example": "stake_Wgx98Rbi8nQuL9ddn3mTk1"
      },
      "StakeIntentEthereum": {
        "type": "object",
        "description": "Ethereum Stake Intent response",
        "required": [
          "stakes",
          "contract_address",
          "unsigned_transaction",
          "estimated_gas",
          "expiration_time"
        ],
        "properties": {
          "stakes": {
            "description": "Stakes being made.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StakeIntentEthereumStake"
            }
          },
          "contract_address": {
            "$ref": "#/components/schemas/EthereumAddress"
          },
          "unsigned_transaction": {
            "$ref": "#/components/schemas/UnsignedTransaction"
          },
          "estimated_gas": {
            "$ref": "#/components/schemas/EthereumGas"
          },
          "expiration_time": {
            "$ref": "#/components/schemas/ExpirationTime"
          }
        }
      },
      "StakeIntentEthereumStake": {
        "type": "object",
        "description": "Individual Ethereum Stake Response",
        "required": [
          "stake_id",
          "amount",
          "validator_public_key",
          "withdrawal_credentials",
          "fee_recipient"
        ],
        "properties": {
          "stake_id": {
            "$ref": "#/components/schemas/StakeId"
          },
          "amount": {
            "$ref": "#/components/schemas/Gwei"
          },
          "validator_public_key": {
            "$ref": "#/components/schemas/PublicKey"
          },
          "withdrawal_credentials": {
            "$ref": "#/components/schemas/EthereumWithdrawalCredentials"
          },
          "fee_recipient": {
            "$ref": "#/components/schemas/FeeRecipient"
          }
        }
      },
      "StakeIntentId": {
        "type": "string",
        "format": "base58",
        "description": "Unique idenifier for a group of stakes.",
        "example": "stake_intent_Wgx98Rbi8nQuL9ddn3mTk1"
      },
      "UnauthorizedError": {
        "type": "object",
        "description": "Error response envelope",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32",
            "description": "Error code",
            "example": 401
          },
          "message": {
            "type": "string",
            "description": "Error Message",
            "example": "A human-readable diagnostic message detailing any authorization failure"
          }
        }
      },
      "UnsignedTransaction": {
        "type": "string",
        "format": "base64",
        "description": "Generated unsigned transaction smart contract call data.",
        "example": "0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120087fed394b43849eebef1e88873cd9efdbe33136656e5148e659b8b2f33625d40000000000000000000000000000000000000000000000000000000000000030b81748644e23c4d950f9dd709f3eb73d5eacd9657997e1d9dde7c4ebd8a6519ecb9d0a7fb603d3b68e023278f9650122000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020010000000000000000000000c509bb854c526af4cee5e037089f7aa8e091d8870000000000000000000000000000000000000000000000000000000000000060b36b79b4b206c0310472c117fa40c05342b5dc3e89f98f42c9da3ce6450d4c603cad55248017fd4eca3ab277cca64569193e4d487f5b2ea78a2bcdc81926c313c05842a3af318967a775783bba22519e8b8886587efa99aa7dab5784f792b187\n"
      },
      "FeeRecipient": {
        "type": "string",
        "description": "An Ethereum address to receive transaction fees from published blocks. 20-bytes, hex encoded with 0x prefix, case insensitive.",
        "example": "0x93247f2209abcacf57b75a51dafae777f9dd38bc",
        "pattern": "^0x[a-fA-F0-9]{40}$"
      },
      "EthereumGas": {
        "type": "integer",
        "description": "Gas estimation of the transaction",
        "format": "uint64",
        "example": 1001
      },
      "EthereumProtocol": {
        "type": "string",
        "description": "Ethereum protocol",
        "enum": [
          "ethereum"
        ]
      },
      "EthereumStakeIntentResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CommonStakeIntentResponse"
          },
          {
            "type": "object",
            "required": [
              "protocol",
              "network"
            ],
            "properties": {
              "protocol": {
                "$ref": "#/components/schemas/EthereumProtocol"
              },
              "network": {
                "$ref": "#/components/schemas/EthereumNetwork"
              },
              "ethereum": {
                "$ref": "#/components/schemas/StakeIntentEthereum"
              }
            }
          }
        ]
      },
      "ExpirationTime": {
        "type": "integer",
        "description": "Transaction expiration time",
        "format": "int64",
        "example": 1689939023
      }
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "paths": {
    "/v1/ethereum/{network}/stake-intents": {
      "parameters": [
        {
          "$ref": "#/components/parameters/EthereumNetwork"
        },
        {
          "$ref": "#/components/parameters/IdempotencyKey"
        },
        {
          "$ref": "#/components/parameters/ValidatorType"
        }
      ],
      "post": {
        "summary": "Post Stake Intent",
        "operationId": "postEthereumStakeIntent",
        "tags": [
          "Ethereum"
        ],
        "description": "Reserves one or more available validators and returns an unsigned transaction.\nSupports 0x01 withdrawal address types.\nThe validators will remain reserved for 90 days or until the returned transaction is signed and confirmed in the network. Blockdaemon reserves the right to free any allocated resources if the transaction is not confirmed in time.\n\nA single transaction can create up to 250 validators through the use of the Blockdaemon [batch deposit contract](https://gitlab.com/Blockdaemon/open-source/eth2-batch-deposit-contract) which delivers over 50% reduction in gas fees when compared to submitting individual transactions for each deposit.\n\nTo complete the staking process, you must sign an Ethereum transaction with a [data field](https://ethereum.org/en/developers/docs/transactions/#the-data-field) set to match the returned `unsigned_transaction` property of the response. The `recipient` of the transaction must be set to the `contract_address` property of the response. The account signing the transaction must have the sufficient balance to create the requested number of validators and this amount must be provided as the value of the signed transaction.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewStakeIntentEthereum"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EthereumStakeIntentResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/NoValidatorsError"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    }
  },
  "tags": [
    {
      "name": "Ethereum",
      "description": "Ethereum endpoints"
    }
  ]
}
```