Fireblocks Staking API

Execute and track staking operations across multiple proof-of-stake chains. Browse staking providers and validators, initiate stake / unstake / withdraw / claim-rewards actions, and query position state. Backs institutional Earn workflows for ETH, SOL, ADA, DOT, KSM, NEAR, TEZOS, MATIC, and more.

Operations 14

GET /staking/chains List supported chains for Fireblocks Staking #
POST /staking/chains/{chainDescriptor}/merge Merge operation on Solana stake accounts #
GET /staking/chains/{chainDescriptor}/chainInfo Get chain-specific staking summary #
POST /staking/chains/{chainDescriptor}/stake Initiate Stake Operation #
POST /staking/chains/{chainDescriptor}/unstake Execute an Unstake operation #
POST /staking/chains/{chainDescriptor}/withdraw Execute a Withdraw operation #
POST /staking/chains/{chainDescriptor}/claim_rewards Execute a Claim Rewards operation #
POST /staking/chains/{chainDescriptor}/split Execute a Split operation #
GET /staking/positions List staking positions details #
GET /staking/positions/summary Get staking summary details #
GET /staking/positions/summary/vaults Get staking summary details by vault #
GET /staking/positions/{id} Get staking position details #
GET /staking/providers List staking providers details #
POST /staking/providers/{providerId}/approveTermsOfService Approve staking terms of service #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fireblocks-staking-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fireblocks-staking-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fireblocks Blockchains and Assets Approval Requests Staking 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.8.0
  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: []
tags:
- name: Staking
paths:
  /staking/chains:
    get:
      operationId: getChains
      summary: List supported chains for Fireblocks Staking
      description: 'Return an alphabetical list of supported chains.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<StakingGetChainsResponse>> = fireblocks.staking.getChains();'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<List<ChainDescriptor>>> response = fireblocks.staking().getChains();
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.get_chains();
          name: Fireblocks SDK Python example
      responses:
        '200':
          description: An array of supported chains was returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingGetChainsResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<StakingGetChainsResponse>> = fireblocks.staking.getChains();'
      - lang: Java
        source: CompletableFuture<ApiResponse<List<ChainDescriptor>>> response = fireblocks.staking().getChains();
      - lang: Python
        source: response = fireblocks.staking.get_chains();
  /staking/chains/{chainDescriptor}/merge:
    post:
      operationId: mergeStakeAccounts
      summary: Merge operation on Solana stake accounts
      description: 'Perform a Solana Merge of two active stake accounts into one.

        Endpoint permissions: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "SOL"/"SOL_TEST") to use
        example: SOL
        schema:
          enum:
          - SOL
          - SOL_TEST
          type: string
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergeStakeAccountsRequest'
      responses:
        '201':
          description: Merge action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MergeStakeAccountsResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
  /staking/chains/{chainDescriptor}/chainInfo:
    get:
      operationId: getChainInfo
      summary: Get chain-specific staking summary
      description: 'Return chain-specific, staking-related information summary (e.g. epoch details, lockup durations, estimated rewards, etc.).

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<ChainInfoResponse>> = fireblocks.staking.getChainInfo(stakingApiGetChainInfoRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<ChainInfoResponse>> response = fireblocks.staking().getChainInfo(chainDescriptor);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.get_chain_info(chain_descriptor);
          name: Fireblocks SDK Python example
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "ETH"/"SOL"/"MATIC"/"STETH_ETH") to use
        example: SOL
        schema:
          $ref: '#/components/schemas/ChainDescriptor'
      responses:
        '200':
          description: Chain specific info summary was returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChainInfoResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<ChainInfoResponse>> = fireblocks.staking.getChainInfo(stakingApiGetChainInfoRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<ChainInfoResponse>> response = fireblocks.staking().getChainInfo(chainDescriptor);
      - lang: Python
        source: response = fireblocks.staking.get_chain_info(chain_descriptor);
  /staking/chains/{chainDescriptor}/stake:
    post:
      operationId: stake
      summary: Initiate Stake Operation
      description: Perform a chain-specific Stake.
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "ETH"/"SOL"/"MATIC") to use
        example: SOL
        schema:
          $ref: '#/components/schemas/ChainDescriptor'
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StakeRequest'
      responses:
        '201':
          description: Stake action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakeResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<StakeResponse>> = fireblocks.staking.stake(stakingApiStakeRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<StakeResponse>> response = fireblocks.staking().stake(stakeRequest, chainDescriptor, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.stake(stake_request, chain_descriptor, idempotency_key);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<StakeResponse>> = fireblocks.staking.stake(stakingApiStakeRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<StakeResponse>> response = fireblocks.staking().stake(stakeRequest, chainDescriptor, idempotencyKey);
      - lang: Python
        source: response = fireblocks.staking.stake(stake_request, chain_descriptor, idempotency_key);
  /staking/chains/{chainDescriptor}/unstake:
    post:
      operationId: unstake
      summary: Execute an Unstake operation
      description: Execute an Unstake operation
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "ETH"/"SOL"/"MATIC") to use
        example: SOL
        schema:
          $ref: '#/components/schemas/ChainDescriptor'
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnstakeRequest'
      responses:
        '201':
          description: Unstake action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.unstake(stakingApiUnstakeRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().unstake(unstakeRequest, chainDescriptor, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.unstake(unstake_request, chain_descriptor, idempotency_key);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.unstake(stakingApiUnstakeRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().unstake(unstakeRequest, chainDescriptor, idempotencyKey);
      - lang: Python
        source: response = fireblocks.staking.unstake(unstake_request, chain_descriptor, idempotency_key);
  /staking/chains/{chainDescriptor}/withdraw:
    post:
      operationId: withdraw
      summary: Execute a Withdraw operation
      description: Perform a chain-specific Withdraw.
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "ETH"/"SOL"/"MATIC") to use
        example: SOL
        schema:
          $ref: '#/components/schemas/ChainDescriptor'
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WithdrawRequest'
      responses:
        '201':
          description: Withdraw action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.withdraw(stakingApiWithdrawRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().withdraw(withdrawRequest, chainDescriptor, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.withdraw(withdraw_request, chain_descriptor, idempotency_key);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.withdraw(stakingApiWithdrawRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().withdraw(withdrawRequest, chainDescriptor, idempotencyKey);
      - lang: Python
        source: response = fireblocks.staking.withdraw(withdraw_request, chain_descriptor, idempotency_key);
  /staking/chains/{chainDescriptor}/claim_rewards:
    post:
      operationId: claimRewards
      summary: Execute a Claim Rewards operation
      description: Perform a chain-specific Claim Rewards.
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "MATIC"/"SOL") to use
        example: MATIC
        schema:
          enum:
          - MATIC
          - SOL
          - SOL_TEST
          type: string
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimRewardsRequest'
      responses:
        '201':
          description: Claim Rewards action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.claimRewards(stakingApiClaimRewardsRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().claimRewards(claimRewardsRequest, chainDescriptor, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.claim_rewards(claim_rewards_request, chain_descriptor, idempotency_key);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.claimRewards(stakingApiClaimRewardsRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().claimRewards(claimRewardsRequest, chainDescriptor, idempotencyKey);
      - lang: Python
        source: response = fireblocks.staking.claim_rewards(claim_rewards_request, chain_descriptor, idempotency_key);
  /staking/chains/{chainDescriptor}/split:
    post:
      operationId: split
      summary: Execute a Split operation
      description: Perform a SOL/SOL_TEST Split on a stake account.
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "SOL"/"SOL_TEST") to use
        example: SOL
        schema:
          enum:
          - SOL
          - SOL_TEST
          type: string
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SplitRequest'
      responses:
        '201':
          description: Split action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SplitResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<SplitResponse>> = fireblocks.staking.split(stakingApiSplitRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<SplitResponse>> response = fireblocks.staking().split(splitRequest, chainDescriptor, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.split(split_request, chain_descriptor, idempotency_key);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<SplitResponse>> = fireblocks.staking.split(stakingApiSplitRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<SplitResponse>> response = fireblocks.staking().split(splitRequest, chainDescriptor, idempotencyKey);
      - lang: Python
        source: response = fireblocks.staking.split(split_request, chain_descriptor, idempotency_key);
  /staking/positions:
    get:
      operationId: getAllDelegations
      summary: List staking positions details
      description: 'Return detailed information on all staking positions, including the staked amount, rewards, status and more.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<StakingGetAllDelegationsResponse>> = fireblocks.staking.getAllDelegations(stakingApiGetAllDelegationsRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<List<Delegation>>> response = fireblocks.staking().getAllDelegations(chainDescriptor);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.get_all_delegations(chain_descriptor);
          name: Fireblocks SDK Python example
      parameters:
      - name: chainDescriptor
        required: false
        in: query
        example: SOL
        description: Use "ETH" / "SOL" / "MATIC" / "STETH_ETH" in order to obtain information related to the specific blockchain network or retrieve information about all chains that have data available by providing no argument.
        schema:
          $ref: '#/components/schemas/ChainDescriptor'
      responses:
        '200':
          description: An array of position data was returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingGetAllDelegationsResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<StakingGetAllDelegationsResponse>> = fireblocks.staking.getAllDelegations(stakingApiGetAllDelegationsRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<List<Delegation>>> response = fireblocks.staking().getAllDelegations(chainDescriptor);
      - lang: Python
        source: response = fireblocks.staking.get_all_delegations(chain_descriptor);
  /staking/positions/summary:
    get:
      operationId: getSummary
      summary: Get staking summary details
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<DelegationSummary>> = fireblocks.staking.getSummary();'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<DelegationSummary>> response = fireblocks.staking().getSummary();
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.get_summary();
          name: Fireblocks SDK Python example
      description: 'Return a summary of all vaults, categorized by their status (active, inactive), the total amounts staked and total rewards per-chain.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      responses:
        '200':
          description: A summary for all vaults were returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DelegationSummary'
              example:
                active:
                - chainDescriptor: ETH
                  amount: '64.036604667'
                - chainDescriptor: SOL
                  amount: '0.077345939'
                inactive:
                - chainDescriptor: ETH
                  amount: '0'
                - chainDescriptor: SOL
                  amount: '0'
                rewardsAmount:
                - chainDescriptor: ETH
                  amount: '0.036604667'
                - chainDescriptor: SOL
                  amount: '0.001345939'
                totalStaked:
                - chainDescriptor: ETH
                  amount: '64.036604667'
                - chainDescriptor: SOL
                  amount: '0.077345939'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<DelegationSummary>> = fireblocks.staking.getSummary();'
      - lang: Java
        source: CompletableFuture<ApiResponse<DelegationSummary>> response = fireblocks.staking().getSummary();
      - lang: Python
        source: response = fireblocks.staking.get_summary();
  /staking/positions/summary/vaults:
    get:
      operationId: getSummaryByVault
      summary: Get staking summary details by vault
      description: 'Return a summary for each vault, categorized by their status (active, inactive), the total amounts staked and total rewards per-chain.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<StakingGetSummaryByVaultResponse>> = fireblocks.staking.getSummaryByVault();'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<StakingGetSummaryByVaultResponse>> response = fireblocks.staking().getSummaryByVault();
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.get_summary_by_vault();
          name: Fireblocks SDK Python example
      responses:
        '200':
          description: A summary for each vault were returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingGetSummaryByVaultResponse'
              example:
                '0':
                  active:
                  - chainDescriptor: SOL
                    amount: '0.015202376'
                  inactive:
                  - chainDescriptor: SOL
                    amount: '0'
                  rewardsAmount:
                  - chainDescriptor: SOL
                    amount: '0.000202376'
                  totalStaked:
                  - chainDescriptor: SOL
                    amount: '0.015202376'
                '1':
                  active:
                  - chainDescriptor: ETH
                    amount: '64.036604667'
                  - chainDescriptor: SOL
                    amount: '0.011191566'
                  inactive:
                  - chainDescriptor: ETH
                    amount: '0'
                  - chainDescriptor: SOL
                    amount: '0'
                  rewardsAmount:
                  - chainDescriptor: ETH
                    amount: '0.036604667'
                  - chainDescriptor: SOL
                    amount: '0.000191566'
                  totalStaked:
                  - chainDescriptor: ETH
                    amount: '64.036604667'
                  - chainDescriptor: SOL
                    amount: '0.011191566'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<StakingGetSummaryByVaultResponse>> = fireblocks.staking.getSummaryByVault();'
      - lang: Java
        source: CompletableFuture<ApiResponse<StakingGetSummaryByVaultResponse>> response = fireblocks.staking().getSummaryByVault();
      - lang: Python
        source: response = fireblocks.staking.get_summary_by_vault();
  /staking/positions/{id}:
    get:
      operationId: getDelegationById
      summary: Get staking position details
      description: 'Return detailed information on a staking position, including the staked amount, rewards, status and more.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<Delegation>> = fireblocks.staking.getDelegationById(stakingApiGetDelegationByIdRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<Delegation>> response = fireblocks.staking().getDelegationById(id);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.get_delegation_by_id(id);
          name: Fireblocks SDK Python example
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier of the staking position
        schema:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
      responses:
        '200':
          description: Position data was returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Delegation'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<Delegation>> = fireblocks.staking.getDelegationById(stakingApiGetDelegationByIdRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<Delegation>> response = fireblocks.staking().getDelegationById(id);
      - lang: Python
        source: response = fireblocks.staking.get_delegation_by_id(id);
  /staking/providers:
    get:
      operationId: getProviders
      summary: List staking providers details
      description: 'Return information on all the available staking providers.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<StakingGetProvidersResponse>> = fireblocks.staking.getProviders();'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<List<Provider>>> response = fireblocks.staking().getProviders();
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.get_providers();
          name: Fireblocks SDK Python example
      responses:
        '200':
          description: An array of supported providers was returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingGetProvidersResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<StakingGetProvidersResponse>> = fireblocks.staking.getProviders();'
      - lang: Java
        source: CompletableFuture<ApiResponse<List<Provider>>> response = fireblocks.staking().getProviders();
      - lang: Python
        source: response = fireblocks.staking.get_providers();
  /staking/providers/{providerId}/approveTermsOfService:
    post:
      operationId: approveTermsOfServiceByProviderId
      summary: Approve staking terms of service
      description: 'Approve the terms of service of the staking provider.

        This must be called before performing a staking action for the first time with this provider.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.approveTermsOfServiceByProviderId(stakingApiApproveTermsOfServiceByProviderIdRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().approveTermsOfServiceByProviderId(providerId, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.approve_terms_of_service_by_provider_id(provider_id, idempotency_key);
          name: Fireblocks SDK Python example
      parameters:
      - name: providerId
        required: true
        in: path
        description: The unique identifier of the staking provider
        example: kiln
        schema:
          $ref: '#/components/schemas/StakingProvider'
      - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: The terms of service have been successfully approved and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.approveTermsOfServiceByProviderId(stakingApiApproveTermsOfServiceByProviderIdRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().approveTermsOfServiceByProviderId(providerId, idempotencyKey);
      - lang: Python
        source: response = fireblocks.staking.approve_terms_of_service_by_provider_id(provider_id, idempotency_key);
components:
  schemas:
    UnstakeRequest:
      type: object
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850e
          description: id of position to unstake
        fee:
          type: string
          example: '7'
          description: Represents the fee for a transaction, which can be specified as a percentage value. Only one of fee/feeLevel is required.
        feeLevel:
          $ref: '#/components/schemas/FeeLevel'
        txNote:
          type: string
          example: 'unstake request id b70701f4-d7b1-4795-a8ee-b09cdb5b850d #ETH'
          description: The note to associate with the transactions.
        amount:
          type: string
          example: '75'
          description: The number of tokens to unstake.  This optional field is applicable only for liquid staking and allows for a partial unstake of the position.  If not provided, the entire position will be unstaked by default.
      required:
      - id
      example:
        id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        txNote: 'unstake request id b70701f4-d7b1-4795-a8ee-b09cdb5b850d #SOL'
        feeLevel: MEDIUM
    StakeRequest:
      type: object
      example:
        vaultAccountId: '22'
        providerId: kiln
        stakeAmount: '100'
        txNote: stake request id CcaHc2L43ZWjwCHART3oZoJvHLAe9hzT2DJNUpBzoTN1 of 100 SOL created on 02.04.23
        feeLevel: MEDIUM
      properties:
        vaultAccountId:
          type: string
          example: '22'
          description: The source vault account to stake from
        providerId:
          $ref: '#/components/schemas/StakingProvider'
        stakeAmount:
          type: string
          example: '32'
          description: Amount of tokens to stake
        txNote:
          type: string
          example: stake request id CcaHc2L43ZWjwCHART3oZoJvHLAe9hzT2DJNUpBzoTN1 of 32ETH created on 02.04.23
          description: The note to associate with the stake transactions.
        fee:
          type: string
          example: '7'
          descript

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fireblocks/refs/heads/main/openapi/fireblocks-staking-api-openapi.yml