> For the complete documentation index, see [llms.txt](https://docs.nansen.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nansen.ai/api/backtesting-data/historical-smart-money-positions.md).

# Historical Smart Money Positions

## Get Historical SM Token Balances (Beta)

> \*\*Beta — subject to breaking changes.\*\*\
> \
> Point-in-time smart money token balance aggregates for a given date.\
> \
> Returns SM token holdings per (chain, token\_address) pair filtered by SM labels,\
> token type, and chain. Includes 24h balance change, holder counts, share of total\
> SM holdings, and historical market cap.

```json
{"openapi":"3.1.0","info":{"title":"Nansen API","version":"1.0.0"},"servers":[{"url":"https://api.nansen.ai"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"apiKey","description":"API key for authentication"}},"schemas":{"SmartMoneyHistoricalTokenBalancesRequest":{"properties":{"as_of_date":{"type":"string","format":"date","title":"As Of Date","description":"Date to query balances for"},"chains":{"items":{"$ref":"#/components/schemas/SmartMoneyChain"},"type":"array","title":"Chains","description":"Chains to include. Empty list returns all chains.","default":[]},"filters":{"anyOf":[{"$ref":"#/components/schemas/SmartMoneyHistoricalTokenBalancesFilters"}],"description":"Optional filters for SM labels and token types"},"apply_blacklist_filter":{"type":"boolean","title":"Apply Blacklist Filter","description":"When True, exclude blacklisted addresses from the results. Defaults to True.","default":true},"pagination":{"$ref":"#/components/schemas/PaginationRequest","description":"Pagination parameters"}},"additionalProperties":false,"type":"object","required":["as_of_date"],"title":"SmartMoneyHistoricalTokenBalancesRequest","description":"Request model for the historical SM token balances endpoint.\n\nReturns smart money token balance aggregates for a given date, filtered by\nchain, SM label, and token type."},"SmartMoneyChain":{"type":"string","enum":["all","arbitrum","avalanche","base","bnb","ethereum","hyperevm","iotaevm","linea","mantle","monad","optimism","plasma","polygon","ronin","scroll","sei","solana","sonic"],"title":"SmartMoneyChain","description":"Chains supported in smart money analysis."},"SmartMoneyHistoricalTokenBalancesFilters":{"properties":{"sm_filter":{"items":{"$ref":"#/components/schemas/HistoricalSmartMoneyFilterType"},"type":"array","title":"Sm Filter","description":"SM label filter. Empty list includes all SM labels.","default":[]},"include_stablecoins":{"type":"boolean","title":"Include Stablecoins","description":"Whether to include stablecoin tokens","default":true},"include_native_tokens":{"type":"boolean","title":"Include Native Tokens","description":"Whether to include native tokens and LSTs/LRTs","default":true},"holders_count":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Number of SM holders range filter"}},"additionalProperties":false,"type":"object","title":"SmartMoneyHistoricalTokenBalancesFilters","description":"Filters for the historical SM token balances endpoint."},"HistoricalSmartMoneyFilterType":{"type":"string","enum":["Fund","Smart Trader","30D Smart Trader","90D Smart Trader","180D Smart Trader","Smart Dex Trader","30D Smart Dex Trader","90D Smart Dex Trader","180D Smart Dex Trader","Smart HL Perps Trader"],"title":"HistoricalSmartMoneyFilterType","description":"Filter by smart money label type. Includes legacy label classes (e.g. Smart Dex Trader) that appear in historical data."},"IntegerRangeFilter":{"properties":{"min":{"anyOf":[{"type":"integer"}],"title":"Min","description":"Minimum value (inclusive)"},"max":{"anyOf":[{"type":"integer"}],"title":"Max","description":"Maximum value (inclusive)"}},"type":"object","title":"IntegerRangeFilter","description":"Filter for integer values with optional min/max bounds.\nUse for counts, numbers of items, and other whole number values. - Values between 5 and 100"},"PaginationRequest":{"properties":{"page":{"type":"integer","minimum":1,"title":"Page","description":"Page number (1-based)","default":1},"per_page":{"type":"integer","maximum":1000,"minimum":1,"title":"Per Page","description":"Number of records per page (max 1000)","default":10}},"type":"object","title":"PaginationRequest","description":"Pagination parameters for API requests."},"SmartMoneyHistoricalTokenBalancesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SmartMoneyHistoricalTokenBalance"},"type":"array","title":"Data","description":"List of SM token balance records"},"pagination":{"$ref":"#/components/schemas/PaginationInfo","description":"Pagination information"}},"type":"object","required":["data","pagination"],"title":"SmartMoneyHistoricalTokenBalancesResponse","description":"Response model for the historical SM token balances endpoint."},"SmartMoneyHistoricalTokenBalance":{"properties":{"chain":{"type":"string","title":"Chain","description":"Blockchain chain"},"token_address":{"type":"string","title":"Token Address","description":"Token contract address"},"token_symbol":{"type":"string","title":"Token Symbol","description":"Token symbol"},"token_sectors":{"items":{"type":"string"},"type":"array","title":"Token Sectors","description":"Token sector classifications"},"value_usd":{"anyOf":[{"type":"number"}],"title":"Value Usd","description":"Total SM balance in USD"},"balance_24h_percent_change":{"anyOf":[{"type":"number"}],"title":"Balance 24H Percent Change","description":"24-hour percentage change in token balance amount"},"holders_count":{"anyOf":[{"type":"integer"}],"title":"Holders Count","description":"Number of SM holders with balance > $100"},"share_of_holdings_percent":{"anyOf":[{"type":"number"}],"title":"Share Of Holdings Percent","description":"This token's share of total SM holdings"},"token_age_days":{"anyOf":[{"type":"integer"}],"title":"Token Age Days","description":"Days since token deployment as of as_of_date"},"market_cap_usd":{"anyOf":[{"type":"number"}],"title":"Market Cap Usd","description":"Historical market cap on as_of_date (falls back to FDV)"}},"type":"object","required":["chain","token_address","token_symbol"],"title":"SmartMoneyHistoricalTokenBalance","description":"Single SM token balance record for a given date."},"PaginationInfo":{"properties":{"page":{"type":"integer","minimum":1,"title":"Page","description":"Current page number","default":1},"per_page":{"type":"integer","maximum":1000,"minimum":1,"title":"Per Page","description":"Number of records per page","default":10},"is_last_page":{"type":"boolean","title":"Is Last Page","description":"Whether this is the last page","default":true}},"type":"object","title":"PaginationInfo","description":"Pagination information for API responses."}},"headers":{"XNansenCreditsUsed":{"description":"Number of credits consumed by this API request","schema":{"type":"string"}},"XNansenCreditsRemaining":{"description":"Total credits remaining in the user's account after this request","schema":{"type":"string"}},"PaymentReceipt":{"description":"Base64url-encoded MPP receipt returned on successful paid requests via Authorization: Payment","schema":{"type":"string"}},"RateLimitLimit":{"description":"Combined rate limit across all configured time windows","schema":{"type":"string"}},"RateLimitRemaining":{"description":"Number of requests remaining in the current limiting window","schema":{"type":"string"}},"RateLimitReset":{"description":"Time in seconds until the rate limit window resets","schema":{"type":"string"}},"XRateLimitLimitSecond":{"description":"Maximum requests allowed per second","schema":{"type":"string"}},"XRateLimitRemainingSecond":{"description":"Requests remaining in the current second","schema":{"type":"string"}},"XRateLimitLimitMinute":{"description":"Maximum requests allowed per minute","schema":{"type":"string"}},"XRateLimitRemainingMinute":{"description":"Requests remaining in the current minute","schema":{"type":"string"}},"PaymentRequired":{"description":"Base64-encoded x402 payment options returned on 402 responses for x402 clients","schema":{"type":"string"}},"WWWAuthenticatePayment":{"description":"MPP payment challenge returned on 402 responses, for example `Payment id=\"...\", realm=\"api.nansen.ai\", method=\"tempo\", intent=\"charge\", request=\"...\"`","schema":{"type":"string"}},"RetryAfter":{"description":"Number of seconds to wait before making a new request","schema":{"type":"string"}}},"responses":{"BadRequestError":{"description":"Bad Request - Invalid request parameters or malformed request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"UnauthorizedError":{"description":"Authentication error - No API key found in request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"PaymentRequiredError":{"description":"Payment Required - This endpoint supports pay-per-request via x402 and MPP. x402 responses advertise payment options in `Payment-Required`; MPP responses advertise a fresh `WWW-Authenticate: Payment ...` challenge. Successful MPP responses may include `Payment-Receipt`.","headers":{"Payment-Required":{"$ref":"#/components/headers/PaymentRequired"},"WWW-Authenticate":{"$ref":"#/components/headers/WWWAuthenticatePayment"}},"content":{"application/json":{"schema":{"type":"object","description":"Problem-details body for x402 or MPP payment challenges."}}}},"ForbiddenError":{"description":"Forbidden - User does not have required subscription tier or has exceeded credit limit","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"NotFoundError":{"description":"Not Found - The requested resource was not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"ValidationError":{"description":"Validation error - Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"}}}}}}}}},"TooManyRequestsError":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying"}}}}},"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"InternalServerError":{"description":"Internal Server Error - An unexpected error occurred","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}}}},"paths":{"/api/v1beta1/smart-money/historical-token-balances":{"post":{"tags":["Smart Money"],"summary":"Get Historical SM Token Balances (Beta)","description":"**Beta — subject to breaking changes.**\n\nPoint-in-time smart money token balance aggregates for a given date.\n\nReturns SM token holdings per (chain, token_address) pair filtered by SM labels,\ntoken type, and chain. Includes 24h balance change, holder counts, share of total\nSM holdings, and historical market cap.","operationId":"get_smart_money_historical_token_balances_beta_api_v1beta1_smart_money_historical_token_balances_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmartMoneyHistoricalTokenBalancesRequest"}}},"required":true},"responses":{"200":{"description":"Historical SM token balances data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmartMoneyHistoricalTokenBalancesResponse"}}},"headers":{"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Nansen-Credits-Remaining":{"$ref":"#/components/headers/XNansenCreditsRemaining"},"Payment-Receipt":{"$ref":"#/components/headers/PaymentReceipt"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RateLimit-Limit-Second":{"$ref":"#/components/headers/XRateLimitLimitSecond"},"X-RateLimit-Remaining-Second":{"$ref":"#/components/headers/XRateLimitRemainingSecond"},"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/XRateLimitLimitMinute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/XRateLimitRemainingMinute"}}},"400":{"description":"Bad Request","$ref":"#/components/responses/BadRequestError"},"401":{"description":"Unauthorized","$ref":"#/components/responses/UnauthorizedError"},"402":{"description":"Payment Required","$ref":"#/components/responses/PaymentRequiredError"},"403":{"description":"Forbidden","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Not Found","$ref":"#/components/responses/NotFoundError"},"422":{"description":"Unprocessable Content","$ref":"#/components/responses/ValidationError"},"429":{"description":"Too Many Requests","$ref":"#/components/responses/TooManyRequestsError"},"500":{"description":"Internal Server Error","$ref":"#/components/responses/InternalServerError"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.nansen.ai/api/backtesting-data/historical-smart-money-positions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
