---
title: "Rewards"
method: POST
path: "/api/v2/ethereum/slot/attestation-duties"
tags: ["Slot"]
---

# Rewards

`POST /api/v2/ethereum/slot/attestation-duties`

## Request

- Base URL: `https://beaconcha.in`
- URL: `https://beaconcha.in/api/v2/ethereum/slot/attestation-duties`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/beaconcha/apis/external-service-api/docs/api/v2/ethereum/slot/attestation-duties/post.ts> (a function with typed inputs; its response is checked against the schema)

Provides detailed status and reward information about attestation duties assigned to validators for a specific slot.
The validator filter is optional; if omitted, results include all validators assigned attestation duties for the slot.

The response only includes attestation duties scheduled for the specified slot, not attestations included in this slot.

Use the reward endpoints for epoch based attestation rewards information.

You can combine this endpoint with:
- Find attestations slots your validators were assigned to:
   [v2/ethereum/validators/attestation-slots](/api-reference/ethereum/validators/attestation-slots)

## Request body

- object: Specify a slot using one of the slot number. Selecting by a consensus view may soon be available in a future update.
  - `slot` SlotByNumber, required
    - `number` integer, required: Slot by number.
  - `chain` 'mainnet' | 'hoodi', required: The Ethereum chain to query.
  - `cursor` string: Cursor value for pagination. See our [pagination guide](/api/pagination) for more details.
  - `page_size` integer: The number of items to return per page.
  - `validator` union: Free selectors available to all users: - validator_identifiers: One or more validator indices or public keys to filter by. - dashboard_id: Your beaconcha.in dashboard ID (requires a free account). **Premium selectors** for Scale & Enterprise plans (https://beaconcha.in/pricing): - withdrawal: The validator's withdrawal credential or the Ethereum wallet address used for withdrawals. - deposit_address: The Ethereum wallet address used for the validator's deposit. - entity: The name of the assigned entity (e.g., "Lido", "Coinbase"). Optionally include `sub_entity` for more specific filtering. Matching is case-sensitive. Note: The set of validators matched by `deposit_address` and `withdrawal` selectors is updated once per epoch (~6.4 minutes). Newly deposited validators may take up to one epoch to appear in query results. Note: The set of validators matched by `entity` selector is updated once per day.
    - ValidatorsByIdentifiers
      - `validator_identifiers` ValidatorIndexPublicKey[], required: An array containing either validator indices or public keys. Index and public key can be mixed in the same array. Subscribed users (Hobbyist, Business, and Scale tiers) can include up to 100 entries; free trial users and legacy subscription users (Sapphire, Emerald, Diamond) are limited to 20.
        - union
          - integer: Validator Index
          - string: Public key of a validator
    - ValidatorsByDashboard
      - `dashboard_id` integer, required: beaconcha.in dashboard ID. You can find your dashboard ID in the URL of your dashboard page on beaconcha.in (e.g., https://beaconcha.in/dashboard/12345).
      - `group_id` integer, nullable: Optional beaconcha.in dashboard group ID. If no group ID is provided, all validators in the dashboard are considered.
    - ValidatorsByDeposit
      - `deposit_address` string, required: A standard Ethereum address (20-byte hex string with 0x prefix).
    - ValidatorsByWithdrawal
      - `withdrawal` string, required: Either an execution layer address (20-byte hex string with 0x prefix) or a full 32-byte withdrawal credential.
    - ValidatorsByEntity: Select validators by their assigned entity (e.g., staking provider) and optionally a sub-entity. Entity and sub-entity names are matched exactly and are case-sensitive.
      - `entity` string, required: The name of the entity to filter validators by (e.g., "Lido", "Coinbase"). Matching is case-sensitive; use the exact name as returned by the entities overview endpoint.
      - `sub_entity` string: Optional sub-entity name to further filter validators within the entity. Matching is case-sensitive; use the exact name as returned by the sub-entities overview endpoint.

## Response `200`

Successful response.

- object: Response containing detailed information about past or future attestation duties.
  - `data` SlotAttestationData[], required
    - `validator` Validator, required
      - `index` integer: Validator Index
      - `public_key` string: Public key of a validator
    - `reward` AttestationRewards
      - `total` string: Amount in wei (1 ETH = 10^18 wei)
      - `head` RewardBreakdownHead, required
        - `total` string, required: Amount in wei (1 ETH = 10^18 wei)
        - `reward` string, required: Amount in wei (1 ETH = 10^18 wei)
        - `penalty` string, required: Amount in wei (1 ETH = 10^18 wei)
        - `missed_reward` string, required: Amount in wei (1 ETH = 10^18 wei)
      - `source` RewardBreakdown, required
        - `total` string, required: Amount in wei (1 ETH = 10^18 wei)
        - `reward` string, required: Amount in wei (1 ETH = 10^18 wei)
        - `penalty` string, required: Amount in wei (1 ETH = 10^18 wei)
        - `missed_reward` string, required: Amount in wei (1 ETH = 10^18 wei)
      - `target` RewardBreakdown, required
        - `total` string, required: Amount in wei (1 ETH = 10^18 wei)
        - `reward` string, required: Amount in wei (1 ETH = 10^18 wei)
        - `penalty` string, required: Amount in wei (1 ETH = 10^18 wei)
        - `missed_reward` string, required: Amount in wei (1 ETH = 10^18 wei)
      - `inactivity_leak_penalty` string, required: Amount in wei (1 ETH = 10^18 wei)
      - `inclusion_delay` AttestationInclusionDelay, nullable: **Note:** This reward was only applicable before the Altair hardfork (Epoch 74240, Oct 27, 2021). Prior to Altair, validators earned extra rewards for including attestations with minimal delay—the faster the inclusion, the greater the reward. Since Altair, this incentive was removed and timely inclusion became a strict requirement: head votes must now be included in the immediate next slot. As a result, this field is always null for epochs after Altair, but may have nonzero values for earlier epochs. Note: Do not confuse this metric with the `performance.avg_inclusion_delay` field found in the performance endpoint, which refers to the average delay in slots for attestations to be included on-chain.
        - `total` string, required: Amount in wei (1 ETH = 10^18 wei)
        - `missed_reward` string, required: Amount in wei (1 ETH = 10^18 wei)
    - `inclusion_slot` integer: Slot by number.
    - `inclusion_delay` integer, nullable: The delay, in slots, between the attester slot and the inclusion slot. Calculated as (inclusion_slot - attester_slot). Will be null for attestations that have not yet been included on-chain.
    - `inclusion_delay_without_missed_block` integer, nullable: The inclusion delay in slots, excluding any missed blocks by the proposer. This provides a measure of attestation inclusion speed that is not affected by proposer inactivity. Calculated by adjusting the inclusion delay to account for any slots where the proposer did not produce a block. Will be null for attestations that have not yet been included on-chain.
    - `attestation_committee_index` integer, required: Index of the attestation committee the validator was assigned to for this attestation.
    - `status` 'success' | 'missed' | 'scheduled', required
    - `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.
  - `paging` Paging
    - `next_cursor` string: Cursor to the next page of results. See our [pagination guide](/api/pagination) for more details. If empty, there are no more pages to fetch.

## 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.dev/beaconcha/apis/external-service-api/revisions/ad26ad970b4e?raw)
