> ## 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/withdraw-staked-funds",
  "feedback": "Description of the issue"
}
```

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

</AgentInstructions>

# Withdraw staked funds

> Withdraws funds that have completed the unbonding period. Typically requires the position to be deactivated first (unstake → unbond → withdraw). Amount and timing vary by chain protocol.

Partial withdrawal is supported for ETH compounding validators (EIP-7251/Pectra) and Cosmos chains via the optional 'amount' field. For ETH compounding validators, the remaining balance must be at least 32 ETH after the withdrawal. For all other chains, omitting 'amount' withdraws the entire available balance.



## OpenAPI

````yaml https://docs.fireblocks.com/api/v1/swagger.yaml post /staking/chains/{chainDescriptor}/withdraw
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/chains/{chainDescriptor}/withdraw:
    post:
      tags:
        - Staking
      summary: Withdraw staked funds
      description: >-
        Withdraws funds that have completed the unbonding period. Typically
        requires the position to be deactivated first (unstake → unbond →
        withdraw). Amount and timing vary by chain protocol.


        Partial withdrawal is supported for ETH compounding validators
        (EIP-7251/Pectra) and Cosmos chains via the optional 'amount' field. For
        ETH compounding validators, the remaining balance must be at least 32
        ETH after the withdrawal. For all other chains, omitting 'amount'
        withdraws the entire available balance.
      operationId: withdraw
      parameters:
        - name: chainDescriptor
          required: true
          in: path
          description: >-
            Protocol identifier for the withdraw staking operation (e.g.,
            ATOM_COS/ETH/STETH_ETH).
          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 request accepted and created.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '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<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);
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
    WithdrawRequest:
      type: object
      example:
        id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        txNote: 'withdraw request id b70701f4-d7b1-4795-a8ee-b09cdb5b850d #ETH'
        feeLevel: MEDIUM
        amount: '7'
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: id of position to withdraw
        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: 'withdraw request id b70701f4-d7b1-4795-a8ee-b09cdb5b850d #ETH'
          description: The note to associate with the transactions.
        amount:
          type: string
          example: '7'
          description: >-
            Amount of tokens to withdraw. Only supported for ETH compounding
            validators (EIP-7251/Pectra) and Cosmos chains to enable partial
            withdrawals. For ETH compounding validators, the remaining balance
            must be at least 32 ETH after withdrawal. For other chains, this
            field is ignored and the entire available amount will be withdrawn.
            If not provided, the entire available amount will be withdrawn.
      required:
        - id
    ErrorSchema:
      type: object
      properties:
        message:
          type: string
        code:
          type: number
    FeeLevel:
      type: string
      example: MEDIUM
      description: >-
        Represents the fee level for a transaction, which can be set as slow,
        medium, or fast. Only one of fee/feeLevel is required.
      enum:
        - LOW
        - MEDIUM
        - HIGH
  parameters:
    X-Idempotency-Key:
      name: Idempotency-Key
      in: header
      description: >-
        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.
      required: false
      schema:
        type: string
  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'

````