> 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-perps-positions.md).

# Historical Smart Money Perps Positions

{% hint style="info" %}
This is a beta endpoint under `/api/v1beta1/`. Request shapes, response fields, and pricing may change.
{% endhint %}

Get historical USD exposure for one Hyperliquid perp coin, split into Smart Trader, Whale, and Public Figure cohorts. Each call costs 5 credits.

Send `coin` and exactly one of `as_of_date` or `as_of_ts`. A date includes the full UTC day and must be before the current UTC date. A timestamp includes positions through that exact cutoff, must include a timezone, and cannot be in the future.

```bash
curl -X POST "https://api.nansen.ai/api/v1beta1/tgm/historical-token-recent-flows-summary-perps" \
  -H "Content-Type: application/json" \
  -H "apikey: $NANSEN_API_KEY" \
  -d '{"coin": "BTC", "as_of_date": "2025-09-15"}'
```

For Smart Money backtesting, calculate net position from the Smart Trader fields:

```
net_position_usd = smart_trader_longs_usd - smart_trader_shorts_usd
```

Short exposure is a positive magnitude. `smart_trader_total_usd` is gross exposure, longs plus shorts. Use the same calculation for the Whale and Public Figure cohorts.

`sm_label_filter` applies only to the Smart Trader cohort. An empty list selects `Smart HL Perps Trader`. Whale and Public Figure cohorts use fixed labels.

Date snapshots and some timestamp snapshots use labels assigned retrospectively. Membership in a cohort was not necessarily knowable at the cutoff, which can introduce look-ahead bias in backtests. Some label filters can reflect current fund membership. Historical exposure is not a guarantee of a signal observable at the time.

Requests before available history return an empty `data` array. Exposure fields can be `null` when cohort coverage is unavailable. Preserve those values as missing data. Top PnL fields are unsupported and always return `null`. Results may change after late data, pricing fixes, label-history corrections, or backfills.

## Get Historical Smart Money Perps Positions (Beta)

> \*\*Beta. Request shapes, response fields, and pricing may change.\*\*\
> \
> Historical long, short, and total USD exposure for one Hyperliquid perp coin.\
> Returns the Smart Trader, Whale, and Public Figure cohorts.\
> \
> Supply \`coin\` and exactly one cutoff: \`as\_of\_date\` for a completed UTC date,\
> or \`as\_of\_ts\` for an exact RFC3339 timestamp with a timezone, no later than now.\
> \
> Short exposure is a positive magnitude. Net position equals longs minus\
> shorts; total exposure equals longs plus shorts. Missing cohort coverage\
> returns null exposure fields. Top PnL exposure fields are unsupported and return null.\
> \
> \`sm\_label\_filter\` narrows the Smart Trader cohort. An empty list selects\
> \`Smart HL Perps Trader\`. Whale and Public Figure cohorts are fixed.\
> \
> Date snapshots and some timestamp snapshots use labels assigned retrospectively.\
> Cohort membership was not necessarily knowable at the cutoff and can introduce\
> look-ahead bias in backtests. Some label filters can reflect current fund membership.\
> \
> Results may change after late data, pricing fixes, label-history corrections,\
> or historical data backfills.

```json
{"openapi":"3.1.0","info":{"title":"Nansen API","version":"1.0.0"},"servers":[{"url":"https://api.nansen.ai"}],"security":[{"ApiKeyAuth":[]},{"X402Payment":[]},{"MppPayment":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"apikey","description":"API key for authentication"},"X402Payment":{"type":"apiKey","in":"header","name":"Payment-Signature","description":"x402 pay-per-request; no API key needed. Send the request without credentials to receive a `402 Payment Required` response whose `Payment-Required` header advertises the accepted payment options, then retry with the signed x402 V2 payment payload in the `Payment-Signature` header. Only operations that list this scheme accept it. See https://docs.nansen.ai/getting-started/agentic-payments"},"MppPayment":{"type":"apiKey","in":"header","name":"Authorization","description":"Machine Payments Protocol (MPP) pay-per-request on Tempo; no API key needed. Send `Authorization: Payment` to receive a `402 Payment Required` response whose `WWW-Authenticate: Payment ...` header carries a fresh challenge, then retry with the signed credential as `Authorization: Payment <credential>`. Successful responses include a `Payment-Receipt` header. Only operations that list this scheme accept it. See https://docs.nansen.ai/getting-started/agentic-payments"}},"schemas":{"TGMHistoricalTokenRecentFlowsSummaryPerpsRequest":{"properties":{"as_of_ts":{"anyOf":[{"type":"string","format":"date-time"}],"title":"As Of Ts"},"as_of_date":{"anyOf":[{"type":"string","format":"date"}],"title":"As Of Date","description":"UTC date cutoff. The full date is included."},"coin":{"type":"string","title":"Coin","description":"Hyperliquid perp coin symbol (e.g. BTC, HYPE, @1)"},"sm_label_filter":{"items":{"$ref":"#/components/schemas/HistoricalSmartMoneyFilterType"},"type":"array","title":"Sm Label Filter","description":"Smart-money sub-label filter applied to the Smart Trader cohort. Empty list resolves server-side to 'Smart HL Perps Trader' only. Has no effect on the Whale and Public Figure cohorts, which are resolved from a fixed label segment.","default":[]}},"additionalProperties":false,"type":"object","required":["coin"],"title":"TGMHistoricalTokenRecentFlowsSummaryPerpsRequest","description":"Request model for the Hyperliquid historical token recent flows summary 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."},"TGMHistoricalTokenRecentFlowsSummaryPerpsResponse":{"properties":{"pagination":{"$ref":"#/components/schemas/PaginationInfo","description":"Pagination information"},"data":{"items":{"$ref":"#/components/schemas/TGMHistoricalTokenRecentFlowsSummaryPerpsItem"},"type":"array","title":"Data","description":"Per-coin cohort exposure records at the requested cutoff."}},"type":"object","required":["pagination","data"],"title":"TGMHistoricalTokenRecentFlowsSummaryPerpsResponse","description":"Response model for the Hyperliquid historical token recent flows summary endpoint."},"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."},"TGMHistoricalTokenRecentFlowsSummaryPerpsItem":{"properties":{"coin":{"type":"string","title":"Coin","description":"Hyperliquid perp coin symbol"},"smart_trader_longs_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Smart Trader Longs Usd","description":"Gross long USD exposure of the Smart Trader cohort."},"smart_trader_shorts_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Smart Trader Shorts Usd","description":"Gross short USD exposure of the Smart Trader cohort (positive magnitude)."},"smart_trader_total_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Smart Trader Total Usd","description":"Gross total USD exposure of the Smart Trader cohort (longs + shorts as positive magnitudes)."},"whale_longs_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Whale Longs Usd","description":"Gross long USD exposure of the Whale cohort."},"whale_shorts_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Whale Shorts Usd","description":"Gross short USD exposure of the Whale cohort (positive magnitude)."},"whale_total_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Whale Total Usd","description":"Gross total USD exposure of the Whale cohort."},"public_figure_longs_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Public Figure Longs Usd","description":"Gross long USD exposure of the Public Figure cohort."},"public_figure_shorts_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Public Figure Shorts Usd","description":"Gross short USD exposure of the Public Figure cohort (positive magnitude)."},"public_figure_total_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Public Figure Total Usd","description":"Gross total USD exposure of the Public Figure cohort."},"top_pnl_longs_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Pnl Longs Usd","description":"Unsupported; currently always null."},"top_pnl_shorts_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Pnl Shorts Usd","description":"Unsupported; currently always null."},"top_pnl_total_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Pnl Total Usd","description":"Unsupported; currently always null."}},"type":"object","required":["coin"],"title":"TGMHistoricalTokenRecentFlowsSummaryPerpsItem","description":"Single per-coin cohort exposure record at the requested cutoff."},"ErrorEnvelope":{"type":"object","required":["error","message","code","status","request_id","doc_url"],"properties":{"error":{"type":"string","description":"Human-readable error category."},"message":{"type":"string","description":"Human-readable explanation of the error."},"code":{"type":"string","enum":["missing_field","unknown_field","invalid_field_value","invalid_address_format","invalid_date_format","invalid_date_range","mutually_exclusive_fields","value_out_of_range","too_many_items","unauthenticated","forbidden","insufficient_scope","api_key_credit_limit_reached","geo_blocked","plan_upgrade_required","insufficient_credits","rate_limit_exceeded","not_found","account_profile_unavailable","method_not_allowed","conflict","payload_too_large","query_timeout","query_too_large","upstream_unavailable","internal_error"],"description":"Stable machine-readable error code."},"status":{"type":"integer","description":"HTTP status code returned for the request."},"request_id":{"type":["string","null"],"description":"Identifier for the request, when available."},"doc_url":{"type":"string","format":"uri","description":"Link to the error-code reference documentation, anchored to this error's code."},"param":{"type":"string","description":"Request parameter associated with the error."},"retry_after":{"type":"integer","minimum":0,"description":"Seconds to wait before retrying the request."}}}},"headers":{"XNansenCreditsCost":{"description":"Quoted credit cost of this request. It is present on successful responses and errors reached after pricing, but absent when a request is rejected before pricing. A value of 0 means plan credits do not apply.","schema":{"type":"string"}},"XNansenCreditsUsed":{"description":"Credits actually deducted for this request. Only successful (2xx) responses are charged, so this is 0 on every non-2xx response that carries X-Nansen-Credits-Cost, including 422 validation errors. Can also be 0 on a successful response that is free, such as an empty labels result.","schema":{"type":"string"}},"XRequestId":{"description":"Unique identifier for this request, returned on every response. Uses the upstream-assigned request id when available; otherwise echoes a caller-supplied X-Request-Id or generates an id. Include this value in support requests.","schema":{"type":"string"}},"XNansenCreditsRemaining":{"description":"Total credits remaining in the user's account after this request. Sent when an account balance is available, including credit-checked successful responses and the insufficient-credits 403.","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":"Seconds until the rate limit window resets. A delta in seconds, not a Unix timestamp.","schema":{"type":"string"}},"XRateLimitLimit":{"description":"Request limit for the most constrained app-enforced window","schema":{"type":"string"}},"XRateLimitRemaining":{"description":"Requests remaining in the most constrained app-enforced window","schema":{"type":"string"}},"XRateLimitReset":{"description":"Seconds until the most constrained app-enforced window resets. A delta in seconds, not a Unix timestamp: it is at least 1 and never exceeds the window span.","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"}},"XNansenRateLimitScope":{"description":"Window that caused an enforced rate-limit rejection: `second` or `minute` for global plan windows, or `endpoint` for an endpoint-specific window. This is an open set; clients should handle unknown future values with generic rate-limit behavior.","schema":{"type":"string"}}},"responses":{"BadRequestError":{"description":"Bad Request - Invalid request parameters or malformed request","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","properties":{"detail":{"type":"string"}}}]}}}},"UnauthorizedError":{"description":"Authentication error - No API key found in request","headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"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"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"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","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Nansen-Credits-Remaining":{"$ref":"#/components/headers/XNansenCreditsRemaining"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","properties":{"detail":{"type":"string"}}}]}}}},"NotFoundError":{"description":"Not Found - The requested resource was not found","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"ValidationError":{"description":"Validation error - Invalid request parameters","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","properties":{"errors":{"type":"array","description":"Per-field request-validation errors, in the order they were detected. This field is absent from other 422 responses. The top-level error, message, and code reflect the primary error, which is not always the first entry. When a request produces an unusually large number of errors the list is truncated and a final entry reports how many were omitted.","items":{"type":"object","required":["field","message","code"],"properties":{"field":{"type":"string","description":"Path of the request field that failed validation, prefixed with its location in the request (body, query, path, header, or cookie) and including array indices. Unlike param, this path keeps the location prefix and array indices."},"message":{"type":"string","description":"Human-readable explanation of the field error."},"code":{"type":"string","enum":["missing_field","unknown_field","invalid_field_value","invalid_address_format","invalid_date_format","invalid_date_range","mutually_exclusive_fields","value_out_of_range","too_many_items"],"description":"Stable machine-readable error code."}}}}}}]}}}},"TooManyRequestsError":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","properties":{"detail":{"type":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying"}}}]}}},"headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Nansen-RateLimit-Scope":{"$ref":"#/components/headers/XNansenRateLimitScope"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}}},"InternalServerError":{"description":"Internal Server Error - An unexpected error occurred","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"BadGatewayError":{"description":"Bad Gateway - Upstream service unavailable","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","required":["retry_after"],"properties":{"retry_after":{"type":"integer","description":"Seconds to wait before retrying"}}}]}}}},"ServiceUnavailableError":{"description":"Service Unavailable - Service temporarily unavailable","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","required":["retry_after"],"properties":{"retry_after":{"type":"integer","description":"Seconds to wait before retrying"}}}]}}}},"GatewayTimeoutError":{"description":"Gateway Timeout - Upstream service timed out","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","required":["retry_after"],"properties":{"retry_after":{"type":"integer","description":"Seconds to wait before retrying"}}}]}}}}}},"paths":{"/api/v1beta1/tgm/historical-token-recent-flows-summary-perps":{"post":{"tags":["Token God Mode"],"summary":"Get Historical Smart Money Perps Positions (Beta)","description":"**Beta. Request shapes, response fields, and pricing may change.**\n\nHistorical long, short, and total USD exposure for one Hyperliquid perp coin.\nReturns the Smart Trader, Whale, and Public Figure cohorts.\n\nSupply `coin` and exactly one cutoff: `as_of_date` for a completed UTC date,\nor `as_of_ts` for an exact RFC3339 timestamp with a timezone, no later than now.\n\nShort exposure is a positive magnitude. Net position equals longs minus\nshorts; total exposure equals longs plus shorts. Missing cohort coverage\nreturns null exposure fields. Top PnL exposure fields are unsupported and return null.\n\n`sm_label_filter` narrows the Smart Trader cohort. An empty list selects\n`Smart HL Perps Trader`. Whale and Public Figure cohorts are fixed.\n\nDate snapshots and some timestamp snapshots use labels assigned retrospectively.\nCohort membership was not necessarily knowable at the cutoff and can introduce\nlook-ahead bias in backtests. Some label filters can reflect current fund membership.\n\nResults may change after late data, pricing fixes, label-history corrections,\nor historical data backfills.","operationId":"get_tgm_historical_token_recent_flows_summary_perps_beta_api_v1beta1_tgm_historical_token_recent_flows_summary_perps_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TGMHistoricalTokenRecentFlowsSummaryPerpsRequest"}}},"required":true},"responses":{"200":{"description":"Historical Hyperliquid cohort exposure at the requested cutoff","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TGMHistoricalTokenRecentFlowsSummaryPerpsResponse"}}},"headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"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":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"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"},"502":{"description":"Bad Gateway","$ref":"#/components/responses/BadGatewayError"},"503":{"description":"Service Unavailable","$ref":"#/components/responses/ServiceUnavailableError"},"504":{"description":"Gateway Timeout","$ref":"#/components/responses/GatewayTimeoutError"}}}}}}
```


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
