Staking

Initiate or add to existing stake

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.

post/staking/chains/{chainDescriptor}/stake

Request

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.

Protocol identifier for the stake staking operation (e.g., ATOM_COS/AXL/CELESTIA).

Headers

Idempotency-Keystring

A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.

Request body

vaultAccountIdstring 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

stakeAmountstring required

The amount of tokens to stake. The amount may be truncated to match the chain's decimal precision requirements.

txNotestring

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.

feestring

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.

chainDescriptorstring

Protocol identifier for the staking operation

idstring

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.

isCompoundingValidatorboolean

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.

Example request

{
  "id": "b70701f4-d7b1-4795-a8ee-b09cdb5b850d",
  "vaultAccountId": "22",
  "providerId": "kiln",
  "stakeAmount": "32",
  "chainDescriptor": "ETH",
  "txNote": "stake request of 32ETH created on 02.04.23",
  "feeLevel": "MEDIUM"
}

Response

Stake request accepted and created.

idstring required

The unique identifier of the staking position

Example response

{
  "id": "afedfd2e4-e3c9-4b70-90d6-eb0f74bfd4sd8"
}

Changes

No recorded changes to this operation across all 1 revision of this API.