Diese Seite wurde maschinell übersetzt. Das englische Original ist maßgeblich. Auf Englisch lesen
Zum Hauptinhalt springen

API-Trading

Verwenden Sie diesen Leitfaden, wenn Sie einen Market Maker, ein Quotierungssystem oder einen Ausführungsdienst an Hypercall anbinden.

Produktions-API

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.

Streams mit Allowlist

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.

CrateVerwendung
hypercall-clientREST-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-hyperliquidOptionales Hyperliquid-Hilfs-Crate für Integrationen, die zusätzlich auf Hyperliquid hedgen
hypercall-liquidatorReferenz-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 /markets für gelistete Basiswert- und Verfallsgruppen.
  • GET /instrument-specs?currency=BTC für handelbare Optionsspezifikationen.
  • GET /options-summary?currency=BTC fü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:

  1. Owner-Wallet genehmigt einen Agenten mit POST /approve-agent.
  2. Agent-Wallet signiert Orders und Stornierungen für die Owner-Wallet.
  3. 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:

  • price und size sind 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" und route: "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_updates für Änderungen des Order-Status. Updates zu Teilausführungen werden hier bewusst weggelassen.
  • fills als maßgebliche Quelle für Teilausführungen und ausgeführte Trades.
  • portfolio für Updates zum Kontostatus.
  • orderbook, trades, options_chain und index_prices fü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.

ZustandREST-FallbackWebSocket-Kanal
OrdersGET /orders?wallet=...order_updates
FillsGET /fills?wallet=...fills
PortfolioGET /portfolio?wallet=...portfolio
MärkteGET /markets, GET /instrument-specsmarket_updates, options_chain

Empfohlene Schleife:

  1. Märkte laden beim Start.
  2. Offene Orders und aktuelle Fills laden, bevor Sie quotieren.
  3. WebSocket-Updates abonnieren.
  4. Mit deterministischen Client-IDs quotieren.
  5. REST regelmäßig abfragen, um sich von Verbindungsabbrüchen oder verpassten Nachrichten zu erholen.
  6. 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 price und size JSON-Strings sind.
  • Prüfen Sie, dass die signierten Strings exakt mit den übermittelten Strings übereinstimmen.
  • Verwenden Sie Chain-ID 999 fü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 nur order_updates.
  • Greifen Sie nach einer Wiederverbindung auf GET /fills?wallet=... zurück.

Nächste Schritte