---
title: "Get positions for an address"
method: POST
path: "/positions/{network}/{address}"
tags: ["Positions"]
---

# Get positions for an address

`POST /positions/{network}/{address}`

Returns all DV clusters where the address (or any additional address) appears as withdrawal_address or fee_recipient. Also checks Lido protocol_fee_splitters.

## Path parameters

- `network` string, required
- `address` string, required

## Request body

- PositionsRequestDto
  - `additionalAddresses` string[] — Additional addresses to search (e.g. split addresses from getRelatedSplits, DeFi wrapper WA)

## Response `200`

Positions found

- PositionsResponse
  - `positions` PositionCluster[], required
    - `lock_hash` string, required — Cluster lock hash
    - `cluster_name` string, required — Cluster name
    - `num_validators_total` number, required — Total validators in this cluster
    - `validators` PositionValidator[], required — Validators matched by search addresses
      - `pubkey` string, required — Validator public key
      - `withdrawal_address` string, required — Withdrawal address
      - `fee_recipient_address` string, required — Fee recipient address
      - `withdrawal_type` 'eoa' | 'splitter' | 'ovm' | 'owr' — Type of address: "eoa" (default), "splitter", or V2: "ovm"/"owr".
      - `fee_recipient_type` 'eoa' | 'splitter' | 'ovm' | 'owr' — Type of address: "eoa" (default), "splitter", or V2: "ovm"/"owr".
      - `withdrawal_resolved` ResolvedRecipients
        - `principal_recipient` string — OVM/OWR: principal recipient address
        - `reward_recipient` string — OVM/OWR: reward recipient address
        - `threshold` string — OWR only: threshold in wei
        - `split_recipients` string[] — Split: list of split recipients
      - `fee_recipient_resolved` ResolvedRecipients
        - `principal_recipient` string — OVM/OWR: principal recipient address
        - `reward_recipient` string — OVM/OWR: reward recipient address
        - `threshold` string — OWR only: threshold in wei
        - `split_recipients` string[] — Split: list of split recipients
    - `total_balance_eth` number, nullable, required — Sum of balance_eth for matched validators (latest snapshot). Null when no recent snapshot is available.
    - `avg_effectiveness` number, nullable, required — Average effectiveness for matched validators (latest snapshot). Null when no recent snapshot is available.
    - `cluster_apr` number, nullable — Average APR of affiliated validators (from validator_apy in clusterinformationdetailedv3). Null when no recent snapshot is available.

## Other responses

- `400` — Invalid network
- `500` — An unknown error occurred

---

[API](https://skmtc.net/obol/apis/obol-api.md) · [All operations](https://skmtc.net/obol/apis/obol-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/obol/obol-api/revisions/707a88e0b355/schema)
