> ## Documentation Index
> Fetch the complete documentation index at: https://developers.fireblocks.com/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://developers.fireblocks.com/feedback

```json
{
  "path": "/api-reference/staking/list-staking-positions-paginated",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# List staking positions (Paginated)

> 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: Admin, Non-Signing Admin, Signer, Approver, Editor.



## OpenAPI

````yaml https://docs.fireblocks.com/api/v1/swagger.yaml get /staking/positions_paginated
openapi: 3.0.0
info:
  title: Fireblocks API
  description: >
    Fireblocks provides a suite of applications to manage digital asset
    operations and a complete development platform to build your business on the
    blockchain.


    - Visit our website for more information: [Fireblocks
    Website](https://fireblocks.com)

    - Visit our developer docs: [Fireblocks
    DevPortal](https://developers.fireblocks.com)
  version: 1.6.2
  contact:
    email: developers@fireblocks.com
servers:
  - url: https://api.fireblocks.io/v1
    description: Fireblocks Production Environment Base URL
  - url: https://sandbox-api.fireblocks.io/v1
    description: Fireblocks Sandbox Environment Base URL
security: []
paths:
  /staking/positions_paginated:
    get:
      tags:
        - Staking
      summary: List staking positions (Paginated)
      description: >-
        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: Admin, Non-Signing Admin, Signer, Approver, Editor.
      operationId: getPositions
      parameters:
        - name: chainDescriptor
          required: false
          in: query
          description: >-
            Protocol identifier to filter positions (e.g.,
            ATOM_COS/AXL/CELESTIA). If omitted, positions across all supported
            chains are returned.
          schema:
            $ref: '#/components/schemas/ChainDescriptor'
        - name: vaultAccountId
          required: false
          in: query
          example: '10'
          description: >-
            Filter positions by Fireblocks vault account ID. If omitted,
            positions across all vault accounts are returned.
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - name: pageSize
          required: true
          in: query
          description: >-
            Number of results per page. When provided, the response returns a
            paginated object with {data, next}. If omitted, all results are
            returned as an array.
          schema:
            type: integer
            format: int32
            minimum: 1
            maximum: 100
            example: 10
            default: 10
        - name: pageCursor
          required: false
          in: query
          description: >-
            Cursor for the next page of results. Use the value from the 'next'
            field in the previous response.
          schema:
            type: string
            example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
        - name: order
          required: false
          in: query
          description: ASC / DESC ordering (default DESC)
          schema:
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
            type: string
      responses:
        '200':
          description: Positions retrieved successfully with pagination.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingPositionsPaginatedResponse'
        '400':
          description: >-
            Bad request: missing/invalid fields, unsupported amount, or
            malformed payload.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '403':
          description: >-
            Forbidden: insufficient permissions, disabled feature, or restricted
            provider/validator.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: >-
            Not found: requested resource does not exist (e.g., position,
            validator, provider, or wallet).
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: >-
            const response:
            Promise<FireblocksResponse<StakingPositionsPaginatedResponse>> =
            fireblocks.staking.getPositions(stakingApiGetPositionsRequest);
        - lang: Java
          source: >-
            CompletableFuture<ApiResponse<StakingPositionsPaginatedResponse>>
            response = fireblocks.staking().getPositions(pageSize,
            chainDescriptor, vaultAccountId, pageCursor, order);
        - lang: Python
          source: >-
            response = fireblocks.staking.get_positions(page_size,
            chain_descriptor, vault_account_id, page_cursor, order);
components:
  schemas:
    ChainDescriptor:
      type: string
      description: Protocol identifier for the staking operation.
      enum:
        - 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
    StakingPositionsPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page of staking positions
          items:
            $ref: '#/components/schemas/Position'
        next:
          type: string
          description: The cursor for the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    ErrorSchema:
      type: object
      properties:
        message:
          type: string
        code:
          type: number
    Position:
      type: object
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850a
          description: The unique identifier of the staking position
        vaultAccountId:
          type: string
          example: '2'
          description: The source vault account to stake from
        validatorName:
          type: string
          example: FwR3P......tT59f
          description: The destination validator address name
        providerName:
          type: string
          example: Kiln
          description: The destination validator provider name
        chainDescriptor:
          type: string
          example: SOL
          description: The protocol identifier (e.g. "ETH"/ "SOL") to use
        amount:
          type: string
          example: '0.05'
          description: >-
            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:
          type: string
          example: '0.000856038'
          description: >-
            The amount staked in the position, measured in the staked asset
            unit.
        dateCreated:
          format: date-time
          type: string
          example: '2023-07-13T15:55:34.256Z'
          description: When was the request made (ISO Date).
        dateUpdated:
          format: date-time
          type: string
          example: '2023-07-13T15:55:34.256Z'
          description: When has the position last changed (ISO Date).
        status:
          type: string
          example: ACTIVE
          description: The current status.
          enum:
            - CREATING
            - PENDING
            - ACTIVATING
            - ACTIVE
            - DEACTIVATING
            - DEACTIVATED
            - WITHDRAWING
            - WITHDRAWN
            - MERGED
            - CONSOLIDATED
            - CANCELED
            - FAILED
        validatorAddress:
          type: string
          example: FwR3PbjS5iyqzLiLugrBqKSa5EKZ4vK9SKs7eQXtT59f
          description: The destination address of the staking transaction.
        providerId:
          $ref: '#/components/schemas/StakingProvider'
        availableActions:
          example:
            - UNSTAKE
          description: >-
            An array of available actions that can be performed. for example,
            actions like "UNSTAKE" or "WITHDRAW".
          type: array
          items:
            type: string
            enum:
              - UNSTAKE
              - WITHDRAW
              - ADD_TO_STAKE
              - SPLIT
              - MERGE
              - CLAIM_REWARDS
              - CONSOLIDATE
        inProgress:
          type: boolean
          example: true
          description: >-
            Indicates whether there is an ongoing action for this position
            related to this request
        inProgressTxId:
          type: string
          example: c80601f4-d7b1-4795-a8ee-b09cdb5b450c
          description: >-
            The transaction ID of the initial stake position request only. Only
            present when there is an active initial stake transaction.
        blockchainPositionInfo:
          description: >-
            Additional fields per blockchain - can be empty or missing if not
            initialized or no additional info exists.
          discriminator:
            propertyName: chainDescriptor
            mapping:
              SOL:
                $ref: '#/components/schemas/SolanaBlockchainData'
              SOL_TEST:
                $ref: '#/components/schemas/SolanaBlockchainData'
              ETH:
                $ref: '#/components/schemas/EthereumBlockchainData'
              ETH_TEST6:
                $ref: '#/components/schemas/EthereumBlockchainData'
              ETH_TEST_HOODI:
                $ref: '#/components/schemas/EthereumBlockchainData'
              STETH_ETH:
                $ref: '#/components/schemas/StEthBlockchainData'
              STETH_ETH_TEST6_DZFA:
                $ref: '#/components/schemas/StEthBlockchainData'
              STETH_ETH_TEST_HOODI:
                $ref: '#/components/schemas/StEthBlockchainData'
          oneOf:
            - $ref: '#/components/schemas/SolanaBlockchainData'
            - $ref: '#/components/schemas/EthereumBlockchainData'
            - $ref: '#/components/schemas/StEthBlockchainData'
      required:
        - id
        - vaultAccountId
        - validatorName
        - providerName
        - chainDescriptor
        - amount
        - rewardsAmount
        - dateCreated
        - dateUpdated
        - status
        - validatorAddress
        - providerId
        - availableActions
        - inProgress
        - blockchainPositionInfo
    StakingProvider:
      description: The unique identifier of the staking provider
      type: string
      example: kiln
      enum:
        - kiln
        - figment
        - lido
        - p2p
        - blockdaemon
        - galaxy
        - pierTwo
        - kraken
    SolanaBlockchainData:
      type: object
      example:
        stakeAccountAddress: 3Ru67FyzMTcdENmmRL4Eve4dtPd6AdpuypR21q5EQCdq
      description: >-
        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.
      properties:
        stakeAccountAddress:
          type: string
          example: 3Ru67FyzMTcdENmmRL4Eve4dtPd6AdpuypR21q5EQCdq
          description: The stake account address matching the stakeAccountId.
        stakeAccountDerivationChangeValue:
          type: number
          example: 7
          description: >-
            The value of the change level in the BIP32 path which was used to
            derive the stake account address.
      required:
        - stakeAccountAddress
        - stakeAccountDerivationChangeValue
    EthereumBlockchainData:
      type: object
      description: >-
        Additional fields per blockchain for Ethereum (ETH) - can be empty or
        missing if not initialized or no specific data is available.
      properties:
        isCompoundingValidator:
          type: boolean
          example: true
          description: >-
            Is the validator compounding (i.e it was created with compounding
            validator type).
      required:
        - isCompoundingValidator
    StEthBlockchainData:
      type: object
      description: >-
        Additional fields per blockchain for Staked Ethereum (STETH_ETH) - can
        be empty or missing if not initialized or no additional info exists.
      properties:
        totalWithdrawableAmount:
          type: string
          example: '1.5'
          description: The total amount available for withdrawal.
        totalInactiveAmount:
          type: string
          example: '2.0'
          description: The total inactive amount.
      required:
        - totalWithdrawableAmount
        - totalInactiveAmount
  headers:
    X-Request-ID:
      schema:
        type: string
      description: >-
        Unique ID correlated to the API request. Please provide it in any
        support ticket you create or on Github issues related to Fireblocks SDKs
  responses:
    Error:
      description: Error Response
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorSchema'

````