- Public web:
https://hlprivateer.xyz - REST API:
https://api.hlprivateer.xyz - Websocket:
wss://ws.hlprivateer.xyz
- Public endpoints: no auth.
- Operator endpoints: Bearer JWT with role claims.
- Agent endpoints: API key + entitlement token and/or x402 proof.
- Development:
POST /v1/operator/logincan mint a short-lived JWT. - Production:
POST /v1/operator/loginis disabled unlessOPERATOR_LOGIN_SECRETis configured.- Send
x-operator-login-secret: <secret>to mint a JWT.
- Send
GET /v1/public/pnlGET /v1/public/floor-snapshotGET /v1/public/floor-tapeGET /v1/public/identity
Response example (/v1/public/pnl):
{
"pnlPct": 1.92,
"mode": "READY",
"updatedAt": "2026-02-13T16:20:00Z"
}Response example (/v1/public/identity):
{
"erc8004": {
"chainId": 8453,
"agentId": 1,
"identityRegistry": "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
"reputationRegistry": "0x8004BAa17C55a88189AE136b182e5fdA19dE9b63",
"registrationFile": "https://hlprivateer.xyz/.well-known/agent-registration.json"
},
"reputation": {
"count": 42,
"summaryValue": 42,
"summaryValueDecimals": 0
}
}POST /v1/operator/loginPOST /v1/operator/refreshGET /v1/operator/statusGET /v1/operator/positionsGET /v1/operator/ordersGET /v1/operator/auditPOST /v1/operator/commandPATCH /v1/operator/config/riskPOST /v1/operator/replay/startGET /v1/operator/replayGET /v1/operator/replay/export
Replay endpoint parameters:
from(ISO datetime)to(ISO datetime)correlationId(optional)resource(optional: audit resource or stream)limit(1-5000, default 200)
Command request example:
{
"command": "/halt",
"args": [],
"reason": "volatility-breakout"
}POST /v1/agent/handshakeGET /v1/agent/entitlementGET /v1/agent/stream/snapshotGET /v1/agent/analysisGET /v1/agent/insightsGET /v1/agent/copy/tradeGET /v1/agent/positionsGET /v1/agent/ordersPOST /v1/agent/commandPOST /v1/agent/unlock/:tier
Deprecated compatibility aliases:
GET /v1/agent/analysis/latestGET /v1/agent/data/overviewGET /v1/agent/copy-trade/signalsGET /v1/agent/copy-trade/positions
GET /v1/security/refresh-secrets(operator auth required)GET /healthGET /healthzGET /metrics
- x402 payment gating is disabled by default in the simplified core runtime path.
- Agent routes are directly readable/writable with existing API authentication/rate limiting.
sub.addsub.removecmd.execping
sub.ackeventcmd.resulterrorpong
Event payload example:
{
"type": "event",
"channel": "operator.execution",
"payload": {
"eventType": "execution.fill",
"orderId": "ord_01J...",
"symbol": "HYPE",
"qty": 12.5,
"price": 23.14,
"ts": "2026-02-13T16:21:12Z"
}
}import { z } from "zod";
export const PublicPnlResponseSchema = z.object({
pnlPct: z.number(),
mode: z.enum(["INIT", "WARMUP", "READY", "IN_TRADE", "HALT", "SAFE_MODE"]),
updatedAt: z.string().datetime()
});
export const OperatorCommandSchema = z.object({
command: z.enum(["/status", "/positions", "/risk-policy", "/halt", "/resume", "/flatten", "/explain"]),
args: z.array(z.string()).default([]),
reason: z.string().min(3)
});{
"error": {
"code": "RISK_DENY",
"message": "Proposal denied by max drawdown rule",
"requestId": "req_01J..."
}
}