Vadeli işlem sözleşmelerini ve spot ticareti yöneten, denenmiş ve gerçek bir API aracılığıyla dünyanın en likit kripto para borsalarından birine erişiminiz olduğunu hayal edin. Kraken, 2011 yılında kurulmuş ve 190 ülkede 10 milyondan fazla kullanıcıya 200'den fazla işlem çiftinde kapsamlı likidite ile hizmet veren bir borsa için WebSocket ve REST arayüzleri sunarak tam da bunu sağlar.
Kripto para alım satım API'leri iki kategoriye ayrılır: perakende kolaylığı için tasarlanmış olanlar ve kurumsal güvenilirlik için oluşturulmuş olanlar. Birçok borsa, API istikrarına kıyasla mobil uygulamalara öncelik verir, bu da algoritmik stratejileri kısıtlayan hız limitlerine ve özellik yayınlarının gerisinde kalan belgelere yol açar. Kraken, işlem hacmine dayalı kademeli API erişimi, kapsamlı sanal alan ortamları ve yüksek frekanslı tüccarlar için özel uç noktalar sunarak bu sürtünme noktalarını ortadan kaldırır. Hobi amaçlı komut dosyalarından kurumsal düzeyde sistemlere kadar ölçeklenebilen otomatik stratejiler oluşturursunuz.
İçindekiler:
- Kraken'ın API Mimarisini Anlamak
- Kimlik Doğrulama ve API Anahtarı Kurulumu
- REST API ile Spot Ticaret
- WebSocket ile Gerçek Zamanlı Veri
- Vadeli İşlemler ve Gelişmiş Özellikler
- Sonuç
Kraken'ın API Mimarisini Anlamak
Kraken, üç farklı API ekosistemi işletmektedir: Spot REST, Futures REST ve WebSocket. Bu mimarileri anlamak, doğru entegrasyon yolunu seçmenize yardımcı olur.
Spot REST API
Spot REST API, Kraken'ın temel borsa işlevselliğine erişim sağlar. Genel uç noktalara (piyasa verileri, ticker bilgileri, emir defteri derinliği) ve özel uç noktalara (hesap bakiyesi, emir yönetimi, fonlama) ayrılmıştır. Tüm istekler TLS 1.2 veya üstü HTTPS kullanır.
Temel URL: https://api.kraken.com/0
Genel uç noktalar kimlik doğrulama gerektirmez. Özel uç noktalar, API anahtarlarıyla HMAC-SHA512 istek imzalama kullanır. Yanıt biçimleri farklılık gösterir—bazı uç noktalar ilk öğesi bir hata dizesi olan diziler (eski tasarım) döndürürken, daha yeni uç noktalar standart JSON nesneleri kullanır.
Vadeli İşlemler REST API
Kraken Futures, spot borsadan ayrı olarak kendi API altyapısı ile çalışır. Kripto paralar üzerinde 50x'e kadar kaldıraçla sürekli takasları ve sabit vadeli vadeli işlemleri destekler.
Temel URL'ler:
- Üretim:
https://futures.kraken.com/api/v3 - Sandbox:
https://demo-futures.kraken.com/api/v3
Vadeli İşlemler API'si, Spot'a kıyasla farklı kimlik doğrulama mekanizmaları ve uç nokta yapıları kullanır. Spot alım satım kimlik bilgilerinizden farklı olarak futures.kraken.com adresinde ayrı API anahtarları oluşturmanız gerekir.
WebSocket API
Kraken, iki WebSocket sunucusu aracılığıyla gerçek zamanlı veri akışları sağlar:
- Genel:
wss://ws.kraken.com— Piyasa verileri, emir defterleri, işlemler - Özel:
wss://ws-auth.kraken.com— Hesap güncellemeleri, emir durumu, bakiye değişiklikleri
REST sorgulamasından farklı olarak, WebSocket bağlantıları verileri kullanılabilir hale geldikçe iletir, bu da gecikmeyi yüzlerce milisaniyeden onlarca milisaniyeye düşürür. Genel sunucu kimlik doğrulama gerektirmez; özel sunucu, REST API aracılığıyla alınan bir WebSocket belirteci gerektirir.
Hız Limiti
Kraken, katman tabanlı hız limitleri uygular:
- Başlangıç: Dakikada 60 çağrı (genel), dakikada 30 çağrı (özel)
- Orta: Dakikada 125 çağrı (genel), dakikada 60 çağrı (özel)
- Profesyonel: 30 günlük işlem hacmine göre dakikada 250+ çağrı
Limitlerin aşılması, isteklerinize ne zaman devam edebileceğinizi belirten Retry-After başlıklarıyla HTTP 429 hatalarıyla sonuçlanır.

Kimlik Doğrulama ve API Anahtarı Kurulumu
Kraken, nonce tabanlı tekrar oynatma koruması ile HMAC-SHA512 kimlik doğrulaması kullanır. Bu, çok iş parçacıklı uygulamalarda yaygın olan "Geçersiz nonce" hatalarından kaçınmak için dikkatli uygulama gerektirir.
API Anahtarları Oluşturma
Kraken kontrol panelinizde Hesap → Güvenlik → API'ye gidin:
- "Yeni Anahtar Oluştur"a tıklayın
- İzinleri seçin:
- Sorgula: Hesap bakiyesini, açık emirleri, işlem geçmişini oku
- Ticaret: Emir ver ve iptal et
- Çek: Fon transfer et (dikkatli kullanın)
- Yatır: Yatırım adreslerini ve yöntemlerini görüntüle
3. IP beyaz listesini belirtin (üretim için önerilir)
4. API Anahtarını ve Özel Anahtarı güvenli bir şekilde saklayın—Kraken Özel Anahtarı bir daha asla göstermez
Vadeli işlemler için bu işlemi futures.kraken.com/settings/api adresinde tekrarlayın. demo-futures.kraken.com adresindeki sanal alan ortamı ayrı kimlik bilgileri kullanır.

HMAC-SHA512 İmzalama (Manuel Uygulama)
SDK kullanmıyorsanız, kimlik doğrulamayı aşağıdaki gibi uygulayın:
import requests
import hmac
import hashlib
import base64
import time
import json
class KrakenAuth:
def __init__(self, api_key, api_secret):
self.api_key = api_key
self.api_secret = base64.b64decode(api_secret)
self.base_url = "https://api.kraken.com"
def generate_signature(self, urlpath, data):
# Nonce must be higher than any previous nonce used
nonce = str(int(time.time() * 1000))
data['nonce'] = nonce
# Create message: nonce + POST data
message = nonce + json.dumps(data, separators=(',', ':'))
# Create HMAC-SHA512 signature
signature = hmac.new(
self.api_secret,
urlpath.encode() + hashlib.sha256(message.encode()).digest(),
hashlib.sha512
).hexdigest()
return {
'API-Key': self.api_key,
'API-Sign': signature,
'Content-Type': 'application/x-www-form-urlencoded'
}, data
def private_request(self, method, params=None):
urlpath = f'/0/private/{method}'
data = params or {}
headers, signed_data = self.generate_signature(urlpath, data)
response = requests.post(
f"{self.base_url}{urlpath}",
headers=headers,
data=signed_data
)
return response.json()
# Usage
kraken = KrakenAuth(
api_key="YOUR_API_KEY",
api_secret="YOUR_BASE64_ENCODED_PRIVATE_KEY"
)
# Get account balance
balance = kraken.private_request('Balance')
print(balance)
Kritik: Nonce Yönetimi
Kraken, her API anahtarı için kesinlikle artan noncelar gerektirir. Aynı anahtarı kullanan birden fazla iş parçacığınız veya süreciniz varsa, bunlar çakışacak ve "EAPI:Geçersiz nonce" hataları üretecektir. Çözümler:
- Her alım satım algoritması veya hizmeti için farklı API anahtarları kullanın
- Anahtarları paylaşmak kaçınılmazsa, Redis veya veritabanı aracılığıyla nonce senkronizasyonu uygulayın
- Çarpışma olasılığını azaltmak için mikrosaniye hassasiyetinde zaman damgaları kullanın (Unix zamanını 1000 ile çarpın)
Resmi SDK'lar
Kraken, Go, Rust, Julia ve diğer diller için topluluk SDK'larıyla birlikte resmi Python ve Node.js SDK'ları sağlar:
# Python
pip install python-kraken-sdk
# Node.js
npm install @kraken-api/sdk
Resmi SDK'lar kimlik doğrulama, nonce yönetimi ve hata ayrıştırmayı otomatik olarak halleder. Özel HTTP işleme için belirli gereksinimleriniz yoksa bunları kullanın.

REST API ile Spot Ticaret
Spot REST API, iyi belgelenmiş uç noktalar aracılığıyla kapsamlı alım satım işlevselliği sağlar.
Piyasa Verileri (Genel)
Mevcut alım satım çiftlerini alın:
curl "https://api.kraken.com/0/public/AssetPairs"
Ticker bilgisini alın:
curl "https://api.kraken.com/0/public/Ticker?pair=XBTUSD"
Kraken, Bitcoin için BTC yerine XBT, bazı eski uç noktalarda XXBT, USD yerine ZUSD gibi standart dışı çift sembolleri kullanır. Alım satım yapmadan önce AssetPairs uç noktasını kullanarak varlık kodlarını her zaman doğrulayın.
Emir defteri derinliğini alın:
curl "https://api.kraken.com/0/public/Depth?pair=XBTUSD&count=10"
Hesap Bakiyesi (Özel)
balance = kraken.private_request('Balance')
print(balance)
Yanıt formatı, anahtar olarak varlık kodlarını kullanır (USD için ZUSD, Bitcoin için XXBT):
{
"error": [],
"result": {
"ZUSD": "1000.50",
"XXBT": "0.2500"
}
}
Emir Verme
Bir limit alım emri verin:
order = kraken.private_request('AddOrder', {
'pair': 'XBTUSD',
'type': 'buy',
'ordertype': 'limit',
'price': '65000.00',
'volume': '0.01',
'oflags': 'post' # Post-only flag
})
print(order)
Emir türleri şunları içerir:
market: En iyi fiyattan hemen gerçekleştirlimit: Belirtilen fiyattan veya daha iyisinden gerçekleştirstop-loss: Fiyat eşiği aştığında piyasa emrini tetikletake-profit: Stop-loss'un tersitrailing-stop: Fiyat hareketlerini takip eden dinamik durdurma
Emir Yönetimi
Açık emirleri listele:
open_orders = kraken.private_request('OpenOrders')
print(open_orders)
Bir emri iptal et:
kraken.private_request('CancelOrder', {
'txid': 'XXXXXX-XXXXXX-XXXXXX'
})
Tüm emirleri iptal et (acil durdurma):
kraken.private_request('CancelAll')
İşlem Geçmişi
Gerçekleştirilen işlemleri sorgula:
trades = kraken.private_request('TradesHistory', {
'start': '1704067200', # Unix timestamp
'end': '1706659200'
})
İpucuApidog

WebSocket ile Gerçek Zamanlı Veri
REST sorgulaması, algoritmik alım satım için kabul edilemez gecikme süreleri getirir. Kraken'ın WebSocket API'si gerçek zamanlı emir defteri güncellemeleri, işlemler ve hesap olayları akışı sağlar.
Genel WebSocket'e Bağlanma
const WebSocket = require('ws');
const ws = new WebSocket('wss://ws.kraken.com');
ws.on('open', () => {
console.log('Connected to Kraken public WebSocket');
// Subscribe to ticker for BTC/USD
ws.send(JSON.stringify({
event: 'subscribe',
pair: ['XBT/USD'],
subscription: {
name: 'ticker'
}
}));
});
ws.on('message', (data) => {
const message = JSON.parse(data);
// Ticker format: [channelID, tickerData, pair, channelName]
if (Array.isArray(message) && message[2] === 'XBT/USD') {
const [channelID, ticker, pair, channelName] = message;
console.log(`BTC Price: Bid ${ticker.b[0]}, Ask ${ticker.a[0]}`);
}
});
// Heartbeat every 30 seconds
setInterval(() => {
ws.send(JSON.stringify({ event: 'ping' }));
}, 30000);
WebSocket abonelikleri, sayısal kanal kimlikleriyle dizi biçiminde veri döndürür. Verileri doğru bir şekilde yönlendirmek için bu kimlikleri aboneliklerinizle eşleştirin.
Emir Defteri Akışı
Seviye 2 emir defteri verilerine abone olun:
ws.send(JSON.stringify({
event: 'subscribe',
pair: ['XBT/USD'],
subscription: {
name: 'book',
depth: 25 // 25, 100, 500, or 1000 levels
}
}));
Kitap akışı anlık görüntüler ve ardından artımlı güncellemeler gönderir. Deltaları uygulayarak yerel emir defteri durumunu koruyun:
let orderBook = { asks: {}, bids: {} };
ws.on('message', (data) => {
const message = JSON.parse(data);
if (message[1] === 'as' || message[1] === 'bs') {
// Snapshot: initialize order book
const [channelID, type, asks, bids] = message;
orderBook.asks = Object.fromEntries(asks.map(([price, volume]) => [price, volume]));
orderBook.bids = Object.fromEntries(bids.map(([price, volume]) => [price, volume]));
} else if (message[1] === 'a' || message[1] === 'b') {
// Update: apply delta
const [channelID, type, delta] = message;
const side = type === 'a' ? 'asks' : 'bids';
delta.forEach(([price, volume]) => {
if (volume === '0.00000000') {
delete orderBook[side][price];
} else {
orderBook[side][price] = volume;
}
});
}
});
Özel WebSocket Kimlik Doğrulaması
REST aracılığıyla bir WebSocket belirteci alın:
token_response = kraken.private_request('GetWebSocketsToken')
token = token_response['result']['token']
Özel WebSocket'e bağlanın:
const privateWs = new WebSocket('wss://ws-auth.kraken.com');
privateWs.on('open', () => {
// Authenticate
privateWs.send(JSON.stringify({
event: 'subscribe',
subscription: {
name: 'ownTrades',
token: 'YOUR_WEBSOCKET_TOKEN'
}
}));
});
privateWs.on('message', (data) => {
const message = JSON.parse(data);
if (message[1] === 'ownTrades') {
console.log('Your trade executed:', message[0]);
}
});
Özel WebSocket belirteçleri 15 dakika sonra sona erer. Üretim sistemleri için otomatik belirteç yenileme ve yeniden bağlantı mantığını uygulayın.
Vadeli İşlemler ve Gelişmiş Özellikler
Kraken Futures, gelişmiş emir türleri ve portföy marjı ile türev işlemleri için ayrı bir altyapı sağlar.
Vadeli İşlemler Kimlik Doğrulaması
Vadeli işlemler, Spot HMAC'ten farklı Taşıyıcı belirteç kimlik doğrulaması kullanır:
import requests
import hmac
import hashlib
import base64
import json
class KrakenFuturesAuth:
def __init__(self, api_key, api_secret):
self.api_key = api_key
self.api_secret = api_secret
self.base_url = "https://futures.kraken.com/api/v3"
def generate_signature(self, endpoint, method, body=None):
nonce = str(int(time.time() * 1000))
message = endpoint + method + nonce
if body:
message += json.dumps(body, separators=(',', ':'))
signature = base64.b64encode(
hmac.new(
base64.b64decode(self.api_secret),
message.encode(),
hashlib.sha256
).digest()
).decode()
return {
'APIKey': self.api_key,
'Nonce': nonce,
'Authent': signature,
'Content-Type': 'application/json'
}
def request(self, endpoint, method='GET', body=None):
url = f"{self.base_url}{endpoint}"
headers = self.generate_signature(endpoint, method, body)
if method == 'GET':
response = requests.get(url, headers=headers)
else:
response = requests.post(url, headers=headers, json=body)
return response.json()
# Usage
futures = KrakenFuturesAuth('FUTURES_API_KEY', 'FUTURES_SECRET')
Vadeli İşlemler Emir Yerleştirme
Bitcoin perpetual üzerinde bir limit emri verin:
order = futures.request('/sendorder', 'POST', {
'orderType': 'lmt',
'side': 'buy',
'size': 1,
'limitPrice': 65000,
'symbol': 'PI_XBTUSD' # Perpetual Inverse BTC/USD
})
Vadeli işlem sembolleri farklı kurallar kullanır:
PI_XBTUSD: Sürekli Ters Bitcoin/USDPF_ETHUSD: Sürekli Doğrusal Ethereum/USDFI_XBTUSD_250228: 28 Şubat 2025'te sona eren sabit vadeli vadeli işlemler
Toplu İşlemler
Vadeli İşlemler API'si toplu emir gönderimini destekler:
batch = futures.request('/batchorder', 'POST', {
'batchOrder': [
{
'order': 'send',
'order_tag': '1',
'orderType': 'lmt',
'symbol': 'PI_XBTUSD',
'side': 'buy',
'size': 1,
'limitPrice': 64000
},
{
'order': 'send',
'order_tag': '2',
'orderType': 'lmt',
'symbol': 'PI_XBTUSD',
'side': 'sell',
'size': 1,
'limitPrice': 66000
}
]
})
Gelişmiş Emir Özellikleri
- Takip Eden Durdurmalar (Trailing Stops): Durdurma fiyatı piyasa hareketleriyle birlikte ayarlanır
- Kar Al / Zarar Durdur (Take Profit / Stop Loss): Risk yönetimi için parantez emirleri
- Yalnızca Gönder (Post-Only): Emirlerin likidite eklemesini sağlar (yapıcı ücretleri)
- Yalnızca Azalt (Reduce-Only): Pozisyonun artmasını engeller
Dead Man's Switch (Ölü Adam Anahtarı)
Bağlantı kesilirse tüm emirleri iptal et:
# Set 60-second timeout
kraken.private_request('CancelAllOrdersAfter', {
'timeout': 60
})
Bu, sunucu tarafında bir zamanlayıcı oluşturur—60 saniye içinde bir kalp atışı göndermezseniz, Kraken tüm açık emirleri otomatik olarak iptal eder.
Sonuç
Kraken'ın API'si, REST, WebSocket ve özel Vadeli İşlemler arayüzleri aracılığıyla kripto para piyasalarına kurumsal düzeyde erişim sağlar. HMAC-SHA512 imzalarıyla kimlik doğrulaması yapar, nonce dizilerini dikkatlice yönetir ve spot ticaretten kaldıraçlı vadeli işlemlere kadar ölçeklendirme yaparsınız. Kademeli hız limitleri, gündelik portföy dengelemeden yüksek frekanslı piyasa yapımına kadar stratejilere olanak tanır.
Kimlik doğrulama ve emir yerleştirmeyi test etmek için sanal alan ortamıyla başlayın. Nonce çakışmalarını önlemek için her alım satım stratejisi için ayrı API anahtarları kullanın. Gerçek zamanlı veriler için WebSocket bağlantıları ve risk yönetimi için dead man's switch'ler uygulayın. Hız limiti başlıklarını izleyin ve 429 hataları için üstel geri çekilme uygulayın.
Kripto alım satım uygulamaları oluştururken—Kraken uç noktalarını test ederken, kimlik doğrulama imzalarında hata ayıklarken veya birden fazla API entegrasyonunu yönetirken—geliştirme iş akışınızı Apidog ile kolaylaştırın. Görsel API testi, otomatik belge oluşturma ve ekip işbirliğini ele alır, böylece HMAC imzalarıyla uğraşmak yerine alım satım mantığına odaklanabilirsiniz.
