POST
/v1/cluster-mappings
List the wallet addresses that belong to a cluster, paged by cursor.
The inverse of clustering: given a cluster id, list the addresses in it. Each row says how the address was attached (mapping_type) and with what confidence, so a caller can decide whether to treat a weakly attached member the same as a strongly attached one. Large clusters are paged with next_cursor, and a cursor is only valid when exactly one entity_id was requested.
Request
curl -X POST https://intelapi.publicaml.org/v1/cluster-mappings \
-H 'Content-Type: application/json' \
-d '{
"entity_ids": ["unnamed:eth:0x…"],
"limit": 100
}'Response
{
"mappings": [
{
"entity_id": "unnamed:eth:0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"chain": "ETH",
"cluster_type": "unnamed",
"total_wallets": 6362,
"returned": 3,
"next_cursor": "MHgwMDJkODIzMDE0ZTkwZjNlNTc5OTNjNDhmNGE3NTg5OGIyMjU5YmIy",
"wallets": [
{
"wallet_address": "0x0008d7f589348858153027123ed42cdc9a2adccd",
"chain": "ETH",
"mapping_type": "member",
"confidence": 1.0,
"first_block": null,
"last_block": null
}
]
}
],
"not_found": []
}Response fields
| Field | Type | Meaning |
|---|---|---|
| mappings[].total_wallets | number | Cluster size. |
| mappings[].next_cursor | string | Opaque cursor for the next page. Absent on the last page. |
| mappings[].wallets[].mapping_type | string | How the address was attached to the cluster. |
| mappings[].wallets[].confidence | number | Confidence in that attachment, 0-1. |
Things that catch people out
- entity_ids[] takes cluster ids, not wallet addresses - same as /v1/entities.
- A cursor is only valid with a single entity_id. Sending one with a batch returns 400.
- first_block and last_block are frequently null. Absent is absent, not zero.
Try it
The interactive console runs this endpoint against live data from the browser, with no key and no signup.
Open the sandbox at intelapi.publicaml.org