---
title: "Network Performance"
method: POST
path: "/api/v2/ethereum/performance-aggregate"
tags: ["Network"]
---

# Network Performance

`POST /api/v2/ethereum/performance-aggregate`

Returns aggregated performance metrics for the entire network in the given time range.

**Use case guide:** [Entity benchmarking](/use-cases/entity-benchmarking-overview) uses this endpoint as the network baseline for public and private validator-set comparisons.

Must provide either start + end times or epochs

**Coming Soon:** Support for querying arbitrary time ranges using Unix timestamps, epochs, or slots — exclusively for [Scale and Enterprise plans](https://beaconcha.in/pricing).

## Request body

- object
  - `chain` 'mainnet' | 'hoodi' — The Ethereum chain to query.
  - `range` TimeRangeSelectorWithWindow, required
    - `evaluation_window` '24h' | '7d' | '30d' | '90d' | 'all_time', required — The evaluation window for aggregating metrics. All windows except `all_time` are **rolling periods**—continuously moving time windows that always end at the current epoch. Rolling windows update every epoch (~6.4 minutes), so the data always reflects the most recent period. For example, `30d` returns rewards from exactly 30 days ago until now, not a fixed calendar month. - `24h`: Last 24 hours (rolling) - `7d`: Last 7 days (rolling) - `30d`: Last 30 days (rolling) - `90d`: Last 90 days (rolling) - `all_time`: Since validator activation (not rolling)

## Response `200`

Successful response.

- PerformanceSummaryContainer — Response containing performance summary information of the entire network.
  - `data` PerformanceSummaryData, required
    - `beaconscore` PerformanceBeaconscore, required — BeaconScore efficiency metrics for the selected scope and evaluation window. Values are ratios from 0 to 1, where 1 represents perfect duty performance.
      - `total` number, float
      - `attestation` number, float
      - `proposal` number, float
      - `sync_committee` number, float
    - `duties` PerformanceDutiesDuties, required
      - `attestation` PerformanceDutiesAttestation, required
        - `included` integer, required — Number of times the validator's attestation was included on-chain. This count includes all attestations submitted by the validator, even if they were included too late to earn a reward (such late attestations are still considered "missed" for reward purposes). "Included" reflects every attestation that made it on-chain, regardless of timeliness or eligibility for rewards. This metric indicates whether your validator is actively submitting attestations to the network.
        - `assigned` integer, required — Number of times the validator was assigned an attestation duty. This represents the total opportunities to attest, regardless of whether the validator fulfilled the duty.
        - `correct_head` integer, required — Number of times the validator attested with the correct head block. Correct references are necessary to be rewarded by the chain but incorrect references result in no reward or a penalty.
        - `correct_source` integer, required — Number of times the validator attested with the correct source block. Correct references are necessary to be rewarded by the chain but incorrect references result in no reward or a penalty.
        - `correct_target` integer, required — Number of times the validator attested with the correct target block. Correct references are necessary to be rewarded by the chain but incorrect references result in no reward or a penalty.
        - `valuable_correct_head` integer, required — Counts the number of correct head attestations that were included early enough to receive a reward. Attestations that were included too late to earn a reward (and are treated as missed for reward purposes) are not counted as valuable.
        - `valuable_correct_source` integer, required — Counts the number of correct source attestations that were included early enough to receive a reward. Attestations that were included too late to earn a reward (and are treated as missed for reward purposes) are not counted as valuable.
        - `valuable_correct_target` integer, required — Counts the number of correct target attestations that were included early enough to receive a reward. Attestations that were included too late to earn a reward (and are treated as missed for reward purposes) are not counted as valuable.
        - `avg_inclusion_delay` number, float, required — Average inclusion delay measures how quickly a validator's attestations are included in the chain, expressed in slots. Lower values indicate more timely inclusion and better performance. An ideal value of 0 means every attestation was included at the earliest possible opportunity—one slot after it was assigned to you. Note: Do not confuse this metric with the `reward.inclusion_delay` field found in the rewards endpoint, which refers to a specific reward (measured in gwei) that was only applicable prior to the Altair hardfork.
        - `avg_inclusion_delay_excluding_missed_slots` number, float, required — This is your average inclusion delay, excluding any missed blocks. - If `avg_inclusion_delay_excluding_missed_slots` is close to zero but avg_inclusion_delay is higher, this indicates that most of your attestations are included promptly, and any lost rewards are primarily due to missed blocks on the network (outside your control). - If both values are large, it suggests your validator is experiencing delays in submitting attestations, likely due to issues with your validator's setup or connectivity. Note: avg_inclusion_delay is used for reward calculations. Therefore, an `avg_inclusion_delay_excluding_missed_slots` of zero does not mean there were no missed rewards. The `avg_inclusion_delay_excluding_missed_slots` is always less than or equal to your actual `avg_inclusion_delay`.
        - `missed` integer, required — Number of times the validator missed voting on an attestation duty, including missed blocks on the network.
      - `sync_committee` ValidatorSyncCommitteeDutyParticipation, required
        - `successful` integer, required — Number of times the validator successfully participated in the sync committee.
        - `assigned` integer, required — Number of times the validator has been assigned to participate in the sync committee, excluding missed slots.
        - `missed` integer, required — Number of times the validator missed participation in the sync committee, excluding missed network slots. The `missed` is always less than or equal to your actual `missed_including_missed_slots`.
        - `missed_including_missed_slots` integer, required — Number of times the validator missed participation in the sync committee, including missed network slots. Missed network slots are beyond your control. If this value is significantly higher than `missed`, it indicates that your validator is generally performing well, and most missed rewards are due to network issues rather than validator faults. However, if both `missed` and `missed_including_missed_slots` are high, it suggests potential issues with your validator's setup or connectivity, leading to missed sync committee messages.
        - `scheduled` integer, required — Number of scheduled sync committee votes for active and upcoming sync committees.
      - `proposal` PerformanceDutiesProposal, required
        - `successful` integer, required — Number of times the validator successfully proposed a block.
        - `assigned` integer, required — Number of times the validator was assigned to propose a block.
        - `missed` integer, required — Number of times the validator either missed a scheduled block proposal or had their proposed block orphaned
        - `included_slashings` integer, required — Number of slashing proofs included in blocks proposed by the validator. A slashing proof provides cryptographic evidence that one or more validators proposing two different blocks for the same slot.
    - `finality` 'not_finalized' | 'finalized', required — 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.
  - `range` ResultRange, required — The range of data covered by the results, specified in slots, epochs, and Unix timestamps.
    - `slot` SlotRange, required
      - `start` integer, required — Slot by number.
      - `end` integer, required — Slot by number.
    - `epoch` EpochRange, required
      - `start` integer, required
      - `end` integer, required
    - `timestamp` TimeRange, required
      - `start` integer, required
      - `end` integer, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `405` — Method Not Allowed
- `429` — Rate Limit Exceeded
- `500` — Internal Server Error
- `default` — An unexpected error response.

---

[API](https://skmtc.dev/beaconcha/apis/external-service-api.md) · [All operations](https://skmtc.dev/beaconcha/apis/external-service-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/beaconcha/external-service-api/revisions/ad26ad970b4e/schema)
