Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: CabalSpy Transactions 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.
Wallet type availability per chain: Solana has kol, smart, whale. BNB, Base and Robinhood Chain have kol, smart. ETH has kol.
Authentication: 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/.
Credits: 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.
Rate 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.
Responses share an envelope: success, data, meta (request_id, cached, cache_age_seconds, version, timestamp) and, on some endpoints, pagination.
Real-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
servers:
- url: https://api.cabalspy.xyz/v1
security:
- ApiKeyQuery: []
- BearerAuth: []
tags:
- name: Transactions
description: Live trade feed, time windows, counts and volume.
paths:
/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'
components:
schemas:
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
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
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
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
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
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
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'
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'
Forbidden:
description: Code forbidden. API key invalid or credits exhausted.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Code unauthorized. API key missing.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
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.
externalDocs:
description: CabalSpy API documentation
url: https://docs.cabalspy.xyz/