# getSupply

> Returns total and circulating SOL supply, plus the list of non-circulating accounts.

Source: https://docs.constant-k.com/rpc/http/getsupply/

`getSupply` returns total token supply split into circulating and non-circulating lamports, plus, by default, the full list of accounts classified as non-circulating (such as unvested foundation or team allocations).

Building the non-circulating account list walks a sizeable set of known accounts on every call, so constant-k rate-limits this endpoint more tightly than similar calls like `getBalance`.

- Transport: HTTP, JSON-RPC 2.0 `POST` to `https://rpc-newyork.constant-k.com/?api-key=YOUR_API_KEY` (New York) or `https://rpc-frankfurt.constant-k.com/?api-key=YOUR_API_KEY` (Frankfurt) or `https://rpc-amsterdam.constant-k.com/?api-key=YOUR_API_KEY` (Amsterdam). The key also works as an `x-api-key` header.
- Category: Staking & Inflation
- Availability: Blade Runner and above
- Rate limits: Free not available · Operator not available · Blade Runner 2/s · Nexus 5/s

## Parameters

`params` is a positional JSON array, in this order:

- `config` (object, optional): Optional configuration.
  - `commitment` (string, optional, one of `finalized`, `confirmed`, `processed`, default `"finalized"`): Bank state to compute supply from.
  - `excludeNonCirculatingAccountsList` (boolean, optional, default `false`): When true, omits the `nonCirculatingAccounts` array from the response, the bulk of the response payload when included; the totals are still returned either way.

## Result

- `result` (object, optional): Supply totals wrapped with context.
  - `context` (object, required)
    - `slot` (integer, optional)
    - `apiVersion` (string, optional)
  - `value` (object, required)
    - `total` (integer, required): Total SOL supply, in lamports.
    - `circulating` (integer, required): Circulating SOL supply, in lamports.
    - `nonCirculating` (integer, required): Non-circulating SOL supply, in lamports.
    - `nonCirculatingAccounts` (string[], required): Base-58 addresses classified as non-circulating. Omitted/empty when `excludeNonCirculatingAccountsList` is true.

## Example: Get supply totals without the non-circulating account list

Request:

```bash
curl "https://rpc-newyork.constant-k.com/?api-key=YOUR_API_KEY" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSupply",
    "params": [{ "excludeNonCirculatingAccountsList": true }]
  }'
```

Response:

```json
{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "apiVersion": "4.3.0-rc.0",
      "slot": 447947900
    },
    "value": {
      "total": 609481203744991200,
      "circulating": 561493188932105700,
      "nonCirculating": 47988014812885490,
      "nonCirculatingAccounts": []
    }
  },
  "id": 1
}
```

## Example: Get supply including non-circulating accounts

Request:

```bash
curl "https://rpc-newyork.constant-k.com/?api-key=YOUR_API_KEY" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{ "jsonrpc": "2.0", "id": 1, "method": "getSupply", "params": [] }'
```

Response:

```json
{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "apiVersion": "4.3.0-rc.0",
      "slot": 447947900
    },
    "value": {
      "total": 609481203744991200,
      "circulating": 561493188932105700,
      "nonCirculating": 47988014812885490,
      "nonCirculatingAccounts": [
        "9huDUZfxoJ7wGMTffUE7vh1xePqef7gyrLJu9NApncqA",
        "GK2zqSsXLA2rwVZk347RYhh6jJpRsCA69FjLW93ZGi3B",
        "CV88msKtVWQP4tYSY6P3mAdUbcAAr3RyMzhb5KrmXTdM"
      ]
    }
  },
  "id": 1
}
```

_Long arrays in this example were trimmed._

## Notes

- `excludeNonCirculatingAccountsList: true` omits the expensive address list from the response without changing the totals.
- Available on Blade Runner and Nexus only.

