API ile İşlem
Bir piyasa yapıcı, kotasyon sistemi veya emir yürütme servisini Hypercall ile entegre ediyorsanız bu rehberi kullanın.
REST temel URL: https://api.hypercall.xyz
WebSocket URL: wss://api.hypercall.xyz/ws
Testnet durumu: Hypercall daha fazla testnet HYPE edinene kadar testnet geçici olarak devre dışıdır. Hypercall size özel bir ortam sağlamadığı sürece yeni piyasa yapıcı entegrasyonları üretim ortamını kullanmalıdır.
Gösterge niteliğindeki kotasyon sağlayıcı akışları henüz genel kullanıma açık değildir. Hypercall bunu onaylı entegrasyonlar için etkinleştirebilir, ancak olağan piyasa yapıcı entegrasyonları REST piyasa verilerinin yanı sıra kimliği doğrulanmış emir, gerçekleşme (fill) ve portföy WebSocket kanallarını kullanmalıdır.
Entegrasyon Kontrol Listesi
- İşlem cüzdanı: EIP-712 tipli verileri imzalayabilen EVM cüzdanı.
- Fonlama: app.hypercall.xyz üzerinden üretim USDC fonlaması.
- Erişim: piyasa yapıcı limitleri, yazıcı (writer) erişimi veya gösterge niteliğinde kotasyon sağlayıcı akışına ihtiyacınız varsa Hypercall ile iletişime geçin.
- Ortam: yukarıdaki üretim REST ve WebSocket URL'leri. Testnet'in kullanılabilir olduğunu varsaymayın.
- Mutabakat: kendi istemci emir ID'lerinizi, nonce'larınızı, emirlerinizi, gerçekleşmelerinizi ve pozisyon anlık görüntülerinizi saklayın.
Entegrasyon Yolları
Rust Crate'leri
Hypercall, desteklenen entegrasyon yüzeyi için herkese açık Rust crate'leri yayınlar:
Herkese açık Rust deposu: github.com/hypercall-public/hypercall-rust.
| Crate | Kullanım |
|---|---|
hypercall-client | REST istemcisi, WebSocket istemcisi, EIP-712 imzalama yardımcıları, yerel imzalama ve AWS KMS imzalama |
hypercall-sdk-types | İstemci tarafından paylaşılan herkese açık istek ve yanıt DTO'ları |
hypercall-ws-protocol | Herkese açık WebSocket mesaj türleri |
hypercall-hyperliquid | Hyperliquid üzerinde de hedge yapan entegrasyonlar için isteğe bağlı Hyperliquid yardımcı crate'i |
hypercall-liquidator | Standart Teminat likidasyonu için referans istemci. Normal piyasa yapıcılık için gerekli değildir |
Mümkün olduğunda crate'leri kullanın. Bunlar, elle yapıldığında hataya açık olan güncel imzalama alan adını, istek yapılarını, rota kurallarını ve string biçimlendirme kurallarını içerir.
Ham REST ve WebSocket
Rust kullanmıyorsanız, doğruluk kaynağı olarak API Referansı, Kimlik Doğrulama ve İmzalama ve WebSocket API sayfalarını kullanın.
1. Piyasaları Keşfedin
Aktif piyasaları ve enstrüman spesifikasyonlarını yükleyerek başlayın:
curl https://api.hypercall.xyz/markets
curl "https://api.hypercall.xyz/instrument-specs?currency=BTC"
curl "https://api.hypercall.xyz/options-summary?currency=BTC"
Kullanım:
- Listelenen dayanak varlık ve vade sonu grupları için
GET /markets. - İşlem yapılabilir opsiyon spesifikasyonları için
GET /instrument-specs?currency=BTC. - Zincir düzeyinde en iyi alış, en iyi satış, mark fiyatı ve Greeks tarzı özet alanları için
GET /options-summary?currency=BTC.
2. İmzalamayı Ayarlayın
Yazma işlemleri EIP-712 imzaları kullanır.
- Üretim zincir ID'si:
999 - Alan adı (domain name):
Hypercall - Alan sürümü (domain version):
1 - Doğrulayıcı kontrat:
0x0000000000000000000000000000000000000000
Piyasa yapıcılar genellikle bir ajan (agent) cüzdanı kullanmalıdır:
- Sahip cüzdanı,
POST /approve-agentile bir ajanı onaylar. - Ajan cüzdanı, sahip cüzdanı adına emirleri ve iptalleri imzalar.
- Sahip cüzdanı, portföy, fonlama ve risk kimliği olarak kalır.
Tam struct'lar ve alan adları için Kimlik Doğrulama ve İmzalama sayfasına bakın.
3. Toplu Emirlerle Kotasyon Verin
Piyasa yapıcı kotasyonları için route: "book_only" ile POST /bulk_order kullanın.
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..."
}
]
}'
Önemli kurallar:
- Hem imzalanan yükte hem de JSON gövdesinde
pricevesizestring'dir. - İmza ile JSON gövdesi arasında string biçimlendirme tam olarak eşleşmelidir.
- Toplu emir boyutu istek başına 50 emirle sınırlıdır.
- Toplu rota yalnızca emir defteri içindir.
route: "best_execution"veroute: "rfq_only"tekil emir yollarıdır, toplu kotasyon yolları değildir. - Çoğu işlem reddi HTTP 200 döner ve
status: "REJECTED"içerir. Her sonucu daima inceleyin.
4. Kotasyonları Yenileyin
Mevcut kotasyon emirlerini iptal edip yerlerine yenilerini tek bir istekte yerleştirmek istediğinizde PUT /bulk_order kullanın.
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, yeni grubu oluşturmadan önce eski grubu iptal eder. Sonuçlar, istek sırasına göre her değiştirme için ayrı ayrı döndürülür. Başarısız bir iptal, o değiştirme emrinin oluşturulmasını engeller.
Gecikmeye duyarlı tek bir değiştirme için PUT /order kullanın.
5. Güncellemelere Abone Olun
Üretim WebSocket'ine bağlanın:
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" }));
};
Kullanım:
- Emir durumu değişiklikleri için
order_updates. Kısmi gerçekleşme güncellemeleri burada bilinçli olarak atlanır. - Kısmi gerçekleşmeler ve gerçekleşen işlemler için doğruluk kaynağı olarak
fills. - Hesap durumu güncellemeleri için
portfolio. - Herkese açık piyasa verileri için
orderbook,trades,options_chainveindex_prices.
Kanal formatları ve bağlantı canlılığı davranışı için WebSocket API sayfasına bakın.
6. Durumu Mutabık Kılın
WebSocket bağlantınız sağlıklı olsa bile bir mutabakat döngüsü çalıştırın.
| Durum | REST yedeği | WebSocket kanalı |
|---|---|---|
| Emirler | GET /orders?wallet=... | order_updates |
| Gerçekleşmeler | GET /fills?wallet=... | fills |
| Portföy | GET /portfolio?wallet=... | portfolio |
| Piyasalar | GET /markets, GET /instrument-specs | market_updates, options_chain |
Önerilen döngü:
- Başlangıçta piyasaları yükleyin.
- Kotasyon vermeden önce açık emirleri ve en son gerçekleşmeleri yükleyin.
- WebSocket güncellemelerine abone olun.
- Deterministik istemci ID'leri ile kotasyon verin.
- Bağlantı kopmalarından veya kaçırılan mesajlardan kurtulmak için REST'i periyodik olarak sorgulayın.
- REST ve WebSocket durumları yeniden uyuşana kadar bilinmeyen durumda kotasyon vermeyi durdurun.
7. Lansman Kapsamını Anlayın
Mainnet Alpha bilinçli olarak sınırlandırılmıştır.
- Teminat: Standart Teminat aktiftir. Portföy Teminatı genel olarak etkin değildir.
- Yazıcı erişimi: kısa opsiyon pozisyonu almak onaylı erişim gerektirir.
- Gösterge niteliğinde akış: kotasyon sağlayıcı akışları izin listesine tabidir ve henüz genel bir kamuya açık entegrasyon yolu değildir.
- Likidasyon araçları: herkese açık liquidator crate'i, Standart Teminat likidasyon iş akışları içindir, olağan piyasa yapıcılık için değildir.
- Testnet: Hypercall daha fazla testnet HYPE edinene kadar kullanılamaz.
Sık Karşılaşılan Sorunlar
İmza doğrulaması başarısız
pricevesizedeğerlerinin JSON string olduğunu kontrol edin.- İmzalanan string'lerin gönderilen string'lerle tam olarak eşleştiğini kontrol edin.
- Üretim için zincir ID'si
999kullanın. - Her imzalı yazma işlemi için yeni bir nonce kullanın.
- İmzalayanın cüzdanın kendisi veya onaylı bir ajan olduğunu doğrulayın.
Yetersiz teminat
GET /portfolio?wallet=...kontrol edin.- Teminat ekleyin veya kotasyon büyüklüğünü azaltın.
- Cüzdanınızın, kotasyon verdiğiniz strateji için gereken erişim seviyesine sahip olduğunu doğrulayın.
Erişim veya karşılık nedeniyle satış reddedildi
- Satışın, gerçekleşmiş uzun pozisyon envanteriyle karşılandığından emin olun veya yazıcı erişimi için Hypercall ile iletişime geçin.
- Yeni bir cüzdan için yazıcı erişiminin etkin olduğunu varsaymayın.
WebSocket'te gerçekleşme gelmiyor
- Kimliği doğrulanmış kanallara abone olmadan önce bir
Authenticatemesajı gönderin. - Yalnızca
order_updatesdeğil,fillskanalına da abone olun. - Yeniden bağlandıktan sonra
GET /fills?wallet=...ile yedekten kurtarın.
Sonraki Adımlar
- Kimlik doğrulama: Kimlik Doğrulama ve İmzalama
- WebSocket protokolü: WebSocket API
- Hız limitleri: Hız Limitleri
- Hatalar: Hatalar ve Ret Nedenleri
- Referans: API Referansı