Solana Mainnet · Live

Nexwave API

Perp market signals for autonomous trading agents. Paid endpoints use x402 — pay $0.001 USDC per call, no API keys, no accounts.

GET /api/v1/signalsFREE

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).

Venue examples

bash
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"

Signal types

funding_rate

Cross-sectional funding z-score |z|≥2σ. Direction: long when funding deeply negative (shorts paying), short when elevated (longs paying). Strength = |z|.

oi_divergence

Price 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_anomaly

Assets in top 15% by 24h volume with >2% directional price move. Strength = volume percentile rank.

Response

json
{
  "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 }
    }
  ]
}

Example

python
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%}")

GET /api/v1/signals/streamFREE · SSE

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.

Quick test

bash
curl -N "https://nexwave.so/api/v1/signals/stream?dex=xyz"

Event format

text
event: signals
data: {"updatedAt":"2026-04-06T15:26:09.887Z","source":"hyperliquid","dex":"xyz","venueLabel":"HIP-3 xyz","assetCount":59,"signalCount":12,"signals":[...],"newSignals":[...]}

: keepalive

Browser example

typescript
const 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");
});

GET /api/v1/signals/regimeFREE

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_bull

Broad participation, momentum edge

trending_bear

Broad selling, short edge

alt_season

Capital rotating to alts

risk_off

Capital preservation mode

high_volatility

Regime transition in progress

ranging

Mean-reversion edge

Response

json
{
  "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
}

Example — adjust position size by regime

python
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")

GET /api/v1/signals/funding-ratesFREE

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.

json
{
  "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"
    }
  ]
}

x402 Payment Flow

  1. 1
    GET /api/signals → 402

    Server returns HTTP 402 with JSON describing payment requirements: amount (1000 = $0.001 USDC), network (Solana mainnet), asset (USDC mint), and your treasury address.

  2. 2
    Build payment

    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).

  3. 3
    Retry with X-PAYMENT header

    Resubmit GET /api/signals with X-PAYMENT: <encoded-payment>. The PayAI facilitator verifies and settles the transfer on-chain.

  4. 4
    200 + data

    Server returns 200 with the full signals JSON. Gas is covered by the facilitator.

Gas: Covered by the PayAI facilitator — callers only need a funded USDC wallet. No SOL required for fees.
SDKs: github.com/coinbase/x402 · Python · TypeScript · Go clients available.

Discovery Document

Machine-readable endpoint catalogue at the standard x402 well-known path:

bash
curl https://nexwave.so/.well-known/x402.json