---
title: "POST /validators"
method: POST
path: "/validators"
---

# POST /validators

`POST /validators`

Queries active validators on the network. Returns details and the state of validation on the blockchain.

## Request body

- JsonRpcRequestForValidators
  - `id` string — JSON-RPC request id. Auto-populated; can be any string.
  - `jsonrpc` '2.0' — JSON-RPC protocol version. Always `2.0`.
  - `method` 'validators', required
  - `params` union, required
    - object
      - `epoch_id` string, required
    - object
      - `block_id` union, required
        - integer
        - string
    - object
      - `latest` unknown, required

## Response `200`

- union
  - object
    - `result` RpcValidatorResponse, required — Information about this epoch validators and next epoch validators
      - `current_fishermen` ValidatorStakeView[], required — Fishermen for the current epoch
        - `account_id` string, required — NEAR Account Identifier. This is a unique, syntactically valid, human-readable account identifier on the NEAR network. [See the crate-level docs for information about validation.](index.html#account-id-rules) Also see [Error kind precedence](AccountId#error-kind-precedence). ## Examples ``` use near_account_id::AccountId; let alice: AccountId = "alice.near".parse().unwrap(); assert!("ƒelicia.near".parse::<AccountId>().is_err()); // (ƒ is not f) ```
        - `public_key` string, required
        - `stake` string, required
        - `validator_stake_struct_version` 'V1', required
      - `current_proposals` ValidatorStakeView[], required — Proposals in the current epoch
        - `account_id` string, required — NEAR Account Identifier. This is a unique, syntactically valid, human-readable account identifier on the NEAR network. [See the crate-level docs for information about validation.](index.html#account-id-rules) Also see [Error kind precedence](AccountId#error-kind-precedence). ## Examples ``` use near_account_id::AccountId; let alice: AccountId = "alice.near".parse().unwrap(); assert!("ƒelicia.near".parse::<AccountId>().is_err()); // (ƒ is not f) ```
        - `public_key` string, required
        - `stake` string, required
        - `validator_stake_struct_version` 'V1', required
      - `current_validators` CurrentEpochValidatorInfo[], required — Validators for the current epoch
        - `account_id` string, required — NEAR Account Identifier. This is a unique, syntactically valid, human-readable account identifier on the NEAR network. [See the crate-level docs for information about validation.](index.html#account-id-rules) Also see [Error kind precedence](AccountId#error-kind-precedence). ## Examples ``` use near_account_id::AccountId; let alice: AccountId = "alice.near".parse().unwrap(); assert!("ƒelicia.near".parse::<AccountId>().is_err()); // (ƒ is not f) ```
        - `is_slashed` boolean, required
        - `num_expected_blocks` integer, required
        - `num_expected_chunks` integer
        - `num_expected_chunks_per_shard` integer[] — Number of chunks this validator was expected to produce in each shard. Each entry in the array corresponds to the shard in the `shards_produced` array.
        - `num_expected_endorsements` integer
        - `num_expected_endorsements_per_shard` integer[] — Number of chunks this validator was expected to validate and endorse in each shard. Each entry in the array corresponds to the shard in the `shards_endorsed` array.
        - `num_produced_blocks` integer, required
        - `num_produced_chunks` integer
        - `num_produced_chunks_per_shard` integer[]
        - `num_produced_endorsements` integer
        - `num_produced_endorsements_per_shard` integer[]
        - `public_key` string, required
        - `shards` ShardId[], required — Shards this validator is assigned to as chunk producer in the current epoch.
        - `shards_endorsed` ShardId[] — Shards this validator is assigned to as chunk validator in the current epoch.
        - `stake` string, required
      - `epoch_height` integer, required — Epoch height
      - `epoch_start_height` integer, required — Epoch start block height
      - `next_fishermen` ValidatorStakeView[], required — Fishermen for the next epoch
        - `account_id` string, required — NEAR Account Identifier. This is a unique, syntactically valid, human-readable account identifier on the NEAR network. [See the crate-level docs for information about validation.](index.html#account-id-rules) Also see [Error kind precedence](AccountId#error-kind-precedence). ## Examples ``` use near_account_id::AccountId; let alice: AccountId = "alice.near".parse().unwrap(); assert!("ƒelicia.near".parse::<AccountId>().is_err()); // (ƒ is not f) ```
        - `public_key` string, required
        - `stake` string, required
        - `validator_stake_struct_version` 'V1', required
      - `next_validators` NextEpochValidatorInfo[], required — Validators for the next epoch
        - `account_id` string, required — NEAR Account Identifier. This is a unique, syntactically valid, human-readable account identifier on the NEAR network. [See the crate-level docs for information about validation.](index.html#account-id-rules) Also see [Error kind precedence](AccountId#error-kind-precedence). ## Examples ``` use near_account_id::AccountId; let alice: AccountId = "alice.near".parse().unwrap(); assert!("ƒelicia.near".parse::<AccountId>().is_err()); // (ƒ is not f) ```
        - `public_key` string, required
        - `shards` ShardId[], required
        - `stake` string, required
      - `prev_epoch_kickout` ValidatorKickoutView[], required — Kickout in the previous epoch
        - `account_id` string, required — NEAR Account Identifier. This is a unique, syntactically valid, human-readable account identifier on the NEAR network. [See the crate-level docs for information about validation.](index.html#account-id-rules) Also see [Error kind precedence](AccountId#error-kind-precedence). ## Examples ``` use near_account_id::AccountId; let alice: AccountId = "alice.near".parse().unwrap(); assert!("ƒelicia.near".parse::<AccountId>().is_err()); // (ƒ is not f) ```
        - `reason` union, required — Reasons for removing a validator from the validator set.
          - '_UnusedSlashed' — Deprecated
          - object — Validator didn't produce enough blocks.
            - `NotEnoughBlocks` object, required
              - …
          - object — Validator didn't produce enough chunks.
            - `NotEnoughChunks` object, required
              - …
          - 'Unstaked' — Validator unstaked themselves.
          - object — Validator stake is now below threshold
            - `NotEnoughStake` object, required
              - …
          - 'DidNotGetASeat' — Enough stake but is not chosen because of seat limits.
          - object — Validator didn't produce enough chunk endorsements.
            - `NotEnoughChunkEndorsements` object, required
              - …
          - object — Validator's last block proposal was for a protocol version older than the network's voted protocol version.
            - `ProtocolVersionTooOld` object, required
              - …
      - `validator_reward_paid_prev_epoch` object — Per-validator rewards paid out at the start of the previous epoch. For epoch E, this contains the rewards earned in epoch E-2 that were added to validator and treasury balances at the first block of epoch E-1 (via `ValidatorAccountsUpdate`).
    - `id` string, required
    - `jsonrpc` string, required
  - object
    - `error` union, required
      - object
        - `cause` union, required
          - object
            - `info` object, required
              - …
            - `name` 'METHOD_NOT_FOUND', required
          - object
            - `info` object, required
              - …
            - `name` 'PARSE_ERROR', required
        - `name` 'REQUEST_VALIDATION_ERROR', required
      - object
        - `cause` union, required
          - object
            - `name` 'UNKNOWN_EPOCH', required
          - object
            - `name` 'VALIDATOR_INFO_UNAVAILABLE', required
          - object
            - `info` object, required
              - …
            - `name` 'INTERNAL_ERROR', required
        - `name` 'HANDLER_ERROR', required
      - object
        - `cause` InternalError, required
          - `info` object, required
            - `error_message` string, required
          - `name` 'INTERNAL_ERROR', required
        - `name` 'INTERNAL_ERROR', required
    - `id` string, required
    - `jsonrpc` string, required

---

[API](https://skmtc.net/near/apis/near-protocol-json-rpc-api.md) · [All operations](https://skmtc.net/near/apis/near-protocol-json-rpc-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/near/near-protocol-json-rpc-api/versions/cb6bdde6167d/schema)
