openapi: 3.0.0
info:
title: Arkham Intel Analytics Token API
version: 1.1.0
tags:
- name: Token
paths:
/token/addresses/{id}:
get:
summary: Get chain addresses for a token
description: Returns all known chain/address pairs for a token identified by its pricing ID.
operationId: GetTokenAddresses
parameters:
- name: id
in: path
description: The CoinGecko pricing ID of the token.
required: true
schema:
type: string
description: The CoinGecko pricing ID of the token.
example: usd-coin
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
additionalProperties:
type: string
nullable: true
example: abc123
example:
base: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
ethereum: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
solana: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
'400':
description: Bad Request
'500':
description: Internal Server Error
tags:
- Token
/token/arkham_exchange_tokens:
get:
summary: Get Arkham Exchange tokens
description: Returns the tokens listed on Arkham Exchange, split into `spotTokens` and `perpTokens` arrays. Each entry identifies a token by its CoinGecko pricing ID.
operationId: GetArkhamExchangeTokens
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ArkhamTokensResponse'
example:
perpTokens:
- identifier:
pricingID: ethereum
- identifier:
pricingID: solana
spotTokens:
- identifier:
pricingID: bitcoin
- identifier:
pricingID: ethereum
'500':
description: Internal Server Error
tags:
- Token
/token/balance/{chain}/{address}:
get:
summary: Get token balance for an entity or address, for a specific chain/address
description: Returns the balance of a specific token contract (identified by the `chain` and `address` path params) held by an entity or address. The `address` query param is the holder wallet(s); the path `address` is the token contract.
operationId: GetTokenBalanceOfByChainAddress
parameters:
- name: entityID
in: query
description: Entity ID to query the balance for. Provide either entityID or address; if both are given, address takes precedence and entityID is ignored. If neither is given, the balance is 0.
schema:
type: string
description: Entity ID to query the balance for. Provide either entityID or address; if both are given, address takes precedence and entityID is ignored. If neither is given, the balance is 0.
example: binance
- name: address
in: query
description: Addresses to query the balance for, passed as a single comma-separated string, e.g. '0x28C6…,0x21a3…' (not a JSON array). Takes precedence over entityID when both are provided; if neither is given, the balance is 0.
schema:
type: string
description: Addresses to query the balance for, passed as a single comma-separated string, e.g. '0x28C6…,0x21a3…' (not a JSON array). Takes precedence over entityID when both are provided; if neither is given, the balance is 0.
example: '0x28C6c06298d514Db089934071355E5743bf21d60'
- name: chain
in: path
description: Blockchain network where the token is deployed.
required: true
schema:
$ref: '#/components/schemas/Chain'
- name: address
in: path
description: The token contract address.
required: true
schema:
type: string
description: The token contract address.
example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TokenBalance'
'400':
description: Bad Request
'500':
description: Internal Server Error
tags:
- Token
/token/balance/{id}:
get:
summary: Get token balance (all chains) for an entity or address
description: Returns the aggregated token balance for either an entity or address, across all chains.
operationId: GetTokenBalanceOfByID
parameters:
- name: entityID
in: query
description: Entity ID to query the balance for. Provide either entityID or address; if both are given, address takes precedence and entityID is ignored. If neither is given, the balance is 0.
schema:
type: string
description: Entity ID to query the balance for. Provide either entityID or address; if both are given, address takes precedence and entityID is ignored. If neither is given, the balance is 0.
example: binance
- name: address
in: query
description: Addresses to query the balance for, passed as a single comma-separated string, e.g. '0x28C6…,0x21a3…' (not a JSON array). Takes precedence over entityID when both are provided; if neither is given, the balance is 0.
schema:
type: string
description: Addresses to query the balance for, passed as a single comma-separated string, e.g. '0x28C6…,0x21a3…' (not a JSON array). Takes precedence over entityID when both are provided; if neither is given, the balance is 0.
example: '0x28C6c06298d514Db089934071355E5743bf21d60'
- name: id
in: path
description: The CoinGecko pricing ID of the token.
required: true
schema:
type: string
description: The CoinGecko pricing ID of the token.
example: usd-coin
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TokenBalance'
'400':
description: Bad Request
'500':
description: Internal Server Error
tags:
- Token
/token/holders/{chain}/{address}:
get:
summary: Get top token holders by chain and address
description: 'Returns the top token holders for a specific token contract on a given chain. Results are sorted by balance in descending order.
Only chains with token contracts (EVM chains, Solana, Tron) are supported here. For UTXO assets like Bitcoin, use the pricing-ID form (/token/holders/{id}).
**Response fields:**
- **token**: Token metadata (name, symbol, pricing info).
- **totalSupply**: Total supply for the chain.
- **addressTopHolders**: Top holders by individual address.
- **entityTopHolders**: Top holders grouped by entity (only present when groupByEntity=true).
**Note:** Entity objects in the response do not include `populatedTags`. Use `GET /intelligence/entity/{id}` to retrieve tags for individual entities.'
operationId: GetTopTokenHoldersByChainAddress
parameters:
- name: groupByEntity
in: query
description: If 'true', groups holdings by entity rather than individual addresses.
schema:
type: string
description: If 'true', groups holdings by entity rather than individual addresses.
example: 'true'
- name: limit
in: query
description: Maximum number of holders to return per page (default 100, max 100). offset + limit must not exceed 1000.
schema:
type: integer
description: Maximum number of holders to return per page (default 100, max 100). offset + limit must not exceed 1000.
example: 100
- name: offset
in: query
description: Number of holders to skip for pagination (default 0).
schema:
type: integer
description: Number of holders to skip for pagination (default 0).
example: 0
- name: poolAddress
in: query
description: Optional Solana pool address. When provided, address holder unrealized PnL is calculated from this pool only.
schema:
type: string
description: Optional Solana pool address. When provided, address holder unrealized PnL is calculated from this pool only.
example: CiLg83sX8nJQMPkRwGMZYcjbgcHxaXsL6XjZre5nmeKn
- name: chain
in: path
description: Blockchain network where the token is deployed.
required: true
schema:
$ref: '#/components/schemas/Chain'
- name: address
in: path
description: The token contract address to query.
required: true
schema:
type: string
description: The token contract address to query.
example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TopHolderResponse'
example:
addressTopHolders:
ethereum:
- address:
address: '0x37305B1cD40574E4C5Ce33f8e8306Be057fD7341'
arkhamEntity:
crunchbase: https://www.crunchbase.com/organization/makerdao
id: makerdao
linkedin: https://www.linkedin.com/company/makerdao/
name: Sky (MakerDAO)
note: ''
service: null
twitter: https://twitter.com/MakerDAO
type: cdp
website: https://makerdao.com
arkhamLabel:
address: '0x37305B1cD40574E4C5Ce33f8e8306Be057fD7341'
chainType: evm
name: LITE PSM USDC A POCKET
chain: ethereum
contract: false
isUserAddress: false
balance: 4453872464.461215
pctOfCap: 0.06071662849686393
usd: 4453872464.461215
- address:
address: '0xe1940f578743367F38D3f25c2D2d32D6636929B6'
arkhamEntity:
crunchbase: https://www.crunchbase.com/organization/binance
id: binance
linkedin: https://www.linkedin.com/company/binance
name: Binance
note: ''
service: null
twitter: https://twitter.com/binance
type: cex
website: https://binance.com
arkhamLabel:
address: '0xe1940f578743367F38D3f25c2D2d32D6636929B6'
chainType: evm
name: SingleOwnerMSCA (Proxy)
chain: ethereum
contract: true
isUserAddress: false
balance: 1699999999.039577
pctOfCap: 0.02317494926268423
usd: 1699999999.039577
entityTopHolders: {}
token:
identifier:
address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
chain: ethereum
pricingID: usd-coin
name: USD Coin
symbol: USDC
totalSupply:
ethereum: 50539998661.70982
'400':
description: Bad Request
'500':
description: Internal Server Error
tags:
- Token
/token/holders/{id}:
get:
summary: Get top token holders by pricing ID
description: 'Returns the top token holders for a token identified by its CoinGecko pricing ID (e.g. "bitcoin", "ethereum", "usd-coin"). Results are sorted by balance in descending order.
**Response fields:**
- **token**: Token metadata (name, symbol, pricing info).
- **totalSupply**: Total supply per chain.
- **addressTopHolders**: Top holders by individual address, keyed by chain.
- **entityTopHolders**: Top holders grouped by entity (only present when groupByEntity=true), keyed by chain.
**Note:** Entity objects in the response do not include `populatedTags`. Use `GET /intelligence/entity/{id}` to retrieve tags for individual entities.'
operationId: GetTopTokenHoldersByID
parameters:
- name: groupByEntity
in: query
description: If 'true', groups holdings by entity rather than individual addresses.
schema:
type: string
description: If 'true', groups holdings by entity rather than individual addresses.
example: 'true'
- name: limit
in: query
description: Maximum number of holders to return per page (default 100, max 100). offset + limit must not exceed 1000.
schema:
type: integer
description: Maximum number of holders to return per page (default 100, max 100). offset + limit must not exceed 1000.
example: 100
- name: offset
in: query
description: Number of holders to skip for pagination (default 0).
schema:
type: integer
description: Number of holders to skip for pagination (default 0).
example: 0
- name: poolAddress
in: query
description: Optional Solana pool address. When provided, address holder unrealized PnL is calculated from this pool only.
schema:
type: string
description: Optional Solana pool address. When provided, address holder unrealized PnL is calculated from this pool only.
example: CiLg83sX8nJQMPkRwGMZYcjbgcHxaXsL6XjZre5nmeKn
- name: id
in: path
description: The CoinGecko pricing ID of the token.
required: true
schema:
type: string
description: The CoinGecko pricing ID of the token.
example: usd-coin
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TopHolderResponse'
example:
addressTopHolders:
ethereum:
- address:
address: '0x37305B1cD40574E4C5Ce33f8e8306Be057fD7341'
arkhamEntity:
crunchbase: https://www.crunchbase.com/organization/makerdao
id: makerdao
linkedin: https://www.linkedin.com/company/makerdao/
name: Sky (MakerDAO)
note: ''
service: null
twitter: https://twitter.com/MakerDAO
type: cdp
website: https://makerdao.com
arkhamLabel:
address: '0x37305B1cD40574E4C5Ce33f8e8306Be057fD7341'
chainType: evm
name: LITE PSM USDC A POCKET
chain: ethereum
contract: false
isUserAddress: false
balance: 4453872464.461215
pctOfCap: 0.06071662849686393
usd: 4453872464.461215
- address:
address: '0xe1940f578743367F38D3f25c2D2d32D6636929B6'
arkhamEntity:
crunchbase: https://www.crunchbase.com/organization/binance
id: binance
linkedin: https://www.linkedin.com/company/binance
name: Binance
note: ''
service: null
twitter: https://twitter.com/binance
type: cex
website: https://binance.com
arkhamLabel:
address: '0xe1940f578743367F38D3f25c2D2d32D6636929B6'
chainType: evm
name: SingleOwnerMSCA (Proxy)
chain: ethereum
contract: true
isUserAddress: false
balance: 1699999999.039577
pctOfCap: 0.02317494926268423
usd: 1699999999.039577
entityTopHolders: {}
token:
identifier:
pricingID: usd-coin
name: USDC
price: 0.999831
price24hAgo: 0.999825
symbol: usdc
totalSupply:
ethereum: 50539998661.70982
'400':
description: Bad Request
'500':
description: Internal Server Error
tags:
- Token
/token/market/{id}:
get:
summary: Get current market data for a token
description: Returns current market data for a token including price, market cap, volume, and supply information.
operationId: GetTokenCurrentMarketData
parameters:
- name: id
in: path
description: The CoinGecko pricing ID of the token.
required: true
schema:
type: string
description: The CoinGecko pricing ID of the token.
example: usd-coin
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TokenMarketData'
example:
allTimeHigh: 1.043
allTimeLow: 0.877647
circulatingSupply: 73354602419.50252
fullyDilutedValue: 73342671855.44943
marketCap: 73340976893
maxPrice24h: 0.999979
minPrice24h: 0.999745
price: 0.999831
price180dAgo: 0.999812
price24hAgo: 0.999797
price30dAgo: 0.999724
price7dAgo: 0.999852
totalSupply: 73355068862.08713
totalVolume: 7539296441
'400':
description: Bad Request
'500':
description: Internal Server Error
tags:
- Token
/token/price/history/{chain}/{address}:
get:
summary: Get token price history by chain and address
description: 'Returns historical price data for a token identified by its chain and contract address.
Only chains that have token contracts (EVM chains, Solana, Tron) are supported here. For UTXO assets like Bitcoin, use `/token/price/history/{id}` with the token''s pricing ID (e.g. `bitcoin`).'
operationId: GetTokenHistory
parameters:
- name: daily
in: query
description: If 'true', returns the full daily price history for the token. Otherwise returns every quote recorded in the last 24 hours.
schema:
type: string
description: If 'true', returns the full daily price history for the token. Otherwise returns every quote recorded in the last 24 hours.
example: 'true'
- name: chain
in: path
description: Blockchain network where the token is deployed.
required: true
schema:
$ref: '#/components/schemas/Chain'
- name: address
in: path
description: The token contract address.
required: true
schema:
type: string
description: The token contract address.
example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TokenHistoricalQuote'
example:
- marketCap: 73287761995
time: '2026-07-13T10:26:27.747Z'
usd: 0.999798
volume24h: 8228653724
- marketCap: 73290240682
time: '2026-07-13T10:27:12.877Z'
usd: 0.9998
volume24h: 8232347779
- marketCap: 73286652112
time: '2026-07-13T10:29:22.977Z'
usd: 0.999766
volume24h: 8252952310
'400':
description: Bad Request
'500':
description: Internal Server Error
tags:
- Token
/token/price/history/{id}:
get:
summary: Get token price history by pricing ID
description: Returns historical price data for a token identified by its pricing ID (e.g., 'bitcoin', 'ethereum'). Returns an array of timestamped price quotes.
operationId: GetTokenHistoryFromPricingID
parameters:
- name: daily
in: query
description: If 'true', returns the full daily price history for the token. Otherwise returns every quote recorded in the last 24 hours.
schema:
type: string
description: If 'true', returns the full daily price history for the token. Otherwise returns every quote recorded in the last 24 hours.
example: 'true'
- name: id
in: path
description: The CoinGecko pricing ID of the token.
required: true
schema:
type: string
description: The CoinGecko pricing ID of the token.
example: usd-coin
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TokenHistoricalQuote'
example:
- marketCap: 73287761995
time: '2026-07-13T10:26:27.747Z'
usd: 0.999798
volume24h: 8228653724
- marketCap: 73290240682
time: '2026-07-13T10:27:12.877Z'
usd: 0.9998
volume24h: 8232347779
- marketCap: 73286652112
time: '2026-07-13T10:29:22.977Z'
usd: 0.999766
volume24h: 8252952310
'400':
description: Bad Request
'500':
description: Internal Server Error
tags:
- Token
/token/price_change/{id}:
get:
summary: Get token price change since a timestamp
description: Returns the token's current price and its historical price at the requested past timestamp. The absolute or percentage change can be computed from the two values.
operationId: GetTokenPriceChangeSinceHandler
parameters:
- name: pastTime
in: query
description: Past timestamp in RFC3339 format to calculate price change from.
required: true
schema:
type: string
description: Past timestamp in RFC3339 format to calculate price change from.
example: '2024-01-01T00:00:00Z'
- name: id
in: path
description: The CoinGecko pricing ID of the token.
required: true
schema:
type: string
description: The CoinGecko pricing ID of the token.
example: usd-coin
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TokenPriceChange'
'400':
description: Bad Request
'500':
description: Internal Server Error
tags:
- Token
/token/top:
get:
summary: Get top tokens by exchange activity
description: 'Analyzes token activity across centralized and decentralized exchanges. Ranks tokens by volume, inflows, outflows, netflows, and other metrics over customizable time intervals.
Supports filtering by chain, market cap, and specific tokens.
Each result reports ''current'' (metrics over the selected timeframe) and ''previous'' (the same metrics averaged across the numReferencePeriods prior windows, each the length of the timeframe); the two are compared to produce the change and percentage rankings.'
operationId: GetTopTokens
parameters:
- name: timeframe
in: query
description: Time interval for aggregation.
required: true
schema:
$ref: '#/components/schemas/TopTokenTimeFrame'
- name: orderByAgg
in: query
description: Metric to sort by.
required: true
schema:
$ref: '#/components/schemas/TopTokensOrderByAgg'
- name: orderByDesc
in: query
description: Sort order. Use 'true' for descending, 'false' for ascending.
required: true
schema:
type: boolean
description: Sort order. Use 'true' for descending, 'false' for ascending.
nullable: true
example: true
- name: orderByPercent
in: query
description: If 'true', sort by percentage change rather than absolute values.
required: true
schema:
type: boolean
description: If 'true', sort by percentage change rather than absolute values.
nullable: true
example: true
- name: from
in: query
description: Pagination offset (starting index).
required: true
schema:
type: string
description: Pagination offset (starting index).
example: '0'
- name: size
in: query
description: Number of results to return per page.
required: true
schema:
type: string
description: Number of results to return per page.
example: '50'
- name: minVolume
in: query
description: Minimum volume filter in USD.
schema:
type: string
description: Minimum volume filter in USD.
example: '1000000'
- name: maxVolume
in: query
description: Maximum volume filter in USD.
schema:
type: string
description: Maximum volume filter in USD.
example: '1000000000'
- name: minMarketCap
in: query
description: Minimum market cap filter in USD.
schema:
type: string
description: Minimum market cap filter in USD.
example: '1000000'
- name: maxMarketCap
in: query
description: Maximum market cap filter in USD.
schema:
type: string
description: Maximum market cap filter in USD.
example: '10000000000000'
- name: numReferencePeriods
in: query
description: 'Number of prior periods (each the length of the timeframe) used as the historical baseline the current period is compared against. Default: auto (6 periods for 1h, 1 for longer timeframes). Max: 10.'
schema:
type: string
description: 'Number of prior periods (each the length of the timeframe) used as the historical baseline the current period is compared against. Default: auto (6 periods for 1h, 1 for longer timeframes). Max: 10.'
example: auto
- name: tokenIds
in: query
description: Comma-separated list of CoinGecko token IDs to filter results.
schema:
type: string
description: Comma-separated list of CoinGecko token IDs to filter results.
example: usd-coin,tether
- name: chains
in: query
description: Chains to filter by, as a single comma-separated string, e.g. 'ethereum,bsc' (not a JSON array). If omitted, returns all supported chains.
schema:
$ref: '#/components/schemas/Chains'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetTopTokensResponse'
example:
tokens:
- current:
inflowCexVolume: 181200000
inflowDexVolume: 152300000
outflowCexVolume: 179400000
outflowDexVolume: 151800000
price: 0.999831
previous:
inflowCexVolume: 176500000
inflowDexVolume: 148100000
outflowCexVolume: 175300000
outflowDexVolume: 149200000
price: 0.999797
token:
id: usd-coin
marketCap: 73340976893
symbol: USDC
total: 8189
'400':
description: Bad Request
'500':
description: Internal Server Error
tags:
- Token
/token/top_flow/{chain}/{address}:
get:
summary: Get top token flow
description: 'Retrieves the top token flow (in USD and value) for the specified chain and address over a given duration.
Only chains with token contracts (EVM chains, Solana, Tron) return token flows here. For UTXO assets like Bitcoin, use the pricing-ID form (/token/top_flow/{id}) for native flows.
**Rate Limit**: This endpoint has a stricter rate limit of 1 request per second.'
operationId: GetTopTokenFlowByChainAddress
parameters:
- name: timeLast
in: query
description: Time range filter using relative durations.
required: true
schema:
type: string
description: Time range filter using relative durations.
example: 24h
- name: limit
in: query
description: 'Maximum number of addresses to return per flow direction. Default: 50. Max: 100.'
schema:
maximum: 100
minimum: 1
type: integer
description: 'Maximum number of addresses to return per flow direction. Default: 50. Max: 100.'
default: 50
example: 5
- name: chains
in: query
description: Ignored on this endpoint form — the chain is already fixed by the path. Use the pricing-ID form of this endpoint to filter flows by chain.
schema:
$ref: '#/components/schemas/Chains'
- name: chain
in: path
description: Blockchain network where the token is deployed.
required: true
schema:
$ref: '#/components/schemas/Chain'
- name: address
in: path
description: The token contract address.
required: true
schema:
type: string
description: The token contract address.
example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TopFlow'
example:
- address:
address: '0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb'
arkhamEntity:
crunchbase: https://www.crunchbase.com/organization/morpho-labs
id: morpho
linkedin: https://www.linkedin.com/company/morpho-labs
name: Morpho
note: ''
service: null
twitter: https://twitter.com/MorphoLabs
type: lending-decentralized
website: https://morpho.org
arkhamLabel:
address: '0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb'
chainType: evm
name: Morpho Blue
chain: ethereum
contract: true
isUserAddress: false
inUSD: 8464010273.634033
inValue: 8464010259.6050005
outUSD: 8467229188.141229
outValue: 8467229174.00334
- address:
# --- truncated at 32 KB (93 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/arkham/refs/heads/main/openapi/arkham-token-api-openapi.yml