Skip to main content
AddedChanged
Multi-chain NFT API
  • NFT endpoints now return live on-chain data for 21 chains: ethereum, polygon-pos, base, arbitrum-one, optimistic-ethereum, zksync, blast, linea, scroll, zora, abstract, apechain, avalanche, binance_smart, unichain, soneium, berachain, world-chain, celo, xdai and monad. The blockchain parameter takes the same chain values as /wallet/blockchains.
  • New: GET /wallet/nft: 40 credits. Every NFT a wallet holds across all supported chains in one call, with images, attributes, collection details, floor price, value in any supported fiat currency, spam flag with reasons and mint details. Filter with spam (exclude, include, only) or contracts (up to 45 collections) and rank with sort=floorValue.
  • New: GET /wallet/nft/summary: 60 credits. Total NFT floor value, NFT count and collection count per chain.
  • New: GET /wallet/nft/activity: 20 credits. NFT mints, receives, sends and burns, newest first, with token names and images.
  • New: GET /wallet/nft/holds: 5 credits. Checks whether a wallet holds tokens from up to 45 collections, for token gating.
  • New: GET /nft/collection/{collectionAddress}/owners: 20 credits. Collection holders ranked by token count.
  • New: POST /nft/tokens/batch: 20 credits. Up to 100 NFTs across chains in one request.
  • New: POST /nft/{collectionAddress}/asset/{tokenId}/refresh: 5 credits. Re-reads a token’s metadata from its token URI.
  • Changed: the wallet, collection and asset endpoints accept an optional blockchain parameter (default ethereum); response shapes are unchanged.
  • Wallet NFT endpoints live under /wallet/nft and take the wallet address as a query parameter, like the other wallet endpoints. The paths they launched under, GET /nft/wallet/{address}/nfts, /collections, /summary, /activity and /holds, keep working.
  • Changed: the wallet collections endpoint is documented as GET /wallet/nft/collections; the original GET /nft/wallet/{address}/assets path keeps working with the same response. It now honors page, counts collections in meta.itemCount, accepts ENS names on Ethereum and supports sortBy=floorValue. Spam collections are hidden by default; spam=include returns them and spam=only returns them alone, with a new isSpam field on each collection. blockchain takes a comma-separated list or all to merge collections across chains, currency adds each holding’s value in fiat, and each collection carries its blockchain.
  • Changed: GET /nft/collection/{collectionAddress} returns a live floor price in ETH and USD, market cap, holder count and explorer, website and social links; currency adds floorPriceInCurrency and marketcapInCurrency.
  • Changed: asset endpoints return cached image and thumbnail URLs, token attributes and a rarity rank where available; token IDs may be decimal or hex. limit is capped at 100 and source fields return coinstats.
  • Changed: NFT floor prices and values are live on Ethereum, Base and Arbitrum and null on other chains, where only cached floors months old and without a currency are available; NFTs without a known floor don’t count toward totals. Only collections verified on OpenSea get a value and count toward totals, so unverified airdrops listed at made-up prices no longer inflate wallet values; their floor price is still shown, and /collections items carry a verified flag.
  • Changed: market statistics on collections and assets (volumes, sales, rank, listings, last sale, trait floors) are no longer provided and return null, and type=listed returns all assets.
Added
Portfolio tree in the portfolio list
  • GET /portfolio/list takes includeChildren=true to nest each portfolio’s child portfolios in a children array, to every level (for example the exchange or per-chain portfolios under a connection). Without it, the response is unchanged.
  • Child portfolioIds work on the value, coins, chart and transactions endpoints. Use the tree to see which listed portfolio a child ID returned by another endpoint, such as the perpetual endpoints, belongs to, and to avoid counting a parent and its children twice.
  • MCP: get-portfolio-list takes includeChildren. See MCP tools.
Added
Perpetual positions and trade history
  • New: GET /portfolio/perpetual/positions returns open perpetual and futures positions from your connected exchanges, including Hyperliquid: leverage, entry and current prices, liquidation price, unrealized P&L and funding since opening where available. Options are excluded.
  • New: GET /portfolio/perpetual/trades returns synced trade history with prices, realized P&L and trading fees, newest first. Paginate with limit and skip, then follow nextSkip.
  • Pass an exchange or parent portfolioId from /portfolio/list, or omit it for all your exchanges. Positions return an error when a selected exchange connection fails, instead of an empty result; trade history reflects the last sync. Each request costs 10 credits.
  • MCP: new get-perpetual-positions and get-perpetual-trades tools. See Perpetuals.
Added
Polymarket US in the prediction-markets API
  • Polymarket US (polymarket.us) is a third venue: source=polymarket-us on /prediction/markets, /prediction/events and their trending lists returns its markets and events (slugs start with polymarket-us-).
  • New view parameter on those lists and on /prediction/search: intl (default, unchanged: Polymarket and Kalshi), us (Polymarket US and Kalshi) or all (every venue; events listed once each, a linked Polymarket US event as its Polymarket twin). /prediction/events/ takes view for its pairing annotations. See Venues and views.
  • Events linked across Polymarket’s two exchanges name each other in linkedEvent. Requests without view or source=polymarket-us behave as before.
Added
Full real-world assets API
  • Seven authenticated endpoints under /v1/rwa expose the market overview, asset list, aggregate history, asset details, tokens, trading markets and per-asset history.
  • Filter tokenized stocks, commodities and ETFs; inspect issuers, networks, contracts, prices, volume and available chart coverage.
  • Supports currency conversion, pagination, search, sorting and freshness/availability flags. Requests cost 1–3 credits. See the RWA guide.
AddedChanged
API key access to all your portfolios
  • Your API key now covers every portfolio you own — portfolios built in the CoinStats app as well as ones created via the API. Previously only API-created portfolios were covered. Share tokens are no longer needed for your own portfolios; they remain available for reading someone else’s shared portfolio.
  • GET /portfolio/list now returns all your own portfolios (watchlist portfolios excluded), and each item includes a new portfolioType field (manual, exchange, wallet, platform, parent, other).
  • Read endpoints (value, coins, chart, P&L history, transactions, DeFi, snapshot) accept any of your portfolioIds; omit it to aggregate all your portfolios.
  • POST /portfolio/transaction works without a share token: pass the portfolioId of one of your manual portfolios in the request body.
  • DELETE /portfolio/{portfolioId} deletes any portfolio you own, including its transactions. Deleting a parent portfolio also deletes its child portfolios.
  • PATCH /portfolio/sync works on your wallet and exchange portfolios; manual portfolios can’t be synced.
  • MCP: add-portfolio-transaction now requires portfolioId, and a new delete-portfolio tool was added. See MCP tools.
Added
Exchange and portfolio transaction types endpoints
Added
Historical exchange OHLCV candles
  • New: GET /ohlcv/candles — 1 credit per 1,000 returned candles, rounded up, with a minimum of 1 credit.
  • Retrieve fully closed exchange candles from 5m through 1w intervals.
  • Select a rolling range such as 24h, 1y, or all, or provide ISO 8601 start and end timestamps for an exact period.
  • Candles use the compact [timestampMs, open, high, low, close, volumeBase] format and are also available through the x402 gateway for $0.001 USDC per request.
Added
Wallet transaction types endpoint
  • New: GET /wallet/transactions/types — 1 credit. Reference lookup returning every supported transaction type as { id, name } pairs: id values feed the types filter of GET /wallet/transactions, name matches the type field in its responses.
  • GET /wallet/transactions docs updated: type is a display name (e.g. Sent, Received, Swap, Approve), not the previously documented enum; the types filter now also accepts pipe-joined ids returned by the new endpoint.
Added
Historical profit and loss endpoints
  • GET /wallet/pl/history — Cash-flow-adjusted history for one wallet across one or more requested networks.
  • GET /exchange/pl/history — Cash-flow-adjusted history for an owned exchange portfolio.
  • GET /portfolio/pl/history — Cash-flow-adjusted history for one API-connected portfolio, all owned portfolios, or a shared portfolio.
  • Each endpoint costs 25 credits per request. Wallet network multipliers still apply.
  • Request a rolling preset such as range=1m, or provide from and to for a specific historical period. See the wallet P&L history API reference for a calendar-month example.
Added
All-time high/low added to coin response
  • Coin responses now include allTimeHigh and allTimeLow, returned in the requested currency.
  • Fields are optional and only present for coins that have the data.
Added
Prediction Markets API (Polymarket + Kalshi)
  • New read-only Prediction Markets section under GET /prediction/* — analytics for Polymarket and Kalshi across markets, events, traders, platform analytics, search, and tags. See the overview.
  • Markets & events — list/trending/detail, current prices, Yes-price history, and cross-venue matching (/prediction/markets/{slug}/cross-venue, /prediction/events/{slug}/cross-venue, 10 credits) that pairs the same question across both venues with a confidence score and price delta.
  • Traders — leaderboard, profile, open positions, trade history, PnL breakdown, category stats, score, and more (2–3 credits).
  • Analytics, search & tags — platform overview, composite market signals, cross-entity search, and the tag list.
  • Prices are probabilities in 0..1, money is USD, dates are ISO 8601. Every endpoint uses X-API-KEY auth and returns the standard { success, data, meta?, timestamp } envelope.
Changed
Free plan limits updated
  • Free plan credits reduced from 50,000 to 20,000 credits/month.
  • Free plan rate limit reduced from 5 req/sec to 2 req/sec.
Added
Token Risks endpoint
  • New: GET /token-risks — 5000 credits. Smart-contract risk analysis powered by Hexens: overall risk score plus detailed findings (centralized mint/burn, blacklist/whitelist, pausable/blockable transfers, hidden fees, upgradeable proxy, ownership not renounced, balance manipulation, and more).
  • Accepts either coinId (CoinStats coin id) or an explicit contractAddress + chain pair. Optional sortBy=severity.
  • Returns an empty results list when no risk data is available (non-EVM tokens or contracts not yet indexed).
Added
ConnectKit launched
  • Added ConnectKit, a hosted CoinStats popup flow for connecting wallets and exchanges from partner apps.
  • Added ConnectKit setup in the API dashboard with trusted origins, redirect URLs, branding, mode, appearance, and accent color controls.
  • Added browser integrations through @coinstats/connectkit and the hosted https://connect.coinstats.app/coinstats-connect.js script.
  • Frontend apps use only the public ConnectKit ID and callback URL. API keys stay server-side.
Added
Flare EVM chain support
  • Added support for the MegaETH EVM chain across wallet endpoints.
Changed
Wallet multi-balance endpoint renamed
  • New: GET /wallet/balance/many — same credits and response shape as the previous /wallet/balances.
  • GET /wallet/balances is deprecated and removed from the API reference. It continues to work and now returns Deprecation: true and a Link header pointing to /wallet/balance/many. Migrate when convenient.
Added
Sei EVM chain support
  • Added support for the Sei EVM chain across wallet endpoints.
  • Includes balances.
Added
MegaETH EVM chain support
  • Added support for the MegaETH EVM chain across wallet endpoints.
  • Includes balances, DeFi positions, and transaction history.
Improved
PnL endpoints added for connected wallets and exchanges
  • GET /wallet/pl — 25 credits
  • GET /exchange/pl — 25 credits
  • Returns holdings with PnL fields, totalCost, and summary totals.
Wallet Transactions — credit cost reduced from 40 to 30 per request
  • GET /wallet/transactions — 30 credits (was 40)
  • API reference, wallet guides, multiplier docs, and x402 pricing now reflect the updated cost.
Improved
Market Insights — credit cost reduced from 50 to 10 per request
  • GET /insights/btc-dominance — 10 credits (was 50)
  • GET /insights/fear-and-greed — 10 credits (was 50)
  • GET /insights/fear-and-greed/chart — 10 credits (was 50)
  • GET /insights/rainbow-chart/{coinId} — 10 credits (was 50)
Added
GET /portfolio/list — 5 credits
  • New endpoint to retrieve all API-connected portfolios.
  • Returns portfolioId and portfolioName for each portfolio created via POST /portfolio/wallet or POST /portfolio/exchange.
Changed
Plan Updates
  • Introduced the new Starter plan: 1,000,000 credits/month, 30 req/sec, $49/month.
  • Free plan credits reduced from 1,000,000 to 50,000 credits/month.
  • Renamed Individual plan to Pro.
  • Renamed Custom plan to Enterprise.
AddedImproved
POST /portfolio/wallet — Connect a wallet to your CoinStats account
  • Connect any supported blockchain wallet address to your account.
  • Returns a portfolioId you can use on all /portfolio GET endpoints.
POST /portfolio/exchange — Connect an exchange and create a tracked portfolio
  • Connect an exchange to your CoinStats account
  • Returns a portfolioId you can use on all /portfolio GET endpoints.
GET /portfolio/* — portfolioId now accepted
  • All portfolio GET endpoints (/value, /coins, /chart, /transactions, /defi, /snapshot/items) now accept a portfolioId query parameter.
  • portfolioId is returned from POST /portfolio/wallet or POST /portfolio/exchange.
  • shareToken remains fully supported and is unchanged.
  • If neither is provided, endpoints return aggregated data for all API-connected portfolios.
Improved
GET /portfolio/transactions - Now supports note in response
Added
GET /usage/credits — 0 credits
  • New endpoint to check your remaining credit limit programmatically.
  • Returns total credits, used credits, remaining credits, and subscription plan.
  • This endpoint is free and does not consume any credits.
Improved
  • GET /wallet/balance - Now accepts either connectionId or blockchain parameter
  • GET /wallet/balances - Added blockchain parameter (comma-separated list)
  • GET /wallet/chart - Now accepts either connectionId or blockchain parameter
  • GET /wallet/defi - Now accepts either connectionId or blockchain parameter
  • GET /wallet/transactions - Now accepts either connectionId or blockchain parameter
  • PATCH /wallet/transactions - Now accepts either connectionId or blockchain parameter
  • If both connectionId and blockchain are provided, connectionId takes precedence
Improved
GET /wallet/transactions
  • Added coinId query param to filter transactions by coin.
Improved
GET /wallet/transactions
  • Now supports toAddress and fromAddress optional properties in the response
ImprovedAdded
GET /coins
  • Now supports retrieving Ordinals by specifying the bitcoin blockchain in the query.
GET /wallet/defi
  • You can now specify multiple connectionIds in the query to fetch DeFi data for several connections at once.
Improved
  • Enhanced all existing endpoints for better performance and reliability.
  • Added comprehensive examples and detailed descriptions to all endpoints.
  • Introduced the Share Token explanation page for better understanding.
  • Launched the Credit Multipliers page to explain credit usage.
Improved
GET /wallet/balances
  • Added wallets query parameter to support multiple wallet addresses in a single request
  • Added connectionId field to response when using the wallets query parameter
GET /coins
  • Added coinIds query parameter to filter coins by specific IDs
Improved
GET /coins
  • Added a new contractAddresses field in coin data.
  • Lists smart contract addresses for tokens (e.g., ERC-20).
  • Empty for native coins like Bitcoin.
GET /coins/
  • Added a new contractAddresses field in coin data.
  • Lists smart contract addresses for tokens (e.g., ERC-20).
  • Empty for native coins like Bitcoin.
Added
GET /portfolio/value — 10 credits
Added
GET /portfolio/defi — 200 credits
Improved
GET /wallet/transactions
  • Added a new wallets query parameter.
  • This update allows users to retrieve transaction history for multiple wallets in a single API call.
Added
GET /insights/btc-dominance — 50 credits GET /insights/fear-and-greed — 50 credits GET /insights/fear-and-greed/chart — 50 credits GET /insights/rainbow-chart/ — 50 credits
AddedImproved
GET /wallet/charts
  • Allows users to retrieve chart data for multiple chains and wallets in a single request.
PATCH /wallet/transactions
  • Now supports syncing multiple chains and wallets with a single API call.