**Creates new 0x02 (PECTRA) validators and returns a unsigned staking transaction**

_Please refer to this legacy endpoint to create 0x01 validators_ [here](https://docs.figment.io/reference/create-validators)

- Once set, the withdrawal address of a validator cannot be changed.
- Maximum 250 validators can be created per request.
- Transactions in the response are set to [our 0x02 batch contract](https://docs.figment.io/docs/our-eth-batch-smart-contract#/)
- We provide 3 transaction formats in the response [See the guide](https://docs.figment.io/docs/signing-transactions) to support differing transaction signing approaches.
- If you are restaking via Eigenlayer, your withdrawal address is set to your EigenPod address.

## Parameters

### network
- Type: string  
- Enum: `mainnet`, `hoodi`  
- Required: Yes

### amounts
- Type: array of strings  
- Required: Yes  
- Description: Amounts in ETH to initially deposit to the validators.

### withdrawal_address
- Type: string  
- Required: Yes  
- Description: An ETH wallet address used for the withdrawals credentials of the validators. This is the address that will receive consensus rewards and unstaked ETH after exiting.

### funding_address
- Type: string  
- Description: An ETH wallet address that holds the ETH to be staked and that will sign the staking transaction. If not specified, `withdrawal_address` will be used.

### fee_recipient_address
- Type: string  
- Description: An ETH wallet address that will receive the execution layer rewards. If not specified, `withdrawal_address` will be used.

### region
- Type: string  
- Enum: `ca-central-1`, `eu-west-1`

## Response

### `201 Created` Validators

#### data
- Type: array of objects

##### data object
- id: string  
- index: integer \| null  
- network: string (enum: `mainnet`, `hoodi`)  
- pubkey: string (prefixed with `0x`)  
- withdrawal_address: string  
- status: string  
- withdrawal_credentials: string  
- fee_recipient_address: string  
- net_fee_payout_address: string  
- region: string  
- deposit_data: object  
- status_history: object  
- status_estimates: object

##### Example Response

```json
{
  "data": [
    {
      "network": "hoodi",
      "pubkey": "0x8fc7b098767d6b45f431ac820f6884f6f74bbebee4e6f30456bbcf48a280248307a8260f2913a27c076f2f0c64c67aad",
      "status": "provisioned",
      "withdrawal_address": "0xE40F80618324C814cD444434670a44ba4583aE38",
      "withdrawal_credentials": "0x010000000000000000000000e40f80618324c814cd444434670a44ba4583ae38",
      "net_fee_payout_address": "0xE40F80618324C814cD444434670a44ba4583aE38",
      "fee_recipient_address": "0xE40F80618324C814cD444434670a44ba4583aE38",
      "region": "ca-central-1",
      "deposit_data": { /* deposit data fields */ },
      "status_history": { /* status history fields */ },
      "status_estimates": { /* status estimates fields */ }
    }
  ]
}
```

## Example CURL Request

```shell
curl --request POST \
     --url https://api.figment.io/ethereum/validators/0x02 \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'x-api-key: your-api-key-here' \
     --data '{
  "network": "mainnet"
}'
```

## Response Codes

- `400 Bad request`
- `401 Unauthorized`
- `422 Unprocessable entity`

---

Updated 4 days ago.
