Platforma Kingfisher Trading platform interface showing real-time cryptocurrency charts with candlestick patterns and technical indicators

kingfisher api

Kingfisher API Dokümantasyonu: Geliştiriciler İçin Tam Rehber

Türk geliştiriciler için Kingfisher API tam rehberi. Entegrasyon, kullanım örnekleri ve best practices.

4 Şubat 2026⏱ 11 dk okumakingfisher apikripto apipythonjavascriptgeliştirici

Giriş: Kripto Verilerine Programlı Erişim

Kingfisher API, geliştiricilerin ve algoritmik trader'ların kripto piyasası verilerine programlı olarak erişmesini sağlayan güçlü bir REST API'dir. Pro plan kullanıcıları için mevcuttur.

Bu dokümantasyonda öğrenecekleriniz:

  • API'ye nasıl başlanır
  • Authentication ve anahtar yönetimi
  • Temel endpoint'ler ve kullanım
  • Python ve JavaScript örnekleri
  • Rate limiting ve best practices
  • Sıkça sorulan sorular

API'ye Başlama

Ön Koşullar

Gereksinimler:

1. Pro Plan Aboneliği:
 - API erişimi Pro planla sınırlıdır
 - Standard plan API erişimi yoktur
 - Upgrade gerekli

2. API Anahtarı:
 - Dashboard'dan生成
 - Production ve test anahtarları
 - Güvenli saklama şart

3. Temel Programlama Bilgisi:
 - HTTP istekleri
 - JSON parsing
 - Authentication (Bearer token)
 - Python veya JavaScript (tercihen)

API Anahtarı Oluşturma

Adım Adım:

1. Kingfisher Dashboard'a Giriş:
 URL: https://app.thekingfisher.io/dashboard
 Giriş yapın

2. Ayarlar → API Sekmesi:
 - "API Keys" seçeneği
 - "Create New Key" butonu

3. Anahtar Bilgileri:
 - İsim: "Production" veya "Test"
 - Kısıtlamalar: IP adresi (opsiyonel ama önerili)
 - "Create" ile oluştur

4. Anahtarı Kaydet:
 - API key'i kopyalayın (sadece bir kez gösterilir)
 - Güvenli bir yere saklayın
 - Asla paylaşmayın veya commit etmeyin

5. Test Etme:
 - İlk istek ile test edin
 - Anahtarın çalıştığını doğrulayın

Anahtar Türleri:

Production Key:
- Gerçek trading için
- Canlı veri erişimi
- Rate limits: Daha yüksek
- Production kullanımı şart

Test Key:
- Geliştirme için
- Sandbox data
- Rate limits: Daha düşük
- Ücretsiz test

Öneri:
- Her iki anahtarı da oluşturun
- Geliştirme'de test key kullanın
- Production'da production key kullanın

Authentication

Bearer Token Authentication

Tüm İstekler İçin:

HTTP Header:
Authorization: Bearer YOUR_API_KEY

Örnek:
curl -H "Authorization: Bearer sk_live_xxxxx" \\
 https://api.thekingfisher.io/v1/liquidation-map

Not:
- API key'iniz "sk_live_" ile başlar
- Header her istekte gerekli
- Key'i güvende tutun

Python Örneği:

import requests

API_KEY = "sk_live_xxxxx"
BASE_URL = "https://api.thekingfisher.io/v1"

headers = {
 "Authorization": f"Bearer {API_KEY}",
 "Content-Type": "application/json"
}

response = requests.get(
 f"{BASE_URL}/liquidation-map",
 headers=headers
)

data = response.json()
print(data)

JavaScript Örneği:

const API_KEY = "sk_live_xxxxx";
const BASE_URL = "https://api.thekingfisher.io/v1";

fetch(`${BASE_URL}/liquidation-map`, {
 headers: {
 'Authorization': `Bearer ${API_KEY}`,
 'Content-Type': 'application/json'
 }
})
.then(response => response.json())
.then(data => console.log(data));

Temel Endpoint'ler

1. Liquidation Map

Endpoint:

GET /v1/liquidation-map

Açıklama:
Belirli bir coin için liquidation map verilerini
gerçek zamanlı olarak getirir.

Query Parametreleri:
- symbol (zorunlu): "BTC", "ETH", vb.
- exchange (opsiyonel): "binance", "all" (varsayılan)
- timeframe (opsiyonel): "1h", "4h", "1d" (varsayılan: "4h")

Response:
{
 "symbol": "BTC",
 "price": 50000.00,
 "clusters": [
 {
 "price": 48000,
 "long_amount": 1000000000,
 "short_amount": 200000000,
 "exchange": "binance"
 },
 ...
 ],
 "updated_at": "2026-02-04T02:30:00Z"
}

Python Örneği:

import requests

def get_liquidation_map(symbol="BTC", exchange="binance", timeframe="4h"):
 url = f"{BASE_URL}/liquidation-map"
 params = {
 "symbol": symbol,
 "exchange": exchange,
 "timeframe": timeframe
 }
 response = requests.get(url, headers=headers, params=params)
 return response.json()

# Kullanım
data = get_liquidation_map("BTC", "binance", "4h")
print(f"Bitcoin fiyatı: ${data['price']:,.2f}")
print(f"Cluster sayısı: {len(data['clusters'])}")

# En büyük long cluster'u bul
long_clusters = [c for c in data['clusters'] if c['long_amount'] > 0]
if long_clusters:
 largest_long = max(long_clusters, key=lambda x: x['long_amount'])
 print(f"En büyük long cluster: ${largest_long['price']:,.0f}")
 print(f" Miktar: ${largest_long['long_amount']:,.0f}")

JavaScript Örneği:

async function getLiquidationMap(symbol = 'BTC', exchange = 'binance', timeframe = '4h') {
 const params = new URLSearchParams({
 symbol: symbol,
 exchange: exchange,
 timeframe: timeframe
 });

 const response = await fetch(`${BASE_URL}/liquidation-map?${params}`, {
 headers: {
 'Authorization': `Bearer ${API_KEY}`,
 'Content-Type': 'application/json'
 }
 });

 return await response.json();
}

// Kullanım
getLiquidationMap('BTC', 'binance', '4h')
 .then(data => {
 console.log(`Bitcoin fiyatı: $${data.price.toLocaleString()}`);
 console.log(`Cluster sayısı: ${data.clusters.length}`);

 // En büyük long cluster'u bul
 const longClusters = data.clusters.filter(c => c.long_amount > 0);
 if (longClusters.length > 0) {
 const largestLong = longClusters.reduce((a, b) =>
 a.long_amount > b.long_amount? a: b
 );
 console.log(`En büyük long cluster: $${largestLong.price.toLocaleString()}`);
 console.log(` Miktar: $${largestLong.long_amount.toLocaleString()}`);
 }
 });

2. GEX+ (Gamma Exposure)

Endpoint:

GET /v1/gex

Açıklama:
Belirli bir coin için GEX+ (Gamma Exposure)
verilerini getirir.

Query Parametreleri:
- symbol (zorunlu): "BTC", "ETH", vb.
- exchange (opsiyonel): "all" (varsayılan)

Response:
{
 "symbol": "BTC",
 "gex_value": 800000000,
 "gex_percentile": 75,
 "dealer_positioning": "long_gamma",
 "updated_at": "2026-02-04T02:30:00Z"
}

Python Örneği:

def get_gex(symbol="BTC"):
 url = f"{BASE_URL}/gex"
 params = {"symbol": symbol}
 response = requests.get(url, headers=headers, params=params)
 return response.json()

# Kullanım
data = get_gex("BTC")
print(f"GEX+ Değeri: ${data['gex_value']:,.0f}")
print(f"Percentile: {data['gex_percentile']}th")

# Yorumlama
if data['gex_value'] > 1000000000:
 print("→ Çok yüksek GEX+ (stabilizing)")
elif data['gex_value'] > 0:
 print("→ Pozitif GEX+ (stabilizing)")
elif data['gex_value'] < -1000000000:
 print("→ Çok düşük GEX+ (volatilite artırıcı)")
else:
 print("→ Negatif GEX+ (volatilite artırıcı)")

3. Open Interest

Endpoint:

GET /v1/open-interest

Açıklama:
Belirli bir coin için Open Interest
verilerini getirir.

Query Parametreleri:
- symbol (zorunlu): "BTC", "ETH", vb.
- exchange (opsiyonel): "all" (varsayılan)
- timeframe (opsiyonel): "1d" (varsayılan)

Response:
{
 "symbol": "BTC",
 "oi_value": 12000000000,
 "oi_change_24h": 0.15,
 "oi_change_7d": 0.25,
 "updated_at": "2026-02-04T02:30:00Z"
}

Python Örneği:

def get_open_interest(symbol="BTC"):
 url = f"{BASE_URL}/open-interest"
 params = {"symbol": symbol}
 response = requests.get(url, headers=headers, params=params)
 return response.json()

# Kullanım
data = get_open_interest("BTC")
print(f"Open Interest: ${data['oi_value']/1e9:.2f}B")
print(f"24 Saat Değişim: %{data['oi_change_24h']*100:.1f}")
print(f"7 Gün Değişim: %{data['oi_change_7d']*100:.1f}")

# Trend analizi
if data['oi_change_24h'] > 0.1:
 print("→ Güçlü artış (para girişi)")
elif data['oi_change_24h'] > 0:
 print("→ Hafif artış")
else:
 print("→ Azalış (para çıkışı)")

4. Funding Rate

Endpoint:

GET /v1/funding-rate

Açıklama:
Belirli bir coin için funding rate
verilerini getirir.

Query Parametreleri:
- symbol (zorunlu): "BTC", "ETH", vb.
- exchange (opsiyonel): "all" (varsayılan)

Response:
{
 "symbol": "BTC",
 "current_rate": 0.0001,
 "predicted_rate": 0.00012,
 "avg_24h": 0.00008,
 "next_funding_time": "2026-02-04T08:00:00Z"
}

Python Örneği:

def get_funding_rate(symbol="BTC"):
 url = f"{BASE_URL}/funding-rate"
 params = {"symbol": symbol}
 response = requests.get(url, headers=headers, params=params)
 return response.json()

# Kullanım
data = get_funding_rate("BTC")
print(f"Mevcut Funding: %{data['current_rate']*100:.3f}")
print(f"Tahmini Funding: %{data['predicted_rate']*100:.3f}")
print(f"24 Saat Ortalama: %{data['avg_24h']*100:.3f}")

# Extreme kontrolü
if data['current_rate'] > 0.0005:
 print("⚠️ EXTREME POZİTİF (long'lar öder)")
elif data['current_rate'] < -0.0005:
 print("⚠️ EXTREME NEGATİF (short'lar öder)")
elif data['current_rate'] > 0:
 print("→ Pozitif (normal)")
else:
 print("→ Negatif (normal)")

5. Long/Short Ratio

Endpoint:

GET /v1/long-short-ratio

Açıklama:
Belirli bir coin için long/short ratio
verilerini getirir.

Query Parametreleri:
- symbol (zorunlu): "BTC", "ETH", vb.
- exchange (opsiyonel): "all" (varsayılan)

Response:
{
 "symbol": "BTC",
 "ls_ratio": 1.5,
 "long_percent": 60.0,
 "short_percent": 40.0,
 "updated_at": "2026-02-04T02:30:00Z"
}

Python Örneği:

def get_long_short_ratio(symbol="BTC"):
 url = f"{BASE_URL}/long-short-ratio"
 params = {"symbol": symbol}
 response = requests.get(url, headers=headers, params=params)
 return response.json()

# Kullanım
data = get_long_short_ratio("BTC")
print(f"L/S Ratio: {data['ls_ratio']:.2f}")
print(f"Long: %{data['long_percent']:.1f}")
print(f"Short: %{data['short_percent']:.1f}")

# Extreme kontrolü
if data['ls_ratio'] > 3.0:
 print("⚠️ EXTREME LONG (tepe sinyali)")
elif data['ls_ratio'] < 0.33:
 print("⚠️ EXTREME SHORT (dip sinyali)")
elif data['ls_ratio'] > 1.0:
 print("→ Long dominance")
else:
 print("→ Short dominance")

Rate Limiting

Limits ve Best Practices

Rate Limits:

Pro Plan Limits:
- 100 istek / dakika
- 2,000 istek / saat
- 40,000 istek / gün

Test Plan Limits:
- 20 istek / dakika
- 400 istek / saat
- 8,000 istek / gün

Headers:
X-RateLimit-Remaining: Kalan istek sayısı
X-RateLimit-Reset: Reset zamanı (Unix timestamp)

Best Practices:

1. Rate Limit Takibi:
 - Response headers'ı kontrol edin
 - Kalan istekleri izleyin
 - Reset zamanını bilin

2. Caching:
 - Sık değişmeyen veriyi cache'leyin
 - 1-5 dakika cache yeterli
 - Rate limit kullanımını azaltır

3. Retry Logic:
 - 429 (Too Many Requests) alırsanız bekleyin
 - Exponential backoff kullanın
 - Maksimum 3 deneme

4. Batch Requests:
 - Birden fazla endpoint'i çağırmak yerine
 - Batch endpoint'i kullanın (varsa)
 - Daha verimli

Python Rate Limiting Örneği:

import time
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

def create_session():
 session = requests. Session()

 # Retry strategy
 retry = Retry(
 total=3,
 backoff_factor=1,
 status_forcelist=[429, 500, 502, 503, 504]
 )
 adapter = HTTPAdapter(max_retries=retry)
 session.mount('https://', adapter)

 return session

def make_request(session, url, params=None, max_retries=3):
 for attempt in range(max_retries):
 response = session.get(url, headers=headers, params=params)

 # Rate limit kontrolü
 remaining = int(response.headers.get('X-RateLimit-Remaining', 0))
 reset = int(response.headers.get('X-RateLimit-Reset', 0))

 if remaining < 5:
 # Rate limit yaklaşıyor, bekle
 wait_time = max(1, reset - int(time.time()))
 print(f"Rate limit yaklaşıyor, {wait_time} saniye bekleniyor...")
 time.sleep(wait_time)

 if response.status_code == 429:
 # Rate limit aşıldı, bekle ve retry
 wait_time = 2 ** attempt # Exponential backoff
 print(f"Rate limit aşıldı, {wait_time} saniye bekleniyor...")
 time.sleep(wait_time)
 continue

 return response

 return None

# Kullanım
session = create_session()
data = make_request(session, f"{BASE_URL}/liquidation-map", params={"symbol": "BTC"})

Kompleks Örnekler

Multi-Coin Analiz Script

Python Örneği:

import requests
import pandas as pd
from datetime import datetime

class KingfisherAnalyzer:
 def __init__(self, api_key):
 self.api_key = api_key
 self.base_url = "https://api.thekingfisher.io/v1"
 self.headers = {
 "Authorization": f"Bearer {api_key}",
 "Content-Type": "application/json"
 }

 def get_liquidation_map(self, symbol):
 params = {"symbol": symbol}
 response = requests.get(
 f"{self.base_url}/liquidation-map",
 headers=self.headers,
 params=params
 )
 return response.json()

 def get_gex(self, symbol):
 params = {"symbol": symbol}
 response = requests.get(
 f"{self.base_url}/gex",
 headers=self.headers,
 params=params
 )
 return response.json()

 def get_open_interest(self, symbol):
 params = {"symbol": symbol}
 response = requests.get(
 f"{self.base_url}/open-interest",
 headers=self.headers,
 params=params
 )
 return response.json()

 def get_funding_rate(self, symbol):
 params = {"symbol": symbol}
 response = requests.get(
 f"{self.base_url}/funding-rate",
 headers=self.headers,
 params=params
 )
 return response.json()

 def get_long_short_ratio(self, symbol):
 params = {"symbol": symbol}
 response = requests.get(
 f"{self.base_url}/long-short-ratio",
 headers=self.headers,
 params=params
 )
 return response.json()

 def analyze_coin(self, symbol):
 """Tüm verileri topla ve analiz et"""
 print(f"\n{'='*60}")
 print(f"{symbol} Analizi")
 print(f"{'='*60}")

 # Tüm verileri al
 lm = self.get_liquidation_map(symbol)
 gex = self.get_gex(symbol)
 oi = self.get_open_interest(symbol)
 fr = self.get_funding_rate(symbol)
 ls = self.get_long_short_ratio(symbol)

 # Fiyat
 print(f"\nFiyat: ${lm['price']:,.2f}")

 # Liquidation map
 long_clusters = [c for c in lm['clusters'] if c['long_amount'] > 0]
 if long_clusters:
 largest_long = max(long_clusters, key=lambda x: x['long_amount'])
 print(f"\nEn Büyük Long Cluster:")
 print(f" Seviye: ${largest_long['price']:,.0f}")
 print(f" Miktar: ${largest_long['long_amount']/1e9:.2f}B")

 # GEX+
 print(f"\nGEX+: ${gex['gex_value']/1e6:.0f}M")
 print(f" Percentile: {gex['gex_percentile']}th")
 print(f" Dealer: {gex['dealer_positioning']}")

 # Open Interest
 print(f"\nOpen Interest: ${oi['oi_value']/1e9:.2f}B")
 print(f" 24S Değişim: %{oi['oi_change_24h']*100:.1f}")

 # Funding Rate
 print(f"\nFunding Rate: %{fr['current_rate']*100:.3f}")

 # Long/Short Ratio
 print(f"\nL/S Ratio: {ls['ls_ratio']:.2f}")
 print(f" Long: %{ls['long_percent']:.1f}")
 print(f" Short: %{ls['short_percent']:.1f}")

 # Sinyal analizi
 signals = self.generate_signals(lm, gex, oi, fr, ls)
 print(f"\nSinyaller:")
 for signal in signals:
 print(f" {signal}")

 def generate_signals(self, lm, gex, oi, fr, ls):
 """Trading sinyalleri oluştur"""
 signals = []

 # Liquidation map sinyali
 long_clusters = [c for c in lm['clusters'] if c['long_amount'] > 500_000_000]
 if long_clusters:
 largest_long = max(long_clusters, key=lambda x: x['long_amount'])
 if lm['price'] - largest_long['price'] < lm['price'] * 0.05:
 signals.append(f"💰 Yakın long cluster @ ${largest_long['price']:,.0f}")

 # GEX+ sinyali
 if gex['gex_value'] > 1_000_000_000:
 signals.append("✅ Çok yüksek GEX+ (stabilizing)")
 elif gex['gex_value'] < -1_000_000_000:
 signals.append("⚠️ Çok düşük GEX+ (volatilite artırıcı)")

 # Open Interest sinyali
 if oi['oi_change_24h'] > 0.2:
 signals.append("📈 Güçlü OI artışı (trend güçleniyor)")
 elif oi['oi_change_24h'] < -0.1:
 signals.append("📉 OI azalışı (trend zayıflıyor)")

 # Funding rate sinyali
 if fr['current_rate'] > 0.0005:
 signals.append("🔥 Extreme pozitif funding (tepe riski)")
 elif fr['current_rate'] < -0.0005:
 signals.append("❄️ Extreme negatif funding (dip fırsatı)")

 # Long/Short ratio sinyali
 if ls['ls_ratio'] > 3.0:
 signals.append("⚠️ Extreme long (tepe sinyali)")
 elif ls['ls_ratio'] < 0.33:
 signals.append("💚 Extreme short (dip sinyalı)")

 return signals

# Kullanım
analyzer = KingfisherAnalyzer("sk_live_xxxxx")

# Birden fazla coin analizi
coins = ["BTC", "ETH", "SOL"]
for coin in coins:
 analyzer.analyze_coin(coin)
 time.sleep(1) # Rate limit için bekle

Hata Yönetimi

Hata Türleri ve Çözümleri

Yaygın Hatalar:

1. 401 Unauthorized:
 - API key yanlış veya eksik
 - Çözüm: API key'i kontrol edin

2. 403 Forbidden:
 - Yetersiz izinler
 - Çözüm: Pro plan'a upgrade edin

3. 404 Not Found:
 - Endpoint yanlış
 - Çözüm: URL'i kontrol edin

4. 429 Too Many Requests:
 - Rate limit aşıldı
 - Çözüm: Bekleyin ve retry edin

5. 500 Internal Server Error:
 - Sunucu hatası
 - Çözüm: Retry edin

Python Hata Yönetimi:

import requests
from requests.exceptions import RequestException

def safe_api_call(url, params=None, max_retries=3):
 for attempt in range(max_retries):
 try:
 response = requests.get(url, headers=headers, params=params)

 # Başarılı
 if response.status_code == 200:
 return response.json()

 # Hata durumları
 elif response.status_code == 401:
 raise Exception("API key yanlış veya eksik")

 elif response.status_code == 403:
 raise Exception("Pro plan gerekli")

 elif response.status_code == 404:
 raise Exception("Endpoint bulunamadı")

 elif response.status_code == 429:
 # Rate limit, bekle ve retry
 wait_time = 2 ** attempt
 print(f"Rate limit, {wait_time}s bekleniyor...")
 time.sleep(wait_time)
 continue

 elif response.status_code >= 500:
 # Sunucu hatası, retry
 if attempt < max_retries - 1:
 time.sleep(1)
 continue
 else:
 raise Exception(f"Sunucu hatası: {response.status_code}")

 except RequestException as e:
 if attempt < max_retries - 1:
 time.sleep(1)
 continue
 else:
 raise Exception(f"İstek hatası: {e}")

 return None

# Kullanım
try:
 data = safe_api_call(f"{BASE_URL}/liquidation-map", params={"symbol": "BTC"})
 print(data)
except Exception as e:
 print(f"Hata: {e}")

Sıkça Sorulan Sorular (FAQ)

S1: API'ye nasıl erişirim?

Cevap:
Pro plan aboneliği gerekli.

Adımlar:
1. Pro plan'a upgrade edin ($109/ay)
2. Dashboard'dan API key oluşturun
3. Documentation'ı okuyun
4. Test edin

Test Key:
- Geliştirme için test key kullanın
- Production'da production key kullanın

S2: Rate limit nedir?

Cevap:
Pro plan: 100 istek/dakika
Test plan: 20 istek/dakika

Aşıldığında:
- 429 hatası alırsınız
- Beklemeli ve retry etmelisiniz
- Response headers'da bilgi var

Best Practice:
- Caching kullanın
- Batch requests yapın
- Rate limit'i izleyin

S3: Webhook desteği var mı?

Cevap:
Şu anda yok, ama planlanıyor.

Alternatif:
- Polling (periyodik istek)
- WebSocket planlanıyor
- Product roadmap'da

Şu anda:
- Sık polling (her 1-5 dakika)
- Rate limit'e dikkat
- Caching kullanın

Sonuç: Kripto Verilerine Erişin

Önemli Noktalar

Kingfisher API Özeti:

Öğrendikleriniz:
1. API'ye başlama
2. Authentication
3. Temel endpoint'ler
4. Python ve JavaScript örnekleri
5. Rate limiting
6. Hata yönetimi

Kingfisher API Avantajları:
- %100 doğru veri
- Gerçek zamanlı güncelleme
- Tüm borsalar entegre
- Detaylı dokümantasyon
- Python/JavaScript örnekleri

Başarı İçin Kurallar:

1. Güvenlik:
 - API key'i güvende tutun
 - Production ve test key ayrın
 - Git'e commit etmeyin

2. Rate Limit:
 - Limits'i izleyin
 - Caching kullanın
 - Retry logic implement edin

3. Hata Yönetimi:
 - Tüm hataları handle edin
 - Graceful degradation
 - Loglama

4. Best Practices:
 - Sık değişmeyen veriyi cache'leyin
 - Batch requests yapın
 - Asynchronous çağrılar kullanın

Pro Plan'a Upgrade Edin

Kaynaklar:

Geliştirmeye Başlayın →