Faz 1 araştırması 2026-08-18 tarihinde tamamlandı. İnceleme yalnız resmî Binance kaynaklarına dayanır. Sabitlenen commit'ler BINANCE_VERSION.md, V1 uçları BINANCE_ENDPOINT_MATRIX.md içindedir.
Kaynak önceliği:
Production REST ana adresi https://api.binance.com'dur. api-gcp.binance.com ve api1–api4.binance.com alternatifleri vardır; Binance alternatif api1–api4 adreslerinin daha iyi performans gösterebildiğini fakat daha az kararlı olabildiğini belirtir. https://data-api.binance.vision yalnız public market data içindir.
Spot Testnet REST adresleri https://testnet.binance.vision/api ve https://api1.testnet.binance.vision/api'dir. Connector config'i host'u saklayacak; endpoint path'i /api/v3/... olarak kalacaktır.
X-MBX-TIME-UNIT: MICROSECOND seçeneği vardır, ancak V1 iç varsayılanı milisaniye olacaktır.GET parametreleri query string'dedir.POST, PUT ve DELETE parametreleri query string veya application/x-www-form-urlencoded body'de olabilir.V1 signed REST istekleri bütün parametreleri tek bir deterministic query string içinde gönderecektir. Böylece Binance'in query ile body'yi ayraçsız birleştiren imza kuralındaki iki parçalı payload belirsizliği ortadan kalkar. İmzalanan UTF-8 byte dizisi ile gerçekten gönderilen encoded query birebir aynı olacaktır.
Security tipleri NONE, TRADE, USER_DATA ve USER_STREAM'dir. NONE dışındaki REST çağrıları imzalıdır ve API key X-MBX-APIKEY header'ında gönderilir. TRADE izni yeni API key'de varsayılan olarak açık değildir.
Binance HMAC-SHA256, RSA ve Ed25519 key tiplerini destekler. V1:
sunacaktır.
nil parametreler çıkarılır; anahtar ve değerler Binance'in beklediği biçime çevrilir.name=value çiftleri olarak percent-encode edilir.signature son parametre olarak eklenir.REST sunucusu belirli bir parametre sırası şart koşmaz; proje deterministik test ve gözlemlenebilirlik için sabit sıra kullanır. Kritik koşul, imzalanan encoded payload ile gönderilen payload'ın aynı olmasıdır. HMAC signature değeri case-insensitive; API key, secret ve payload case-sensitive'dir.
WebSocket API, REST'ten farklı bir sözleşmedir:
params içinden signature çıkarılır.name=value&... payload'ına dönüştürülür.params.signature içine konur.Bu payload URL query'si değildir; REST percent-encoding fonksiyonu WebSocket API için yeniden kullanılmayacaktır. İki canonicalizer ayrı namespace ve ayrı resmî test vektörleriyle doğrulanacaktır.
recvWindowtimestamp zorunludur; milisaniye veya mikrosaniye olabilir.recvWindow her zaman milisaniye cinsindedir, üç ondalık haneye kadar mikrosaniye hassasiyetini ifade edebilir.recvWindow 5000 ms, üst sınır 60000 ms'dir. Binance 5000 ms veya daha küçük değer önerir.serverTime - timestamp <= recvWindow koşulunu iki kontrolde de sağlamalıdır.V1 varsayılanı 5000 ms olacaktır. GET /api/v3/time ile ölçülen offset injectable clock üzerinde tutulacak; -1021 INVALID_TIMESTAMP kör retry sebebi olmayacak, önce offset yeniden ölçülecektir.
exchangeInfo güncel RAW_REQUESTS, REQUEST_WEIGHT ve ORDERS limitlerini bildirir. Statik endpoint weight'i yalnız planlama girdisidir; gerçek kullanım response metadata'dan izlenir.
X-MBX-USED-WEIGHT-<interval> header'larıyla izlenir.X-MBX-ORDER-COUNT-<interval> taşıyabilir; reddedilen order yanıtlarında header garanti değildir.429 sonrasında backoff zorunludur. REST Retry-After saniye cinsindedir.418 IP ban üretir; süre 2 dakikadan 3 güne kadar büyüyebilir.retryAfter, retry edilebilecek epoch timestamp'tir; REST header semantiğiyle karıştırılmaz.rateLimits alanını içerir.2026-04-02 değişikliğiyle seçili trading çağrılarında başarılı request weight 0, başarısız çağrıda endpointte belgelenen weight geçerlidir. V1 için POST /api/v3/order ve DELETE /api/v3/order bu kurala dahildir. Order count etkisi devam eder; connector hem statik worst-case hem response header'ını tutacaktır.
REST hata gövdesi {code, msg} biçimindedir. Mesaj değişebilir; numeric code programatik sınıflandırmanın temelidir.
| Durum | Sınıflandırma | V1 davranışı |
|---|---|---|
Validation / -1013 | kesin red | Yerel/API validation hatası |
-1021 | timestamp | Offset yenile, yeni kullanıcı eylemi olmadan trading POST'u tekrar etme |
-1022 | signature | Auth/encoding hatası; retry yok |
429 | rate limit | Retry-After ve merkezi limiter ile bekle |
418 | IP ban | Ban bitimine kadar durdur |
-1006, -1007 | unknown execution | Order query/UDS ile reconcile et |
Trading timeout veya ilgili 5xx | unknown execution | Aynı order'ı körlemesine tekrar POST etme |
Diğer 4xx | client/API error | Kod ve mesajı normalize et |
Binance matching engine yanıtı 10 saniye içinde dönmezse -1007 TIMEOUT verebilir; emir gerçekleşmiş olabilir. Benzer biçimde 5xx, execution sonucunu garanti etmez. Her yeni emirde benzersiz newClientOrderId kullanılacak ve belirsizlik GET /api/v3/order veya User Data Stream ile çözülecektir.
V1, exchangeInfo.symbols[].filters içinden aşağıdakileri uygular:
| Filtre | Yerel kontrol |
|---|---|
PRICE_FILTER | minPrice, maxPrice, price % tickSize == 0; sıfır değer ilgili kuralı kapatır |
LOT_SIZE | minQty, maxQty, quantity % stepSize == 0 |
MARKET_LOT_SIZE | MARKET quantity için market'e özel min/max/step |
MIN_NOTIONAL | price * quantity >= minNotional; applyToMarket ve avgPriceMins dikkate alınır |
NOTIONAL | min/max notional ve MARKET uygulama bayrakları |
Price, quantity, balance, commission ve notional alanları BigDecimal olur. Geçersiz değer otomatik yuvarlanmaz. tickSize/stepSize divisibility, decimal scale tahminiyle değil tam BigDecimal remainder kontrolüyle yapılır.
MARKET notional kontrolü moving average veya reference price kullanabilir. 2026 davranışında MIN_NOTIONAL ve NOTIONAL, mevcut ve non-null olduğunda reference price kullanır. Connector güncel server fiyatını tam olarak öngöremez; yerel kontrol best-effort preflight'tır ve Binance nihai otoritedir. Bilinmeyen filtreler kayıpsız korunacak, trading doğrulamasında sessizce “tam doğrulandı” sayılmayacaktır.
Production market streams adresleri wss://stream.binance.com:9443 ve wss://stream.binance.com:443'tür. Raw bağlantı /ws/<streamName>, combined bağlantı /stream?streams=a/b kullanır. Stream isimleri lowercase olmalıdır. Testnet base wss://stream.testnet.binance.vision; V1 combined /stream bağlantısını ve canlı SUBSCRIBE/UNSUBSCRIBE mesajlarını kullanacaktır.
serverShutdown gelince yeni bağlantı hızla kurulmalı ve subscriptions restore edilmelidir.Master plandaki !ticker@arr, Binance changelog'una göre 2026-03-26 tarihinde kaldırıldı ve güncel stream dokümanında yoktur. V1 güncel karşılık olarak:
!miniTicker@arr,<symbol>@ticker,<symbol>@bookTicker,<symbol>@depth5, @depth10 veya @depth20 ve opsiyonel @100mskullanacaktır. !miniTicker@arr yalnız o intervalde değişen sembolleri içerir; tam snapshot değildir.
Production WebSocket API wss://ws-api.binance.com:443/ws-api/v3, Testnet wss://ws-api.testnet.binance.vision/ws-api/v3 adresindedir. Bağlantı ömrü, ping/pong ve serverShutdown kuralları market streams ile aynıdır.
Eski Spot listen-key REST uçları (POST/PUT/DELETE /api/v3/userDataStream) 2026-02-20 tarihinde kaldırıldı. Güncel UDS subscription WebSocket API üzerinden yapılır:
| Yöntem | Key desteği | V1 kararı |
|---|---|---|
userDataStream.subscribe.signature | Signed request; WebSocket API'nin HMAC/RSA/Ed25519 key tipleri | Birincil; HMAC varsayılanı ve Ed25519 ile çalışır |
session.logon + userDataStream.subscribe | Yalnız Ed25519 authenticated session | İkincil/ileriki optimizasyon |
Signature subscription parametreleri apiKey, timestamp, signature ve opsiyonel recvWindow; weight 2'dir. Aynı account için connection başına yalnız bir aktif subscription olabilir. Session başına 1000 eşzamanlı ve toplam yaşam döngüsünde 65535 subscription limiti vardır. userDataStream.unsubscribe belirli subscriptionId veya tüm subscriptions için kullanılır.
UDS event envelope {subscriptionId, event} biçimindedir. V1 normalize eder:
executionReportoutboundAccountPositionbalanceUpdateeventStreamTerminatedexternalLockUpdate ve bilinmeyen gelecek eventleri raw metadata kaybedilmeden generic event olarak iletilir. eventStreamTerminated, disconnect veya serverShutdown reconnect/restore akışını tetikler; subscription restore tamamlanana kadar order reconciliation REST query ile desteklenir.
Spot Testnet API key https://testnet.binance.vision/ üzerinden oluşturulur. Yalnız /api/* desteklenir; /sapi/* yoktur. Fonlar sanaldır ve transfer edilemez.
exchangeInfo düzenli sorgulanmalıdır.float finansal alanlar yerine yalnız BigDecimal kullanılacak.unknown-execution durumunu koruyacak.BigDecimal, timestamp/ID değerleri integer olarak parse edilir.5xx/-1006/-1007 sonucu unknown-execution olur.newClientOrderId zorunlu ve benzersiz üretilir.userDataStream.subscribe.signature'dır.!ticker@arr implementasyonu yapılmaz; güncel stream seti kullanılır.2026-08-18 tarihinde sabitlenen Spot API Docs commit'i üzerinden aşağıdaki davranışlar tekrar doğrulandı ve contract testine bağlandı:
POST /api/v3/order HMAC sonuçları testte birebir üretildi.signature dışarıda bırakılır ve değerler UTF-8 byte olarak percent-encode edilmeden imzalanır. Resmî HMAC sonucu birebir üretildi.recvWindow milisaniye cinsindedir; varsayılan 5000, maksimum 60000 ve micro precision için en fazla üç decimal basamak kabul eder.Kaynaklar: Spot REST signed request, Spot WebSocket API request security, RFC 8032 test vectors.
2026-08-18 tarihinde sabitlenen Spot API Docs commit'i ve güncel JDK/Clojure resmî kaynakları üzerinden aşağıdaki kararlar contract testine bağlandı:
4xx yanıtları caller/API kaynaklıdır; 429 rate-limit aşımı, 418 devam eden ihlal sonrası IP ban anlamına gelir.5xx kesin başarısızlık değildir. State-changing command için execution sonucu UNKNOWN olabilir ve aynı command otomatik gönderilemez.429 ve 418 yanıtlarında Retry-After saniye cinsindedir. Safe read 429 ancak bu header parse edilebiliyorsa bekleyip yeniden denenir; 418 otomatik retry dışıdır.X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter) request-weight gözlemini, X-MBX-ORDER-COUNT-* başarılı order-count gözlemini taşır. Rejected response order-count header'ı içermeyebilir.HttpClient instance'ı kendi connection pool'unu yönetip istekler arasında yeniden kullanır; request başına client yaratılmaz.data.json :bigdec true decimal JSON number tokenlarını Double yerine BigDecimal olarak okur. Faz 4 parser'ı bu seçeneği zorunlu kullanır.Kaynaklar: Spot REST HTTP ve rate-limit sözleşmesi, JDK 25 HttpClient, Clojure data.json.
2026-08-18 tarihinde resmî Go Spot 1.10.0/common 2.6.0 ve JavaScript Spot 32.0.1/common 2.4.5 kaynakları kod seviyesinde incelendi. Ayrıntılı kayıt OFFICIAL_SDK_CROSSCHECK.md içindedir.
Çapraz kontrol; ayrı REST/WS config ve lifecycle, response metadata, finansal wire stringleri, signer çeşitleri, connection/subscription registry, serverShutdown ve reconnect/restore yönlerini doğruladı. İki generated model ağı da Clojure public API tasarımı olarak uygun bulunmadı.
Bir güvenlik kararı sıkılaştırıldı: retry güvenliği HTTP metodundan çıkarılamaz. Go common katmanı 500–504 response'larını metoda bakmadan, JavaScript common katmanı GET ve DELETE için retry edebilir. DELETE /api/v3/order state-changing bir command olduğundan binance-clj endpointleri :execution :read|:command ve :retry-policy taşır; hiçbir :command otomatik retry alamaz.
WebSocket API signing'de iki SDK alfabetik sırayı doğrulasa da ortak URL-encoding yardımcıları, resmî non-ASCII örnekteki raw UTF-8 payload ile ayrışır. Kaynak önceliği gereği resmî dokümantasyon esas alınır; Phase 3'te ASCII ve Unicode resmi vektörleri ayrı test edilir.
2026-08-18 tarihinde resmî Spot API Docs 976cc580553890e92031b77306147c0ed1de5a46 HEAD'i tekrar doğrulandı. Market Streams ve WebSocket API bağlantıları 24 saat geçerlidir; server 20 saniyede ping gönderir, aynı payload ile pong ister ve 1 dakika içinde pong yoksa bağlantıyı keser. Market bağlantısı en fazla 1024 stream ve 5 client message/s kabul eder. WebSocket API serverShutdown eventini planlı kesintiden 10 dakika önce gönderir.
User Data Stream'in güncel primary yolu userDataStream.subscribe.signature olmaya devam etmektedir. Request apiKey, timestamp, signature ve opsiyonel en fazla 60000 ms recvWindow taşır; weight 2'dir. Connection başına aynı account için tek subscription, session başına 1000 aktif ve yaşam boyunca 65535 toplam subscription sınırı vardır. Eventler {subscriptionId,event} envelope'undadır.
Implementasyon bu nedenle pong'u transport callback'inde gecikmeden yollar, market restore'u batch eder, UDS restore'da yeni imza üretir ve 23 saat 50 dakikada planlı renewal başlatır. Anahtarsız Spot Testnet BTCUSDT@bookTicker canlı kabulü aynı tarihte geçmiştir.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |