/api/sol/funding/* endpoints, exposed over GraphQL. GraphQL is the preferred surface for large wallet sets: REST caps at 150 wallets per request to fit under proxy URL-length limits, while GraphQL takes the same [String!]! list in the JSON body with no URL-length constraint. The same per-request work cap (150) still applies inside the resolver.
All five fields share two side effects with their REST twins:
enrichmentEnqueued: any wallet without an observed funding row is queued for an async RPC backfill. The next request returns the resolved event (or a terminalrpc_unresolvedrow).- CEX noise filter (
fundingClusteronly): a “cluster” covering more than 50% of the input wallets is treated as a CEX/exchange hot wallet, dropped, and its members demoted tounclustered.
fundingLookup
For each wallet, returns the first observed inbound SOL funding event.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
wallets | [String!]! | yes | 1–150 wallet addresses. Duplicates collapsed. |
Return type
Example
fundedBy
Reverse lookup — for each funder, the wallets it has funded, ordered by fundedAt DESC.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
funders | [String!]! | yes | 1–150 funder addresses. |
limit | Int | no | Per-funder cap. Default 100, max 1000. |
before | String | no | Pagination cursor — millisecond timestamp from previous page (passed as a string to avoid Int overflow). |
Return type
Example
fundingChain
Walks funding ancestry up to depth levels for each input wallet. One ClickHouse round trip per level (batched across all chain heads).
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
wallets | [String!]! | yes | 1–150 wallet addresses. |
depth | Int | no | 1–10. Default 5. |
Return type
depth is exceeded.
fundingCluster
Groups wallets that share a common funding ancestor within depth levels. The single most useful primitive — bubblemap clustering, sniper-farm detection, and “wallets bought from the same dispenser” all reduce to this.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
wallets | [String!]! | yes | 1–150 wallet addresses. |
depth | Int | no | 1–5. Default 2. |
Return type
holderEdges
Direct user-to-user transfer edges among a wallet set, scoped to one mint. Edges are canonical (a < b lex), undirected, and aggregated — repeated transfers between the same pair collapse to one row with a transfers count.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
mint | String! | yes | Token mint to scope edges to. |
wallets | [String!]! | yes | 1–150 wallet addresses. |
