API-Trading
Verwenden Sie diesen Leitfaden, wenn Sie einen Market Maker, ein Quotierungssystem oder einen Ausführungsdienst an Hypercall anbinden.
REST-Basis-URL: https://api.hypercall.xyz
WebSocket-URL: wss://api.hypercall.xyz/ws
Testnet-Status: Das Testnet ist vorübergehend deaktiviert, bis Hypercall mehr Testnet-HYPE erwirbt. Neue Market-Maker-Integrationen sollten die Produktionsumgebung verwenden, sofern Hypercall Ihnen keine dedizierte Umgebung bereitstellt.
Indikatives Quote-Provider-Streaming ist noch nicht allgemein verfügbar. Hypercall kann es für genehmigte Integrationen aktivieren, aber das reguläre Market-Maker-Onboarding sollte REST-Marktdaten sowie authentifizierte WebSocket-Kanäle für Orders, Fills und Portfolio verwenden.
Onboarding-Checkliste
- Trading-Wallet: EVM-Wallet, das EIP-712-typisierte Daten signieren kann.
- Kapitalisierung: USDC-Finanzierung in der Produktionsumgebung unter app.hypercall.xyz.
- Zugang: Kontaktieren Sie Hypercall, wenn Sie Market-Maker-Limits, Writer-Zugang oder indikatives Quote-Provider-Streaming benötigen.
- Umgebung: Produktions-REST- und WebSocket-URLs siehe oben. Gehen Sie nicht davon aus, dass das Testnet verfügbar ist.
- Abstimmung: Speichern Sie Ihre eigenen Client-Order-IDs, Nonces, Orders, Fills und Positions-Snapshots dauerhaft.
Integrationswege
Rust-Crates
Hypercall veröffentlicht öffentliche Rust-Crates für die unterstützte Integrationsoberfläche:
Das öffentliche Rust-Repository finden Sie unter github.com/hypercall-public/hypercall-rust.
| Crate | Verwendung |
|---|---|
hypercall-client | REST-Client, WebSocket-Client, EIP-712-Signatur-Hilfsfunktionen, lokales Signieren und AWS-KMS-Signieren |
hypercall-sdk-types | Öffentliche Request- und Response-DTOs, die vom Client gemeinsam genutzt werden |
hypercall-ws-protocol | Öffentliche WebSocket-Nachrichtentypen |
hypercall-hyperliquid | Optionales Hyperliquid-Hilfs-Crate für Integrationen, die zusätzlich auf Hyperliquid hedgen |
hypercall-liquidator | Referenz-Client für Standard-Margin-Liquidation. Für normales Market Making nicht erforderlich |
Verwenden Sie die Crates, wann immer möglich. Sie kodieren die aktuelle Signatur-Domain, Request-Strukturen, Routing-Regeln und String-Formatierungsregeln, bei denen manuelle Implementierungen leicht Fehler machen.
Rohe REST- und WebSocket-Anbindung
Wenn Sie kein Rust verwenden, nutzen Sie die Seiten API-Referenz, Authentifizierung & Signierung und WebSocket-API als maßgebliche Quelle.
1. Märkte entdecken
Beginnen Sie mit dem Laden der aktiven Märkte und Instrumentenspezifikationen:
curl https://api.hypercall.xyz/markets
curl "https://api.hypercall.xyz/instrument-specs?currency=BTC"
curl "https://api.hypercall.xyz/options-summary?currency=BTC"
Verwenden Sie:
GET /marketsfür gelistete Basiswert- und Verfallsgruppen.GET /instrument-specs?currency=BTCfür handelbare Optionsspezifikationen.GET /options-summary?currency=BTCfür Zusammenfassungsfelder auf Chain-Ebene: bester Geldkurs, bester Briefkurs, Mark-Preis und Greeks-artige Kennzahlen.
2. Signierung einrichten
Schreiboperationen verwenden EIP-712-Signaturen.
- Produktions-Chain-ID:
999 - Domain-Name:
Hypercall - Domain-Version:
1 - Verifying Contract:
0x0000000000000000000000000000000000000000
Market Maker sollten in der Regel eine Agent-Wallet verwenden:
- Owner-Wallet genehmigt einen Agenten mit
POST /approve-agent. - Agent-Wallet signiert Orders und Stornierungen für die Owner-Wallet.
- Owner-Wallet bleibt die Portfolio-, Finanzierungs- und Risikoidentität.
Siehe Authentifizierung & Signierung für die exakten Structs und Feldnamen.
3. Quotieren mit Bulk-Orders
Verwenden Sie für Market-Maker-Quotes POST /bulk_order mit route: "book_only".
curl -X POST https://api.hypercall.xyz/bulk_order \
-H "Content-Type: application/json" \
-d '{
"orders": [
{
"wallet": "0x...",
"symbol": "BTC-20260131-100000-C",
"price": "100.0",
"size": "0.1",
"side": "Buy",
"tif": "gtc",
"route": "book_only",
"client_id": "mm-bid-1",
"mmp_enabled": true,
"nonce": 1001,
"signature": "0x..."
},
{
"wallet": "0x...",
"symbol": "BTC-20260131-100000-C",
"price": "101.0",
"size": "0.1",
"side": "Sell",
"tif": "gtc",
"route": "book_only",
"client_id": "mm-ask-1",
"mmp_enabled": true,
"nonce": 1002,
"signature": "0x..."
}
]
}'
Wichtige Regeln:
priceundsizesind Strings, sowohl im signierten Payload als auch im JSON-Body.- Die String-Formatierung muss exakt übereinstimmen zwischen Signatur und JSON-Body.
- Bulk-Orders sind auf 50 Orders pro Request begrenzt.
- Die Bulk-Route ist ausschließlich book-only.
route: "best_execution"undroute: "rfq_only"sind Pfade für Einzel-Orders, keine Bulk-Quote-Pfade. - Die meisten Trading-Ablehnungen liefern HTTP 200 mit
status: "REJECTED". Prüfen Sie immer jedes einzelne Ergebnis.
4. Quotes aktualisieren
Verwenden Sie PUT /bulk_order, wenn Sie bestehende Quote-Orders stornieren und in einem einzigen Request durch neue ersetzen möchten.
curl -X PUT https://api.hypercall.xyz/bulk_order \
-H "Content-Type: application/json" \
-d '{
"replacements": [
{
"wallet": "0x...",
"order_id": 12345,
"symbol": "BTC-20260131-100000-C",
"price": "99.5",
"size": "0.1",
"side": "Buy",
"tif": "gtc",
"route": "book_only",
"client_id": "mm-bid-1",
"nonce": 1003,
"signature": "0x..."
}
]
}'
PUT /bulk_order storniert den alten Batch, bevor der neue Batch erstellt wird. Die Ergebnisse werden pro Ersetzung in der Reihenfolge des Requests zurückgegeben. Eine fehlgeschlagene Stornierung verhindert die Erstellung der entsprechenden Ersatz-Order.
Für eine einzelne latenzkritische Ersetzung verwenden Sie PUT /order.
5. Updates abonnieren
Verbinden Sie sich mit dem Produktions-WebSocket:
const ws = new WebSocket("wss://api.hypercall.xyz/ws");
ws.onopen = () => {
ws.send(JSON.stringify({ type: "Authenticate", wallet: "0xYourWallet" }));
ws.send(JSON.stringify({ type: "Subscribe", channel: "order_updates" }));
ws.send(JSON.stringify({ type: "Subscribe", channel: "fills" }));
ws.send(JSON.stringify({ type: "Subscribe", channel: "portfolio" }));
};
Verwenden Sie:
order_updatesfür Änderungen des Order-Status. Updates zu Teilausführungen werden hier bewusst weggelassen.fillsals maßgebliche Quelle für Teilausführungen und ausgeführte Trades.portfoliofür Updates zum Kontostatus.orderbook,trades,options_chainundindex_pricesfür öffentliche Marktdaten.
Siehe WebSocket-API für Kanalformate und Liveness-Verhalten.
6. Zustand abstimmen
Führen Sie eine Abstimmungsschleife aus, selbst wenn Ihre WebSocket-Verbindung stabil ist.
| Zustand | REST-Fallback | WebSocket-Kanal |
|---|---|---|
| Orders | GET /orders?wallet=... | order_updates |
| Fills | GET /fills?wallet=... | fills |
| Portfolio | GET /portfolio?wallet=... | portfolio |
| Märkte | GET /markets, GET /instrument-specs | market_updates, options_chain |
Empfohlene Schleife:
- Märkte laden beim Start.
- Offene Orders und aktuelle Fills laden, bevor Sie quotieren.
- WebSocket-Updates abonnieren.
- Mit deterministischen Client-IDs quotieren.
- REST regelmäßig abfragen, um sich von Verbindungsabbrüchen oder verpassten Nachrichten zu erholen.
- Quotierung bei unbekanntem Zustand stoppen, bis REST- und WebSocket-Zustand wieder übereinstimmen.
7. Launch-Umfang verstehen
Mainnet Alpha ist bewusst eingeschränkt.
- Margin: Standard Margin ist live. Portfolio Margin ist nicht allgemein aktiviert.
- Writer-Zugang: Short-Options-Exposure erfordert genehmigten Zugang.
- Indikatives Streaming: Quote-Provider-Streams unterliegen einer Allowlist und sind noch kein allgemein öffentlicher Integrationsweg.
- Liquidations-Tooling: Das öffentliche Liquidator-Crate ist für Standard-Margin-Liquidations-Workflows gedacht, nicht für normales Market Making.
- Testnet: nicht verfügbar, bis Hypercall mehr Testnet-HYPE erwirbt.
Häufige Probleme
Signaturprüfung fehlgeschlagen
- Prüfen Sie, dass
priceundsizeJSON-Strings sind. - Prüfen Sie, dass die signierten Strings exakt mit den übermittelten Strings übereinstimmen.
- Verwenden Sie Chain-ID
999für die Produktionsumgebung. - Verwenden Sie für jeden signierten Schreibvorgang eine frische Nonce.
- Bestätigen Sie, dass der Signierende die Wallet oder ein genehmigter Agent ist.
Unzureichende Margin
- Prüfen Sie
GET /portfolio?wallet=.... - Fügen Sie Sicherheiten hinzu oder reduzieren Sie die Quote-Größe.
- Bestätigen Sie, dass Ihre Wallet die erforderliche Zugangsstufe für die Strategie hat, die Sie quotieren.
Verkauf wegen Zugang oder Deckung abgelehnt
- Stellen Sie sicher, dass der Verkauf durch gefüllte Long-Bestände gedeckt ist, oder kontaktieren Sie Hypercall für Writer-Zugang.
- Gehen Sie nicht davon aus, dass Writer-Zugang für eine neue Wallet aktiviert ist.
Keine Fills über WebSocket
- Senden Sie eine
Authenticate-Nachricht, bevor Sie authentifizierte Kanäle abonnieren. - Abonnieren Sie
fills, nicht nurorder_updates. - Greifen Sie nach einer Wiederverbindung auf
GET /fills?wallet=...zurück.
Nächste Schritte
- Authentifizierung: Authentifizierung & Signierung
- WebSocket-Protokoll: WebSocket-API
- Rate Limits: Rate Limits
- Fehler: Fehler & Ablehnungsgründe
- Referenz: API-Referenz