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

# Network Queue Overview

> Returns information about the various staking-related queues (deposit, exit, full withdrawal, consolidation, compounding switch) and how long the expected wait time is.

**Use case guide:** [Queue tracking](/use-cases/queue-tracking) explains how to choose between network and validator queue views, estimate wait times, and measure staking flows.

The `estimated_processed_at` field in each queue always refers to the very last item in the network queue
(i.e. when the entire queue will be fully processed).

For per-validator queue details, use:
- [/api/v2/ethereum/validators/queues](/api-reference/ethereum/validators/queues) — overview per validator

### Deprecation Notice

This notice only affects you if your requests do **not** send the `Accept: application/vnd.beaconcha.in.v2.1+json` header — such requests currently receive the legacy v2 schema. The legacy schema is deprecated and will be sunset on 02.07.2026 23:59:59 UTC. After that date, all requests receive the new v2.1 schema regardless of the `Accept` header, which will break your response parsing if you have not migrated.

To migrate, send the `Accept: application/vnd.beaconcha.in.v2.1+json` header and adapt your parsing to the v2.1 schema shown in the response section below. To review the legacy schema you are currently receiving, select v2 from the **Content-Type dropdown** in the top-right corner of the response section.




## OpenAPI

````yaml /v3/bundled.yaml post /api/v2/ethereum/queues
openapi: 3.0.4
info:
  title: External Service API
  version: 1.0.3
servers:
  - url: https://beaconcha.in
    description: Production API
security:
  - ApiKeyAuth: []
paths:
  /api/v2/ethereum/queues:
    post:
      tags:
        - Network
      summary: Network Queue Overview
      description: >
        Returns information about the various staking-related queues (deposit,
        exit, full withdrawal, consolidation, compounding switch) and how long
        the expected wait time is.


        **Use case guide:** [Queue tracking](/use-cases/queue-tracking) explains
        how to choose between network and validator queue views, estimate wait
        times, and measure staking flows.


        The `estimated_processed_at` field in each queue always refers to the
        very last item in the network queue

        (i.e. when the entire queue will be fully processed).


        For per-validator queue details, use:

        -
        [/api/v2/ethereum/validators/queues](/api-reference/ethereum/validators/queues)
        — overview per validator


        ### Deprecation Notice


        This notice only affects you if your requests do **not** send the
        `Accept: application/vnd.beaconcha.in.v2.1+json` header — such requests
        currently receive the legacy v2 schema. The legacy schema is deprecated
        and will be sunset on 02.07.2026 23:59:59 UTC. After that date, all
        requests receive the new v2.1 schema regardless of the `Accept` header,
        which will break your response parsing if you have not migrated.


        To migrate, send the `Accept: application/vnd.beaconcha.in.v2.1+json`
        header and adapt your parsing to the v2.1 schema shown in the response
        section below. To review the legacy schema you are currently receiving,
        select v2 from the **Content-Type dropdown** in the top-right corner of
        the response section.
      operationId: GetStakingQueues
      requestBody:
        $ref: '#/components/requestBodies/JustChain'
      responses:
        '200':
          $ref: '#/components/responses/QueueStats'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/DefaultError'
components:
  requestBodies:
    JustChain:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NamedChain'
  responses:
    QueueStats:
      description: Successful response.
      content:
        application/vnd.beaconcha.in.v2.1+json:
          schema:
            $ref: '#/components/schemas/QueueStats2.Container'
        application/json:
          schema:
            $ref: '#/components/schemas/QueueStats.Container'
        application/vnd.beaconcha.in.v2+json:
          schema:
            $ref: '#/components/schemas/QueueStats.Container'
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Bad request. Please check your input and try again.
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Unauthorized. Please provide a valid API key.
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: >-
              endpoint not allowed for your subscription tier. upgrade your
              subscription at https://beaconcha.in/pricing.
    NotFound:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: The requested resource was not found.
    MethodNotAllowed:
      description: Method Not Allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: 'method not allowed: GET. all public API endpoints use POST.'
    RateLimitExceeded:
      description: Rate Limit Exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Rate limit exceeded. Please try again later.
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: internal server error. please try again later.
    DefaultError:
      description: An unexpected error response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: An unexpected error occurred.
  schemas:
    NamedChain:
      type: object
      properties:
        chain:
          $ref: '#/components/schemas/Chain'
    QueueStats2.Container:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/QueueStats2.Data'
      description: Response containing unified queue statistics for the network.
      required:
        - data
    QueueStats.Container:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/QueueStats.Data'
      description: >
        Response containing basic information about the queue.


        **Deprecated** — this legacy schema will be sunset on 02.07.2026
        23:59:59 UTC. Switch to v2.1 in the **Content-Type dropdown** above for
        the current schema.
      required:
        - data
    Error:
      type: object
      properties:
        error:
          type: string
    Chain:
      type: string
      enum:
        - mainnet
        - hoodi
      default: mainnet
      description: The Ethereum chain to query.
    QueueStats2.Data:
      type: object
      properties:
        deposit_queue:
          $ref: '#/components/schemas/QueueEntry.DepositQueue'
        exit_queue:
          $ref: '#/components/schemas/QueueEntry.ExitQueue'
        manual_withdrawal_queue:
          $ref: '#/components/schemas/QueueEntry.ManualWithdrawal'
        withdrawal_sweep:
          $ref: '#/components/schemas/QueueEntry.WithdrawalSweep'
        consolidation_queue:
          $ref: '#/components/schemas/QueueEntry.ConsolidationQueue'
        compounding_switch_queue:
          $ref: '#/components/schemas/QueueEntry.CompoundingSwitchQueue'
        finality:
          $ref: '#/components/schemas/FinalityParamsOnlyNoFinalization'
      required:
        - deposit_queue
        - exit_queue
        - manual_withdrawal_queue
        - withdrawal_sweep
        - consolidation_queue
        - compounding_switch_queue
        - finality
    QueueStats.Data:
      type: object
      properties:
        deposit_queue:
          $ref: '#/components/schemas/QueueStats.DepositQueue'
        exit_queue:
          $ref: '#/components/schemas/QueueStats.ExitQueue'
        withdrawal_sweep:
          $ref: '#/components/schemas/QueueStats.WithdrawalSweep'
        finality:
          $ref: '#/components/schemas/FinalityParamsOnlyNoFinalization'
      required:
        - deposit_queue
        - exit_queue
        - withdrawal_sweep
        - finality
    QueueEntry.DepositQueue:
      type: object
      nullable: true
      description: >
        Deposit queue statistics.

        For the network aggregate, this represents the entire deposit queue.

        For individual validators, this represents the validator's position in
        the deposit queue.

        The `estimated_processed_at` always refers to the very last deposit
        being referenced

        (for the network: end of the network queue; for a validator with
        multiple deposits: when the last deposit is processed).


        For a detailed per-validator breakdown of all individual deposits,

        see
        [/api/v2/ethereum/validators/queues/deposits](/api-reference/ethereum/validators/queues/deposits).
      properties:
        deposit_count:
          $ref: '#/components/schemas/count'
          description: >
            Total number of new validator deposits currently in the queue
            (excludes top-ups).
          nullable: true
        deposit_balance:
          description: >-
            Total balance of new validator deposits in the queue (excludes
            top-ups).
          allOf:
            - $ref: '#/components/schemas/wei'
          nullable: true
        topup_count:
          $ref: '#/components/schemas/count'
          description: >
            Total number of top-up deposits currently in the queue (excludes new
            validator deposits).
          nullable: true
        topup_balance:
          description: >-
            Total balance of top-up deposits in the queue (excludes new
            validator deposits).
          allOf:
            - $ref: '#/components/schemas/wei'
          nullable: true
        estimated_processed_at:
          $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated time and epoch when the deposit queue will be fully
            processed (network)

            or when this validator's deposit will be processed (per-validator).
          nullable: true
        churn:
          $ref: '#/components/schemas/ChurnRate'
          description: Current churn rate — how much balance can be processed per interval.
          nullable: true
      required:
        - estimated_processed_at
    QueueEntry.ExitQueue:
      type: object
      nullable: true
      description: >
        Exit queue statistics.

        For the network aggregate, this represents the entire exit queue.

        For individual validators, this represents the validator's position in
        the exit queue.

        The `estimated_processed_at` always refers to the very last exit being
        referenced

        (for the network: end of the network queue; for a validator: when the
        exit is processed).


        For a detailed per-validator breakdown of all individual exits and
        partial withdrawals,

        see
        [/api/v2/ethereum/validators/queues/withdrawals](/api-reference/ethereum/validators/queues/withdrawals).
      properties:
        count:
          $ref: '#/components/schemas/count'
          description: |
            Total number of validators currently in the exit queue (network)
            or number of exit requests for this validator (per-validator).
          nullable: true
        balance:
          $ref: '#/components/schemas/wei'
          description: Total balance of validators in the exit queue.
          nullable: true
        estimated_processed_at:
          $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated time and epoch when the exit queue will be fully processed
            (network)

            or when this validator's exit will be processed (per-validator).
          nullable: true
        churn:
          $ref: '#/components/schemas/ChurnRate'
          description: Current churn rate — how much balance can be processed per interval.
          nullable: true
      required:
        - estimated_processed_at
    QueueEntry.ManualWithdrawal:
      type: object
      nullable: true
      description: >
        Network-level statistics for manual withdrawals — partial withdrawals
        triggered via an execution-layer withdrawal request (EIP-7002), i.e. a
        validator operator withdrawing excess balance while the validator stays
        active.


        This does **not** include full exits: an execution-layer full-exit
        request (amount `0`) triggers a normal validator exit and is reflected
        in `exit_queue`, not here. Automatic withdrawals performed by the
        protocol withdrawal sweep — excess balance for active validators, or the
        full balance for exited ones — are reflected in `withdrawal_sweep`.


        `estimated_processed_at` is when the last partial withdrawal currently
        in the network queue is expected to be processed.


        For detailed per-validator withdrawal information, see
        [/api/v2/ethereum/validators/queues/withdrawals](/api-reference/ethereum/validators/queues/withdrawals).
      properties:
        count:
          $ref: '#/components/schemas/count'
          description: Total number of partial withdrawal requests currently in the queue.
          nullable: true
        balance:
          $ref: '#/components/schemas/wei'
          description: Total balance of partial withdrawal requests in the queue.
          nullable: true
        estimated_processed_at:
          $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated time and epoch when the last partial withdrawal currently
            in the network queue is expected to be processed.
          nullable: true
      required:
        - estimated_processed_at
    QueueEntry.WithdrawalSweep:
      type: object
      nullable: true
      description: >
        Withdrawal sweep clock statistics.

        The sweep is not a queue but a rotating clock that cycles through all
        validators and automatically

        withdraws any excess balance (rewards above the effective balance) or
        the full balance for exited validators.


        The sweep delay indicates how long it takes for the clock to complete a
        full rotation.
      properties:
        estimated_sweep_delay:
          $ref: '#/components/schemas/timeSecondsDuration'
          description: >
            Estimated maximum time, in seconds, for the sweep clock to make a
            full rotation.

            The actual withdrawal may occur sooner depending on the validator's
            position relative to the sweep pointer.
          nullable: true
        last_swept_validator_index:
          type: integer
          description: >
            The index of the last validator for which an automatic withdrawal
            was processed.

            This indicates the current position of the sweep clock.
          nullable: true
      required:
        - last_swept_validator_index
    QueueEntry.ConsolidationQueue:
      type: object
      nullable: true
      description: >
        Consolidation queue statistics.


        Consolidation is a two-phase process — the source validator first exits
        the active set, then its balance

        is swept to the target validator after the withdrawal delay (~256
        epochs, roughly 27 hours).


        `estimated_exit_at` is when all currently-queued source validators will
        have exited.

        `estimated_processed_at` is when the last balance transfer will complete
        (worst-case full duration).
      properties:
        count:
          $ref: '#/components/schemas/count'
          description: Total number of consolidations currently in the queue.
          nullable: true
        balance:
          $ref: '#/components/schemas/wei'
          description: Total balance of validators currently queued for consolidation.
          nullable: true
        estimated_exit_at:
          allOf:
            - $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated epoch when the last source validator in the current queue
            will exit the active set.

            This is the earlier of the two milestones — after this point no
            consolidation sources remain active.
          nullable: true
        estimated_processed_at:
          allOf:
            - $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated epoch when the last balance transfer in the current queue
            will complete (withdrawable epoch).

            Follows `estimated_exit_at` by the withdrawal delay (~256 epochs).
          nullable: true
        churn:
          $ref: '#/components/schemas/ChurnRate'
          description: >-
            Current churn rate — how much balance can be consolidated per
            interval.
          nullable: true
      required:
        - estimated_processed_at
    QueueEntry.CompoundingSwitchQueue:
      type: object
      nullable: true
      description: >
        Compounding switch queue statistics.

        Once dequeued, the validator will be switched to compounding mode on the
        consensus layer,

        allowing it to exceed the normal maximum effective balance cap

        (32 ETH for prefix "0x00" or "0x01", 2048 ETH for prefix "0x02").
      properties:
        count:
          $ref: '#/components/schemas/count'
          description: Total number of compounding switch actions currently in the queue.
          nullable: true
        estimated_processed_at:
          $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated time and epoch when the compounding switch queue will be
            fully processed (network)

            or when this validator's compounding switch will be processed
            (per-validator).
          nullable: true
        churn:
          $ref: '#/components/schemas/ChurnRate'
          description: Current churn rate — how much balance can be processed per interval.
          nullable: true
      required:
        - estimated_processed_at
    FinalityParamsOnlyNoFinalization:
      type: string
      description: |
        Indicates the finality status of the data provided. 
          - Finalized data cannot be changed without slashing at least one-third of all validators, providing strong economic guarantees.
          - Data marked as not_finalized does not have this guarantee and may still change.
      enum:
        - not_finalized
    QueueStats.DepositQueue:
      type: object
      properties:
        deposit_count:
          $ref: '#/components/schemas/count'
          description: >
            Total number of deposits currently in the queue, including both new
            validator deposits and top-ups.

            Note: A single validator may have multiple pending deposits
            (top-ups) in the queue; this value counts all deposits without
            deduplication by validator.
          nullable: true
        balance:
          $ref: '#/components/schemas/wei'
          description: >-
            Total balance of deposits in the queue, including both new validator
            deposits and top-ups.
          nullable: true
        estimated_processed_at:
          $ref: '#/components/schemas/timestamp'
          description: >-
            Estimated unix timestamp when the last deposit in the queue will be
            processed
          nullable: true
        churn:
          $ref: '#/components/schemas/wei'
          description: >-
            Current churn limit in wei, i.e. how much balance can be processed
            per epoch.
      required:
        - churn
    QueueStats.ExitQueue:
      type: object
      properties:
        count:
          $ref: '#/components/schemas/count'
          description: >
            The total number of validators currently in the exit queue, awaiting
            processing.


            This count reflects the number of validators that have signaled
            their intent to exit and are queued for processing. Once processed,
            these validators will move to the sweep queue for final balance
            withdrawal, which is not included in this count.
          nullable: true
        balance:
          $ref: '#/components/schemas/wei'
          description: >
            The total balance currently awaiting processing in the exit queue.


            This value represents the sum of validator balances scheduled to
            exit in the exit queue. After leaving the exit queue, validators
            move to the sweep queue for final balance withdrawal. The sweep
            queue is not included in this amount.
          nullable: true
        estimated_processed_at:
          $ref: '#/components/schemas/timestamp'
          description: >-
            Estimated unix timestamp when the last validator in the queue will
            be processed
          nullable: true
        churn:
          $ref: '#/components/schemas/wei'
          description: >-
            Current churn limit in wei, i.e. how much balance can be processed
            per epoch.
      required:
        - churn
    QueueStats.WithdrawalSweep:
      type: object
      properties:
        estimated_sweep_delay:
          $ref: '#/components/schemas/timeSecondsDuration'
          description: >
            Estimated maximum time, in seconds, before a newly submitted and
            valid withdrawal is processed

            under typical network conditions.


            Since the Electra (a.k.a. Pectra) hardfork, the sweep queue shares
            capacity with the partial

            withdrawal queue in an up to 50:50 split. In the theoretical worst
            case where the partial queue

            is fully utilized, the actual maximum sweep delay may be up to
            **double** this value.


            This estimate represents the time required for the sweep "clock
            hand" to make a full rotation

            assuming full sweep capacity. Actual processing time may be shorter
            or (in rare cases) longer,

            depending on concurrent partial withdrawal activity.
          nullable: true
        last_swept_validator_index:
          description: >
            The index of the last validator for which an automatic withdrawal
            was processed.


            This can be used to determine the current position of the withdrawal
            processing clock hand.
          type: integer
      required:
        - last_swept_validator_index
    count:
      type: integer
      minimum: 0
    wei:
      type: string
      description: Amount in wei (1 ETH = 10^18 wei)
      pattern: ^(0|-?[1-9][0-9]*)$
    EstimatedWithEpoch:
      type: object
      properties:
        epoch:
          $ref: '#/components/schemas/Epoch'
          description: Epoch number
        timestamp:
          $ref: '#/components/schemas/timestamp'
          description: Unix timestamp
      required:
        - epoch
        - timestamp
    ChurnRate:
      type: object
      description: >
        Rate at which the protocol can process queued balance (deposits or
        exits) per interval.

        The `amount` is denominated in wei and the `interval_seconds` defines
        the length of one processing cycle (e.g. 384 seconds for one Ethereum
        epoch = 32 slots × 12s each).
      properties:
        amount:
          $ref: '#/components/schemas/wei'
          description: Amount of ether (in wei) that can be processed in one interval.
        interval_seconds:
          type: integer
          description: >-
            Length of the processing interval in seconds (e.g. 384 for one
            epoch).
      required:
        - amount
        - interval_seconds
    timeSecondsDuration:
      type: integer
      minimum: 0
      description: Duration in seconds
    timestamp:
      type: integer
      minimum: 0
    Epoch:
      type: integer
      minimum: 0
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: >-
        Authorization header with value: Bearer YOUR_TOKEN. Refer to the [API
        Keys](/api/overview#api-keys) section to create your API key.

````