---
title: "List staking positions (Paginated)"
method: GET
path: "/staking/positions_paginated"
tags: ["Staking"]
---

# List staking positions (Paginated)

`GET /staking/positions_paginated`

## Request

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

Returns staking positions with core details: amounts, rewards, status, chain, and vault. It supports cursor-based pagination for efficient data retrieval. This endpoint always returns a paginated response with {data, next} structure.
Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.

## Query 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': Protocol identifier for the staking operation.
- `vaultAccountId` string, numeric
- `pageSize` integer, required
- `pageCursor` string
- `order` 'ASC' | 'DESC'

## Response `200`

Positions retrieved successfully with pagination.

- StakingPositionsPaginatedResponse
  - `data` Position[], required: The data of the current page of staking positions
    - `id` string, required: The unique identifier of the staking position
    - `vaultAccountId` string, required: The source vault account to stake from
    - `validatorName` string, required: The destination validator address name
    - `providerName` string, required: The destination validator provider name
    - `chainDescriptor` string, required: The protocol identifier (e.g. "ETH"/ "SOL") to use
    - `amount` string, required: Total value of the staking position. For Solana, Lido and Ethereum (compounding validator): includes the original stake plus accumulated rewards. For MATIC, Cosmos and Ethereum (legacy validator): refers to the amount currently staked.
    - `rewardsAmount` string, nullable, required: The amount staked in the position, measured in the staked asset unit. Returned as null for chains where reward tracking is not supported (Cosmos-family chains), instead of a numeric value.
    - `dateCreated` string, date-time, required: When was the request made (ISO Date).
    - `dateUpdated` string, date-time, required: When has the position last changed (ISO Date).
    - `status` 'CREATING' | 'PENDING' | 'ACTIVATING' | 'ACTIVE' | 'DEACTIVATING' | 'DEACTIVATED' | 'WITHDRAWING' | 'WITHDRAWN' | 'MERGED' | 'CONSOLIDATED' | 'CANCELED' | 'FAILED', required: The current status.
    - `validatorAddress` string, required: The destination address of the staking transaction.
    - `providerId` 'kiln' | 'figment' | 'lido' | 'p2p' | 'blockdaemon' | 'galaxy' | 'pierTwo' | 'kraken', required: The unique identifier of the staking provider
    - `availableActions` string[], required: An array of available actions that can be performed. for example, actions like "UNSTAKE" or "WITHDRAW".
    - `inProgress` boolean, required: Indicates whether there is an ongoing action for this position related to this request
    - `inProgressTxId` string: The transaction ID of the initial stake position request only. Only present when there is an active initial stake transaction.
    - `blockchainPositionInfo` union, required: Additional fields per blockchain - can be empty or missing if not initialized or no additional info exists.
      - SolanaBlockchainData: Additional fields per blockchain - can be empty or missing if not initialized or no additional info exists. The type depends on the chainDescriptor value. For Solana (SOL), stake account address. For Ethereum (ETH), an empty object is returned as no specific data is available.
        - `stakeAccountAddress` string, required: The stake account address matching the stakeAccountId.
        - `stakeAccountDerivationChangeValue` number, required: The value of the change level in the BIP32 path which was used to derive the stake account address.
        - `rewardsBreakdown` SolanaRewardsBreakdown: A breakdown of the staking rewards earned by the position.
          - `inflation` string, required: The inflation reward amount earned by the position, measured in the staked asset unit.
          - `mev` string, required: The MEV reward amount earned by the position, measured in the staked asset unit.
          - `lastRewardSyncedAt` string, date-time, required: The last time the rewards were synced (ISO Date).
      - EthereumBlockchainData: Additional fields per blockchain for Ethereum (ETH) - can be empty or missing if not initialized or no specific data is available.
        - `isCompoundingValidator` boolean, required: Is the validator compounding (i.e it was created with compounding validator type).
        - `estimatedActivationTime` string: Estimated time the staked ETH will activate, derived from the beacon-chain deposit queue. Present only while the position is pending/activating; omitted once active.
        - `estimatedSourceExitTime` string, date-time: Estimated time the source validator will exit the active set and stop earning rewards, derived from the beacon-chain consolidation queue. Present only while a consolidation is in progress.
        - `estimatedConsolidationTime` string, date-time: Estimated time the consolidation will complete, i.e. when the source balance is swept to the destination validator, derived from the beacon-chain consolidation queue. Present only while a consolidation is in progress.
        - `estimatedWithdrawalTime` string, date-time: Estimated time the in-flight withdrawal will complete, derived from the beacon-chain exit queue for a full exit or the manual withdrawal queue for a partial one. Present only while a withdrawal is in progress.
      - StEthBlockchainData: Additional fields per blockchain for Staked Ethereum (STETH_ETH) - can be empty or missing if not initialized or no additional info exists.
        - `totalWithdrawableAmount` string, required: The total amount available for withdrawal.
        - `totalInactiveAmount` string, required: The total inactive amount.
  - `next` string, nullable: The cursor for the next page

## 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)
