Perp market signals for autonomous trading agents. Paid endpoints use x402 — pay $0.001 USDC per call, no API keys, no accounts.
/api/signalsPAID · $0.001Energy + crypto perp snapshot + multi-venue funding signals
/api/v1/signalsFREELive computed signals (supports ?dex=xyz|vntl)
/api/v1/signals/regimeFREEMarket regime classification — breadth, dispersion, funding skew
/api/v1/signals/funding-ratesFREEPer-asset funding rates with z-scores and signal derivation
/api/v1/signals/streamFREE · SSEServer-Sent Events stream for live signal updates
Returns a full perp market snapshot — energy (Brent Crude, WTI, Natural Gas) and top-50 crypto perpetuals from Hyperliquid, plus derived funding-rate signals across Hyperliquid + HIP-3 venues (xyz, vntl). Price: $0.001 USDC per call via PayAI facilitator on Solana mainnet. Refreshes every 15s (ISR).
curl -i "https://nexwave.so/api/signals"
HTTP/2 402
x402-version: 1
content-type: application/json
{
"x402Version": 1,
"error": "Payment Required",
"accepts": [
{
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"maxAmountRequired": "1000",
"resource": "https://nexwave.so/api/signals",
"description": "Perp market signals — energy + crypto top 50.",
"mimeType": "application/json",
"payTo": "<treasury-wallet>",
"maxTimeoutSeconds": 300,
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"extra": { "name": "USDC", "version": "1" }
}
]
}{
"updatedAt": "2026-04-05T12:00:00.000Z",
"energy": {
"description": "Hyperliquid xyz DEX — Brent Crude, WTI, Natural Gas perpetuals",
"markets": [
{
"coin": "xyz:BRENTOIL",
"label": "Brent Crude Oil",
"markPx": "74.52",
"change24h": -0.83,
"dayNtlVlm": "1234567",
"openInterest": "89012",
"funding": "0.0001"
}
]
},
"crypto": {
"description": "Hyperliquid main DEX — top 50 crypto perpetuals by index",
"markets": [
{
"coin": "BTC",
"markPx": "82150.0",
"change24h": 1.25,
"dayNtlVlm": "987654321",
"openInterest": "12345",
"funding": "0.0001"
}
]
},
"signals": {
"description": "Funding rate signals from cross-sectional z-scores across Hyperliquid + HIP-3 venues.",
"count": 8,
"data": [
{
"asset": "ZETA",
"venue": "hyperliquid",
"type": "funding_rate",
"direction": "long",
"confidence": 0.95,
"z_score": -11.3,
"annualized_pct": -251.1,
"funding_rate": -0.0023
}
],
"byVenue": {
"hyperliquid": [{ "asset": "ZETA", "venue": "hyperliquid", "type": "funding_rate", "direction": "long", "confidence": 0.95 }],
"xyz": [{ "asset": "xyz:BRENTOIL", "venue": "xyz", "type": "funding_rate", "direction": "short", "confidence": 0.72 }],
"vntl": []
}
}
}# pip install x402
from x402.client import fetch_with_payment
from solders.keypair import Keypair
import json
keypair = Keypair.from_base58_string("YOUR_PRIVATE_KEY")
response = fetch_with_payment(
url="https://nexwave.so/api/signals",
signer=keypair,
network="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
)
data = response.json()
print(f"BTC: {data['crypto']['markets'][0]['markPx']}")
print(f"Signals: {data['signals']['count']} active")
for sig in data['signals']['data'][:3]:
print(f" {sig['asset']} {sig['direction'].upper()} (conf {sig['confidence']:.0%})")Live-computed trading signals across the full Hyperliquid perp universe (~229 assets). Uses cross-sectional statistics — mean and std dev are derived from the universe itself each call, not hardcoded heuristics. Supports venue filter via query param:?dex=xyz or?dex=vntl. Refreshes on every request (no cache).
curl "https://nexwave.so/api/v1/signals" curl "https://nexwave.so/api/v1/signals?dex=xyz" curl "https://nexwave.so/api/v1/signals?dex=vntl"
funding_rateCross-sectional funding z-score |z|≥2σ. Direction: long when funding deeply negative (shorts paying), short when elevated (longs paying). Strength = |z|.
oi_divergencePrice change percentile vs OI percentile divergence. Price up + OI weak → exhaustion SHORT. Price down + OI weak → liquidation exhaustion LONG. Price up + OI strong → trend LONG.
volume_anomalyAssets in top 15% by 24h volume with >2% directional price move. Strength = volume percentile rank.
{
"updatedAt": "2026-04-05T12:00:00.000Z",
"source": "hyperliquid",
"dex": "",
"venueLabel": "Hyperliquid",
"assetCount": 229,
"signalCount": 44,
"signals": [
{
"id": "fr_zeta_1775366972438",
"type": "funding_rate",
"asset": "ZETA",
"direction": "long",
"confidence": 0.95,
"strength": 11.31,
"payload": {
"current_rate_pct": -0.23,
"annualized_pct": -251.1,
"z_score_30d": -11.31,
"mark_price": 0.0539,
"open_interest_usd": 1040214,
"description": "ZETA funding 11.3σ below universe mean. ..."
},
"ttl_seconds": 3600,
"created_at": "2026-04-05T12:00:00.000Z",
"metadata": { "backtest_winrate": 0.61, "historical_sharpe": 1.65 }
}
]
}import httpx
r = httpx.get("https://nexwave.so/api/v1/signals")
data = r.json()
print(f"{data['signalCount']} signals from {data['assetCount']} assets")
# High-confidence longs
longs = [s for s in data['signals'] if s['direction'] == 'long' and s['confidence'] > 0.8]
for s in longs[:5]:
print(f" LONG {s['asset']:10} {s['type']:20} conf={s['confidence']:.0%}")Real-time Server-Sent Events feed for signal updates. Supports?dex=xyz and?dex=vntl. Emits full snapshots plus anewSignals delta list and keepalive comments.
curl -N "https://nexwave.so/api/v1/signals/stream?dex=xyz"
event: signals
data: {"updatedAt":"2026-04-06T15:26:09.887Z","source":"hyperliquid","dex":"xyz","venueLabel":"HIP-3 xyz","assetCount":59,"signalCount":12,"signals":[...],"newSignals":[...]}
: keepaliveconst stream = new EventSource("/api/v1/signals/stream?dex=xyz");
stream.addEventListener("signals", (ev) => {
const payload = JSON.parse((ev as MessageEvent).data);
console.log("signalCount:", payload.signalCount);
console.log("newSignals:", payload.newSignals?.length ?? 0);
});
stream.addEventListener("error", () => {
console.warn("stream disconnected; EventSource will retry");
});Classifies the current market regime using cross-sectional metrics across the full Hyperliquid universe. Useful for adjusting strategy selection and position sizing. Updates every 60s.
trending_bullBroad participation, momentum edge
trending_bearBroad selling, short edge
alt_seasonCapital rotating to alts
risk_offCapital preservation mode
high_volatilityRegime transition in progress
rangingMean-reversion edge
{
"state": "risk_off",
"label": "Risk Off",
"confidence": 0.76,
"breadth": 34.5,
"avgReturn24h": -0.28,
"volDispersion": 2.27,
"fundingSkew": -0.000031,
"fundingAnnualizedPct": -2.8,
"volumeConcentration": 90.8,
"longSignalPct": 35,
"shortSignalPct": 65,
"momentumScore": -0.06,
"updatedAt": "2026-04-05T05:33:00.000Z",
"source": "hyperliquid",
"assetCount": 229
}import httpx
r = httpx.get("https://nexwave.so/api/v1/signals/regime")
regime = r.json()
# Adjust leverage by regime
leverage_multiplier = {
"trending_bull": 1.0,
"alt_season": 0.9,
"ranging": 0.7,
"high_volatility": 0.4,
"risk_off": 0.3,
"trending_bear": 0.5,
}
base_leverage = 5.0
adjusted = base_leverage * leverage_multiplier.get(regime["state"], 0.5)
print(f"Regime: {regime['label']} ({regime['confidence']:.0%} conf)")
print(f"Breadth: {regime['breadth']}% | Avg return: {regime['avgReturn24h']:+.2f}%")
print(f"Adjusted leverage: {adjusted:.1f}x")Per-asset funding rates with cross-sectional z-scores and derived signal direction. Assets with |z|≥2σ get a signal. Returns up to 60 assets sorted by z-score magnitude.
{
"updatedAt": "2026-04-05T12:00:00.000Z",
"source": "hydromancer",
"count": 58,
"signalCount": 6,
"data": [
{
"asset": "ZETA",
"fundingRate": -0.0023,
"annualizedPct": -251.1,
"zScore": -11.31,
"openInterest": 19284000,
"markPx": 0.0539,
"signal": "long",
"confidence": 0.95,
"source": "hydromancer"
}
]
}Server returns HTTP 402 with JSON describing payment requirements: amount (1000 = $0.001 USDC), network (Solana mainnet), asset (USDC mint), and your treasury address.
Create a Solana USDC transfer from your wallet to the payTo address for the required amount. Sign it. Encode per x402 spec (see x402/svm in the GitHub SDK).
Resubmit GET /api/signals with X-PAYMENT: <encoded-payment>. The PayAI facilitator verifies and settles the transfer on-chain.
Server returns 200 with the full signals JSON. Gas is covered by the facilitator.
Machine-readable endpoint catalogue at the standard x402 well-known path:
curl https://nexwave.so/.well-known/x402.json