RECEIPTS API

Reference

API docs

Base URL https://kolapi.btcmu.info/v1 · JSON over HTTPS · every request needs a key. Ask for one on the overview page.

Auth

no key, no data
$ curl -H "x-api-key: rk_live_…" https://kolapi.btcmu.info/v1/callers

Send the key on every request. Missing or unknown keys return 401. Over your quota returns 429 with a Retry-After header.

Endpoints

https://kolapi.btcmu.info/v1 · JSON · key required
GET /v1/callers

The rated list. Each caller with their receipt score, chain, attributed wallets, signal count and last activity.

chain min_score verified limit cursor
GET /v1/callers/{id}

One caller in full: identity, each wallet with how it was proven, and the score broken into its parts.

include=calls
GET /v1/signals

Calls as they land. Token, direction, timestamp, source link, and the on-chain verdict once it resolves.

chain min_score caller token since verdict
GET /v1/tokens/{token}

Everything said and done on one token — every caller's calls plus their trades, already shaped as chart markers. This is what draws the hero above.

from to resolution
GET /v1/trades

The raw fills behind a verdict, when you want to draw or audit the position yourself.

caller token since

What comes back

one marker, ready to plot
{
  "caller": { "id": "boru_insider", "chain": "solana",
               "score": 37, "verified": true,
               "wallet": "6Dt…dWf", "proof": "correlation" },
  "said":   { "token": "WIF", "direction": "buy",
               "at": "2026-07-19T14:02:11Z",
               "source": "https://t.me/…/4821" },
  "did":    { "verdict": "BOUGHT_AFTER", "entry_after_ms": 243000,
               "exit_after_ms": 187200000, "buys": 3, "sells": 1 }
}

Verdicts: BOUGHT_AFTER backed their call · PRE_BOUGHT was in before posting · NEVER_HELD never touched it · SOLD_ONLY exited into it.

Filter to the set you trust

min_score=80Only callers whose wallet consistently backs their calls.
verified=trueOnly callers with a proven wallet. On by default.
chain=solanaOne chain, or leave it off for everything.
verdict=PRE_BOUGHTJust the calls where they were already in before telling anyone.
since=2026-07-01Backfill a window, then poll for what's new.

Errors

401Missing or unknown API key.
403The key is valid but not entitled to that endpoint.
429Over quota. Back off and retry after the header says so.
200Everything else. Empty result sets return an empty array, never an error.