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

# Validators overview (POST)

> Retrieve validator information by index or public key using a JSON request body.  Use this endpoint when the list of identifiers is too long for the GET path parameter.  Provide up to 100 identifiers (higher limits may apply to authenticated premium users)  as a comma-separated string in the `indicesOrPubkey` field. Each identifier must be  either a validator index (base-10 integer) or a 48-byte BLS public key as 0x-prefixed hex  (96 hex characters after 0x) or without the 0x prefix.



## OpenAPI

````yaml /api/v1/bundled.yaml post /api/v1/validator
openapi: 3.0.4
info:
  title: beaconcha.in API Documentation
  license:
    name: GPL-3.0
    url: https://www.gnu.org/licenses/gpl-3.0.en.html
  description: >-
    > ⚠️ No new features or endpoints will be added to V1. We recommend the [V2
    API](/api/overview) for all new projects. See the [migration
    guide](/api/v1-to-v2-migration).

    ## Introduction

    **Advanced and reliable API for accessing comprehensive Ethereum blockchain
    data.**


    - **Free Usage Policy:** The API is free to use under a fair use policy,
    with rate limits of 10 requests per minute per IP.

    - **Caching:** All responses are cached for 1 minute.

    - **Higher Usage Plans:** For higher usage plans, visit:
    [https://beaconcha.in/pricing](https://beaconcha.in/pricing). An API key is
    required to use these plans.


    ### API Key Usage

    API keys can be obtained at
    [/user/settings](https://beaconcha.in/user/settings) and must be included in
    requests either as a query string parameter or in the request header.


    #### Example: Query String Parameter

    ```bash

    curl https://beaconcha.in/api/v1/slot/1?apikey=<your_key>

    ```


    #### Example: Request Header

    ```bash

    curl -H 'apikey: <your_key>' https://beaconcha.in/api/v1/slot/1

    ```
  contact: {}
  version: '1.1'
servers:
  - url: https://beaconcha.in
    description: Ethereum mainnet
  - url: https://hoodi.beaconcha.in
    description: Hoodi Ethereum testnet
security:
  - ApiKeyAuthQuery: []
  - ApiKeyAuthHeader: []
tags:
  - name: Epoch
    description: Data related to consensus layer epochs
  - name: Slots
    description: Data related to consensus layer slots
  - name: Validators
    description: Data related to consensus layer validators
  - name: Rewards
    description: Data related to validator rewards
  - name: Sync Committees
    description: Data related to sync committees
  - name: Rocketpool
    description: Data related to the rocketpool protocol
  - name: ETH.Store®
    description: Data related to the ETH.Store® metric
  - name: Validator deposits
    description: Data related to execution layer validator deposits
  - name: Blocks
    description: Data related to execution layer blocks
  - name: Gas
    description: Data related to gas prices
  - name: Address
    description: Data related to ethereum addresses
  - name: Network
    description: Network data
  - name: Misc
    description: Miscellaneous data
  - name: User
    description: User data
  - name: Machine Metrics
    description: Submit machine, beacon-node, and validator-client monitoring metrics
paths:
  /api/v1/validator:
    post:
      tags:
        - Validators
      summary: Validators overview (POST)
      description: >-
        Retrieve validator information by index or public key using a JSON
        request body.  Use this endpoint when the list of identifiers is too
        long for the GET path parameter.  Provide up to 100 identifiers (higher
        limits may apply to authenticated premium users)  as a comma-separated
        string in the `indicesOrPubkey` field. Each identifier must be  either a
        validator index (base-10 integer) or a 48-byte BLS public key as
        0x-prefixed hex  (96 hex characters after 0x) or without the 0x prefix.
      operationId: postValidators
      requestBody:
        description: >-
          Comma-separated list of validator indices and/or public keys to query
          (maximum 100 items by default).
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/types.DashboardRequest'
        required: true
      responses:
        '200':
          description: >-
            Matching validators were retrieved successfully. The `data` field
            contains either a single validator object (when one identifier is
            provided/resolved) or an array of validator objects (when multiple
            identifiers are provided/resolved).
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/types.ApiResponse'
                  - type: object
                    properties:
                      data:
                        oneOf:
                          - title: Multiple validators
                            type: array
                            items:
                              $ref: '#/components/schemas/types.APIValidatorResponse'
                          - $ref: '#/components/schemas/types.APIValidatorResponse'
                            title: Single validator
        '400':
          description: >-
            The request is invalid (for example, malformed body, too many
            identifiers, or unresolved pubkeys).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/types.ApiErrorResponse'
              examples:
                invalidParam:
                  summary: Invalid validator identifier
                  value:
                    status: 'ERROR: invalid validator-parameter'
                    data: null
                tooMany:
                  summary: Too many identifiers
                  value:
                    status: 'ERROR: only a maximum of 100 query parameters are allowed'
                    data: null
        '500':
          description: An unexpected server error occurred while processing your request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/types.ApiErrorResponse'
              examples:
                serverError:
                  summary: Internal error
                  value:
                    status: 'ERROR: internal server error'
                    data: null
components:
  schemas:
    types.DashboardRequest:
      type: object
      description: >-
        Validator lookup request specifying validator indices and/or public
        keys.
      properties:
        indicesOrPubkey:
          $ref: '#/components/schemas/primitives.indicesOrPubkeys'
      required:
        - indicesOrPubkey
    types.ApiResponse:
      type: object
      description: Standard success envelope used by all API endpoints.
      properties:
        status:
          type: string
          description: >-
            HTTP-independent status of the API operation. For successful
            responses this is always "OK".
          enum:
            - OK
        data:
          description: Response payload specific to the endpoint.
          nullable: true
          x-omitempty: true
    types.APIValidatorResponse:
      type: object
      description: >-
        State and metadata for a single validator, including status, balances,
        epochs, and withdrawal summary.
      properties:
        activation_eligibility_epoch:
          type: integer
          description: >-
            Epoch at which the validator became eligible for activation. Set to
            the FAR_FUTURE_EPOCH sentinel when not yet eligible.
          example: 289892
        activation_epoch:
          type: integer
          description: >-
            Epoch at which the validator entered the active set.
            FAR_FUTURE_EPOCH when not yet active.
          example: 290297
        balance:
          type: integer
          description: >-
            Current validator balance in gwei at the latest processed epoch for
            this response.
          example: 32014494648
        effective_balance:
          type: integer
          description: >-
            Effective balance used for reward/penalty calculations in gwei
            (capped at 32,000,000,000 gwei).
          example: 32000000000
        exit_epoch:
          type: integer
          description: >-
            Epoch at which the validator begins exiting. FAR_FUTURE_EPOCH when
            no exit is scheduled.
          example: 9223372036854776000
        last_attestation_slot:
          type: integer
          description: >-
            Most recent slot at which an attestation from this validator was
            observed in a canonical block.
          example: 12766062
        name:
          type: string
          description: >-
            Optional human-readable label associated with the validator. Empty
            string when not set.
          example: name
        pubkey:
          type: string
          description: >-
            BLS12-381 validator public key (48 bytes; 0x-prefixed hex with 96
            hex characters).
          example: >-
            0xb73ecd964c9779506a3209ec40dd40d765b0464fef281d77ac8a559fa9e2a9cff8b6b2e09b8f6360b119ba7a963c5b81
        slashed:
          type: boolean
          description: True when the validator has been slashed.
          example: false
        status:
          type: string
          description: >-
            Current validator state. One of: active_online, exiting_online,
            slashing_online, active_offline, exiting_offline, slashing_offline,
            pending_initialized, pending, deposited, exited, slashed.
          enum:
            - active_online
            - exiting_online
            - slashing_online
            - active_offline
            - exiting_offline
            - slashing_offline
            - pending_initialized
            - pending
            - deposited
            - exited
            - slashed
          example: active_online
        validator_index:
          type: integer
          description: Validator index (>= 0).
          minimum: 0
          example: 1435245
        withdrawable_epoch:
          type: integer
          description: >-
            Epoch at which the validator’s balance becomes withdrawable after
            exit or slashing. FAR_FUTURE_EPOCH when not yet withdrawable.
          example: 9223372036854776000
        withdrawal_credentials:
          type: string
          description: >-
            32-byte withdrawal credentials (0x-prefixed hex). Prefix 0x01
            encodes an execution address; 0x00 indicates BLS withdrawal
            credentials.
          example: '0x0100000000000000000000005d652886f0b4ae0b1b7d6be5b7e2d555aafdc812'
        total_withdrawals:
          type: integer
          description: >-
            Cumulative amount withdrawn by this validator in gwei, including the
            latest exported day and canonical blocks of the current day.
          example: 1072078769
    types.ApiErrorResponse:
      type: object
      description: Standard error envelope returned when a request fails.
      properties:
        status:
          type: string
          description: >-
            Human-readable error indicator and message. The value begins with
            "ERROR:" followed by details.
          example: 'ERROR: <Message>'
        data:
          type: string
          description: Optional additional context for the error. Null in most cases.
          nullable: true
          default: null
    primitives.indicesOrPubkeys:
      type: string
      description: >
        Comma-separated list (no spaces) of validator identifiers. Each
        identifier must be either:

        - A validator index as a base-10 integer (for example, 652648)

        - A BLS public key as a 96-hex-character string with or without the 0x
        prefix (case-insensitive)


        Resolution and limits:

        - The server resolves public keys to validator indices before querying
        data.

        - The total number of identifiers must not exceed the server-enforced
        limit (default 100).

        - Identifiers that cannot be parsed or resolved result in HTTP 400.
      example: 1,2,3
  securitySchemes:
    ApiKeyAuthQuery:
      type: apiKey
      in: query
      name: apikey
      description: ''
    ApiKeyAuthHeader:
      type: apiKey
      in: header
      name: apikey
      description: ''

````