---
title: "Initiate or add to existing stake"
method: POST
path: "/staking/chains/{chainDescriptor}/stake"
tags: ["Staking"]
---

# Initiate or add to existing stake

`POST /staking/chains/{chainDescriptor}/stake`

## Request

- Base URL: `https://api.fireblocks.io/v1`
- URL: `https://api.fireblocks.io/v1/staking/chains/{chainDescriptor}/stake`
- Auth: none declared
- TypeScript: <https://skmtc.dev/fireblocks/apis/fireblocks-api/docs/staking/chains/:chainDescriptor/stake/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a new staking position and returns its unique ID. For Ethereum compounding validator (EIP-7251): when the 'id' of an existing compounding validator position is provided, adds to that position; otherwise creates a new position. For Ethereum legacy validator: creates a new position regardless of existing delegations. For Cosmos chains and Ethereum liquid staking (Lido): automatically add to existing positions for the same validator provider and same vault account if one exists, otherwise create a new position. For Solana and Polygon (MATIC/POL): always create new positions regardless of existing delegations.

## Path parameters

- `chainDescriptor` 'ATOM_COS' | 'AXL' | 'AXL_TEST' | 'CELESTIA' | 'DYDX_DYDX' | 'ETH' | 'ETH_TEST6' | 'ETH_TEST_HOODI' | 'INJ_INJ' | 'MANTRA' | 'MATIC' | 'OSMO' | 'POL' | 'POL_TEST' | 'SOL' | 'SOL_TEST' | 'STETH_ETH' | 'STETH_ETH_TEST6_DZFA' | 'STETH_ETH_TEST_HOODI', required: Protocol identifier for the staking operation.

## Headers

- `Idempotency-Key` string

## Request body

- StakeRequest
  - `vaultAccountId` string, required: The Fireblocks vault account ID that will source the funds for staking.
  - `providerId` 'kiln' | 'figment' | 'lido' | 'p2p' | 'blockdaemon' | 'galaxy' | 'pierTwo' | 'kraken', required: The unique identifier of the staking provider
  - `stakeAmount` string, required: The amount of tokens to stake. The amount may be truncated to match the chain's decimal precision requirements.
  - `txNote` string: Optional note or comment to associate with the stake transaction. This note will be included in transaction records and can be used for tracking or audit purposes.
  - `fee` string: Optional transaction fee. Controls the priority and cost of the blockchain transaction. Only one of 'fee' or 'feeLevel' should be provided; if both are specified, 'feeLevel' takes precedence.
  - `feeLevel` 'LOW' | 'MEDIUM' | 'HIGH': Represents the fee level for a transaction, which can be set as slow, medium, or fast. Only one of fee/feeLevel is required.
  - `chainDescriptor` string: Protocol identifier for the staking operation
  - `id` string: Applies only to Ethereum compounding validator staking (Pectra/EIP-7251). The ID of an existing staking position to add additional stake to. When provided, adds stake to the specified position instead of creating a new one. Requires 'isCompoundingValidator' to be true.
  - `isCompoundingValidator` boolean: Applies only to Ethereum staking. Indicates whether to use a compounding validator (see Pectra/EIP-7251). When true, creates a position that supports adding additional stake via the 'id' parameter. If not provided, defaults to false and a legacy (non-compounding) validator will be used.

## Response `201`

Stake request accepted and created.

- StakeResponse
  - `id` string, required: The unique identifier of the staking position

## Other responses

- `400`: Bad request: missing/invalid fields, unsupported amount, or malformed payload.
- `403`: Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.
- `404`: Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).
- `429`: Rate limit exceeded: slow down and retry later.
- `500`: Internal error while processing the request.
- `default`: Error Response

---

[API](https://skmtc.dev/fireblocks/apis/fireblocks-api.md) - [All operations](https://skmtc.dev/fireblocks/apis/fireblocks-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fireblocks/apis/fireblocks-api/revisions/4eba9965659a?raw)
