Merkl Developer Portal logo
get

/v4/analytics/beneficial-owners/allocations

Layered beneficial-owners report for a token

The full report behind the holders mapping, as a nested tree: the asset itself, and every vault/market/gauge holding it, each with its own positions and its own nested children. A position whose holder is itself a node is decomposed and linked via childIndexingId; a node reachable from more than one parent appears once under EACH parent, same indexingId, each copy holding only the share that flows through its own route. Same at/409 semantics as holders; 403 when any node in the graph holds confidential balances the caller may not read. diagnostics.unresolved names any position that could not be denominated in the asset — total excludes its value.

Query parameters

chainIdnumber | string
required
tokenstring
required
atnumber | string
required

Responses

200
Response for status 200
Schema
object
assetobject
required
chainIdnumber
required
addressstring
required
symbolstring
required
decimalsnumber
required
atnumber
required
totalstring
required
rootIndexingIdstring
required
treeobject
required
indexingIdstring
errorobject
reasonstring
required
messagestring
required
diagnosticsobject
required
nodesTraversednumber
required
maxDepthnumber
required
unresolvedobject[]
required
holdsstring | null
protocolstring | null
reasonstring
protocolAmountstring
Example
{
  "asset": {
    "chainId": 0,
    "address": "string",
    "symbol": "string",
    "decimals": 0
  },
  "at": 0,
  "total": "string",
  "rootIndexingId": "string",
  "tree": {
    "indexingId": "string",
    "error": {
      "reason": "string",
      "message": "string"
    }
  },
  "diagnostics": {
    "nodesTraversed": 0,
    "maxDepth": 0,
    "unresolved": [
      {
        "holds": "string",
        "protocol": "string",
        "reason": "string",
        "protocolAmount": "string"
      }
    ]
  }
}