---
title: "Share of supply held now by all bundle wallets on a Robinhood Chain token (PRO+)"
method: GET
path: "/rhc/tokens/{address}/bundle-share"
tags: ["Robinhood Chain"]
---

# Share of supply held now by all bundle wallets on a Robinhood Chain token (PRO+)

`GET /rhc/tokens/{address}/bundle-share`

## Request

- Base URL: `https://madeonsol.com/api/v1`
- URL: `https://madeonsol.com/api/v1/rhc/tokens/{address}/bundle-share`
- Auth: HTTP bearer

ONE figure for a terminal (2026-10-15): `bundled_pct_of_supply_now`, the share of total supply held RIGHT NOW by every bundle wallet: the launch bundle plus every wallet of a coordinated buy cluster in the window (`/rhc/tokens/{address}/bundles`), each wallet counted once, balanceOf from our node in one Multicall3 batch (at most 500 wallets). Null when not every wallet could be read. Cached 30 seconds per token, shared by every caller (`as_of`). Before hood rhc/039 is applied it counts the launch bundle only (`scope: launch_cohort_only`).

## Path parameters

- `address` string, required

## Query parameters

- `window` '1h' | '6h' | '24h'
- `min_wallets` integer

## Response `200`

OK

- object
  - `chain` 'robinhood'
  - `token_address` string
  - `window` string
  - `min_wallets` integer
  - `bundled_pct_of_supply_now` number, nullable: RATIO in [0, 1]: share of supply held now by every bundle wallet. Null unless the wallet set is known complete (clusters_complete true) AND every wallet was read (see held_now.incomplete_reason).
  - `scope` 'launch_and_clusters' | 'launch_cohort_only': launch_cohort_only = the cluster function was not available; only the launch bundle is counted.
  - `clusters_status` 'ok' | 'unavailable' | 'timeout' | 'error'
  - `clusters_complete` boolean: True only when every coordinated buy cluster in the window was read: clusters_status ok AND fewer than clusters_limit clusters came back. False when the cluster list hit clusters_limit (older clusters in the window may be missing; held_now.incomplete_reason clusters_truncated) or the cluster function was not available (scope launch_cohort_only). bundled_pct_of_supply_now is null whenever this is false (2026-10-15).
  - `clusters_limit` integer: Most clusters read per request (200). A response with this many clusters is treated as possibly truncated.
  - `wallets` object
    - `total` integer
    - `launch_cohort_wallets` integer
    - `cluster_wallets` integer
    - `overlap` integer
    - `clusters_counted` integer
    - `verified` integer
    - `holding` integer
    - `max` integer
  - `held_now` object: Same shape as the bundle held_now of this chain. incomplete_reason adds clusters_truncated (the cluster list hit clusters_limit; balances are not read) next to cluster_wallets_truncated (a cluster has more wallets than the 50 listed).
  - `as_of` string, date-time
  - `note` string

## Other responses

- `400`: Invalid address or query parameters
- `401`: Missing or invalid API key, or an expired free-tier key. Authentication-stage error: no `X-RateLimit-*` headers, no `_rid`.
- `403`: Tier gate - PRO required.
- `429`: Too many requests. Every 429 carries `Retry-After`. A quota 429 (`rate_limit_exceeded`, with `X-RateLimit-*`), a heavy-query concurrency 429 (`error_kind` `concurrency`/`capacity`), or the per-IP authentication-failure block (30 failed auths/min; plain `error` + `retry_after_seconds`, no `X-RateLimit-*`).
- `500`: Unexpected server error from the route (`Internal server error`, with `_rid`). Safe to retry with backoff. A failed API-key lookup is a 503 `auth_backend_unavailable`, never a 500.
- `503`: Temporarily unavailable

---

[API](https://skmtc.dev/madeonsol/apis/madeonsol-robinhood-chain-api.md) · [All operations](https://skmtc.dev/madeonsol/apis/madeonsol-robinhood-chain-api/llms.txt) · [OpenAPI document](https://skmtc.dev/madeonsol/apis/madeonsol-robinhood-chain-api/revisions/9ea9a35ee2bf?raw)
