Coinbase API'sini Nasıl Kullanılır: Adım Adım Kılavuz

Bu kılavuz, Coinbase Exchange API'sinin teknik incelemesini, uygulamalarını ve en iyi uygulamalarını sunar.

Efe Demir

Efe Demir

5 June 2025

Coinbase API'sini Nasıl Kullanılır: Adım Adım Kılavuz

Dijital varlık değişimi alanında küresel bir lider olan Coinbase, kapsamlı bir Uygulama Programlama Arayüzü (API) paketi sunmaktadır. Bu API'ler, Coinbase'in alım satım ve veri hizmetleriyle programlı olarak entegre olmak isteyen geliştiriciler, algoritmik yatırımcılar ve finans kurumları için temeldir. Bu kılavuz, pratik uygulamalara, temel işlevlere ve operasyonel en iyi uygulamalara odaklanarak Coinbase Exchange API'sinin ayrıntılı bir teknik incelemesini sunmaktadır.

💡
Harika bir API Test aracı mı arıyorsunuz? güzel API Dokümantasyonu oluşturur?

Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!
button

İlk Kurulum ve Kimlik Doğrulama

Coinbase Exchange API'siyle başarılı bir şekilde etkileşim, hesap hazırlığı, güvenli API anahtarı yönetimi ve kimlik doğrulama protokolünün doğru bir şekilde anlaşılmasıyla başlar.

Hesap Ön Koşulları ve API Anahtarı Oluşturma

Genellikle Coinbase Advanced Trade veya kurumsal bir hesap olan doğrulanmış bir Coinbase hesabı gereklidir. API anahtarları, hesap ayarlarınızda oluşturulur. Bu işlem, üç kritik bilgi parçası üretir:

  1. API Anahtarı: Uygulamanızı tanımlayan genel, alfasayısal bir dize (örneğin, k7b9f2d7e8h1g3j4).
  2. API Sırrı: Özel, alfasayısal bir dize (örneğin, S9vP3rK2sLqR7xW1yZ0aB5cD6fE8gH9i). Bu sır, oluşturulduktan sonra yalnızca bir kez görüntülenir ve güvenli bir şekilde saklanmalıdır.
  3. Parola: Anahtar oluşturma sırasında sizin tarafınızdan oluşturulan ek bir güvenlik kimlik bilgisi (örneğin, mySecureP@$$phr@se2024!).

API anahtarı izinleri ayrıntılıdır ve eylemleri (örneğin, yalnızca görüntüleme, alım satım yürütme, para çekme yetenekleri) kısıtlamanıza olanak tanır. Her zaman en az ayrıcalık ilkesine uyun.

API İstek Kimlik Doğrulaması

Coinbase Exchange API'si, tüm özel, kimliği doğrulanmış uç noktalar için imza tabanlı bir kimlik doğrulama mekanizması (HMAC-SHA256) kullanır. Her istek, birkaç özel HTTP başlığı gerektirir:

İmza (CB-ACCESS-SIGN), bir ön karma dizesinin bir HMAC-SHA256 karması oluşturularak oluşturulur. Ön karma dizesi, aşağıdakilerin bir birleşimidir:

  1. Zaman damgası (bir dize olarak).
  2. Büyük harflerle HTTP yöntemi (örneğin, GET, POST).
  3. İstek yolu (örneğin, /orders, /products/BTC-USD/book).
  4. İstek gövdesi (POST istekleri için; gövde yoksa boş bir dize).

Örnek ön karma dizesi oluşturma (bir POST isteği için):

timestamp = str(time.time())
method = "POST"
request_path = "/orders"
body_json_string = '{"product_id": "BTC-USD", "side": "buy", "type": "limit", "price": "50000.00", "size": "0.1"}' // JSON string, not Python dict
prehash_string = timestamp + method + request_path + body_json_string

// The API Secret needs to be base64-decoded before being used as the HMAC key.
// secret_decoded = base64.b64decode(api_secret)
// signature = hmac.new(secret_decoded, prehash_string.encode('utf-8'), hashlib.sha256).digest()
// CB_ACCESS_SIGN = base64.b64encode(signature)

Yanlış oluşturulmuş ön karma dizeleri veya zaman damgası tutarsızlıkları (sunucunuzun saatinin NTP aracılığıyla senkronize edildiğinden emin olun), kimlik doğrulama hatalarının (HTTP 401) yaygın kaynaklarıdır.

İstemci Kütüphaneleri ve Geliştirme Ortamı

Python (cbpro), Node.js (coinbase-pro-node), Java ve Go gibi diller için resmi ve topluluk tarafından geliştirilen istemci kütüphaneleri, bu kimlik doğrulama karmaşıklıklarını soyutlar. Alternatif olarak, curl veya standart HTTP istemci modülleri gibi araçlar kullanılarak doğrudan HTTP istekleri yapılabilir ve imzalama işleminin manuel olarak uygulanmasını gerektirir.

Test için Sandbox Ortamı

Coinbase, canlı pazarlarla etkileşime girmeden önce kritik öneme sahip olan geliştirme ve test için bir Sandbox ortamı sağlar.

Amaç ve İşlevsellik

Sandbox, üretim API işlevselliğini yansıtır ancak test fonları ve simüle edilmiş piyasa verilerini kullanır. Şunlar için izin verir:

Üretimden Temel Farklılıklar

Üretime Geçiş

Sağlam bir dağıtım stratejisi, öncelikle API kimlik bilgileri ve temel URL'ler açısından farklılık gösteren Sandbox ve Üretim için farklı yapılandırmalar içerir. Gerçek fonlarla ilgili hataları önlemek için Sandbox'ta kapsamlı testler çok önemlidir.

Temel API İşlevleri: Uç Noktalar ve Veri Yapıları

API, genel olarak hesap yönetimi, piyasa verisi alma ve alım satım işlemleri olarak kategorize edilir.

Hesap Yönetimi

Hesap durumlarını ve geçmişini sorgulamak için uç noktalar.

Hesap Bakiyelerini Getirme (GET /accounts)
Tüm kullanıcı hesaplarının (itibari para ve kripto) bakiyeleriyle birlikte bir listesini alır.
Bir BTC hesabı için Örnek Yanıt Parçacığı:

{
  "id": "7532b1f0-20f4-4ba7-96f0-303b592d130f",
  "currency": "BTC",
  "balance": "0.50123456",
  "available": "0.49123456",
  "hold": "0.01000000",
  "profile_id": "your-profile-id-string"
}

balance toplam tutardır, available alım satım için kullanılabilendir ve hold açık emirler için ayrılan fonlardır.

Hesap Geçmişi / Defter (GET /accounts/{account_id}/ledger)
Belirli bir hesap için işlemlerin (alım satımlar, ücretler, transferler) sayfalara ayrılmış bir listesini sağlar.
Tipik Sorgu Parametreleri: before (sayfalama için imleç), after (imleç), limit (en fazla 100, varsayılan 100), start_date, end_date.
Örnek Defter Girişi Parçacığı:

{
  "id": "1001874",
  "created_at": "2023-10-26T10:00:00.000Z",
  "amount": "-0.00005000",
  "balance": "0.50118456",
  "type": "fee",
  "details": {
    "order_id": "d0c5340b-6d6c-49d9-b567-48c4bfca13d2",
    "product_id": "BTC-USD",
    "trade_id": "7423736"
  }
}

Piyasa Veri Uç Noktaları

Gerçek zamanlı ve geçmiş piyasa bilgilerine erişim.

Ürünler / Alım Satım Çiftleri (GET /products)
Mevcut tüm alım satım çiftlerini ve özelliklerini listeler.
Örnek Ürün Parçacığı (BTC-USD):

{
  "id": "BTC-USD",
  "base_currency": "BTC",
  "quote_currency": "USD",
  "base_min_size": "0.0001", // Minimum order size in base currency
  "base_max_size": "200.0",  // Maximum order size in base currency
  "quote_increment": "0.01", // Smallest price change unit for quote currency
  "base_increment": "0.00000001", // Smallest size change unit for base currency
  "display_name": "BTC/USD",
  "min_market_funds": "1",    // Minimum funds for a market order in quote currency
  "max_market_funds": "1000000", // Maximum funds for a market order
  "status": "online",
  "status_message": "",
  "cancel_only": false,
  "limit_only": false,
  "post_only": false,
  "trading_disabled": false
}

Emir Defterleri (GET /products/{product_id}/book)
Bir ürün için mevcut emir defterini alır.
Sorgu Parametreleri: level (1, 2 veya 3).
*   Seviye 1: Yalnızca en iyi alış ve satış. *   Seviye 2: Her fiyat seviyesinde toplanmış alış ve satış listesi. (Taraf başına en fazla 50 giriş). *   Seviye 3: Bireysel, toplanmamış emirlerle dolu emir defteri (kimlik doğrulama gerektirir ve daha katı oran sınırlarına sahip olabilir). Örnek Seviye 2 Emir Defteri Parçacığı (BTC-USD):

{
  "sequence": 1234567890,
  "bids": [
    ["49999.99", "0.75", 3], // [price, size, num-orders-at-this-price]
    ["49999.98", "1.20", 5]
  ],
  "asks": [
    ["50000.01", "0.50", 2],
    ["50000.02", "1.00", 4]
  ],
  "time": "2023-10-26T10:05:00.123Z"
}

Ürün Ticker'ı (GET /products/{product_id}/ticker)
Son işlem (işaret), en iyi alış/satış ve 24 saatlik hacim hakkında anlık bilgi.
Örnek Ticker Parçacığı (BTC-USD):

{
  "trade_id": 7423739,
  "price": "50001.50", // Last trade price
  "size": "0.005",    // Last trade size
  "bid": "50001.49",
  "ask": "50001.51",
  "volume": "1250.75", // 24-hour trading volume in base currency
  "time": "2023-10-26T10:06:15.234Z"
}

Tarihsel Oranlar / Mum Çubukları (GET /products/{product_id}/candles)
Tarihsel fiyat verilerini (OHLCV) alır.
Sorgu Parametreleri: start (ISO 8601 zaman damgası), end (ISO 8601), granularity (saniye cinsinden: 60, 300, 900, 3600, 21600, 86400). İstek başına en fazla 300 mum çubuğu.
Örnek Mum Verileri (1 saatlik ayrıntı):

[
  // [time, low, high, open, close, volume]
  [1666771200, 49850.25, 50050.75, 49900.00, 50025.10, 15.2345], // time is Unix epoch
  [1666767600, 49700.00, 49950.50, 49750.20, 49850.25, 22.6789]
]

Alım Satım İşlemleri

Emir verme, yönetme ve sorgulama için uç noktalar.

Emir Verme (POST /orders)
Eşleştirme motoruna yeni emirler gönderir.
Ortak İstek Gövdesi Parametreleri:

{
  "client_oid": "my-unique-client-order-id-001", // Optional: UUID for idempotency
  "product_id": "BTC-USD",
  "side": "buy", // "buy" or "sell"
  "type": "limit", // "limit", "market", or "stop" (stop orders are more complex)
  "price": "49500.00", // Required for limit orders
  "size": "0.0125", // Amount of base currency to buy/sell
  // "funds": "500.00", // For market buy orders: amount of quote currency to spend
  "time_in_force": "GTC", // GTC (Good 'Til Canceled), GTT (Good 'Til Time), IOC (Immediate Or Cancel), FOK (Fill Or Kill)
  // "cancel_after": "min" / "hour" / "day" (used with GTT)
  "post_only": false, // If true, order is rejected if it would immediately match (ensures maker)
  "stp": "dc" // Self-trade prevention: "dc" (Decrease and Cancel), "co" (Cancel Oldest), "cn" (Cancel Newest), "cb" (Cancel Both)
}

Başarılı bir emir yerleşimi, sunucu tarafından atanan id dahil olmak üzere emir ayrıntılarını döndürür.

Emirleri Yönetme

Dolumlar (GET /fills)
Yürütülen işlemlerinizin (dolumlar) sayfalara ayrılmış bir listesini alır.
Sorgu Parametreleri: order_id, product_id, before, after, limit.
Örnek Dolum Parçacığı:

{
  "trade_id": 7423800,
  "product_id": "BTC-USD",
  "price": "49500.00",
  "size": "0.00500000",
  "order_id": "e4f2c1a0-f3d8-4b9b-8b7e-1f2a3c4d5e6f",
  "created_at": "2023-10-26T10:15:30.123Z",
  "liquidity": "T", // "M" for Maker, "T" for Taker
  "fee": "0.00000250", // Fee in quote currency (USD for BTC-USD) or base currency depending on API.
  "settled": true,
  "side": "buy"
}

Eşleştirme Motoru

Eşleştirme motoru, bir Fiyat-Zaman Önceliği algoritmasına göre alış ve satış emirlerini eşleştirir:

  1. Fiyat Önceliği: Daha uygun fiyatlara sahip emirler önceliklidir (alışlar için daha yüksek fiyat, satışlar için daha düşük fiyat).
  2. Zaman Önceliği: Aynı fiyattaki emirler arasında, en erken gönderilen emir önceliklidir.

Bu mantığı anlamak, emir yerleştirme stratejileri, kaymayı yönetme ve ücret optimizasyonu için hayati öneme sahiptir.

Oran Sınırları ve Kısıtlama

API erişimi, platform kararlılığını ve adil kullanımı sağlamak için oran sınırlarına tabidir.

Türler ve Tanımlama

Sınırlar tipik olarak API anahtarı başına, IP adresi başına uygulanır ve uç noktaya göre değişebilir (örneğin, özel imzalı uç noktalar ve genel imzasız uç noktalar). Genel uç noktalar, IP başına 3-10 istek/saniye gibi sınırlara sahip olabilir. Özel (imzalı) uç noktalar genellikle daha yüksek sınırlara sahiptir, ayrıca API anahtarı başına.

API yanıtları, mevcut oran sınırı durumunu gösteren başlıklar içerir:

Sınırları aşmak, bir HTTP 429 Too Many Requests hatasıyla sonuçlanır.

İşleme Stratejileri

  1. Proaktif İzleme: İstek göndermeden önce CB-RATELIMIT-REMAINING'i kontrol edin.
  2. Verimli API Kullanımı:
  1. Üstel Geri Alma: Bir 429 hatası aldıktan sonra, yeniden denemeden önce bekleyin. Sunucuyu bunaltmamak için üstel bir geri alma (örneğin, 1 saniye, ardından 2 saniye, 4 saniye, 8 saniye vb. bekleme, titreme ile) uygulayın.
  2. Gerçek Zamanlı Veriler için WebSockets: Emir defteri güncellemeleri, canlı işlemler ve ticker'lar için, WebSocket bağlantıları REST yoklamadan önemli ölçüde daha verimlidir.

Operasyonel Mükemmellik: Çalışma Kitabı İlkeleri

Sağlam operasyonel uygulamalar, herhangi bir alım satım API entegrasyonu için kritiktir.

İzleme ve Uyarı

Günlüğe Kaydetme

Hata ayıklama ve denetleme için temel bilgileri günlüğe kaydedin:

Güvenlik En İyi Uygulamaları

Gelişmiş Konular ve Teknikler

Gerçek Zamanlı Veriler için WebSocket Beslemeleri

Coinbase Exchange, düşük gecikmeli, gerçek zamanlı veriler için WebSocket beslemeleri sağlar.

{
    "type": "subscribe",
    "product_ids": ["ETH-USD", "BTC-USD"],
    "channels": [
        "level2", // For Level 2 order book updates
        "heartbeat", // To keep connection alive and monitor status
        {
            "name": "ticker", // Ticker channel for specific products
            "product_ids": ["ETH-USD", "BTC-USD"]
        },
        "status" // For updates on product trading statuses
    ],
    // For user-specific updates (orders, balances), authentication is required within the WebSocket handshake or initial messages.
    // "signature": "...", "key": "...", "passphrase": "...", "timestamp": "..." (if auth needed for certain channels)
}

Mesaj Türleri:

İdempotens ve client_oid

Ağ sorunları veya yeniden denemeler nedeniyle yinelenen emir gönderimlerini önlemek için, POST /orders istekleri bir client_oid alanı içerebilir. Bu, istemciniz tarafından oluşturulan benzersiz bir tanımlayıcı (örneğin, UUID v4) olmalıdır.

Kendi Kendine Alım Satım Önleme (STP)

Emir yerleşimindeki stp parametresi (POST /orders), bir hesabın emirlerinin birbiriyle eşleşmesini önlemeye yardımcı olur. Seçenekler tipik olarak şunları içerir:

Sonuç

Coinbase Exchange API'si, geliştiricilerin gelişmiş alım satım uygulamaları ve entegrasyonları oluşturmaları için kapsamlı bir araç seti sağlar. Kimlik doğrulamasını ustalaşmak, veri yapılarını anlamak, oran sınırlarına saygı duymak ve sağlam operasyonel uygulamalar uygulamak, tam potansiyelinden yararlanmanın anahtarıdır. Gerçek zamanlı veriler için WebSocket beslemelerine ve idempotens için client_oid gibi özelliklere geçiş, geliştiricileri kripto para alım satımının hızlı dünyasında dayanıklı ve verimli sistemler oluşturma konusunda daha da güçlendiriyor. Yeni özellikler, uç nokta değişiklikleri ve en iyi uygulamalar hakkında güncel kalmak için Coinbase'in resmi geliştirici belgelerine sürekli dikkat etmek çok önemlidir.

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin