{
  "openapi": "3.1.0",
  "info": {
    "title": "CabalSpy API",
    "version": "1.0.0",
    "description": "REST API for CabalSpy on-chain labeled wallet data: tracked KOL, Smart Money and Whale wallets on Solana, BNB Chain, Base, Ethereum and Robinhood Chain (blockchain values: solana, bnb, base, eth, rh), with wallet profiles, leaderboards, PnL, token holders and transactions, bundle detection (Solana only), live signals and analytics.\n\nWallet type availability per chain: Solana has kol, smart, whale. BNB, Base and Robinhood Chain have kol, smart. ETH has kol.\n\nAuthentication: every request needs an API key, passed either as the api_key query parameter or as an Authorization Bearer header (the two are equivalent). Get a free key at https://apidashboard.cabalspy.xyz/.\n\nCredits: a REST request costs 10 credits on every plan. The free tier includes 10,000 credits per month; credits reset on the first of every month.\n\nRate limits: requests per second by plan are 5 (Free), 20 (Starter), 50 (Pro) and 100 (Business). Exceeding the limit returns 429 rate_limited; wait and retry.\n\nResponses share an envelope: success, data, meta (request_id, cached, cache_age_seconds, version, timestamp) and, on some endpoints, pagination.\n\nReal-time data is available separately over WebSocket at wss://stream.cabalspy.xyz (not described by this document; 1 credit per event received).",
    "termsOfService": "https://www.cabalspy.xyz/terms/",
    "contact": {
      "name": "CabalSpy",
      "email": "contact@cabalspy.xyz"
    }
  },
  "externalDocs": {
    "description": "CabalSpy API documentation",
    "url": "https://docs.cabalspy.xyz/"
  },
  "servers": [
    {
      "url": "https://api.cabalspy.xyz/v1"
    }
  ],
  "security": [
    {
      "ApiKeyQuery": []
    },
    {
      "BearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Wallets",
      "description": "Tracked wallet lists, lookup, leaderboard, tracker, holdings, PnL calendar, history and connections."
    },
    {
      "name": "Tokens",
      "description": "Per token stats, holders and transactions of tracked wallets."
    },
    {
      "name": "Transactions",
      "description": "Live trade feed, time windows, counts and volume."
    },
    {
      "name": "Signals",
      "description": "Live and historical cluster, entry and exit signals."
    },
    {
      "name": "Analytics",
      "description": "Aggregate analytics over tracked wallets."
    },
    {
      "name": "Bundle",
      "description": "KOL bundle detection on Solana tokens."
    }
  ],
  "paths": {
    "/wallets": {
      "get": {
        "operationId": "listWallets",
        "summary": "List tracked wallets",
        "description": "Return every wallet CabalSpy tracks for a given chain and wallet type, with public profile (name, avatar, socials, copytrade link). Without a limit all wallets are returned in one response; addresses are sorted alphabetically. Costs 10 credits per request.",
        "tags": [
          "Wallets"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/list"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain of the wallets. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "Wallet category kol, smart or whale. Availability per chain. Solana has kol, smart, whale. BNB, Base and Robinhood Chain have kol, smart. ETH has kol.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of wallets per page. Omit to return all wallets in one response.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Cursor for the next page, the pagination.next_cursor value from the previous response. Empty means from the start.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "blockchain": {
                          "type": "string",
                          "description": "Requested chain."
                        },
                        "type": {
                          "type": "string",
                          "description": "Requested wallet type."
                        },
                        "currency": {
                          "type": "string",
                          "description": "Native currency of the chain (SOL, BNB, ETH)."
                        },
                        "pagination": {
                          "type": "object",
                          "properties": {
                            "total": {
                              "type": "integer",
                              "description": "Total number of items."
                            },
                            "limit": {
                              "type": [
                                "integer",
                                "null"
                              ],
                              "description": "Requested limit (null means all)."
                            },
                            "next_cursor": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Cursor for the next page (null means end)."
                            },
                            "has_more": {
                              "type": "boolean",
                              "description": "Whether more pages follow."
                            }
                          },
                          "additionalProperties": true
                        },
                        "wallets": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "wallet_address": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "image_url": {
                                "type": "string"
                              },
                              "twitter": {
                                "type": "string"
                              },
                              "telegram": {
                                "type": "string"
                              },
                              "copytrade_link": {
                                "type": "string"
                              },
                              "blockchain": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "currency": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": true
                          }
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "blockchain": "solana",
                    "type": "kol",
                    "currency": "SOL",
                    "pagination": {
                      "total": 342,
                      "limit": 50,
                      "next_cursor": "8CvFWU1Hfmy7HkS7eWG2x8EMtQxAzCr7KcukKwspGFwB",
                      "has_more": true
                    },
                    "wallets": [
                      {
                        "wallet_address": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                        "name": "Maze",
                        "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                        "twitter": "https://x.com/MazeCCC",
                        "telegram": "",
                        "copytrade_link": "https://t.me/WizGandalfBot?start=r-U7TSHAWUWN-7j7AA",
                        "blockchain": "solana",
                        "type": "kol",
                        "currency": "SOL"
                      }
                    ]
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/wallets/lookup": {
      "get": {
        "operationId": "lookupWallet",
        "summary": "Look up a wallet address",
        "description": "Check whether CabalSpy tracks an address across all chains and wallet types and return its profile, chain and category (first match). A wallet that is not tracked is not an error: the response is 200 with found false. Costs 10 credits per request.",
        "tags": [
          "Wallets"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/lookup"
        },
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "The wallet address to look up. Searched across every tracked chain and wallet type.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "found": {
                          "type": "boolean",
                          "description": "Whether the address is tracked by CabalSpy. When false, only found and wallet_address are returned."
                        },
                        "wallet_address": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "image_url": {
                          "type": "string"
                        },
                        "twitter": {
                          "type": "string"
                        },
                        "telegram": {
                          "type": "string"
                        },
                        "copytrade_link": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "description": "Wallet type where it was found kol, smart or whale."
                        },
                        "blockchain": {
                          "type": "string",
                          "description": "Chain where it was found."
                        },
                        "currency": {
                          "type": "string",
                          "description": "Native currency of that chain."
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "found": true,
                    "wallet_address": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                    "name": "Maze",
                    "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                    "twitter": "https://x.com/MazeCCC",
                    "telegram": "",
                    "copytrade_link": "https://t.me/WizGandalfBot?start=r-U7TSHAWUWN-7j7AA",
                    "type": "kol",
                    "blockchain": "solana",
                    "currency": "SOL"
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/wallets/leaderboard": {
      "get": {
        "operationId": "getWalletLeaderboard",
        "summary": "Wallet leaderboard",
        "description": "Rank tracked wallets by trading volume over a period, each with buy and sell volume, realized PnL, average hold time and win rate. Without a limit the full ranking is returned; page with cursor (a wallet address). Costs 10 credits per request.",
        "tags": [
          "Wallets"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/leaderboard"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "Wallet category kol, smart or whale. Availability per chain. Solana has kol, smart, whale. BNB, Base and Robinhood Chain have kol, smart. ETH has kol.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "period",
            "in": "query",
            "required": true,
            "description": "Ranking window, one of 6h, 1d, 7d or 30d.",
            "schema": {
              "type": "string",
              "enum": [
                "6h",
                "1d",
                "7d",
                "30d"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum wallets per page. Omit to return the full ranking.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Cursor for the next page, the pagination.next_cursor (a wallet address) from the previous response.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "blockchain": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "period": {
                          "type": "string",
                          "description": "Ranking window 6h, 1d, 7d or 30d."
                        },
                        "currency": {
                          "type": "string"
                        },
                        "pagination": {
                          "type": "object",
                          "properties": {
                            "total": {
                              "type": "integer",
                              "description": "Total number of items."
                            },
                            "limit": {
                              "type": [
                                "integer",
                                "null"
                              ],
                              "description": "Requested limit (null means all)."
                            },
                            "next_cursor": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Cursor for the next page (null means end)."
                            },
                            "has_more": {
                              "type": "boolean",
                              "description": "Whether more pages follow."
                            }
                          },
                          "additionalProperties": true
                        },
                        "leaderboard": {
                          "type": "array",
                          "description": "Entries sorted by volume, highest first.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "wallet": {
                                "type": "string",
                                "description": "Wallet address."
                              },
                              "profile": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "image_url": {
                                    "type": "string"
                                  },
                                  "twitter": {
                                    "type": "string"
                                  },
                                  "telegram": {
                                    "type": "string"
                                  },
                                  "blockchain": {
                                    "type": "string"
                                  },
                                  "currency": {
                                    "type": "string"
                                  },
                                  "wallet_type": {
                                    "type": "string",
                                    "description": "kol, smart or whale."
                                  }
                                },
                                "additionalProperties": true
                              },
                              "period_stats": {
                                "type": "object",
                                "properties": {
                                  "period": {
                                    "type": "string"
                                  },
                                  "total_buy": {
                                    "type": "number"
                                  },
                                  "total_buy_usd": {
                                    "type": "number"
                                  },
                                  "total_sell": {
                                    "type": "number"
                                  },
                                  "total_sell_usd": {
                                    "type": "number"
                                  },
                                  "total_volume": {
                                    "type": "number",
                                    "description": "Buy plus sell volume (native). This is the ranking key."
                                  },
                                  "total_volume_usd": {
                                    "type": "number"
                                  },
                                  "realized_pnl": {
                                    "type": "number"
                                  },
                                  "realized_pnl_usd": {
                                    "type": "number"
                                  },
                                  "realized_pnl_percentage": {
                                    "type": "number"
                                  },
                                  "avg_hold_time_minutes": {
                                    "type": "number"
                                  },
                                  "total_txn": {
                                    "type": "integer"
                                  },
                                  "buy_txn": {
                                    "type": "integer"
                                  },
                                  "sell_txn": {
                                    "type": "integer"
                                  }
                                },
                                "additionalProperties": true
                              },
                              "period_win_rate_distribution": {
                                "type": "object",
                                "properties": {
                                  "win_count": {
                                    "type": "integer"
                                  },
                                  "closed_count": {
                                    "type": "integer"
                                  },
                                  "win_rate_percentage": {
                                    "type": "number"
                                  }
                                },
                                "additionalProperties": true
                              },
                              "period_history_tokens": {
                                "type": "object",
                                "properties": {
                                  "total_tokens": {
                                    "type": "integer"
                                  }
                                },
                                "additionalProperties": true
                              }
                            },
                            "additionalProperties": true
                          }
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "blockchain": "solana",
                    "type": "kol",
                    "period": "7d",
                    "currency": "SOL",
                    "pagination": {
                      "total": 342,
                      "limit": 20,
                      "next_cursor": "8CvFWU1Hfmy7HkS7eWG2x8EMtQxAzCr7KcukKwspGFwB",
                      "has_more": true
                    },
                    "leaderboard": [
                      {
                        "wallet": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                        "profile": {
                          "name": "Maze",
                          "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                          "twitter": "https://x.com/MazeCCC",
                          "telegram": "",
                          "blockchain": "solana",
                          "currency": "SOL",
                          "wallet_type": "kol"
                        },
                        "period_stats": {
                          "period": "7d",
                          "total_buy": 180.25,
                          "total_buy_usd": 14840.6,
                          "total_sell": 132.25,
                          "total_sell_usd": 10890.65,
                          "total_volume": 312.5,
                          "total_volume_usd": 25731.25,
                          "realized_pnl": 48.2,
                          "realized_pnl_usd": 3968.6,
                          "realized_pnl_percentage": 26.74,
                          "avg_hold_time_minutes": 84.5,
                          "total_txn": 40,
                          "buy_txn": 22,
                          "sell_txn": 18
                        },
                        "period_win_rate_distribution": {
                          "win_count": 14,
                          "closed_count": 18,
                          "win_rate_percentage": 77.78
                        },
                        "period_history_tokens": {
                          "total_tokens": 23
                        }
                      }
                    ]
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": true,
                    "cache_age_seconds": 42,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/wallets/tracker": {
      "get": {
        "operationId": "getWalletTracker",
        "summary": "Wallet tracker profile",
        "description": "Full trading profile for one wallet over a period: period stats, win rate distribution, active and historical tokens, a realized PnL chart and recent trades. Costs 10 credits per request.",
        "tags": [
          "Wallets"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/tracker"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain of the wallet. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "The wallet address to profile.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "period",
            "in": "query",
            "required": false,
            "description": "Aggregation window, one of 6h, 1d, 7d or 30d.",
            "schema": {
              "type": "string",
              "enum": [
                "6h",
                "1d",
                "7d",
                "30d"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "wallet": {
                          "type": "string",
                          "description": "The profiled wallet address."
                        },
                        "profile": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "image_url": {
                              "type": "string"
                            },
                            "twitter": {
                              "type": "string"
                            },
                            "telegram": {
                              "type": "string"
                            },
                            "blockchain": {
                              "type": "string"
                            },
                            "currency": {
                              "type": "string"
                            },
                            "type": {
                              "type": "string"
                            },
                            "active_hours": {
                              "type": "array",
                              "items": {},
                              "description": "Hours of day when the wallet is most active."
                            }
                          },
                          "additionalProperties": true
                        },
                        "period_stats": {
                          "type": "object",
                          "properties": {
                            "period": {
                              "type": "string"
                            },
                            "total_buy": {
                              "type": "number"
                            },
                            "total_buy_usd": {
                              "type": "number"
                            },
                            "total_sell": {
                              "type": "number"
                            },
                            "total_sell_usd": {
                              "type": "number"
                            },
                            "volume": {
                              "type": "number"
                            },
                            "volume_usd": {
                              "type": "number"
                            },
                            "realized_pnl": {
                              "type": "number"
                            },
                            "realized_pnl_usd": {
                              "type": "number"
                            },
                            "realized_pnl_percentage": {
                              "type": "number"
                            },
                            "buy_txn": {
                              "type": "integer"
                            },
                            "sell_txn": {
                              "type": "integer"
                            },
                            "largest_buy": {
                              "type": "number"
                            },
                            "best_trade_pnl": {
                              "type": "number"
                            },
                            "worst_trade_pnl": {
                              "type": "number"
                            },
                            "win_count": {
                              "type": "integer"
                            },
                            "loss_count": {
                              "type": "integer"
                            },
                            "avg_hold_time_minutes": {
                              "type": "number"
                            }
                          },
                          "additionalProperties": true
                        },
                        "period_win_rate_distribution": {
                          "type": "object",
                          "properties": {
                            "win_rate": {
                              "type": "integer",
                              "description": "Number of winning positions."
                            },
                            "win_rate_percentage": {
                              "type": "number"
                            },
                            "above_500": {
                              "type": "integer"
                            },
                            "above_100_to_500": {
                              "type": "integer"
                            },
                            "above_zero_to_100": {
                              "type": "integer"
                            },
                            "below_zero": {
                              "type": "integer"
                            }
                          },
                          "additionalProperties": true
                        },
                        "period_active_tokens": {
                          "type": "object",
                          "properties": {
                            "active_tokens_count": {
                              "type": "integer"
                            },
                            "avg_position_size": {
                              "type": "number"
                            },
                            "still_holding_count": {
                              "type": "integer"
                            }
                          },
                          "additionalProperties": true
                        },
                        "period_active_tokens_list": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "token_name": {
                                "type": "string"
                              },
                              "buy_value": {
                                "type": "number"
                              },
                              "buy_value_usd": {
                                "type": "number"
                              },
                              "sell_value": {
                                "type": "number"
                              },
                              "sell_value_usd": {
                                "type": "number"
                              },
                              "buy_tokens": {
                                "type": "number"
                              },
                              "sell_tokens": {
                                "type": "number"
                              },
                              "realized_pnl": {
                                "type": "number"
                              },
                              "realized_pnl_usd": {
                                "type": "number"
                              },
                              "realized_pnl_percentage": {
                                "type": "number"
                              },
                              "remaining_tokens": {
                                "type": "number"
                              },
                              "bag_pct": {
                                "type": "number"
                              },
                              "supply_pct": {
                                "type": "number"
                              }
                            },
                            "additionalProperties": true
                          }
                        },
                        "period_history_tokens": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "token_name": {
                                "type": "string"
                              },
                              "buy_value": {
                                "type": "number"
                              },
                              "buy_value_usd": {
                                "type": "number"
                              },
                              "sell_value": {
                                "type": "number"
                              },
                              "sell_value_usd": {
                                "type": "number"
                              },
                              "buy_tokens": {
                                "type": "number"
                              },
                              "sell_tokens": {
                                "type": "number"
                              },
                              "realized_pnl": {
                                "type": "number"
                              },
                              "realized_pnl_usd": {
                                "type": "number"
                              },
                              "realized_pnl_percentage": {
                                "type": "number"
                              }
                            },
                            "additionalProperties": true
                          }
                        },
                        "period_realized_pnl_chart": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "timestamp": {
                                "type": "string"
                              },
                              "realized_pnl": {
                                "type": "number"
                              },
                              "realized_pnl_usd": {
                                "type": "number"
                              }
                            },
                            "additionalProperties": true
                          }
                        },
                        "period_trades": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "signature": {
                                "type": "string"
                              },
                              "mint": {
                                "type": "string"
                              },
                              "token_symbol": {
                                "type": "string"
                              },
                              "transaction_type": {
                                "type": "string"
                              },
                              "value": {
                                "type": "number"
                              },
                              "currency": {
                                "type": "string"
                              },
                              "wallet_type": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": true
                          }
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "wallet": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                    "profile": {
                      "name": "Maze",
                      "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                      "twitter": "https://x.com/MazeCCC",
                      "telegram": "",
                      "blockchain": "solana",
                      "currency": "SOL",
                      "type": "kol",
                      "active_hours": [
                        13,
                        14,
                        15,
                        20,
                        21
                      ]
                    },
                    "period_stats": {
                      "period": "7d",
                      "total_buy": 180.25,
                      "total_buy_usd": 14840.6,
                      "total_sell": 132.25,
                      "total_sell_usd": 10890.65,
                      "volume": 312.5,
                      "volume_usd": 25731.25,
                      "realized_pnl": 48.2,
                      "realized_pnl_usd": 3968.6,
                      "realized_pnl_percentage": 26.74,
                      "buy_txn": 22,
                      "sell_txn": 18,
                      "largest_buy": 22.0,
                      "best_trade_pnl": 31.4,
                      "worst_trade_pnl": -8.9,
                      "win_count": 14,
                      "loss_count": 4,
                      "avg_hold_time_minutes": 84.5
                    },
                    "period_win_rate_distribution": {
                      "win_rate": 14,
                      "win_rate_percentage": 77.78,
                      "above_500": 1,
                      "above_100_to_500": 4,
                      "above_zero_to_100": 9,
                      "below_zero": 4
                    },
                    "period_active_tokens": {
                      "active_tokens_count": 3,
                      "avg_position_size": 4.12,
                      "still_holding_count": 3
                    },
                    "period_active_tokens_list": [
                      {
                        "token_name": "invisibull",
                        "buy_value": 1.66,
                        "buy_value_usd": 137.44,
                        "sell_value": 0.0,
                        "sell_value_usd": 0.0,
                        "buy_tokens": 22113972.03,
                        "sell_tokens": 0.0,
                        "remaining_tokens": 22113972.03,
                        "realized_pnl": -1.66,
                        "realized_pnl_usd": -137.44,
                        "realized_pnl_percentage": -100.0,
                        "bag_pct": 100.0,
                        "supply_pct": 2.21
                      }
                    ],
                    "period_history_tokens": [
                      {
                        "token_name": "Pengu",
                        "buy_value": 1.48,
                        "buy_value_usd": 121.98,
                        "sell_value": 1.15,
                        "sell_value_usd": 95.46,
                        "buy_tokens": 266294.3,
                        "sell_tokens": 266294.3,
                        "realized_pnl": -0.32,
                        "realized_pnl_usd": -26.52,
                        "realized_pnl_percentage": -21.62
                      }
                    ],
                    "period_realized_pnl_chart": [
                      {
                        "timestamp": "2026-07-01T00:00:00Z",
                        "realized_pnl": 12.4,
                        "realized_pnl_usd": 1020.6
                      },
                      {
                        "timestamp": "2026-07-04T00:00:00Z",
                        "realized_pnl": 48.2,
                        "realized_pnl_usd": 3968.6
                      }
                    ],
                    "period_trades": [
                      {
                        "signature": "5xr8...",
                        "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                        "token_symbol": "invisibull",
                        "transaction_type": "buy",
                        "value": 1.66,
                        "currency": "SOL",
                        "wallet_type": "kol",
                        "created_at": "2026-07-04T16:25:34Z"
                      }
                    ]
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": true,
                    "cache_age_seconds": 42,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/wallets/holdings": {
      "get": {
        "operationId": "getWalletHoldings",
        "summary": "Wallet on-chain holdings",
        "description": "Current on-chain token balances of a tracked wallet, read live from the chain (no cost basis, no PnL). May briefly return loading true while the balance cache warms up; call again. Returns not_found if the wallet is not tracked. Costs 10 credits per request.",
        "tags": [
          "Wallets"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/holdings"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain of the wallet. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "The wallet address whose balances you want.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "active_holdings": {
                          "type": "object",
                          "properties": {
                            "tokens": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "token_address": {
                                    "type": "string",
                                    "description": "Token contract or mint address. The native coin uses a pseudo address."
                                  },
                                  "token_name": {
                                    "type": "string"
                                  },
                                  "symbol": {
                                    "type": "string"
                                  },
                                  "amount": {
                                    "type": "string",
                                    "description": "Raw balance as a string in the smallest unit."
                                  },
                                  "amount_formatted": {
                                    "type": "string",
                                    "description": "Human readable balance adjusted for decimals."
                                  },
                                  "decimals": {
                                    "type": "integer"
                                  },
                                  "verified_contract": {
                                    "type": "boolean"
                                  }
                                },
                                "additionalProperties": true
                              }
                            },
                            "count": {
                              "type": "integer",
                              "description": "Number of tokens held."
                            },
                            "last_updated": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "ISO timestamp of the last balance refresh (null if unknown)."
                            },
                            "stale": {
                              "type": "boolean",
                              "description": "Whether the cached balance is considered stale."
                            },
                            "loading": {
                              "type": "boolean",
                              "description": "True while the balance cache is still warming up. Call again shortly."
                            }
                          },
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "active_holdings": {
                      "tokens": [
                        {
                          "token_address": "native",
                          "token_name": "Solana",
                          "symbol": "SOL",
                          "amount": "12480000000",
                          "amount_formatted": "12.48",
                          "decimals": 9,
                          "verified_contract": true
                        },
                        {
                          "token_address": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                          "token_name": "invisibull",
                          "symbol": "invisibull",
                          "amount": "22113972037624",
                          "amount_formatted": "22113972.03",
                          "decimals": 6,
                          "verified_contract": false
                        }
                      ],
                      "count": 2,
                      "last_updated": "2026-07-06T11:00:12Z",
                      "stale": false,
                      "loading": false
                    }
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/wallet/pnl_calendar": {
      "get": {
        "operationId": "getWalletPnlCalendar",
        "summary": "Wallet PnL calendar",
        "description": "Day by day realized PnL calendar for a wallet, grouped by month (oldest first), with per day PnL, volume, trade counts and monthly win and loss streaks. Note the path uses singular wallet. Costs 10 credits per request.",
        "tags": [
          "Wallets"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/pnl-calender"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain of the wallet. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "The wallet address whose calendar you want.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "wallet": {
                          "type": "string",
                          "description": "The wallet address."
                        },
                        "profile": {
                          "$ref": "#/components/schemas/Profile"
                        },
                        "months": {
                          "type": "array",
                          "description": "All months, oldest first.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "dates": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "date": {
                                      "type": "string",
                                      "description": "Day in the format DD-MM-YY, for example 04-07-26."
                                    },
                                    "realized_pnl": {
                                      "type": "number"
                                    },
                                    "realized_pnl_usd": {
                                      "type": "number"
                                    },
                                    "buy_txn": {
                                      "type": "integer"
                                    },
                                    "sell_txn": {
                                      "type": "integer"
                                    },
                                    "txn_total": {
                                      "type": "integer"
                                    },
                                    "tokens_traded": {
                                      "type": "integer"
                                    },
                                    "volume": {
                                      "type": "number"
                                    },
                                    "total_buy": {
                                      "type": "number"
                                    },
                                    "total_buy_usd": {
                                      "type": "number"
                                    },
                                    "total_sell": {
                                      "type": "number"
                                    },
                                    "total_sell_usd": {
                                      "type": "number"
                                    }
                                  },
                                  "additionalProperties": true
                                }
                              },
                              "month": {
                                "type": "object",
                                "properties": {
                                  "month": {
                                    "type": "integer",
                                    "description": "Month number 1 to 12."
                                  },
                                  "year": {
                                    "type": "integer"
                                  },
                                  "positive_streak": {
                                    "type": "integer"
                                  },
                                  "negative_streak": {
                                    "type": "integer"
                                  },
                                  "realized_pnl": {
                                    "type": "number"
                                  },
                                  "realized_pnl_usd": {
                                    "type": "number"
                                  },
                                  "volume": {
                                    "type": "number"
                                  },
                                  "buy_txn": {
                                    "type": "integer"
                                  },
                                  "sell_txn": {
                                    "type": "integer"
                                  },
                                  "txn_total": {
                                    "type": "integer"
                                  },
                                  "tokens_traded": {
                                    "type": "integer"
                                  },
                                  "total_buy": {
                                    "type": "number"
                                  },
                                  "total_buy_usd": {
                                    "type": "number"
                                  },
                                  "total_sell": {
                                    "type": "number"
                                  },
                                  "total_sell_usd": {
                                    "type": "number"
                                  }
                                },
                                "additionalProperties": true
                              }
                            },
                            "additionalProperties": true
                          }
                        },
                        "dates": {
                          "type": "array",
                          "items": {},
                          "description": "Convenience copy of the current month dates array (same shape as months dates)."
                        },
                        "month": {
                          "type": "object",
                          "additionalProperties": true,
                          "description": "Convenience copy of the current month summary (same shape as months month)."
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "wallet": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                    "profile": {
                      "name": "Maze",
                      "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                      "twitter": "https://x.com/MazeCCC",
                      "telegram": "",
                      "blockchain": "solana",
                      "currency": "SOL",
                      "type": "kol"
                    },
                    "months": [
                      {
                        "dates": [
                          {
                            "date": "04-07-26",
                            "realized_pnl": 12.4,
                            "realized_pnl_usd": 1020.6,
                            "buy_txn": 6,
                            "sell_txn": 5,
                            "txn_total": 11,
                            "tokens_traded": 4,
                            "volume": 88.5,
                            "total_buy": 50.25,
                            "total_buy_usd": 4137.6,
                            "total_sell": 38.25,
                            "total_sell_usd": 3150.4
                          }
                        ],
                        "month": {
                          "month": 7,
                          "year": 2026,
                          "positive_streak": 3,
                          "negative_streak": 1,
                          "realized_pnl": 48.2,
                          "realized_pnl_usd": 3968.6,
                          "volume": 312.5,
                          "buy_txn": 22,
                          "sell_txn": 18,
                          "txn_total": 40,
                          "tokens_traded": 23,
                          "total_buy": 180.25,
                          "total_buy_usd": 14840.6,
                          "total_sell": 132.25,
                          "total_sell_usd": 10890.65
                        }
                      }
                    ],
                    "dates": [],
                    "month": {}
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/wallets/history": {
      "get": {
        "operationId": "getWalletHistory",
        "summary": "Wallet lifetime history",
        "description": "Complete lifetime trading history of a wallet: lifetime stats, win rate distribution, a per token overview and a paginated trade log, newest first. Pass pagination.next_cursor back as cursor to fetch the next page. Costs 10 credits per request.",
        "tags": [
          "Wallets"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/history"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain of the wallet. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "Wallet category kol, smart or whale. Availability per chain. Solana has kol, smart, whale. BNB, Base and Robinhood Chain have kol, smart. ETH has kol.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "The wallet address whose history you want.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Number of trades per page in the trade log.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Cursor for the next page of trades, the pagination.next_cursor from the previous response. Empty means from the newest trade.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "profile": {
                          "type": "object",
                          "properties": {
                            "wallet_address": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "image_url": {
                              "type": "string"
                            },
                            "twitter": {
                              "type": "string"
                            },
                            "telegram": {
                              "type": "string"
                            },
                            "blockchain": {
                              "type": "string"
                            },
                            "type": {
                              "type": "string"
                            },
                            "currency": {
                              "type": "string"
                            }
                          },
                          "additionalProperties": true
                        },
                        "lifetime_stats": {
                          "type": "object",
                          "properties": {
                            "currency": {
                              "type": "string"
                            },
                            "buy": {
                              "type": "number"
                            },
                            "sell": {
                              "type": "number"
                            },
                            "realized_pnl": {
                              "type": "number"
                            },
                            "realized_pnl_percentage": {
                              "type": "number"
                            },
                            "buy_txn": {
                              "type": "integer"
                            },
                            "sell_txn": {
                              "type": "integer"
                            },
                            "total_tx_count": {
                              "type": "integer"
                            },
                            "win_rate": {
                              "type": "number",
                              "description": "Win rate as a percentage."
                            },
                            "win_count": {
                              "type": "integer"
                            },
                            "total_sold": {
                              "type": "integer",
                              "description": "Number of closed positions."
                            },
                            "active_tokens_count": {
                              "type": "integer"
                            },
                            "largest_buy": {
                              "type": "number"
                            },
                            "best_trade_pnl": {
                              "type": "number"
                            },
                            "worst_trade_pnl": {
                              "type": "number"
                            },
                            "still_holding_count": {
                              "type": "integer"
                            }
                          },
                          "additionalProperties": true
                        },
                        "win_rate_distribution": {
                          "$ref": "#/components/schemas/WinRateBuckets"
                        },
                        "token_overview": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "mint": {
                                "type": "string"
                              },
                              "token_name": {
                                "type": "string"
                              },
                              "invested": {
                                "type": "number"
                              },
                              "sold": {
                                "type": "number"
                              },
                              "realized_pnl": {
                                "type": "number"
                              },
                              "realized_pnl_percentage": {
                                "type": "number"
                              },
                              "currency": {
                                "type": "string"
                              },
                              "buy_txn": {
                                "type": "integer"
                              },
                              "sell_txn": {
                                "type": "integer"
                              },
                              "first_seen": {
                                "type": "string"
                              },
                              "last_seen": {
                                "type": "string"
                              },
                              "still_holding": {
                                "type": "boolean"
                              }
                            },
                            "additionalProperties": true
                          }
                        },
                        "trades": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "tx_signature": {
                                "type": "string"
                              },
                              "mint": {
                                "type": "string"
                              },
                              "token_name": {
                                "type": "string"
                              },
                              "transaction_type": {
                                "type": "string",
                                "description": "buy or sell."
                              },
                              "value": {
                                "type": "number"
                              },
                              "currency": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Native currency (may be null on some historical rows)."
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": true
                          }
                        },
                        "pagination": {
                          "type": "object",
                          "properties": {
                            "limit": {
                              "type": "integer"
                            },
                            "next_cursor": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "has_more": {
                              "type": "boolean"
                            }
                          },
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "profile": {
                      "wallet_address": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                      "name": "Maze",
                      "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                      "twitter": "https://x.com/MazeCCC",
                      "telegram": "",
                      "blockchain": "solana",
                      "type": "kol",
                      "currency": "SOL"
                    },
                    "lifetime_stats": {
                      "currency": "SOL",
                      "buy": 1840.5,
                      "sell": 2010.75,
                      "realized_pnl": 170.25,
                      "realized_pnl_percentage": 9.25,
                      "buy_txn": 412,
                      "sell_txn": 388,
                      "total_tx_count": 800,
                      "win_rate": 61.34,
                      "win_count": 138,
                      "total_sold": 225,
                      "active_tokens_count": 240,
                      "largest_buy": 42.0,
                      "best_trade_pnl": 88.6,
                      "worst_trade_pnl": -19.4,
                      "still_holding_count": 15
                    },
                    "win_rate_distribution": {
                      "above_500": 6,
                      "above_100_to_500": 28,
                      "above_zero_to_100": 104,
                      "below_zero": 87
                    },
                    "token_overview": [
                      {
                        "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                        "token_name": "invisibull",
                        "invested": 1.66,
                        "sold": 0.0,
                        "realized_pnl": -1.66,
                        "realized_pnl_percentage": -100.0,
                        "currency": "SOL",
                        "buy_txn": 1,
                        "sell_txn": 0,
                        "first_seen": "2026-07-04T16:25:34Z",
                        "last_seen": "2026-07-04T16:25:34Z",
                        "still_holding": true
                      }
                    ],
                    "trades": [
                      {
                        "tx_signature": "5xr8abc...",
                        "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                        "token_name": "invisibull",
                        "transaction_type": "buy",
                        "value": 1.66,
                        "currency": "SOL",
                        "created_at": "2026-07-04T16:25:34Z"
                      }
                    ],
                    "pagination": {
                      "limit": 50,
                      "next_cursor": "MjAyNi0wNy0wNFQxNjoyNTozNFp8NXhyOGFiYw==",
                      "has_more": true
                    }
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/wallets/connections": {
      "get": {
        "operationId": "getWalletConnections",
        "summary": "Wallet connections",
        "description": "Find tracked wallets connected to a given wallet by shared token activity over the last 30 days, sorted by shared_tokens highest first. overlap_score is the share of the source wallet tokens the other wallet also traded, from 0 to 1. Costs 10 credits per request.",
        "tags": [
          "Wallets"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/connections"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain of the wallet. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "The source wallet address to find connections for.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of connections to return. Omit to return all.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "wallet_address": {
                          "type": "string",
                          "description": "The source wallet the connections were computed for."
                        },
                        "blockchain": {
                          "type": "string"
                        },
                        "connections": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "wallet_address": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "image_url": {
                                "type": "string"
                              },
                              "twitter": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "shared_tokens": {
                                "type": "integer",
                                "description": "Number of tokens both wallets traded in the last 30 days."
                              },
                              "overlap_score": {
                                "type": "number",
                                "description": "Share of the source wallet tokens that the connected wallet also traded, from 0 to 1."
                              }
                            },
                            "additionalProperties": true
                          }
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "wallet_address": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                    "blockchain": "solana",
                    "connections": [
                      {
                        "wallet_address": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
                        "name": "Cupsey",
                        "image_url": "https://cabalspy.xyz/images/9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin.png",
                        "twitter": "https://x.com/cupseyy",
                        "type": "kol",
                        "shared_tokens": 18,
                        "overlap_score": 0.375
                      },
                      {
                        "wallet_address": "3Cx7Wm8yQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZbXX",
                        "name": "",
                        "image_url": "",
                        "twitter": "",
                        "type": "kol",
                        "shared_tokens": 9,
                        "overlap_score": 0.187
                      }
                    ]
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": true,
                    "cache_age_seconds": 120,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/tokens/stats": {
      "get": {
        "operationId": "getTokenStats",
        "summary": "Token stats",
        "description": "Aggregate trading statistics for one token across tracked wallets: token block with current market cap, holder totals by wallet type, flow statistics and a per trader breakdown with live position. Market cap, price and live position fields are Solana only (null on other chains). Costs 10 credits per request.",
        "tags": [
          "Tokens"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/stats"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain of the token. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "mint",
            "in": "query",
            "required": true,
            "description": "The token mint or contract address.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Optional wallet category to narrow the breakdown kol, smart or whale. Omit to aggregate across all categories available on the chain.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "token": {
                          "$ref": "#/components/schemas/Token"
                        },
                        "total_holders": {
                          "$ref": "#/components/schemas/TotalHolders"
                        },
                        "total_holdings": {
                          "type": "object",
                          "properties": {
                            "token_amount": {
                              "type": "number"
                            },
                            "token_amount_peak": {
                              "type": "number"
                            },
                            "supply_pct": {
                              "type": "number"
                            },
                            "supply_pct_peak": {
                              "type": "number"
                            }
                          },
                          "additionalProperties": true
                        },
                        "total_statistics": {
                          "type": "object",
                          "properties": {
                            "total_buy": {
                              "type": "number"
                            },
                            "total_buy_usd": {
                              "type": "number"
                            },
                            "total_sell": {
                              "type": "number"
                            },
                            "total_sell_usd": {
                              "type": "number"
                            },
                            "net_flow": {
                              "type": "number",
                              "description": "Buy minus sell (native). Positive means net accumulation."
                            },
                            "net_flow_usd": {
                              "type": "number"
                            },
                            "total_volume": {
                              "type": "number"
                            },
                            "total_volume_usd": {
                              "type": "number"
                            },
                            "avg_position_size": {
                              "type": "number"
                            },
                            "largest_position": {
                              "type": "number"
                            },
                            "buying_pressure": {
                              "type": "number",
                              "description": "Buy share of total volume, an indicator of pressure."
                            },
                            "first_entry_time": {
                              "type": "string"
                            },
                            "first_entry_type": {
                              "type": "string"
                            },
                            "first_entry_wallet_address": {
                              "type": "string"
                            },
                            "latest_entry_time": {
                              "type": "string"
                            },
                            "latest_entry_type": {
                              "type": "string"
                            },
                            "latest_entry_wallet_address": {
                              "type": "string"
                            },
                            "time_since_first_entry_hours": {
                              "type": "number"
                            }
                          },
                          "additionalProperties": true
                        },
                        "traders": {
                          "type": "array",
                          "description": "Traders sorted by buy volume, highest first.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "profile": {
                                "$ref": "#/components/schemas/Profile"
                              },
                              "trader_stats": {
                                "type": "object",
                                "properties": {
                                  "buy": {
                                    "type": "number"
                                  },
                                  "buy_usd": {
                                    "type": "number"
                                  },
                                  "sell": {
                                    "type": "number"
                                  },
                                  "sell_usd": {
                                    "type": "number"
                                  },
                                  "volume_buy": {
                                    "type": "number"
                                  },
                                  "volume_buy_usd": {
                                    "type": "number"
                                  },
                                  "volume_sell": {
                                    "type": "number"
                                  },
                                  "volume_sell_usd": {
                                    "type": "number"
                                  },
                                  "realized_pnl": {
                                    "type": "number"
                                  },
                                  "realized_pnl_usd": {
                                    "type": "number"
                                  },
                                  "realized_pnl_percentage": {
                                    "type": "number"
                                  },
                                  "buy_count": {
                                    "type": "integer"
                                  },
                                  "sell_count": {
                                    "type": "integer"
                                  },
                                  "buy_tokens": {
                                    "type": "number"
                                  },
                                  "sell_tokens": {
                                    "type": "number"
                                  },
                                  "avg_buy_price": {
                                    "type": "number"
                                  },
                                  "first_trade_at": {
                                    "type": "string"
                                  },
                                  "last_trade_at": {
                                    "type": "string"
                                  }
                                },
                                "additionalProperties": true
                              },
                              "trader_holdings": {
                                "$ref": "#/components/schemas/Position"
                              }
                            },
                            "additionalProperties": true
                          }
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "token": {
                      "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                      "token_name": "invisibull",
                      "blockchain": "solana",
                      "currency": "SOL",
                      "token_supply": 1000000000,
                      "token_decimals": 6,
                      "market_cap": 40.08,
                      "market_cap_usd": 3301.2,
                      "market_cap_currency": "SOL",
                      "price": 4.008e-08,
                      "price_usd": 3.3e-06,
                      "sol_price_usd": 82.36
                    },
                    "total_holders": {
                      "kol_count": 1,
                      "smart_count": 0,
                      "whale_count": 0,
                      "still_holding_count": 1
                    },
                    "total_holdings": {
                      "token_amount": 22113972.03,
                      "token_amount_peak": 22113972.03,
                      "supply_pct": 2.211397,
                      "supply_pct_peak": 2.211397
                    },
                    "total_statistics": {
                      "total_buy": 1.66,
                      "total_buy_usd": 137.44,
                      "total_sell": 0.0,
                      "total_sell_usd": 0.0,
                      "net_flow": 1.66,
                      "net_flow_usd": 137.44,
                      "total_volume": 1.66,
                      "total_volume_usd": 137.44,
                      "avg_position_size": 1.66,
                      "largest_position": 1.66,
                      "buying_pressure": 100.0,
                      "first_entry_time": "2026-07-04T16:25:34Z",
                      "first_entry_type": "buy",
                      "first_entry_wallet_address": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                      "latest_entry_time": "2026-07-04T16:25:34Z",
                      "latest_entry_type": "buy",
                      "latest_entry_wallet_address": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                      "time_since_first_entry_hours": 42.6
                    },
                    "traders": [
                      {
                        "profile": {
                          "name": "Maze",
                          "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                          "twitter": "https://x.com/MazeCCC",
                          "telegram": "",
                          "blockchain": "solana",
                          "currency": "SOL",
                          "type": "kol"
                        },
                        "trader_stats": {
                          "buy": 1.66,
                          "buy_usd": 137.44,
                          "sell": 0.0,
                          "sell_usd": 0.0,
                          "volume_buy": 1.66,
                          "volume_buy_usd": 137.44,
                          "volume_sell": 0.0,
                          "volume_sell_usd": 0.0,
                          "realized_pnl": 0.0,
                          "realized_pnl_usd": 0.0,
                          "realized_pnl_percentage": 0.0,
                          "buy_count": 1,
                          "sell_count": 0,
                          "buy_tokens": 22113972.03,
                          "sell_tokens": 0.0,
                          "avg_buy_price": 7.5e-08,
                          "first_trade_at": "2026-07-04T16:25:34Z",
                          "last_trade_at": "2026-07-04T16:25:34Z"
                        },
                        "trader_holdings": {
                          "token_amount": 22113972.03,
                          "token_amount_peak": 22113972.03,
                          "supply_pct": 2.211397,
                          "supply_pct_peak": 2.211397,
                          "bag_pct": 100.0,
                          "still_holding": true,
                          "unrealized_pnl_sol": -0.099817,
                          "unrealized_pnl_usd": -8.22,
                          "unrealized_pnl_pct": -10.12,
                          "remaining_sol": 0.886537,
                          "remaining_usd": 73.02,
                          "entry_market_cap": 44.6,
                          "entry_market_cap_usd": 3673.2
                        }
                      }
                    ]
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/tokens/holders": {
      "get": {
        "operationId": "getTokenHolders",
        "summary": "Token holders",
        "description": "The tracked wallets holding a token, sorted by amount held highest first, each with profile and live position (bag percentage, unrealized PnL, remaining value, entry market cap). Live position fields are Solana only and null on other chains. Costs 10 credits per request.",
        "tags": [
          "Tokens"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/Holders"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain of the token. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "mint",
            "in": "query",
            "required": true,
            "description": "The token mint or contract address.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Optional wallet category kol, smart or whale. Omit to include all categories.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of holders to return.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "token": {
                          "$ref": "#/components/schemas/Token"
                        },
                        "total_holders": {
                          "$ref": "#/components/schemas/TotalHolders"
                        },
                        "holders": {
                          "type": "array",
                          "description": "Holders sorted by amount held, highest first.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "profile": {
                                "$ref": "#/components/schemas/Profile"
                              },
                              "holdings": {
                                "$ref": "#/components/schemas/Position"
                              }
                            },
                            "additionalProperties": true
                          }
                        },
                        "pagination": {
                          "$ref": "#/components/schemas/Pagination"
                        }
                      },
                      "additionalProperties": true
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "token": {
                      "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                      "token_name": "invisibull",
                      "blockchain": "solana",
                      "currency": "SOL",
                      "token_supply": 1000000000,
                      "token_decimals": 6,
                      "market_cap": 40.08,
                      "market_cap_usd": 3301.2,
                      "market_cap_currency": "SOL",
                      "price": 4.008e-08,
                      "price_usd": 3.3e-06,
                      "sol_price_usd": 82.36
                    },
                    "total_holders": {
                      "kol_count": 1,
                      "smart_count": 0,
                      "whale_count": 0,
                      "still_holding_count": 1
                    },
                    "holders": [
                      {
                        "profile": {
                          "name": "Maze",
                          "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                          "twitter": "https://x.com/MazeCCC",
                          "telegram": "",
                          "blockchain": "solana",
                          "currency": "SOL",
                          "type": "kol"
                        },
                        "holdings": {
                          "token_amount": 22113972.03,
                          "token_amount_peak": 22113972.03,
                          "supply_pct": 2.211397,
                          "supply_pct_peak": 2.211397,
                          "bag_pct": 100.0,
                          "still_holding": true,
                          "unrealized_pnl_sol": -0.099817,
                          "unrealized_pnl_usd": -8.22,
                          "unrealized_pnl_pct": -10.12,
                          "remaining_sol": 0.886537,
                          "remaining_usd": 73.02,
                          "entry_market_cap": 44.6,
                          "entry_market_cap_usd": 3673.2
                        }
                      }
                    ]
                  },
                  "pagination": {
                    "limit": 50,
                    "total": 1,
                    "has_more": false,
                    "next_cursor": null
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/tokens/transactions": {
      "get": {
        "operationId": "getTokenTransactions",
        "summary": "Token transactions",
        "description": "The individual buy and sell transactions of tracked wallets on one token, newest first, each with trader profile and the holder position right after the trade (holdings_after). Current market cap in the token block is Solana only. Costs 10 credits per request.",
        "tags": [
          "Tokens"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/transactions"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain of the token. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "mint",
            "in": "query",
            "required": true,
            "description": "The token mint or contract address.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Optional wallet category kol, smart or whale. Omit to include all categories.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of transactions to return.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "token": {
                          "$ref": "#/components/schemas/Token"
                        },
                        "transactions": {
                          "type": "array",
                          "description": "Transactions, newest first.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "tx_signature": {
                                "type": "string"
                              },
                              "transaction_type": {
                                "type": "string",
                                "description": "buy or sell."
                              },
                              "value": {
                                "type": "number"
                              },
                              "value_usd": {
                                "type": [
                                  "number",
                                  "null"
                                ]
                              },
                              "currency": {
                                "type": "string"
                              },
                              "token_amount": {
                                "type": "number"
                              },
                              "price_per_token": {
                                "type": "number"
                              },
                              "price_per_token_usd": {
                                "type": [
                                  "number",
                                  "null"
                                ]
                              },
                              "created_at": {
                                "type": "string",
                                "description": "ISO timestamp of the trade."
                              },
                              "profile": {
                                "$ref": "#/components/schemas/Profile"
                              },
                              "holdings_after": {
                                "$ref": "#/components/schemas/HoldingsAfter"
                              }
                            },
                            "additionalProperties": true
                          }
                        },
                        "pagination": {
                          "$ref": "#/components/schemas/Pagination"
                        }
                      },
                      "additionalProperties": true
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "token": {
                      "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                      "token_name": "invisibull",
                      "blockchain": "solana",
                      "currency": "SOL",
                      "token_supply": 1000000000,
                      "token_decimals": 6,
                      "market_cap": 40.08,
                      "market_cap_usd": 3301.2,
                      "market_cap_currency": "SOL",
                      "price": 4.008e-08,
                      "price_usd": 3.3e-06,
                      "sol_price_usd": 82.36
                    },
                    "transactions": [
                      {
                        "tx_signature": "5xr8abc...",
                        "transaction_type": "buy",
                        "value": 1.66,
                        "value_usd": 137.44,
                        "currency": "SOL",
                        "token_amount": 22113972.03,
                        "price_per_token": 7.5e-08,
                        "price_per_token_usd": 6.2e-06,
                        "created_at": "2026-07-04T16:25:34Z",
                        "profile": {
                          "name": "Maze",
                          "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                          "twitter": "https://x.com/MazeCCC",
                          "telegram": "",
                          "blockchain": "solana",
                          "currency": "SOL",
                          "type": "kol"
                        },
                        "holdings_after": {
                          "token_amount": 22113972.03,
                          "token_amount_peak": 22113972.03,
                          "supply_pct": 2.211397,
                          "supply_pct_peak": 2.211397,
                          "bag_pct": 100.0,
                          "still_holding": true
                        }
                      }
                    ]
                  },
                  "pagination": {
                    "limit": 50,
                    "total": 1,
                    "has_more": false,
                    "next_cursor": null
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/bundle": {
      "get": {
        "operationId": "getBundleSnapshot",
        "summary": "Bundle snapshot",
        "description": "Detect coordinated KOL bundles on a Solana token: the side wallets that bought alongside a KOL in the same block, with confidence score, on chain proof and a live position per wallet. Solana only. If no bundles are detected the response is a normal 200 with an empty bundles array. Costs 10 credits per request.",
        "tags": [
          "Bundle"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/bundle"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Must be solana. Bundle detection is only available on Solana.",
            "schema": {
              "type": "string",
              "enum": [
                "solana"
              ]
            }
          },
          {
            "name": "mint",
            "in": "query",
            "required": true,
            "description": "The token mint address to inspect for bundles.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "blockchain": {
                          "type": "string",
                          "description": "Always solana for this endpoint."
                        },
                        "token": {
                          "type": "object",
                          "properties": {
                            "mint": {
                              "type": "string"
                            },
                            "symbol": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "supply": {
                              "type": "number"
                            },
                            "market_cap": {
                              "type": "number"
                            },
                            "market_cap_usd": {
                              "type": "number"
                            },
                            "market_cap_currency": {
                              "type": "string"
                            },
                            "price": {
                              "type": "number"
                            },
                            "price_usd": {
                              "type": "number"
                            },
                            "sol_price_usd": {
                              "type": "number"
                            },
                            "pool": {
                              "type": "string"
                            },
                            "on_curve": {
                              "type": "boolean"
                            },
                            "bonding_curve_progress": {
                              "type": "number"
                            }
                          },
                          "additionalProperties": true
                        },
                        "bundles": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "bundle_id": {
                                "type": "string"
                              },
                              "kol_wallet": {
                                "type": "string",
                                "description": "Address of the KOL at the center of the bundle."
                              },
                              "kol_profile": {
                                "$ref": "#/components/schemas/Profile"
                              },
                              "confidence": {
                                "type": "number",
                                "description": "Confidence score that this is a real coordinated bundle."
                              },
                              "jito_confirmed": {
                                "type": "boolean"
                              },
                              "proof_type": {
                                "type": "string"
                              },
                              "slot": {
                                "type": "integer"
                              },
                              "wallet_count": {
                                "type": "integer"
                              },
                              "proof": {
                                "type": "string"
                              },
                              "verify_hint": {
                                "type": "string"
                              },
                              "detected_at": {
                                "type": "string"
                              },
                              "bundle_wallets": {
                                "type": "array",
                                "description": "KOL first, then by invested.",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "address": {
                                      "type": "string"
                                    },
                                    "is_kol": {
                                      "type": "boolean",
                                      "description": "True for the KOL wallet, false for side wallets."
                                    },
                                    "transaction_type": {
                                      "type": "string"
                                    },
                                    "signature": {
                                      "type": "string"
                                    },
                                    "entry_source": {
                                      "type": "string"
                                    },
                                    "position_source": {
                                      "type": "string"
                                    },
                                    "profile": {
                                      "type": "object",
                                      "additionalProperties": true,
                                      "description": "Wallet profile. For side wallets this may be empty."
                                    },
                                    "fee_lamports": {
                                      "type": "integer",
                                      "description": "Side wallets only. Fee paid in lamports."
                                    },
                                    "block_index": {
                                      "type": "integer",
                                      "description": "Side wallets only. Index within the block."
                                    },
                                    "adjacent_to_kol": {
                                      "type": "boolean",
                                      "description": "Side wallets only. Whether the wallet traded directly next to the KOL."
                                    },
                                    "same_fee": {
                                      "type": "boolean",
                                      "description": "Side wallets only. Whether the wallet paid the same fee as the KOL."
                                    },
                                    "occurrences": {
                                      "type": "integer",
                                      "description": "Side wallets only. How often this wallet bundled with the KOL."
                                    },
                                    "position": {
                                      "type": "object",
                                      "description": "Live position, computed at request time.",
                                      "properties": {
                                        "held": {
                                          "type": "number"
                                        },
                                        "peak": {
                                          "type": "number"
                                        },
                                        "bought_tokens": {
                                          "type": "number"
                                        },
                                        "sold_tokens": {
                                          "type": "number"
                                        },
                                        "bag_pct": {
                                          "type": "number"
                                        },
                                        "supply_pct": {
                                          "type": "number"
                                        },
                                        "invested": {
                                          "type": "number"
                                        },
                                        "invested_usd": {
                                          "type": "number"
                                        },
                                        "max_single_buy": {
                                          "type": "number"
                                        },
                                        "buy_txn": {
                                          "type": "integer"
                                        },
                                        "sell_txn": {
                                          "type": "integer"
                                        },
                                        "sold_value": {
                                          "type": "number"
                                        },
                                        "sold_value_usd": {
                                          "type": "number"
                                        },
                                        "realized_pnl_sol": {
                                          "type": "number"
                                        },
                                        "realized_pnl_usd": {
                                          "type": "number"
                                        },
                                        "entry_market_cap": {
                                          "type": [
                                            "number",
                                            "null"
                                          ]
                                        },
                                        "entry_market_cap_usd": {
                                          "type": [
                                            "number",
                                            "null"
                                          ]
                                        },
                                        "unrealized_pnl_sol": {
                                          "type": [
                                            "number",
                                            "null"
                                          ],
                                          "description": "Unrealized PnL on the remaining bag (SOL). Null if market cap is missing."
                                        },
                                        "unrealized_pnl_usd": {
                                          "type": [
                                            "number",
                                            "null"
                                          ]
                                        },
                                        "unrealized_pnl_pct": {
                                          "type": [
                                            "number",
                                            "null"
                                          ]
                                        },
                                        "remaining_sol": {
                                          "type": [
                                            "number",
                                            "null"
                                          ]
                                        },
                                        "remaining_usd": {
                                          "type": [
                                            "number",
                                            "null"
                                          ]
                                        },
                                        "first_buy_at": {
                                          "type": "string"
                                        },
                                        "last_activity_at": {
                                          "type": "string"
                                        }
                                      },
                                      "additionalProperties": true
                                    }
                                  },
                                  "additionalProperties": true
                                }
                              }
                            },
                            "additionalProperties": true
                          }
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "blockchain": "solana",
                    "token": {
                      "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                      "symbol": "invisibull",
                      "name": "invisibull",
                      "supply": 1000000000,
                      "market_cap": 40.08,
                      "market_cap_usd": 3301.2,
                      "market_cap_currency": "SOL",
                      "price": 4.008e-08,
                      "price_usd": 3.3e-06,
                      "sol_price_usd": 82.36,
                      "pool": "pump",
                      "on_curve": true,
                      "bonding_curve_progress": 42.5
                    },
                    "bundles": [
                      {
                        "bundle_id": "bnd_7f3a2c",
                        "kol_wallet": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                        "kol_profile": {
                          "name": "Maze",
                          "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                          "twitter": "https://x.com/MazeCCC",
                          "telegram": "",
                          "blockchain": "solana",
                          "currency": "SOL",
                          "type": "kol"
                        },
                        "confidence": 0.92,
                        "jito_confirmed": true,
                        "proof_type": "same_block",
                        "slot": 301948220,
                        "wallet_count": 3,
                        "proof": "slot:301948220",
                        "verify_hint": "check same slot buys on solscan",
                        "detected_at": "2026-07-04T16:25:34Z",
                        "bundle_wallets": [
                          {
                            "address": "7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW",
                            "is_kol": true,
                            "transaction_type": "buy",
                            "signature": "5xr8abc...",
                            "entry_source": "at_discovery",
                            "position_source": "live",
                            "profile": {
                              "name": "Maze",
                              "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                              "twitter": "https://x.com/MazeCCC",
                              "telegram": "",
                              "blockchain": "solana",
                              "currency": "SOL",
                              "type": "kol"
                            },
                            "position": {
                              "held": 22113972.03,
                              "peak": 22113972.03,
                              "bought_tokens": 22113972.03,
                              "sold_tokens": 0.0,
                              "bag_pct": 100.0,
                              "supply_pct": 2.21,
                              "invested": 1.66,
                              "invested_usd": 137.44,
                              "max_single_buy": 1.66,
                              "buy_txn": 1,
                              "sell_txn": 0,
                              "sold_value": 0.0,
                              "sold_value_usd": 0.0,
                              "realized_pnl_sol": 0.0,
                              "realized_pnl_usd": 0.0,
                              "entry_market_cap": 44.6,
                              "entry_market_cap_usd": 3673.2,
                              "unrealized_pnl_sol": -0.099817,
                              "unrealized_pnl_usd": -8.22,
                              "unrealized_pnl_pct": -10.12,
                              "remaining_sol": 0.886537,
                              "remaining_usd": 73.02,
                              "first_buy_at": "2026-07-04T16:25:34Z",
                              "last_activity_at": "2026-07-04T16:40:10Z"
                            }
                          },
                          {
                            "address": "SideWa11etAbc123...",
                            "is_kol": false,
                            "transaction_type": "buy",
                            "signature": "9kp2def...",
                            "entry_source": "at_discovery",
                            "position_source": "live",
                            "profile": {
                              "name": "",
                              "image_url": "",
                              "twitter": "",
                              "telegram": "",
                              "blockchain": "solana",
                              "currency": "SOL",
                              "type": null
                            },
                            "fee_lamports": 5000,
                            "block_index": 4,
                            "adjacent_to_kol": true,
                            "same_fee": true,
                            "occurrences": 7,
                            "position": {
                              "held": 8000000.0,
                              "peak": 8000000.0,
                              "bought_tokens": 8000000.0,
                              "sold_tokens": 0.0,
                              "bag_pct": 100.0,
                              "supply_pct": 0.8,
                              "invested": 0.6,
                              "invested_usd": 49.4,
                              "max_single_buy": 0.6,
                              "buy_txn": 1,
                              "sell_txn": 0,
                              "sold_value": 0.0,
                              "sold_value_usd": 0.0,
                              "realized_pnl_sol": 0.0,
                              "realized_pnl_usd": 0.0,
                              "entry_market_cap": 44.6,
                              "entry_market_cap_usd": 3673.2,
                              "unrealized_pnl_sol": -0.036,
                              "unrealized_pnl_usd": -2.97,
                              "unrealized_pnl_pct": -10.12,
                              "remaining_sol": 0.32,
                              "remaining_usd": 26.4,
                              "first_buy_at": "2026-07-04T16:25:34Z",
                              "last_activity_at": "2026-07-04T16:25:34Z"
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/transactions/latest": {
      "get": {
        "operationId": "getLatestTransactions",
        "summary": "Latest transactions",
        "description": "The most recent transactions of tracked wallets for a chain and wallet type, newest first, each with trader profile and position after the trade. Optionally filter to a single token with mint, which adds a token block. Costs 10 credits per request.",
        "tags": [
          "Transactions"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/latest"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "Wallet category kol, smart or whale. Availability per chain. Solana has kol, smart, whale. BNB, Base and Robinhood Chain have kol, smart. ETH has kol.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "mint",
            "in": "query",
            "required": false,
            "description": "Optional token mint to filter the feed to a single token. Adds a token block.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of transactions to return.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "blockchain": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "mode": {
                          "type": "string",
                          "description": "latest."
                        },
                        "currency": {
                          "type": "string"
                        },
                        "count": {
                          "type": "integer",
                          "description": "Number of transactions returned."
                        },
                        "token": {
                          "type": "object",
                          "additionalProperties": true,
                          "description": "Only present when mint is passed. Token block with mint, token_name, blockchain, currency, token_supply, token_decimals."
                        },
                        "transactions": {
                          "type": "array",
                          "description": "Transactions, newest first.",
                          "items": {
                            "$ref": "#/components/schemas/FeedTransaction"
                          }
                        },
                        "pagination": {
                          "$ref": "#/components/schemas/Pagination"
                        }
                      },
                      "additionalProperties": true
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "blockchain": "solana",
                    "type": "kol",
                    "mode": "latest",
                    "currency": "SOL",
                    "count": 1,
                    "transactions": [
                      {
                        "tx_signature": "5xr8abc...",
                        "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                        "token_name": "invisibull",
                        "token_supply": 1000000000,
                        "token_decimals": 6,
                        "transaction_type": "buy",
                        "value": 1.66,
                        "value_usd": 137.44,
                        "currency": "SOL",
                        "token_amount": 22113972.03,
                        "price_per_token": 7.5e-08,
                        "price_per_token_usd": 6.2e-06,
                        "created_at": "2026-07-04 16:25:34",
                        "profile": {
                          "name": "Maze",
                          "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                          "twitter": "https://x.com/MazeCCC",
                          "telegram": "",
                          "blockchain": "solana",
                          "currency": "SOL",
                          "type": "kol"
                        },
                        "holdings_after": {
                          "token_amount": 22113972.03,
                          "token_amount_peak": 22113972.03,
                          "supply_pct": 2.211397,
                          "supply_pct_peak": 2.211397,
                          "bag_pct": 100.0,
                          "still_holding": true
                        }
                      }
                    ]
                  },
                  "pagination": {
                    "limit": 50,
                    "total": 1,
                    "has_more": false,
                    "next_cursor": null
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/transactions/timerange": {
      "get": {
        "operationId": "getTransactionsTimerange",
        "summary": "Transactions in a time window",
        "description": "Transactions of tracked wallets within a recent time window, newest first. The window is seconds plus minutes, summed; the maximum is 60 minutes, larger requests are capped and a warning is added. Costs 10 credits per request.",
        "tags": [
          "Transactions"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/timerange"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "Wallet category kol, smart or whale.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "seconds",
            "in": "query",
            "required": false,
            "description": "Seconds to look back. Combined with minutes.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "minutes",
            "in": "query",
            "required": false,
            "description": "Minutes to look back. Combined with seconds. Maximum total window is 60 minutes.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "mint",
            "in": "query",
            "required": false,
            "description": "Optional token mint to filter the window to a single token. Adds a token block.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of transactions to return.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "blockchain": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "mode": {
                          "type": "string",
                          "description": "timerange."
                        },
                        "currency": {
                          "type": "string"
                        },
                        "time_window_seconds": {
                          "type": "integer",
                          "description": "The effective window in seconds, after capping."
                        },
                        "count": {
                          "type": "integer",
                          "description": "Number of transactions in the window."
                        },
                        "token": {
                          "type": "object",
                          "additionalProperties": true,
                          "description": "Only present when mint is passed. Token block with mint, token_name, blockchain, currency, token_supply, token_decimals."
                        },
                        "transactions": {
                          "type": "array",
                          "description": "Same transaction shape as the Latest endpoint.",
                          "items": {
                            "$ref": "#/components/schemas/FeedTransaction"
                          }
                        },
                        "warnings": {
                          "type": "array",
                          "items": {},
                          "description": "Present only if the requested window exceeded the 60 minute maximum and was capped."
                        },
                        "pagination": {
                          "$ref": "#/components/schemas/Pagination"
                        }
                      },
                      "additionalProperties": true
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "blockchain": "solana",
                    "type": "kol",
                    "mode": "timerange",
                    "currency": "SOL",
                    "time_window_seconds": 300,
                    "count": 1,
                    "transactions": [
                      {
                        "tx_signature": "5xr8abc...",
                        "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                        "token_name": "invisibull",
                        "token_supply": 1000000000,
                        "token_decimals": 6,
                        "transaction_type": "buy",
                        "value": 1.66,
                        "value_usd": 137.44,
                        "currency": "SOL",
                        "token_amount": 22113972.03,
                        "price_per_token": 7.5e-08,
                        "price_per_token_usd": 6.2e-06,
                        "created_at": "2026-07-04 16:25:34",
                        "profile": {
                          "name": "Maze",
                          "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                          "twitter": "https://x.com/MazeCCC",
                          "telegram": "",
                          "blockchain": "solana",
                          "currency": "SOL",
                          "type": "kol"
                        },
                        "holdings_after": {
                          "token_amount": 22113972.03,
                          "token_amount_peak": 22113972.03,
                          "supply_pct": 2.211397,
                          "supply_pct_peak": 2.211397,
                          "bag_pct": 100.0,
                          "still_holding": true
                        }
                      }
                    ]
                  },
                  "pagination": {
                    "limit": 50,
                    "total": 1,
                    "has_more": false,
                    "next_cursor": null
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/transactions/count": {
      "get": {
        "operationId": "getTransactionCount",
        "summary": "Transaction count",
        "description": "Count how many transactions tracked wallets made within a time window (seconds, minutes and hours summed, up to 24 hours), optionally for a single token. Without a window you get the full available window. Costs 10 credits per request.",
        "tags": [
          "Transactions"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/count"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "Wallet category kol, smart or whale.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "seconds",
            "in": "query",
            "required": false,
            "description": "Seconds to look back. Combined with minutes and hours.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "minutes",
            "in": "query",
            "required": false,
            "description": "Minutes to look back.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "description": "Hours to look back. Maximum total window is 24 hours.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "mint",
            "in": "query",
            "required": false,
            "description": "Optional token mint to count only that token transactions.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "blockchain": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "mode": {
                          "type": "string",
                          "description": "count."
                        },
                        "count": {
                          "type": "integer",
                          "description": "Number of transactions in the window."
                        },
                        "time_window_seconds": {
                          "type": "integer",
                          "description": "The effective window in seconds, after capping."
                        },
                        "mint": {
                          "type": "string",
                          "description": "Present only when a mint filter was passed."
                        },
                        "warnings": {
                          "type": "array",
                          "items": {},
                          "description": "Present only if the requested window exceeded the 24 hour maximum and was capped."
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "blockchain": "solana",
                    "type": "kol",
                    "mode": "count",
                    "count": 128,
                    "time_window_seconds": 3600
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/transactions/volume": {
      "get": {
        "operationId": "getTransactionVolume",
        "summary": "Transaction volume",
        "description": "Total trading volume of tracked wallets within a time window (seconds, minutes and hours summed, up to 24 hours), in native currency and USD, optionally for a single token. Costs 10 credits per request.",
        "tags": [
          "Transactions"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/volume"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "Wallet category kol, smart or whale.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "seconds",
            "in": "query",
            "required": false,
            "description": "Seconds to look back. Combined with minutes and hours.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "minutes",
            "in": "query",
            "required": false,
            "description": "Minutes to look back.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "description": "Hours to look back. Maximum total window is 24 hours.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "mint",
            "in": "query",
            "required": false,
            "description": "Optional token mint to measure only that token volume.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "blockchain": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "mode": {
                          "type": "string",
                          "description": "volume."
                        },
                        "volume": {
                          "type": "number",
                          "description": "Total traded volume in the window (native currency)."
                        },
                        "volume_usd": {
                          "type": [
                            "number",
                            "null"
                          ],
                          "description": "Total traded volume in USD, or null if no USD value could be derived."
                        },
                        "currency": {
                          "type": "string"
                        },
                        "time_window_seconds": {
                          "type": "integer",
                          "description": "The effective window in seconds, after capping."
                        },
                        "mint": {
                          "type": "string",
                          "description": "Present only when a mint filter was passed."
                        },
                        "warnings": {
                          "type": "array",
                          "items": {},
                          "description": "Present only if the requested window exceeded the 24 hour maximum and was capped."
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "blockchain": "solana",
                    "type": "kol",
                    "mode": "volume",
                    "volume": 842.5,
                    "volume_usd": 69388.6,
                    "currency": "SOL",
                    "time_window_seconds": 3600
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/signals": {
      "get": {
        "operationId": "getSignals",
        "summary": "Live signals",
        "description": "Live trade signals derived from tracked wallet activity in a recent window. cluster mode surfaces tokens where several tracked wallets are buying at once; entry and exit return individual buy and sell events in the transactions feed shape (with holdings_after). The documented response schema describes cluster mode. Costs 10 credits per request.",
        "tags": [
          "Signals"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/signals"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "Wallet category kol, smart or whale.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": true,
            "description": "Signal mode. One of cluster, entry, exit.",
            "schema": {
              "type": "string",
              "enum": [
                "cluster",
                "entry",
                "exit"
              ]
            }
          },
          {
            "name": "min_wallets",
            "in": "query",
            "required": false,
            "description": "cluster mode. Minimum number of wallets buying the same token to form a cluster.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "min_value",
            "in": "query",
            "required": false,
            "description": "Minimum trade value to consider (native).",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "description": "Time window in hours to look back for signals.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of signals to return.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "blockchain": {
                          "type": "string"
                        },
                        "wallet_types": {
                          "type": "array",
                          "items": {},
                          "description": "The wallet types included."
                        },
                        "currency": {
                          "type": "string"
                        },
                        "filters": {
                          "type": "object",
                          "additionalProperties": true,
                          "description": "The applied filters (min_win_rate, include_wallets, exclude_wallets, min_token_age_hours, max_token_age_hours)."
                        },
                        "signals": {
                          "type": "array",
                          "description": "Signals. Item shape shown is for cluster mode.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "token": {
                                "type": "object",
                                "additionalProperties": true,
                                "description": "Token block (mint, token_name, blockchain, currency, token_supply, token_decimals)."
                              },
                              "signal_type": {
                                "type": "string",
                                "description": "cluster."
                              },
                              "signal_strength": {
                                "type": "string",
                                "description": "strong or medium, based on how many wallets qualified."
                              },
                              "currency": {
                                "type": "string"
                              },
                              "gate": {
                                "type": "object",
                                "additionalProperties": true,
                                "description": "Whether the gate was met and the thresholds used."
                              },
                              "window": {
                                "type": "object",
                                "properties": {
                                  "hours": {
                                    "type": "number"
                                  },
                                  "wallet_count": {
                                    "type": "integer"
                                  },
                                  "by_type": {
                                    "type": "object",
                                    "additionalProperties": true,
                                    "description": "Wallet counts split by type."
                                  },
                                  "total_invested": {
                                    "type": "number"
                                  },
                                  "total_invested_usd": {
                                    "type": "number"
                                  },
                                  "first_buy_at": {
                                    "type": "string"
                                  },
                                  "latest_buy_at": {
                                    "type": "string"
                                  },
                                  "time_span_minutes": {
                                    "type": "number"
                                  }
                                },
                                "additionalProperties": true
                              },
                              "token_stats": {
                                "type": "object",
                                "additionalProperties": true,
                                "description": "Whole history token stats (total_buyers, still_holding_count, active_count, total_volume, total_volume_usd, net_flow, holders_by_type, first_entry_time)."
                              },
                              "wallets": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "profile": {
                                      "$ref": "#/components/schemas/Profile"
                                    },
                                    "wallet_type": {
                                      "type": "string"
                                    },
                                    "win_rate": {
                                      "type": [
                                        "number",
                                        "null"
                                      ],
                                      "description": "Lifetime win rate, only when min_win_rate was requested, otherwise null."
                                    },
                                    "window_invested": {
                                      "type": "number"
                                    },
                                    "window_invested_usd": {
                                      "type": "number"
                                    },
                                    "window_buy_txn": {
                                      "type": "integer"
                                    },
                                    "window_sell_txn": {
                                      "type": "integer"
                                    },
                                    "sold_in_window": {
                                      "type": "boolean"
                                    },
                                    "bought_at": {
                                      "type": "string"
                                    },
                                    "realized_pnl": {
                                      "type": "number"
                                    },
                                    "realized_pnl_usd": {
                                      "type": "number"
                                    },
                                    "realized_pnl_percentage": {
                                      "type": "number"
                                    },
                                    "bag_pct": {
                                      "type": "number"
                                    },
                                    "supply_pct": {
                                      "type": "number"
                                    },
                                    "still_holding": {
                                      "type": "boolean"
                                    },
                                    "is_active": {
                                      "type": "boolean",
                                      "description": "True when bag_pct is above 1 percent."
                                    }
                                  },
                                  "additionalProperties": true
                                }
                              }
                            },
                            "additionalProperties": true
                          }
                        },
                        "pagination": {
                          "$ref": "#/components/schemas/Pagination"
                        }
                      },
                      "additionalProperties": true
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "blockchain": "solana",
                    "wallet_types": [
                      "kol"
                    ],
                    "currency": "SOL",
                    "filters": {
                      "min_win_rate": null,
                      "include_wallets": null,
                      "exclude_wallets": null,
                      "min_token_age_hours": null,
                      "max_token_age_hours": null
                    },
                    "signals": [
                      {
                        "token": {
                          "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                          "token_name": "invisibull",
                          "blockchain": "solana",
                          "currency": "SOL",
                          "token_supply": 1000000000,
                          "token_decimals": 6
                        },
                        "signal_type": "cluster",
                        "signal_strength": "strong",
                        "currency": "SOL",
                        "gate": {
                          "met": true,
                          "wallet_types": [
                            "kol"
                          ],
                          "thresholds": {
                            "kol": 3
                          }
                        },
                        "window": {
                          "hours": 1,
                          "wallet_count": 5,
                          "by_type": {
                            "kol": 5
                          },
                          "total_invested": 12.4,
                          "total_invested_usd": 1021.4,
                          "first_buy_at": "2026-07-06T10:20:00Z",
                          "latest_buy_at": "2026-07-06T10:52:00Z",
                          "time_span_minutes": 32.0
                        },
                        "token_stats": {
                          "total_buyers": 12,
                          "still_holding_count": 8,
                          "active_count": 7,
                          "total_volume": 44.6,
                          "total_volume_usd": 3673.2,
                          "net_flow": 30.1,
                          "holders_by_type": {
                            "kol_count": 5,
                            "smart_count": 0,
                            "whale_count": 0
                          },
                          "first_entry_time": "2026-07-06T09:58:00Z"
                        },
                        "wallets": [
                          {
                            "profile": {
                              "name": "Maze",
                              "image_url": "https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png",
                              "twitter": "https://x.com/MazeCCC",
                              "telegram": "",
                              "blockchain": "solana",
                              "currency": "SOL",
                              "type": "kol"
                            },
                            "wallet_type": "kol",
                            "win_rate": null,
                            "window_invested": 3.2,
                            "window_invested_usd": 263.6,
                            "window_buy_txn": 1,
                            "window_sell_txn": 0,
                            "sold_in_window": false,
                            "bought_at": "2026-07-06T10:20:00Z",
                            "realized_pnl": 0.0,
                            "realized_pnl_usd": 0.0,
                            "realized_pnl_percentage": 0.0,
                            "bag_pct": 100.0,
                            "supply_pct": 0.32,
                            "still_holding": true,
                            "is_active": true
                          }
                        ]
                      }
                    ]
                  },
                  "pagination": {
                    "limit": 50,
                    "total": 1,
                    "has_more": false,
                    "next_cursor": null
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/signals/history": {
      "get": {
        "operationId": "getSignalsHistory",
        "summary": "Signals history",
        "description": "Historical cluster signals that would have fired on past days, for backtesting a cluster strategy. Each entry carries the token, how many wallets clustered, how much they invested, the day and triggered_at. Costs 10 credits per request.",
        "tags": [
          "Signals"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/signals-history"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "Wallet category kol, smart or whale.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "description": "How many past days to include.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of signals to return.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "blockchain": {
                          "type": "string"
                        },
                        "wallet_types": {
                          "type": "array",
                          "items": {},
                          "description": "The wallet types included."
                        },
                        "days": {
                          "type": "integer",
                          "description": "The number of past days included."
                        },
                        "filters": {
                          "type": "object",
                          "additionalProperties": true,
                          "description": "Applied filters (min_win_rate, include_wallets, exclude_wallets)."
                        },
                        "signals": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "mint": {
                                "type": "string"
                              },
                              "token_name": {
                                "type": "string"
                              },
                              "token_supply": {
                                "type": "number"
                              },
                              "signal_type": {
                                "type": "string",
                                "description": "cluster."
                              },
                              "signal_strength": {
                                "type": "string",
                                "description": "strong or medium."
                              },
                              "wallet_count": {
                                "type": "integer"
                              },
                              "by_type": {
                                "type": "object",
                                "additionalProperties": true,
                                "description": "Wallet counts split by type."
                              },
                              "total_invested": {
                                "type": "number"
                              },
                              "total_invested_usd": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "description": "Total invested in USD, or null if no price was available."
                              },
                              "currency": {
                                "type": "string"
                              },
                              "triggered_at": {
                                "type": "string",
                                "description": "When the first buy of the cluster happened."
                              },
                              "day": {
                                "type": "string",
                                "description": "The day this signal belongs to."
                              },
                              "window": {
                                "type": "string",
                                "description": "The aggregation window, 1d."
                              },
                              "would_have_fired": {
                                "type": "boolean",
                                "description": "Whether the signal would have fired under the thresholds."
                              }
                            },
                            "additionalProperties": true
                          }
                        }
                      },
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "blockchain": "solana",
                    "wallet_types": [
                      "kol"
                    ],
                    "days": 7,
                    "filters": {
                      "min_win_rate": null,
                      "include_wallets": null,
                      "exclude_wallets": null
                    },
                    "signals": [
                      {
                        "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                        "token_name": "invisibull",
                        "token_supply": 1000000000,
                        "signal_type": "cluster",
                        "signal_strength": "strong",
                        "wallet_count": 5,
                        "by_type": {
                          "kol": 5
                        },
                        "total_invested": 12.4,
                        "total_invested_usd": 1021.4,
                        "currency": "SOL",
                        "triggered_at": "2026-07-04T16:25:34Z",
                        "day": "2026-07-04",
                        "window": "1d",
                        "would_have_fired": true
                      }
                    ]
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/analytics": {
      "get": {
        "operationId": "getAnalytics",
        "summary": "Aggregate analytics",
        "description": "Aggregate analytics over tracked wallets for a period. All modes share the wrapper (mode, blockchain, type, period, currency); most_traded and top_performers put items in a data array, volume_trend returns time bucketed volume points in the data array, and win_rate returns summary fields directly in the wrapper. Costs 10 credits per request.",
        "tags": [
          "Analytics"
        ],
        "externalDocs": {
          "url": "https://docs.cabalspy.xyz/analytics"
        },
        "parameters": [
          {
            "name": "blockchain",
            "in": "query",
            "required": true,
            "description": "Chain. One of solana, bnb, base, eth.",
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "bnb",
                "base",
                "eth",
                "rh"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "Wallet category kol, smart or whale.",
            "schema": {
              "type": "string",
              "enum": [
                "kol",
                "smart",
                "whale"
              ]
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": true,
            "description": "Analytics view. One of most_traded, top_performers, win_rate, volume_trend.",
            "schema": {
              "type": "string",
              "enum": [
                "most_traded",
                "top_performers",
                "win_rate",
                "volume_trend"
              ]
            }
          },
          {
            "name": "period",
            "in": "query",
            "required": true,
            "description": "Aggregation window, one of 6h, 1d, 7d or 30d.",
            "schema": {
              "type": "string",
              "enum": [
                "6h",
                "1d",
                "7d",
                "30d"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return, for list modes.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "True on success."
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "mode": {
                          "type": "string",
                          "description": "The requested mode."
                        },
                        "blockchain": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "period": {
                          "type": "string"
                        },
                        "currency": {
                          "type": "string"
                        },
                        "data": {
                          "type": "array",
                          "description": "Present for most_traded, top_performers and volume_trend. most_traded items carry rank, mint, token_name, wallet_count, total_volume, total_buy, total_sell, net_flow, buying_pressure, currency, first_buy_at. top_performers items carry profile and period_stats. volume_trend items are time bucketed volume points.",
                          "items": {
                            "type": "object",
                            "additionalProperties": true
                          }
                        },
                        "total_wallets": {
                          "type": "integer",
                          "description": "win_rate mode. Total wallets considered."
                        },
                        "wallets_with_trades": {
                          "type": "integer",
                          "description": "win_rate mode. Wallets that traded in the period."
                        },
                        "win_count": {
                          "type": "integer",
                          "description": "win_rate mode. Winning closed positions."
                        },
                        "closed_count": {
                          "type": "integer",
                          "description": "win_rate mode. Total closed positions."
                        },
                        "win_rate_percentage": {
                          "type": "number",
                          "description": "win_rate mode. Win rate as a percentage."
                        },
                        "distribution": {
                          "$ref": "#/components/schemas/WinRateBuckets"
                        }
                      },
                      "additionalProperties": true
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "success": true,
                  "data": {
                    "mode": "most_traded",
                    "blockchain": "solana",
                    "type": "kol",
                    "period": "7d",
                    "currency": "SOL",
                    "data": [
                      {
                        "rank": 1,
                        "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
                        "token_name": "invisibull",
                        "wallet_count": 12,
                        "total_volume": 312.5,
                        "total_buy": 180.25,
                        "total_sell": 132.25,
                        "net_flow": 48.0,
                        "buying_pressure": 57.6,
                        "currency": "SOL",
                        "first_buy_at": "2026-07-01T09:58:00Z"
                      }
                    ]
                  },
                  "pagination": {
                    "limit": 20,
                    "total": 1,
                    "has_more": false,
                    "next_cursor": null
                  },
                  "meta": {
                    "request_id": "req_5162c7cf7f87",
                    "cached": false,
                    "cache_age_seconds": 0,
                    "version": "1.0.0",
                    "timestamp": "2026-07-06T11:01:57Z"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyQuery": {
        "type": "apiKey",
        "in": "query",
        "name": "api_key",
        "description": "Your API key as the api_key query parameter."
      },
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Your API key as an Authorization Bearer header."
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Bad request. Code missing_parameter (a required parameter is missing) or invalid_parameter (a parameter is missing or has an invalid value, for example a chain and wallet type combination that does not exist such as eth with whale).",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Code unauthorized. API key missing.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Forbidden": {
        "description": "Code forbidden. API key invalid or credits exhausted.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "NotFound": {
        "description": "Code not_found. The wallet is not tracked by CabalSpy.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "RateLimited": {
        "description": "Code rate_limited. Rate limit exceeded (the plan's requests-per-second limit), wait and retry.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    },
    "schemas": {
      "Meta": {
        "type": "object",
        "description": "Request metadata returned with every response.",
        "properties": {
          "request_id": {
            "type": "string"
          },
          "cached": {
            "type": "boolean"
          },
          "cache_age_seconds": {
            "type": "integer"
          },
          "version": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "additionalProperties": true
      },
      "Pagination": {
        "type": "object",
        "description": "Standard pagination object. Depending on the endpoint it appears inside data or next to data at the top level of the response.",
        "properties": {
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Requested page size (null means all)."
          },
          "total": {
            "type": "integer",
            "description": "Total number of items."
          },
          "has_more": {
            "type": "boolean",
            "description": "Whether more pages follow."
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cursor for the next page (null means end)."
          }
        },
        "additionalProperties": true
      },
      "Profile": {
        "type": "object",
        "description": "Wallet profile.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Display name (may be empty)."
          },
          "image_url": {
            "type": "string",
            "description": "Avatar URL."
          },
          "twitter": {
            "type": "string",
            "description": "Twitter or X link."
          },
          "telegram": {
            "type": "string",
            "description": "Telegram link."
          },
          "blockchain": {
            "type": "string",
            "description": "Chain."
          },
          "currency": {
            "type": "string",
            "description": "Native currency."
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Wallet type kol, smart or whale."
          }
        },
        "additionalProperties": true
      },
      "Token": {
        "type": "object",
        "description": "Token block.",
        "properties": {
          "mint": {
            "type": "string",
            "description": "Token mint or contract address."
          },
          "token_name": {
            "type": "string",
            "description": "Token name."
          },
          "blockchain": {
            "type": "string",
            "description": "Chain."
          },
          "currency": {
            "type": "string",
            "description": "Native currency."
          },
          "token_supply": {
            "type": "number",
            "description": "Total supply."
          },
          "token_decimals": {
            "type": "integer",
            "description": "Token decimals."
          },
          "market_cap": {
            "type": [
              "number",
              "null"
            ],
            "description": "Current market cap in native currency. Solana only, null otherwise."
          },
          "market_cap_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Current market cap in USD. Solana only, null otherwise."
          },
          "market_cap_currency": {
            "type": [
              "string",
              "null"
            ],
            "description": "Currency of the market cap value (SOL), or null."
          },
          "price": {
            "type": [
              "number",
              "null"
            ],
            "description": "Current token price in native currency. Solana only."
          },
          "price_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Current token price in USD. Solana only."
          },
          "sol_price_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "SOL price in USD used for USD conversions. Solana only."
          }
        },
        "additionalProperties": true
      },
      "TotalHolders": {
        "type": "object",
        "description": "Holder totals by wallet type.",
        "properties": {
          "kol_count": {
            "type": "integer"
          },
          "smart_count": {
            "type": "integer"
          },
          "whale_count": {
            "type": "integer"
          },
          "still_holding_count": {
            "type": "integer"
          }
        },
        "additionalProperties": true
      },
      "HoldingsAfter": {
        "type": "object",
        "description": "Holder position right after a trade.",
        "properties": {
          "token_amount": {
            "type": "number"
          },
          "token_amount_peak": {
            "type": "number"
          },
          "supply_pct": {
            "type": "number"
          },
          "supply_pct_peak": {
            "type": "number"
          },
          "bag_pct": {
            "type": "number"
          },
          "still_holding": {
            "type": "boolean"
          }
        },
        "additionalProperties": true
      },
      "Position": {
        "type": "object",
        "description": "Live position of a wallet in a token.",
        "properties": {
          "token_amount": {
            "type": "number",
            "description": "Tokens currently held."
          },
          "token_amount_peak": {
            "type": "number",
            "description": "Peak tokens held."
          },
          "supply_pct": {
            "type": "number",
            "description": "Percent of supply held."
          },
          "supply_pct_peak": {
            "type": "number",
            "description": "Peak percent of supply held."
          },
          "bag_pct": {
            "type": "number",
            "description": "Percent of peak holding still held."
          },
          "still_holding": {
            "type": "boolean",
            "description": "Whether the wallet still holds."
          },
          "unrealized_pnl_sol": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unrealized PnL on the remaining bag (native). Solana only. Frozen to 0 once fully sold."
          },
          "unrealized_pnl_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unrealized PnL in USD. Solana only."
          },
          "unrealized_pnl_pct": {
            "type": [
              "number",
              "null"
            ],
            "description": "Unrealized PnL percentage. Solana only."
          },
          "remaining_sol": {
            "type": [
              "number",
              "null"
            ],
            "description": "Current value of the remaining bag (native). Solana only."
          },
          "remaining_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Current value of the remaining bag in USD. Solana only."
          },
          "entry_market_cap": {
            "type": [
              "number",
              "null"
            ],
            "description": "Market cap in SOL when the wallet first bought, frozen. Solana only, null for older positions."
          },
          "entry_market_cap_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Entry market cap in USD, frozen at buy time. Solana only, null for older positions."
          }
        },
        "additionalProperties": true
      },
      "FeedTransaction": {
        "type": "object",
        "description": "A single buy or sell of a tracked wallet.",
        "properties": {
          "tx_signature": {
            "type": "string",
            "description": "Transaction signature."
          },
          "mint": {
            "type": "string",
            "description": "Token mint."
          },
          "token_name": {
            "type": "string",
            "description": "Token name or symbol."
          },
          "token_supply": {
            "type": "number",
            "description": "Total supply."
          },
          "token_decimals": {
            "type": "integer",
            "description": "Token decimals."
          },
          "transaction_type": {
            "type": "string",
            "description": "buy or sell."
          },
          "value": {
            "type": "number",
            "description": "Trade value (native)."
          },
          "value_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Trade value in USD."
          },
          "currency": {
            "type": "string",
            "description": "Native currency."
          },
          "token_amount": {
            "type": "number",
            "description": "Number of tokens in the trade."
          },
          "price_per_token": {
            "type": "number",
            "description": "Price per token (native)."
          },
          "price_per_token_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Price per token in USD."
          },
          "created_at": {
            "type": "string",
            "description": "Timestamp of the trade."
          },
          "profile": {
            "$ref": "#/components/schemas/Profile"
          },
          "holdings_after": {
            "$ref": "#/components/schemas/HoldingsAfter"
          }
        },
        "additionalProperties": true
      },
      "WinRateBuckets": {
        "type": "object",
        "description": "Profit buckets.",
        "properties": {
          "above_500": {
            "type": "integer",
            "description": "Positions with more than 500 percent gain."
          },
          "above_100_to_500": {
            "type": "integer",
            "description": "Positions with 100 to 500 percent gain."
          },
          "above_zero_to_100": {
            "type": "integer",
            "description": "Positions with 0 to 100 percent gain."
          },
          "below_zero": {
            "type": "integer",
            "description": "Losing positions."
          }
        },
        "additionalProperties": true
      },
      "Error": {
        "type": "object",
        "description": "Error response. The documentation specifies the HTTP status and an error code (missing_parameter, invalid_parameter, unauthorized, forbidden, not_found, rate_limited) but not the exact body layout, so no fields are asserted here.",
        "additionalProperties": true
      }
    }
  }
}