> 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/token-god-mode/price-ohlcv.md).

# Price OHLCV

### Data Freshness & Historical Coverage

For data freshness and historical coverage, see [Data Coverage by Chain](/api/data-coverage.md); this endpoint follows it except where noted below.

* **Latency:** the most recent candle is the current, still-open interval and keeps updating until it closes. Prices come from a median price feed that refreshes roughly every 5 minutes, so `5m` and larger candles are at most \~5 minutes behind; the `1m` timeframe is built directly from on-chain swaps and is trade-fresh over a short recent window. Hyperliquid tokens are served live from Hyperliquid's own feed.
* **History:** each token's history goes back to the first price Nansen recorded for it, so the start date varies by token.
* **Batch tokens with no data:** in batch requests, tokens that have no candles for the requested chain, timeframe, and date range are omitted from `tokens`. They are not returned as empty `data: []` placeholders and do not cause an error. To identify omitted tokens, compare your submitted addresses with the `tokens[].token_address` values in the response. This omission is distinct from truncation; a token can be omitted with no data while `truncated` remains `false`.
* **Truncation:** single-token requests return at most 50,000 candles per token, ordered oldest first; if the requested range exceeds that cap, the most recent candles are dropped first. Batch requests return at most 50,000 candles shared across all requested tokens, ordered oldest first across the batch. Check the `truncated` boolean; when it is `true`, inspect `truncation_note` for details. To retrieve complete data, narrow or split the date range. For batch requests, reduce the token count or query tokens individually when complete per-token coverage is required.
* **Truncation on Hyperliquid:** Hyperliquid tokens come from Hyperliquid's own feed, which caps each token's response at roughly 5,000 candles — well below the 50,000 above — and drops the **oldest** candles rather than the most recent, so a range wider than the cap comes back starting later than requested. The same `truncated` / `truncation_note` fields flag it; in a batch request `truncated` is `true` when at least one token was cut short. Split the request into shorter ranges to walk the full history.

## Retrieve token OHLCV candle data

> Get unified OHLCV (Open, High, Low, Close, Volume) data for tokens across supported chains.\
> \
> \*\*Low timeframes\*\* (sub-hourly + 4h): \`1m\`, \`5m\`, \`15m\`, \`30m\`, \`1h\`, \`4h\`\
> \*\*High timeframes\*\* (multi-day): \`1d\`, \`1w\`, \`1M\`\
> \
> Returns OHLCV candle data including:\
> \- \*\*Price data\*\*: open, high, low, close prices\
> \- \*\*Volume data\*\*: trading volume in token units and USD\
> \- \*\*Market cap data\*\*: market capitalization at each time point\
> \
> Date range defaults to the last 30 days if not specified.

```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":{"TokenOHLCVRequest":{"properties":{"chain":{"$ref":"#/components/schemas/TGMOHLCVChain","description":"Blockchain chain"},"token_address":{"anyOf":[{"type":"string"}],"title":"Token Address","description":"Token contract address"},"token_addresses":{"anyOf":[{"items":{"type":"string"},"type":"array"}],"title":"Token Addresses","description":"Array of token contract addresses for batch queries (max 10, or max 5 for Hyperliquid, mutually exclusive with token_address)"},"date_range":{"anyOf":[{"$ref":"#/components/schemas/TokenOHLCVDateRange"}],"description":"DEPRECATED: Use 'date' instead. Date range with start/end fields.","deprecated":true},"date":{"anyOf":[{"$ref":"#/components/schemas/DateRange"}],"description":"Date range for the data (defaults to last 30 days if not specified)"},"timeframe":{"$ref":"#/components/schemas/ResolutionEnum","description":"Time resolution for OHLCV data"}},"additionalProperties":false,"type":"object","required":["chain","timeframe"],"title":"TokenOHLCVRequest","description":"Request model for Token OHLCV endpoint.\n\nThis endpoint provides unified OHLCV (Open, High, Low, Close, Volume) data\nfor tokens across supported chains with different time resolutions."},"TGMOHLCVChain":{"type":"string","enum":["algorand","aptos","arbitrum","avalanche","base","bitcoin","bitlayer","bnb","chiliz","ethereum","gravity","hyperevm","hyperliquid","injective","iotaevm","linea","mantle","mantra","monad","near","optimism","plasma","polygon","robinhood","sei","solana","sonic","stacks","starknet","stellar","sui","ton","tron","viction"],"title":"TGMOHLCVChain","description":"Chains supported for TGM OHLCV endpoint (includes Bitcoin)."},"TokenOHLCVDateRange":{"properties":{"start":{"type":"string","title":"Start","description":"Start date and time (ISO format)"},"end":{"type":"string","title":"End","description":"End date and time (ISO format)"}},"type":"object","required":["start","end"],"title":"TokenOHLCVDateRange","description":"DEPRECATED: Use 'date' field with standard DateRange instead."},"DateRange":{"properties":{"from":{"anyOf":[{"type":"string"}],"title":"From","description":"Start date in ISO 8601 format (e.g., 2025-01-01T00:00:00Z or 2025-01-01)"},"to":{"anyOf":[{"type":"string"}],"title":"To","description":"End date in ISO 8601 format (e.g., 2025-01-31T23:59:59Z or 2025-01-31)"}},"type":"object","title":"DateRange","description":"Date range model matching the API schema."},"ResolutionEnum":{"type":"string","enum":["1m","5m","15m","30m","1h","4h","1d","1w","1M"],"title":"ResolutionEnum","description":"Supported OHLCV resolution values."},"TokenOHLCVResponse":{"properties":{"chain":{"type":"string","title":"Chain","description":"Blockchain chain"},"token_address":{"type":"string","title":"Token Address","description":"Token contract address"},"timeframe":{"type":"string","title":"Timeframe","description":"Time resolution used"},"data":{"items":{"$ref":"#/components/schemas/OHLCVCandle"},"type":"array","title":"Data","description":"OHLCV candle data points, ordered by interval_start"},"truncated":{"type":"boolean","title":"Truncated","description":"True if the result reached the candle cap and some candles were omitted. On most chains the cap is 50,000 candles for this token and the omitted candles are the most recent ones, since results are ordered by interval_start ascending. Hyperliquid tokens are served from Hyperliquid's own feed, which applies a smaller per-response cap of roughly 5,000 candles and omits the oldest candles instead, so the returned data starts later than requested. Narrow the date range for complete coverage.","default":false},"truncation_note":{"anyOf":[{"type":"string"}],"title":"Truncation Note","description":"Human-readable detail when 'truncated' is true, naming the cap that was reached and which end of the requested range was omitted."}},"type":"object","required":["chain","token_address","timeframe","data"],"title":"TokenOHLCVResponse","description":"Response model for Token OHLCV endpoint (single token).\n\nContains the requested OHLCV data with metadata about the request parameters."},"OHLCVCandle":{"properties":{"interval_start":{"type":"string","title":"Interval Start","description":"Start time of the candle interval (ISO datetime string)"},"open":{"anyOf":[{"type":"number"}],"title":"Open","description":"Opening price"},"high":{"anyOf":[{"type":"number"}],"title":"High","description":"Highest price in the interval"},"low":{"anyOf":[{"type":"number"}],"title":"Low","description":"Lowest price in the interval"},"close":{"anyOf":[{"type":"number"}],"title":"Close","description":"Closing price"},"volume":{"anyOf":[{"type":"number"}],"title":"Volume","description":"Trading volume in token units"},"volume_usd":{"anyOf":[{"type":"number"}],"title":"Volume Usd","description":"Trading volume in USD"},"market_cap":{"$ref":"#/components/schemas/MarketCapData","description":"Market capitalization data for the candle"}},"type":"object","required":["interval_start","market_cap"],"title":"OHLCVCandle","description":"Individual OHLCV candle data point."},"MarketCapData":{"properties":{"open":{"anyOf":[{"type":"number"}],"title":"Open","description":"Market cap at candle open"},"high":{"anyOf":[{"type":"number"}],"title":"High","description":"Highest market cap in the candle"},"low":{"anyOf":[{"type":"number"}],"title":"Low","description":"Lowest market cap in the candle"},"close":{"anyOf":[{"type":"number"}],"title":"Close","description":"Market cap at candle close"}},"type":"object","title":"MarketCapData","description":"Market capitalization data for OHLCV candles."},"TokenOHLCVBatchResponse":{"properties":{"chain":{"type":"string","title":"Chain","description":"Blockchain chain"},"timeframe":{"type":"string","title":"Timeframe","description":"Time resolution used"},"tokens":{"items":{"$ref":"#/components/schemas/TokenOHLCVTokenData"},"type":"array","title":"Tokens","description":"OHLCV data per token, ordered by token address. Only tokens with available data are included. A requested token with no data is omitted from this array, not returned with an empty data list. Compare the length of this array against the number of token addresses in your request to detect omitted tokens."},"truncated":{"type":"boolean","title":"Truncated","description":"True if the result reached the candle cap and some candles were omitted. On most chains the cap is 50,000 candles shared across all requested tokens: candles are collected in interval_start ascending, then token_address ascending order, so the most recent candles across all tokens are omitted first and a single token with dense data may consume a disproportionate share of the cap. Hyperliquid tokens are served from Hyperliquid's own feed, which caps each token separately at roughly 5,000 candles and omits that token's oldest candles instead; the flag is true when at least one token was cut short. To ensure complete coverage, narrow the date range or query tokens individually.","default":false},"truncation_note":{"anyOf":[{"type":"string"}],"title":"Truncation Note","description":"Human-readable detail when 'truncated' is true, naming the cap that was reached and which end of the requested range was omitted."}},"type":"object","required":["chain","timeframe","tokens"],"title":"TokenOHLCVBatchResponse","description":"Response model for batch Token OHLCV requests (multiple tokens).\n\nContains OHLCV data grouped by token address."},"TokenOHLCVTokenData":{"properties":{"token_address":{"type":"string","title":"Token Address","description":"Token contract address"},"data":{"items":{"$ref":"#/components/schemas/OHLCVCandle"},"type":"array","title":"Data","description":"OHLCV candle data points, ordered by interval_start"}},"type":"object","required":["token_address","data"],"title":"TokenOHLCVTokenData","description":"OHLCV data for a single token within a batch response."},"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","geo_blocked","plan_upgrade_required","insufficient_credits","rate_limit_exceeded","not_found","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"}},"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"}},"XNansenCreditsUsed":{"description":"Credits actually deducted for this request. Can differ from the quoted cost, for example 0 when the request was rejected.","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":"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-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-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-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"},"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-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"},"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"},"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"},"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/v1/tgm/token-ohlcv":{"post":{"tags":["Token God Mode"],"summary":"Retrieve token OHLCV candle data","description":"Get unified OHLCV (Open, High, Low, Close, Volume) data for tokens across supported chains.\n\n**Low timeframes** (sub-hourly + 4h): `1m`, `5m`, `15m`, `30m`, `1h`, `4h`\n**High timeframes** (multi-day): `1d`, `1w`, `1M`\n\nReturns OHLCV candle data including:\n- **Price data**: open, high, low, close prices\n- **Volume data**: trading volume in token units and USD\n- **Market cap data**: market capitalization at each time point\n\nDate range defaults to the last 30 days if not specified.","operationId":"get_token_ohlcv_api_v1_tgm_token_ohlcv_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenOHLCVRequest"}}},"required":true},"responses":{"200":{"description":"Token OHLCV data","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TokenOHLCVResponse"},{"$ref":"#/components/schemas/TokenOHLCVBatchResponse"}],"title":"Response Get Token Ohlcv Api V1 Tgm Token Ohlcv Post"}}},"headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"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":{"$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 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/token-god-mode/price-ohlcv.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.
