Node Provisioning API
Dynamically provision nodes and receive staking transactions to sign.
What is the Node Provisioning API?
The Node Provisioning API allows partners to programmatically spin-up nodes for staking. Partners specify the number of nodes needed and receive a transaction to sign that stakes with those node/s.
Chain
Assets per Node
32-2048 ETH per Validator
ETH2
Provision validators with an API request and submit the deposits through a single ETH1 transaction.
Integration Environments
Staked supports integration testing on ETH2, as defined below.
https://mainnet.staked.cloud/api
Mainnet
https://testnet.staked.cloud/api
Hoodi
Post ETH2 Provisioning Request
POST https://mainnet.staked.cloud/api/provisioning_requests/eth2
Provision ETH2 validators in our secure cloud environments. The response contains a unique identifier for the provisioning request.
Request Headers
X-Api-Key
string
Your API key - (Must have ETH2 access, preferred method of passing api key is now in headers rather than query params)
Query Parameters
api_key
string
[Deprecated since March '25 (preferred method of passing api key is now in headers rather than query params)]
Your API Key - (Must have ETH2 access)
Request Body
attributes
object
ETH2 Attributes Object
ETH2 Attributes Object
eth1Address
Ethereum wallet address which will be used to create withdrawal credentials for the validator (consensus layer reward recipient)
string
true
payoutAddress
Optional: A payable Ethereum address that will receive execution layer payments. Note: if none is provided, payments will be sent to the withdrawal credential.
string
false
feeRecipientGroupKey
Optional: Specify that these validators should receive execution layer fees on an separate address. Note: This groupKey and its associated recipient address must be registered and confirmed with Staked in advance before it is valid to be used in provisioning requests.
string
false
stakingMode
type0x01 for pre-Pectra staking: max 32 ETH per validator; rewards do not compound automatically.
type0x02 for post-Pectra staking, max 2048 ETH per validator; rewards compound automatically.
string
false
amount
Deposit amount. This field is ignored if you select type0x01 staking mode. It is mandatory if you select type0x02 staking mode.
string
false for type0x01
true for type0x02
validators
Array of validator config objects
array
true
Validator Config Object
Field
Description
Type
provider
Validator provider enum: "decentralized" or "amazon"
String
count
Number of validators to provision
Number
Provisioning Response Object
Field
Description
Type
id
Numbered identifier of provisioning request
String
uuid
Unique identifier of provisioning request
String
created
Provisioning request creation datetime
String
status
Provisioning request status - "CREATED"
String
chain
Chain identifier - "ETH2"
String
user_id
User identifier - returns null unless using oauth
String
partner_id
Partner identifier associated with api key
String
attributes
ETH2 attributes object
Object
Get ETH2 Delegation Objects
GET https://mainnet.staked.cloud/api/delegations/eth2
After POSTing a provisioning request, use the unique identifier to GET the delegation objects for each validator. Delegation objects contain the information required to submit deposits on ETH1.
Request Headers
X-Api-Key
string
Your API key - (Must have ETH2 access, preferred method of passing api key is now in headers rather than query params)
Query Parameters
api_key
string
[Deprecated since March '25 (preferred method of passing api key is now in headers rather than query params)]
Your API Key - (Must have ETH2 access)
filters
string
provisioning_request_uuid:YOUR UUID
page
number
Page of results to fetch
per_page
number
Number of results per page
Validators are provisioned asynchronously, meaning the GET request will fill-in over time as our infrastructure fulfills the associated provisioning request. Use the "total" field in the response object to track the number of validators provisioned at any given time.
Paginated Response Object
Field
Description
Type
results
Array of ETH2 delegation objects
Array
page
Page of fetched results
Number
pages
Total number of pages
Number
per_page
Number of results per page
Number
total
Number of results in total
Number
ETH2 Delegation Object
Field
Description
Type
id
Identifier of delegation object
Number
address
Validator public key
String
chain
Chain identifier - "ETH2"
String
attributes
ETH2 delegation attributes object
Object
amount
Amount currently delegated
String
created
Delegation object creation time
String
status
ETH2 delegation status enum
String
user_id
User identifier - returns null unless using oauth
String
partner_id
Partner identifier associated with api key
String
provisioning_request_uuid
Associated provisioning request unique identifier
String
provisioning_request_id
Associated provisioning request numbered identifier
String
ETH2 Delegation Attributes Object
Field
Description
Type
cloud
Validator cloud configuration
String
count
Total number of validators in associated provisioning request
Number
index
Index of validator in associated provisioning request
Number
depositInput
Validator deposit transaction data
String
validatorKey
Validator public key
String
ETH2 Delegation Status Enum
Value
Definition
Time Period
CREATED
Validator was provisioned through Staked API
n /a
DEPOSITED
Deposit is waiting to be seen by ETH2 chain
0-6 Hours
PENDING
Validator is in the queue waiting to go live
0-6 Days
ACTIVE
Validator is participating and earning rewards
n / a
Submit Deposits through the Batching Contract
The canonical ETH2 deposit contract, used to convert ETH1 to ETH2, only supports one deposit transaction at a time. Since 32 ETH is required for each validator, depositors with large amounts of ETH would have to broadcast many deposit transactions.
To simplify submitting deposits, we have created a batching contract which takes up to 185 deposits at once and submits each to the deposit contract. Integrators can therefore stake up to 5920 ETH in one Ethereum transaction, and leave behind the hassle of tracking many individually broadcasted transactions.
Batching Contract Deployments
The batching contract contains an external payable function, batchDeposits, which loops over each validator's deposit and sends them to the deposit contract. The function arguments are passed as a 2-d array where the array at [i] represents the deposit arguments for validator i.
For release notifications of the ETH2 API and developer tools, click here.
Last updated