start and end are Unix timestamps in milliseconds and default to the last 24 hours. The optional interval downsamples by selecting the last stored snapshot in each bucket; percentages are never averaged because the denominator can vary. The optional cursor is an epoch-millisecond timestamp from meta.next_cursor and is exclusive. Snapshots are written every minute. Data collection begins August 28, 2026.
Route Metadata
| Field | Value |
|---|---|
| Method | GET |
| Path | /v1/hyperliquid/hip3/breadth/above-vwap |
| operationId | getHip3BreadthAboveVwap |
| Tag | HIP-3 Builder Perps - Breadth |
| Family | HIP-3 |
| Deprecated or legacy | no |
Request Parameters
Query Parameters
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "getHip3BreadthAboveVwap query parameters",
"type": "object",
"properties": {
"start": {
"description": "Start timestamp in Unix milliseconds. Defaults to 24h ago.",
"type": "integer",
"format": "int64",
"x-parameter-location": "query"
},
"end": {
"description": "End timestamp in Unix milliseconds. Defaults to now.",
"type": "integer",
"format": "int64",
"x-parameter-location": "query"
},
"cursor": {
"description": "Cursor timestamp in Unix milliseconds. Pass `meta.next_cursor` from the prior response; results after this timestamp are returned.",
"type": "string",
"x-parameter-location": "query"
},
"limit": {
"description": "Maximum number of snapshots (default: 100, max: 1000).",
"type": "integer",
"default": 100,
"maximum": 1000,
"x-parameter-location": "query"
},
"interval": {
"description": "Optional aggregation interval. Downsampled intervals select the last stored snapshot in each bucket; percentages are never averaged.",
"type": "string",
"enum": [
"5m",
"15m",
"30m",
"1h",
"4h",
"1d"
],
"x-parameter-location": "query"
}
}
}
Response Contracts
Status 200
Historical HIP-3 breadth snapshotsapplication/json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "getHip3BreadthAboveVwap response 200",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"description": "Aggregate percentage of eligible HIP-3 instruments trading above their current UTC-session VWAP. Per-symbol VWAPs are not served.",
"type": "object",
"required": [
"calculated_at",
"counts",
"coverage_ratio",
"namespaces",
"session_date",
"value_pct"
],
"properties": {
"calculated_at": {
"description": "Timestamp when this snapshot was calculated.",
"type": "string",
"format": "date-time"
},
"counts": {
"description": "Auditable counts behind an aggregate HIP-3 breadth snapshot.",
"type": "object",
"required": [
"above",
"at",
"below",
"candidates",
"eligible",
"excluded_no_session_volume",
"excluded_stale_price"
],
"properties": {
"above": {
"description": "Eligible instruments trading above their current UTC-session VWAP.",
"type": "integer",
"format": "int32",
"minimum": 0
},
"at": {
"description": "Eligible instruments at their current UTC-session VWAP.",
"type": "integer",
"format": "int32",
"minimum": 0
},
"below": {
"description": "Eligible instruments trading below their current UTC-session VWAP.",
"type": "integer",
"format": "int32",
"minimum": 0
},
"candidates": {
"description": "Candidate instruments considered for the snapshot.",
"type": "integer",
"format": "int32",
"minimum": 0
},
"eligible": {
"description": "Eligible instruments included in the headline percentage.",
"type": "integer",
"format": "int32",
"minimum": 0
},
"excluded_no_session_volume": {
"description": "Candidates excluded because the current UTC session has no qualifying volume.",
"type": "integer",
"format": "int32",
"minimum": 0
},
"excluded_stale_price": {
"description": "Candidates excluded because their price was stale.",
"type": "integer",
"format": "int32",
"minimum": 0
}
}
},
"coverage_ratio": {
"description": "Eligible divided by candidates, constrained to the range 0..1.",
"type": "number",
"format": "double",
"minimum": 0,
"maximum": 1
},
"namespaces": {
"description": "Per-builder-namespace count breakdowns keyed by namespace.",
"type": "object",
"required": [
"above",
"at",
"below",
"eligible"
],
"properties": {
"above": {
"description": "Above-VWAP counts by builder namespace.",
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32",
"minimum": 0
}
},
"at": {
"description": "At-VWAP counts by builder namespace.",
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32",
"minimum": 0
}
},
"below": {
"description": "Below-VWAP counts by builder namespace.",
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32",
"minimum": 0
}
},
"eligible": {
"description": "Eligible instrument counts by builder namespace.",
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32",
"minimum": 0
}
}
}
},
"session_date": {
"description": "UTC session date.",
"type": "string",
"format": "date"
},
"value_pct": {
"description": "100 times above divided by eligible; null when eligible is zero.",
"type": "number",
"format": "double",
"nullable": true
}
}
}
},
"meta": {
"description": "Response metadata",
"type": "object",
"properties": {
"count": {
"description": "Number of records returned",
"type": "integer"
},
"coverage_from": {
"description": "Earliest coverage for the requested symbol and data type. Present only when the requested window ends before coverage begins.",
"type": "string",
"format": "date-time"
},
"next_cursor": {
"description": "Cursor for pagination (timestamp). Use this value as the `cursor` parameter to fetch the next page of results.",
"type": "string",
"nullable": true
},
"notice": {
"description": "Human-readable advisory about the response. Currently used when the requested window ends before coverage begins for the symbol; may carry other advisories in future.",
"type": "string"
},
"request_id": {
"description": "Unique request ID for support",
"type": "string",
"format": "uuid"
}
}
},
"success": {
"type": "boolean",
"example": true
}
}
}
Status 400
Invalid requestapplication/json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "getHip3BreadthAboveVwap response 400",
"description": "Error response",
"type": "object",
"properties": {
"code": {
"description": "HTTP status code",
"type": "integer"
},
"error": {
"description": "Error message",
"type": "string"
},
"error_code": {
"description": "Machine-readable error code. Common values: `invalid_query_params` (a query parameter failed to parse or validate) and `invalid_path_params` (a path parameter failed to parse). Other endpoint-specific codes exist; treat unknown codes as generic errors of the given HTTP status.",
"type": "string"
},
"request_id": {
"description": "Unique request ID for support",
"type": "string",
"format": "uuid"
}
}
}
OpenAPI example
{
"code": 400,
"error": "Failed to deserialize query string: limit: invalid digit found in string",
"error_code": "invalid_query_params",
"request_id": "3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"
}
Status 401
Authentication requiredapplication/json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "getHip3BreadthAboveVwap response 401",
"description": "Error response",
"type": "object",
"properties": {
"code": {
"description": "HTTP status code",
"type": "integer"
},
"error": {
"description": "Error message",
"type": "string"
},
"error_code": {
"description": "Machine-readable error code. Common values: `invalid_query_params` (a query parameter failed to parse or validate) and `invalid_path_params` (a path parameter failed to parse). Other endpoint-specific codes exist; treat unknown codes as generic errors of the given HTTP status.",
"type": "string"
},
"request_id": {
"description": "Unique request ID for support",
"type": "string",
"format": "uuid"
}
}
}
OpenAPI example
{
"code": 401,
"error": "Missing or invalid API key. Provide X-API-Key header."
}
Status 429
Rate limit exceededapplication/json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "getHip3BreadthAboveVwap response 429",
"description": "Error response",
"type": "object",
"properties": {
"code": {
"description": "HTTP status code",
"type": "integer"
},
"error": {
"description": "Error message",
"type": "string"
},
"error_code": {
"description": "Machine-readable error code. Common values: `invalid_query_params` (a query parameter failed to parse or validate) and `invalid_path_params` (a path parameter failed to parse). Other endpoint-specific codes exist; treat unknown codes as generic errors of the given HTTP status.",
"type": "string"
},
"request_id": {
"description": "Unique request ID for support",
"type": "string",
"format": "uuid"
}
}
}
OpenAPI example
{
"code": 429,
"error": "Rate limit exceeded"
}