# Address Perp Positions

## Get Perpetual Positions Data

> Get perpetual positions data for a user by calling the Hyperliquid API directly. This endpoint provides real-time position information including entry price, mark price, PnL, leverage, and other position details.\
> \
> \*\*What it helps to answer:\*\*\
> \
> 1\. \*\*What are the current perpetual positions for a specific user address?\*\*\
> 2\. \*\*What is the unrealized PnL and performance of each position?\*\*\
> 3\. \*\*What are the leverage levels and margin requirements for each position?\*\*\
> 4\. \*\*What are the liquidation prices and risk levels for each position?\*\*

```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":{"PerpPositionsRequest":{"properties":{"address":{"type":"string","maxLength":42,"minLength":42,"title":"Address","description":"User's Hyperliquid address in 42-character hexadecimal format"},"filters":{"anyOf":[{"$ref":"#/components/schemas/PerpPositionsFilters"}],"description":"Additional filters to apply to the query."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/SortOrder_PerpPositionsSortField_"},"type":"array"}],"title":"Order By","description":"Custom sort order to override the endpoint's default ordering.\n\nExamples:\n- [{\"field\": \"position_value_usd\", \"direction\": \"DESC\"}] - Sort by position value descending\n- [{\"field\": \"unrealized_pnl_usd\", \"direction\": \"ASC\"}] - Sort by unrealized PnL ascending\n\nIf not provided, positions are sorted by position value descending."}},"additionalProperties":false,"type":"object","required":["address"],"title":"PerpPositionsRequest","description":"Request model for Perp Positions endpoint."},"PerpPositionsFilters":{"properties":{"token_symbol":{"anyOf":[{"type":"string"}],"title":"Token Symbol","description":"Filter by token symbol"},"position_value_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Filter by position value in USD"},"position_type":{"anyOf":[{"type":"string"}],"title":"Position Type","description":"Filter by position type"},"unrealized_pnl_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Filter by unrealized PnL in USD"}},"additionalProperties":false,"type":"object","title":"PerpPositionsFilters","description":"Filters for perp positions endpoint."},"NumericRangeFilter":{"properties":{"min":{"anyOf":[{"type":"number"}],"title":"Min","description":"Minimum value (inclusive)"},"max":{"anyOf":[{"type":"number"}],"title":"Max","description":"Maximum value (inclusive)"}},"type":"object","title":"NumericRangeFilter","description":"Filter for numeric values (floats) with optional min/max bounds.\nUse for prices, volumes, ratios, and other decimal values. - Values between -10.5 and 100.75"},"SortOrder_PerpPositionsSortField_":{"properties":{"field":{"$ref":"#/components/schemas/PerpPositionsSortField","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction (ASC or DESC)"}},"type":"object","required":["field","direction"],"title":"SortOrder[PerpPositionsSortField]"},"PerpPositionsSortField":{"type":"string","enum":["leverage_value","position_value_usd","entry_price_usd","liquidation_price_usd","unrealized_pnl_usd","size","token_symbol","position_type"],"title":"PerpPositionsSortField","description":"Enum for perp positions sort fields."},"SortDirection":{"type":"string","enum":["ASC","DESC"],"title":"SortDirection","description":"Enum for sort directions."},"PerpPositionsResponse":{"properties":{"data":{"$ref":"#/components/schemas/PerpPositionsData","description":"Hyperliquid clearinghouse state data"}},"additionalProperties":false,"type":"object","required":["data"],"title":"PerpPositionsResponse","description":"Response model for perp positions endpoint."},"PerpPositionsData":{"properties":{"assetPositions":{"anyOf":[{"items":{"$ref":"#/components/schemas/AssetPosition"},"type":"array"}],"title":"Assetpositions","description":"List of asset positions"},"crossMaintenanceMarginUsed":{"anyOf":[{"type":"string"}],"title":"Crossmaintenancemarginused","description":"Cross maintenance margin used USD"},"cross_margin_summary_account_value_usd":{"anyOf":[{"type":"string"}],"title":"Cross Margin Summary Account Value Usd","description":"Cross margin summary account value USD"},"cross_margin_summary_total_margin_used_usd":{"anyOf":[{"type":"string"}],"title":"Cross Margin Summary Total Margin Used Usd","description":"Cross margin summary total margin used USD"},"cross_margin_summary_total_net_liquidation_position_on_usd":{"anyOf":[{"type":"string"}],"title":"Cross Margin Summary Total Net Liquidation Position On Usd","description":"Cross margin summary total net liquidation position on USD"},"cross_margin_summary_total_raw_usd":{"anyOf":[{"type":"string"}],"title":"Cross Margin Summary Total Raw Usd","description":"Cross margin summary total raw USD"},"margin_summary_account_value_usd":{"anyOf":[{"type":"string"}],"title":"Margin Summary Account Value Usd","description":"Margin summary account value USD"},"margin_summary_total_margin_used_usd":{"anyOf":[{"type":"string"}],"title":"Margin Summary Total Margin Used Usd","description":"Margin summary total margin used USD"},"margin_summary_total_net_liquidation_position_usd":{"anyOf":[{"type":"string"}],"title":"Margin Summary Total Net Liquidation Position Usd","description":"Margin summary total net liquidation position USD"},"margin_summary_total_raw_usd":{"anyOf":[{"type":"string"}],"title":"Margin Summary Total Raw Usd","description":"Margin summary total raw USD"},"time":{"anyOf":[{"type":"integer"}],"title":"Time","description":"Timestamp"},"withdrawable":{"anyOf":[{"type":"string"}],"title":"Withdrawable","description":"Withdrawable USD"}},"additionalProperties":false,"type":"object","title":"PerpPositionsData","description":"Data model for Hyperliquid clearinghouse state response."},"AssetPosition":{"properties":{"position":{"anyOf":[{"$ref":"#/components/schemas/Position"}],"description":"Position data"},"position_type":{"anyOf":[{"type":"string"}],"title":"Position Type","description":"Position type"}},"additionalProperties":false,"type":"object","title":"AssetPosition","description":"Asset position wrapper."},"Position":{"properties":{"token_symbol":{"anyOf":[{"type":"string"}],"title":"Token Symbol","description":"Asset symbol (e.g., BTC, ETH)"},"size":{"anyOf":[{"type":"string"}],"title":"Size","description":"Size"},"position_value_usd":{"anyOf":[{"type":"string"}],"title":"Position Value Usd","description":"Position value USD"},"entry_price_usd":{"anyOf":[{"type":"string"}],"title":"Entry Price Usd","description":"Entry price USD"},"liquidation_price_usd":{"anyOf":[{"type":"string"}],"title":"Liquidation Price Usd","description":"Liquidation price USD"},"leverage_value":{"anyOf":[{"type":"integer"}],"title":"Leverage Value","description":"Leverage value"},"leverage_type":{"anyOf":[{"type":"string"}],"title":"Leverage Type","description":"Leverage type: 'cross' or 'isolated'"},"leverage_raw_usd":{"anyOf":[{"type":"string"}],"title":"Leverage Raw Usd","description":"Raw USD leverage"},"margin_used_usd":{"anyOf":[{"type":"string"}],"title":"Margin Used Usd","description":"Margin used USD"},"max_leverage_value":{"anyOf":[{"type":"integer"}],"title":"Max Leverage Value","description":"Maximum allowed leverage value"},"return_on_equity":{"anyOf":[{"type":"string"}],"title":"Return On Equity","description":"Return on equity"},"unrealized_pnl_usd":{"anyOf":[{"type":"string"}],"title":"Unrealized Pnl Usd","description":"Unrealized PnL USD"},"cumulative_funding_all_time_usd":{"anyOf":[{"type":"string"}],"title":"Cumulative Funding All Time Usd","description":"Cumulative funding all time USD"},"cumulative_funding_since_change_usd":{"anyOf":[{"type":"string"}],"title":"Cumulative Funding Since Change Usd","description":"Cumulative funding since change USD"},"cumulative_funding_since_open_usd":{"anyOf":[{"type":"string"}],"title":"Cumulative Funding Since Open Usd","description":"Cumulative funding since open USD"}},"additionalProperties":false,"type":"object","title":"Position","description":"Individual perpetual position."}},"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/v1/profiler/perp-positions":{"post":{"tags":["Profiler"],"summary":"Get Perpetual Positions Data","description":"Get perpetual positions data for a user by calling the Hyperliquid API directly. This endpoint provides real-time position information including entry price, mark price, PnL, leverage, and other position details.\n\n**What it helps to answer:**\n\n1. **What are the current perpetual positions for a specific user address?**\n2. **What is the unrealized PnL and performance of each position?**\n3. **What are the leverage levels and margin requirements for each position?**\n4. **What are the liquidation prices and risk levels for each position?**","operationId":"get_perp_positions_api_v1_profiler_perp_positions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerpPositionsRequest"}}},"required":true},"responses":{"200":{"description":"Perpetual positions data for the user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerpPositionsResponse"}}},"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: 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:

```
GET https://docs.nansen.ai/api/profiler/address-perp-positions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
