> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cabalspy.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Call Stats

> Hit rates and performance of the CabalSpy calls per chain and tier: how many reached 2x, 5x and 10x within 24 hours.

How well our calls performed. For a period you choose, you get per chain and per tier how many calls there were, how many reached 2x, 5x and 10x within 24 hours, the median peak and how fast it came, plus the best calls of the period.

## How calls are measured

* Every call is watched for exactly 24 hours from the moment of the call.
* The entry is the last price before the call. The peak is the highest price after it.
* Per chain, tier, token and UTC day only the first call counts, so a token called twice in a day is counted once.
* Calls without price data after the call are listed as no\_data and are not part of the hit rate.
* Calls are measured once a day, so calls from the last one to two days count as pending.
* Big Token and Whales calls are not measured yet and count as not\_evaluated.

## Query Parameters

**period** `string` (default: 7d)

One of 1d, 7d, 30d, 90d.

**blockchain** `string`

Comma separated chains. Any of solana, bnb, eth, rh. Omit for all chains.

**tier** `string`

Comma separated tiers. Any of gamble, moderate, good, big, whale. Omit for all tiers.

**api\_key** `string` *required*

Your API key. Alternatively pass it as an Authorization Bearer header.

## Usage Example

```bash cURL theme={null}
curl "https://api.cabalspy.xyz/v1/calls/stats?period=30d&blockchain=solana&api_key=YOUR_KEY"
```

```python Python theme={null}
import requests

r = requests.get("https://api.cabalspy.xyz/v1/calls/stats",
                 params={"period": "30d", "api_key": "YOUR_KEY"})
d = r.json()["data"]

for chain, s in d["chains"].items():
    print(chain, s["calls"], "calls,", s["hit_rate"]["2x"], "% reached 2x")
```

```javascript JavaScript theme={null}
const p = new URLSearchParams({ period: "30d", api_key: "YOUR_KEY" });
const res = await fetch(`https://api.cabalspy.xyz/v1/calls/stats?${p}`);
const { data } = await res.json();
for (const [chain, s] of Object.entries(data.chains)) {
  console.log(chain, s.calls, "calls,", s.hit_rate["2x"], "% reached 2x");
}
```

## Response

**success** `boolean`

True on success.

**data** `object`

**data**

**period** `string`

The requested period.

**window** `object`

from and to of the period, ISO 8601 UTC.

**method** `string`

A short description of how calls are measured.

**totals** `object`

**stats block**

**calls** `integer`

Calls in the period, after removing repeats of the same token on the same day.

**evaluated** `integer`

Calls with a measured result.

**pending** `integer`

Calls not measured yet.

**no\_data** `integer`

Calls without price data after the call.

**not\_evaluated** `integer`

Calls that are not measured.

**hit\_rate** `object`

Percent of evaluated calls whose peak reached 2x, 5x and 10x. null when nothing was evaluated.

**median\_peak\_multiple** `number`

Median peak multiple of the evaluated calls.

**median\_minutes\_to\_peak** `number`

Median minutes from call to peak.

**chains** `object`

One stats block per chain, each with an extra tiers object holding one stats block per tier.

**best\_calls** `array`

The five evaluated calls with the highest peak in the period, with call\_id, blockchain, tier, symbol, mint, called\_at, market\_cap\_at\_call and peak\_multiple.

```json Response theme={null}
{
  "success": true,
  "data": {
    "period": "7d",
    "window": { "from": "2026-09-24T10:00:00Z", "to": "2026-10-01T10:00:00Z" },
    "method": "Each call is measured for 24 hours from the call. ...",
    "totals": {
      "calls": 120,
      "evaluated": 112,
      "pending": 6,
      "no_data": 2,
      "not_evaluated": 0,
      "hit_rate": { "2x": 45.5, "5x": 14.3, "10x": 4.5 },
      "median_peak_multiple": 1.9,
      "median_minutes_to_peak": 12
    },
    "chains": {
      "solana": {
        "calls": 120,
        "evaluated": 112,
        "pending": 6,
        "no_data": 2,
        "not_evaluated": 0,
        "hit_rate": { "2x": 45.5, "5x": 14.3, "10x": 4.5 },
        "median_peak_multiple": 1.9,
        "median_minutes_to_peak": 12,
        "tiers": {
          "gamble": { "calls": 120, "evaluated": 112, "hit_rate": { "2x": 45.5, "5x": 14.3, "10x": 4.5 } }
        }
      }
    },
    "best_calls": [
      {
        "call_id": "c_0123456789ab",
        "blockchain": "solana",
        "tier": "gamble",
        "symbol": "EXAMPLE",
        "mint": "ExampLeTokenMint1111111111111111111111pump",
        "called_at": "2026-09-28T12:00:00Z",
        "market_cap_at_call": 25000.0,
        "peak_multiple": 12.0
      }
    ]
  },
  "meta": {
    "request_id": "req_5162c7cf7f87",
    "cached": false,
    "cache_age_seconds": 0,
    "version": "1.0.0",
    "timestamp": "2026-10-01T10:00:00Z"
  }
}
```

## Errors

| Status | Code | Meaning |
| - | - | - |
| 400 | invalid\_parameter | Unknown blockchain, tier or period. |
| 401 | unauthorized | API key missing. |
| 403 | forbidden | API key invalid or credits exhausted. |
| 429 | rate\_limited | Rate limit exceeded. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.