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

# Transactions

> The individual buy and sell transactions of tracked wallets on one token, newest first, each with the holder position after the trade.

The individual buy and sell transactions of tracked wallets on one token, newest first. Each entry carries the trader profile, the trade value and token amount, and the holder position after that trade, so you can replay how positions built up or unwound.

Use it to render a live trade tape for a token, the scrolling feed of who bought or sold and when. The token block carries the current market cap.

<Tip>
  These are individual events, not positions, so they do not carry unrealized PnL. Each transaction includes holdings\_after, the holder bag right after that trade. The list is newest first and paginated with limit. Current market cap in the token block is Solana only.
</Tip>

## Query Parameters

<ParamField query="blockchain" type="string" required>
  Chain of the token. One of solana, bnb, base, eth.
</ParamField>

<ParamField query="mint" type="string" required>
  The token mint or contract address.
</ParamField>

<ParamField query="type" type="string">
  Optional wallet category kol, smart or whale. Omit to include all categories.
</ParamField>

<ParamField query="limit" type="integer">
  Maximum number of transactions to return.
</ParamField>

<ParamField query="api_key" type="string" required>
  Your API key. Alternatively pass it as an Authorization Bearer header.
</ParamField>

## Usage Example

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.cabalspy.xyz/v1/tokens/transactions?blockchain=solana&mint=3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump&limit=50&api_key=YOUR_KEY"
  ```

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

  params = {
      "blockchain": "solana",
      "mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
      "limit": 50, "api_key": "YOUR_KEY",
  }
  r = requests.get("https://api.cabalspy.xyz/v1/tokens/transactions", params=params)
  d = r.json()["data"]

  for tx in d["transactions"]:
      print(tx["created_at"], tx["transaction_type"], tx["profile"]["name"], tx["value"])
  ```

  ```javascript JavaScript theme={null}
  const p = new URLSearchParams({
    blockchain: "solana",
    mint: "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
    limit: "50", api_key: "YOUR_KEY",
  });
  const res = await fetch(`https://api.cabalspy.xyz/v1/tokens/transactions?${p}`);
  const { data } = await res.json();
  data.transactions.forEach(tx =>
    console.log(tx.created_at, tx.transaction_type, tx.value));
  ```
</CodeGroup>

## Response

<ResponseField name="success" type="boolean">
  True on success.
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="data">
    <ResponseField name="token" type="object">
      <Expandable title="token">
        <ResponseField name="mint" type="string">
          Token mint or contract address.
        </ResponseField>

        <ResponseField name="token_name" type="string">
          Token name.
        </ResponseField>

        <ResponseField name="blockchain" type="string">
          Chain.
        </ResponseField>

        <ResponseField name="currency" type="string">
          Native currency.
        </ResponseField>

        <ResponseField name="token_supply" type="number">
          Total supply.
        </ResponseField>

        <ResponseField name="token_decimals" type="integer">
          Token decimals.
        </ResponseField>

        <ResponseField name="market_cap" type="number">
          Current market cap in native currency. Solana only, null otherwise.
        </ResponseField>

        <ResponseField name="market_cap_usd" type="number">
          Current market cap in USD. Solana only, null otherwise.
        </ResponseField>

        <ResponseField name="market_cap_currency" type="string">
          Currency of the market cap value (SOL), or null.
        </ResponseField>

        <ResponseField name="price" type="number">
          Current token price in native currency. Solana only.
        </ResponseField>

        <ResponseField name="price_usd" type="number">
          Current token price in USD. Solana only.
        </ResponseField>

        <ResponseField name="sol_price_usd" type="number">
          SOL price in USD used for USD conversions. Solana only.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="transactions" type="array">
      <Expandable title="transaction, newest first">
        <ResponseField name="tx_signature" type="string">
          Transaction signature.
        </ResponseField>

        <ResponseField name="transaction_type" type="string">
          buy or sell.
        </ResponseField>

        <ResponseField name="value" type="number">
          Trade value (native).
        </ResponseField>

        <ResponseField name="value_usd" type="number">
          Trade value in USD.
        </ResponseField>

        <ResponseField name="currency" type="string">
          Native currency.
        </ResponseField>

        <ResponseField name="token_amount" type="number">
          Number of tokens in the trade.
        </ResponseField>

        <ResponseField name="price_per_token" type="number">
          Price per token (native).
        </ResponseField>

        <ResponseField name="price_per_token_usd" type="number">
          Price per token in USD.
        </ResponseField>

        <ResponseField name="created_at" type="string">
          ISO timestamp of the trade.
        </ResponseField>

        <ResponseField name="profile" type="object">
          Wallet profile of the trader (name, image\_url, twitter, telegram, blockchain, currency, type).
        </ResponseField>

        <ResponseField name="holdings_after" type="object">
          <Expandable title="holdings_after">
            <ResponseField name="token_amount" type="number">
              Tokens held right after this trade.
            </ResponseField>

            <ResponseField name="token_amount_peak" type="number">
              Peak tokens held.
            </ResponseField>

            <ResponseField name="supply_pct" type="number">
              Percent of supply held after this trade.
            </ResponseField>

            <ResponseField name="supply_pct_peak" type="number">
              Peak percent of supply held.
            </ResponseField>

            <ResponseField name="bag_pct" type="number">
              Percent of peak holding still held after this trade.
            </ResponseField>

            <ResponseField name="still_holding" type="boolean">
              Whether the wallet still holds after this trade.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="pagination" type="object">
      <Expandable title="pagination">
        <ResponseField name="limit" type="integer">
          Transactions per page.
        </ResponseField>

        <ResponseField name="total" type="integer">
          Total transactions.
        </ResponseField>

        <ResponseField name="has_more" type="boolean">
          Whether more pages follow.
        </ResponseField>

        <ResponseField name="next_cursor" type="string">
          Cursor for the next page (null means end).
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json Response theme={null}
  {
    "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-8,
        "price_usd": 3.3e-6,
        "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-8,
          "price_per_token_usd": 6.2e-6,
          "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"
    }
  }
  ```
</ResponseExample>

## Errors

| Status | Code               | Meaning                               |
| ------ | ------------------ | ------------------------------------- |
| 400    | missing\_parameter | mint is missing.                      |
| 400    | invalid\_parameter | blockchain or type invalid.           |
| 401    | unauthorized       | API key missing.                      |
| 403    | forbidden          | API key invalid or credits exhausted. |
| 429    | rate\_limited      | Rate limit exceeded.                  |
