GET /v1/multi-asset¶
GET https://api.hypquant.com/v1/multi-asset
Returns the same field across multiple symbols in wide format — one column per symbol. Ideal for correlation matrices, portfolio analytics, and cross-asset strategies. Requires an API key.
Parameters¶
| Name | Type | Required | Description |
|---|---|---|---|
symbols | string | yes | Comma-separated pairs, e.g. BTC-USDC,ETH-USDC,SOL-USDC |
exchange | string | yes | hyperliquid or binance |
timeframe | string | yes | 1m, 5m, 15m, 1h, 4h, 1d |
field | string | yes | open, high, low, close, volume, funding_rate, or any feature name |
start | string | yes | Start time — ISO8601 or Unix milliseconds |
end | string | no | End time. Defaults to now |
Tier restrictions
- Free: max 5 symbols per request;
1h+ only; ≤ 365-day window. - Pro: max 30 symbols per request.
- Scale: unlimited symbols.
Response¶
{
"symbols": ["BTC-USDC", "ETH-USDC", "SOL-USDC"],
"exchange": "hyperliquid",
"timeframe": "1h",
"field": "close",
"count": 2,
"data": [
{
"time": "2024-01-01T00:00:00+00:00",
"BTC-USDC": "42289.000000",
"ETH-USDC": "2285.500000",
"SOL-USDC": "101.200000"
},
{
"time": "2024-01-01T01:00:00+00:00",
"BTC-USDC": "42450.000000",
"ETH-USDC": "2302.000000",
"SOL-USDC": "103.500000"
}
]
}
Timestamps are aligned across symbols. If a symbol is missing a candle (gap), its cell is absent for that row.
Examples¶
from hypquant import MarketData
import polars as pl
with MarketData(api_key="qp_...") as md:
# Closing prices for correlation analysis
df = md.multi_asset(
symbols=["BTC-USDC", "ETH-USDC", "SOL-USDC", "ARB-USDC"],
exchange="hyperliquid",
timeframe="1h",
field="close",
start="2024-01-01",
end="2024-06-01",
)
# Compute correlation matrix
corr = df.select(pl.exclude("time")).to_pandas().corr()
print(corr)
Error responses¶
| HTTP | error code | Cause |
|---|---|---|
| 400 | MISSING_SYMBOLS | symbols parameter is empty |
| 400 | INVALID_TIMEFRAME | Timeframe not in allowed set |
| 400 | INVALID_TIMESTAMP | start or end could not be parsed |
| 400 | INVALID_TIME_RANGE | start is after end |
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | TIER_LIMIT_EXCEEDED | Symbol count, timeframe, or history window exceeds tier |
| 429 | RATE_LIMIT_EXCEEDED | Daily or per-minute request quota reached |