Skip to main content
This guide shows you how to:
  • Manage the validators on your beaconcha.in dashboard via API (add/move and remove)
  • Access your dashboard’s data on‑demand using the V2 API and its validator dashboard selectors

Prerequisites

  • API key: You need a beaconcha.in API key and must send it in the Authorization header. See Getting Started and how to obtain an API key in the API Overview.
  • Orca subscription: To manage your dashboard (add/move/remove validators) via API, you need an Orca subscription. See plans: https://beaconcha.in/premium
  • Higher rate limits: If you need more than 1 req/sec and 1000 req/month, you will need an additional API subscription: https://beaconcha.in/pricing
  • Dashboard ID: Your dashboard_id is visible in your validator dashboard URL on beaconcha.in.
Authenticate with: Authorization: Bearer YOUR_API_KEY and Content-Type: application/json.

Manage validators on your dashboard

Use the validator dashboard management endpoints to add or remove validators from your dashboard and groups.

Add or move validators to a dashboard (optionally to a specific group)

Reference: /api/v2/validator-dashboards//validators This endpoint accepts several input modes. The simplest is to send a list of validator indices or public keys. Optionally include group_id to add/move them into a specific group. Example — add indices to dashboard 123, default group:
curl --request POST \
  --url https://beaconcha.in/api/v2/validator-dashboards/123/validators \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "validators": [1, 2, 3]
}
'
Example — move validators into group 456:
curl --request POST \
  --url https://beaconcha.in/api/v2/validator-dashboards/123/validators \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "group_id": 456,
  "validators": [
    "0xa94f5374fce5edbc64b...", 
    42
  ]
}
'
Bulk‑add by deposit/withdrawal/graffiti (availability depends on subscription tier):
curl --request POST \
  --url https://beaconcha.in/api/v2/validator-dashboards/123/validators \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "group_id": 456,
  "deposit_address": "0x1234567890abcdef1234567890abcdef12345678"
}
'
This endpoint always adds as many validators as possible, even if you provide more than allowed by your plan. The response includes the list that were actually added.

Remove specific validators from a dashboard

Reference: /api/v2/validator-dashboards//validators/bulk-deletions
curl --request POST \
  --url https://beaconcha.in/api/v2/validator-dashboards/123/validators/bulk-deletions \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "validators": [1, "0x8fe...public_key...e1"]
}
'

Clear all validators from a specific group

Reference: /api/v2/validator-dashboards//groups//validators
curl --request DELETE \
  --url https://beaconcha.in/api/v2/validator-dashboards/123/groups/456/validators \
  --header 'Authorization: Bearer <YOUR_API_KEY>'
Group IDs are visible in the dashboard UI. If you don’t pass a group_id to the add endpoint, validators are added to your default group.

Access your dashboard data via the V2 API

The V2 API supports a flexible validator selector (validatorsSelector) that lets you query data for:
  • A whole dashboard: { "dashboard_id": 123 }
  • A specific group in a dashboard: { "dashboard_id": 123, "group_id": 456 }
Below are a few common examples using your dashboard_id.

Example: APY & ROI for your dashboard

Endpoint: POST /api/v2/ethereum/validators/apy-roi
curl --request POST \
  --url https://beaconcha.in/api/v2/ethereum/validators/apy-roi \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "chain": "mainnet",
  "validator": {
    "dashboard_id": 123
  },
  "range": {
    "evaluation_window": "30d"
  }
}
'

Example: Aggregated rewards for your dashboard (fixed window)

Endpoint: POST /api/v2/ethereum/validators/rewards-aggregate
curl --request POST \
  --url https://beaconcha.in/api/v2/ethereum/validators/rewards-aggregate \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "chain": "mainnet",
  "validator": {
    "dashboard_id": 123,
    "group_id": 456
  },
  "range": {
    "evaluation_window": "all_time"
  }
}
'

Example: Validator overview with pagination

Endpoint: POST /api/v2/ethereum/validators
curl --request POST \
  --url https://beaconcha.in/api/v2/ethereum/validators \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "chain": "mainnet",
  "page_size": 10,
  "validator": {
    "dashboard_id": 123
  }
}
'
If the response includes paging.next_cursor, pass it back in the next request to continue. See the Pagination guide.
You can always restrict to a subset by switching to validator_identifiers or target a single group with group_id.

Rate limits and access