HYPO Docs
HYPO Markets is a sovereign multi-venue prediction-market + perps data product (Hyperliquid, Polymarket, Kalshi, Limitless) and a non-custodial autonomous trading bot. This hub explains how to use it as a human, a bot/M2M client, or an AI/MCP server. The machine-readable API reference is at /api-docs (+ OpenAPI JSON).
For humans
Browse the live mirror at the apex site and per-venue subdomains (polymarket.hypo.markets, hyperliquid.hypo.markets, …). Each market has a deep page at /feed/<asset> with a full academic-grade quant dashboard (returns, drawdown, VaR/ES, Sharpe/Sortino/Calmar, Hurst, ADF/KPSS, order-flow, microstructure). Order-flow heatmaps live at /flow, cross-venue arbitrage at /arb, movers at /movers.
Your account console is at /account — prepaid balance, voucher redeem, usage reports, and multichain wallet deposits. The trading bot console is at bot.hypo.markets.
For bots / M2M
Every surface is an API. Authenticate with your own key via X-API-Key: <key> (or Authorization: Bearer <key>). Billing is prepaid — top up at /account. The machine-to-machine bundle is the one call a trading bot needs:
# One bundle = price + risk + flow + carry + a directional signal + a trade hint
curl -H "X-API-Key: $HYPO_KEY" \
'https://hypo.markets/api/m2m/hl-BTC/bundle'
# Stream signals (Server-Sent Events) — one connection, push on every refresh
curl -N -H "X-API-Key: $HYPO_KEY" \
'https://hypo.markets/api/m2m/hl-BTC/stream-signal'
# Batch many assets in one round-trip
curl -H "X-API-Key: $HYPO_KEY" \
'https://hypo.markets/api/m2m/batch?assets=hl-BTC,hl-ETH,pm-...'The bundle carries signals.{direction,confidence,reasons}, tradeHint.{suggestedSide,builderCode,venueNativeUrl}, price, risk (realized vol, Sharpe, Ulcer, Omega, Roll-spread, drawdown), flow (imbalance + VPIN), and carry. A bot reads the bundle, sizes with the risk fields, and either executes on the venue directly (using builderCode to earn builder fees) or via the HYPO bot (next section).
For AI / MCP servers
The whole API is described by a single OpenAPI 3.1 document at /api/openapi.json — point an MCP server or an LLM tool-use loop at it and every endpoint becomes a typed tool. The m2m /bundle is the ideal "read market" tool; /api/asset/<asset>/stats is the "deep analysis" tool; the bot endpoints are the "act" tools.
# Discover the full tool surface
curl 'https://hypo.markets/api/openapi.json'
# Discover the tradeable asset universe (for tool enumeration)
curl 'https://hypo.markets/api/m2m/index'Responses are JSON-honest: every numeric is a finite number or null (never NaN/Inf), every endpoint documents its returnMode/framing so an agent can't conflate a probability series with a price series. Binary venues are horizon-framed (Sharpe suppressed; a horizon block is returned instead).
The trading bot
Non-custodial: the bot places orders on your own venue account using your own key (encrypted at rest); HYPO never holds your funds — you pay only a flat fee per trade from prepaid credit. Four venues: Hyperliquid, Polymarket, Kalshi, Limitless.
# 1. Connect your own venue credential (encrypted, never returned)
curl -X POST -H "X-API-Key: $HYPO_KEY" -H 'Content-Type: application/json' \
-d '{"venue":"hyperliquid","kind":"wallet","secret":{"privateKey":"0x..."}}' \
'https://bot.hypo.markets/api/bot/credentials'
# 2. Configure the bot (venues, assets, confidence floor, size — no caps)
curl -X POST -H "X-API-Key: $HYPO_KEY" -H 'Content-Type: application/json' \
-d '{"enabled":true,"venues":["hyperliquid"],"assets":["hl-BTC"],"minConfidence":0.65,"tradeSizeUsd":100}' \
'https://bot.hypo.markets/api/bot/control'
# 3. Place a manual order (or let the autonomous loop trade the signal)
curl -X POST -H "X-API-Key: $HYPO_KEY" -H 'Content-Type: application/json' \
-d '{"venue":"hyperliquid","asset":"hl-BTC","side":"buy","sizeUsd":100,"markPrice":65000}' \
'https://bot.hypo.markets/api/bot/trade'
# 4. Watch status / P&L, the public leaderboard, and the live tape (SSE)
curl -H "X-API-Key: $HYPO_KEY" 'https://bot.hypo.markets/api/bot/status'
curl 'https://bot.hypo.markets/api/bot/leaderboard'
curl -N 'https://bot.hypo.markets/api/bot/tape'Always-on safety: a kill-switch (control {"kill":true}) halts instantly, and a stale-signal guard refuses to trade on broken data. Operators: see the go-live runbook in the repo (docs/BOT_GO_LIVE_RUNBOOK.md) — vault key → per-venue testnet/micro-mainnet validation → flip HYPO_BOT_EXEC_MODE=live.
The stats engine
/api/asset/<asset>/stats returns the heavy quant pack: moments, returns (Sharpe/Sortino/Calmar + AC-adjusted Sharpe + Omega), risk (VaR/ES at 90/95/99 + tail-concentration + Ulcer Index + drawdown), structure (Hurst, ACF, Roll implied spread, half-life), tests (Jarque-Bera, Ljung-Box + lag profile, ADF, KPSS, variance-ratio, runs), and a verdict. Binary venues are horizon-framed.
curl -H "X-API-Key: $HYPO_KEY" 'https://hypo.markets/api/asset/hl-BTC/stats'
# returns.{sharpe, sharpeAdjAC, omega}, risk.{ulcerIndex, es90/95/99, esTailConcentration},
# structure.rollSpreadBps, tests.ljungBoxProfile[1,2,3,5,10], verdict.{regime,efficient,tailRisk}Other analytics: /risk, /carry, /cascades, /flow (order-flow + VPIN), /slippage, /volprofile, and raw history at /api/history/<venue>/<asset> (JSONL or CSV).
SDK · multiple formats
No SDK is required — every endpoint is plain HTTP + JSON (or SSE for streams). Examples in three languages:
// JavaScript / TypeScript (browser or Node)
const r = await fetch("https://hypo.markets/api/m2m/hl-BTC/bundle",
{ headers: { "X-API-Key": process.env.HYPO_KEY } });
const bundle = await r.json();
if (bundle.signals.direction === "LONG" && bundle.signals.confidence > 0.6) { /* act */ }# Python
import requests
b = requests.get("https://hypo.markets/api/m2m/hl-BTC/bundle",
headers={"X-API-Key": KEY}).json()
print(b["signals"], b["risk"]["sharpe"], b["tradeHint"]["suggestedSide"])Streaming (SSE) clients: open /api/m2m/<asset>/stream-signal or /api/bot/tape with an EventSource (browser) or any SSE library. The OpenAPI spec (/api/openapi.json) generates typed clients in any language via openapi-generator.
Deposit contract ABI
Prepaid top-ups use per-customer CREATE2 forwarders (EVM) + a PDA program (Solana) — non-custodial, with an immutable cold treasury welded into each address. The Solidity sources + ABI live in the repo at contracts/deposit-forwarders/ (Forwarder.sol, DepositFactory.sol) and contracts/deposit-solana/. Key functions:
// DepositFactory (CREATE2) — counterfactual address + sweep
function addressOf(bytes32 ownerId) view returns (address);
function sweep(bytes32 ownerId, address token) external; // flush one forwarder
function sweepBatch(bytes32[] ownerIds, address token) external; // batch flush
function initcodeHash() view returns (bytes32); // on-chain bytecode proof
// Forwarder — immutable treasury, permissionless flush (USDT-safe)
function flush(address token) external;The off-chain address derivation (so a client can show a deposit address before any on-chain tx) is byte-locked to the on-chain CREATE2: contracts/deposit-forwarders/bytelock-vectors.json. Operator runbook: docs/DEPOSIT_OPERATOR_RUNBOOK.md.
Self-host · build & deploy
HYPO runs as sovereign systemd engines (apex + per-venue) behind Caddy. To self-host:
# 1. Install deps (Node 24 + pnpm). The corepack pnpm shim is broken under
# Node 24 — install via the real ESM entry:
COREPACK_HOME=/var/lib/hypo/.corepack \
node /var/lib/hypo/.corepack/pnpm/*/dist/pnpm.mjs install
# 2. Build every sovereign bundle (.next + .next-<venue>):
COREPACK_HOME=/var/lib/hypo/.corepack bash scripts/build-multi.sh
# 3. Per-instance env (PORT + HYPO_VENUE) at /etc/hypo/site-<venue>.env, then:
sudo systemctl enable --now hypo-site@apex hypo-site@hyperliquid ... # one per engine
# 4. Caddy reverse-proxies <venue>.hypo.markets → its port:
node_modules/.bin/tsx scripts/regen-caddy.ts --sovereign --write
sudo cp /etc/caddy/Caddyfile.sovereign /etc/caddy/Caddyfile && sudo systemctl reload caddyEngines run read-only (ProtectSystem=strict); state lives under /var/lib/hypo. The full sovereign-engine contract is in SOVEREIGN_ENGINES.md; the deploy invariant (pnpm-workspace.yaml verifyDepsBeforeRun:false) is load-bearing — don't change it. Health is /api/health/anomalies (verdict ok).
Operational flags
All money-moving systems ship built but dormant; an operator activates each with one env var:
HYPO_PAID_GATING=1 # enforce premium tiers (402 for free callers)
HYPO_PREPAID_BILLING=1 # meter prepaid credit per call
HYPO_BOT_VAULT_KEY=<64hex> # enable the bot credential vault
HYPO_BOT_EXEC_MODE=live # bot places REAL orders (after testnet validation)
HYPO_BOT_ENGINE_LOOP=1 # bot trades autonomously on the signal
HYPO_DEPOSIT_CONFIG_JSON / HYPO_DEPOSIT_SOLANA_CONFIG_JSON # per-customer depositsBuild your own mobile app
Skeleton iOS (SwiftUI) and Android (Kotlin/Compose) apps that consume the HYPO API live in the repo at clients/mobile/ios and clients/mobile/android — fetch a quote, stream the bot tape, show bot status. Each has a build README. Because everything is plain HTTP + SSE, a mobile app is a thin client over the same endpoints this docs page describes.
API reference: /api-docs · OpenAPI: /api/openapi.json · Account: /account · Bot: bot.hypo.markets