For the complete documentation index, see llms.txt. This page is also available as Markdown.

PnL Calendar

Realized-PnL calendar for a tracked wallet. Returns the wallet profile and a months array — one entry per calendar month (oldest first), each with its per-day breakdown and a month summary. For convenience the current month is also exposed flat as dates and month. Ideal for rendering a month-by-month calendar with arrow navigation.

Get a wallet's daily PnL calendar

get

Returns the realized-PnL calendar for a tracked wallet, grouped by month. The wallet category (kol / smart / whale) is detected automatically. Unknown addresses return 404.

The response data.months holds one block per month (oldest first); each block has a dates array (one object per active day) and a month summary. The current month is additionally exposed flat as data.dates and data.month for backwards compatibility.

Parameters / settings

  • blockchain (required) — one of: solana, bnb, base, eth

  • address (required) — wallet address (Solana base58 or 0x… for EVM chains)

  • api_key (optional if Bearer header is used)

Authorizations
AuthorizationstringRequired

Authorization: Bearer YOUR_KEY

Query parameters
blockchainstring · enumRequiredExample: solanaPossible values:
addressstringRequiredExample: G6fUXjMKPJzCY1rveAE6Qm7wy5U3vZgKDJmN1VPAdiZC
api_keystringOptionalExample: YOUR_KEY
Responses
200

Wallet found — returns the PnL calendar.

application/json
successbooleanOptional
metaobjectOptional
get/v1/wallet/pnl_calendar
GET /v1/wallet/pnl_calendar?blockchain=solana&address=text HTTP/1.1
Host: api.cabalspy.xyz
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "success": true,
  "data": {
    "wallet": "G6fUXjMKPJzCY1rveAE6Qm7wy5U3vZgKDJmN1VPAdiZC",
    "profile": {
      "name": "Cented",
      "image_url": "https://cabalspy.xyz/images/cented.png",
      "twitter": "@Cented",
      "telegram": "",
      "blockchain": "solana",
      "currency": "SOL",
      "type": "kol"
    },
    "months": [
      {
        "month": {
          "month": 3,
          "year": 2025,
          "realized_pnl": 148.13,
          "realized_pnl_usd": 21331.5,
          "volume": 980.42,
          "total_buy": 416.14,
          "total_buy_usd": 59920,
          "total_sell": 564.28,
          "total_sell_usd": 81251.5,
          "buy_txn": 31,
          "sell_txn": 45,
          "txn_total": 76,
          "tokens_traded": 12,
          "positive_streak": 4,
          "negative_streak": 1
        },
        "dates": [
          {
            "date": "18-03-25",
            "realized_pnl": 42.18,
            "realized_pnl_usd": 6074,
            "volume": 310.5,
            "total_buy": 134.16,
            "total_buy_usd": 19320,
            "total_sell": 176.34,
            "total_sell_usd": 25394,
            "buy_txn": 6,
            "sell_txn": 8,
            "txn_total": 14,
            "tokens_traded": 5
          }
        ]
      }
    ],
    "dates": [
      {
        "date": "18-03-25",
        "realized_pnl": 42.18,
        "realized_pnl_usd": 6074,
        "volume": 310.5,
        "total_buy": 134.16,
        "total_buy_usd": 19320,
        "total_sell": 176.34,
        "total_sell_usd": 25394,
        "buy_txn": 6,
        "sell_txn": 8,
        "txn_total": 14,
        "tokens_traded": 5
      }
    ],
    "month": {
      "month": 3,
      "year": 2025,
      "realized_pnl": 148.13,
      "realized_pnl_usd": 21331.5,
      "volume": 980.42,
      "total_buy": 416.14,
      "total_buy_usd": 59920,
      "total_sell": 564.28,
      "total_sell_usd": 81251.5,
      "buy_txn": 31,
      "sell_txn": 45,
      "txn_total": 76,
      "tokens_traded": 12,
      "positive_streak": 4,
      "negative_streak": 1
    }
  },
  "meta": {
    "request_id": "req_a1b2c3d4e5f6",
    "cached": true,
    "cache_age_seconds": 0,
    "version": "1.0.0",
    "timestamp": "2025-03-19T14:22:30Z"
  }
}

Last updated