Değişiklik günlüğü
Data API'de ve sözleşmesinde yapılan her değişiklik, en yeniden başlayarak. Sürüm numaraları sürümleme ve kullanımdan kaldırma politikasını izler.
POST /webhooks ve POST /webhooks/{id}/test artık planın ani istek limitine ek olarak hesap başına dakikada 5 isteklik ortak bir limite tabi. Bu limiti aşan istekler Retry-After ile birlikte 429 rate_limited alır. Test olayı artık yeniden deneme olmadan yalnızca bir kez gönderiliyor; diğer teslimatlar hâlâ en fazla 3 kez deneniyor ve denemeler arasında geri çekilme (backoff) uygulanıyor. Bu, kötüye kullanımı önlemeye yönelik bir limittir ve hiçbir planın aylık kotasını ve ani istek limitini değiştirmez. Sürümleme ve kullanımdan kaldırma politikası, bu tür limitlerin hemen uygulanabilmesi için aynı gün değiştirildi; o zamana kadar bir planın sahip olduğu herhangi bir hız sınırının düşürülmesi altı aylık kullanımdan kaldırma takvimini izliyordu. Bu iki uç noktada X-RateLimit-* başlıkları, iki limitten hangisinde daha az istek kaldıysa onu gösterir.
POST /webhooks artık URL'deki ana bilgisayar adını çözümlemiyor. URL https kullanmıyorsa, kimlik bilgileri içeriyorsa ya da ana bilgisayarı herkese açık olmayan bir IP adresiyse yine 422 döndürür. Çözümlenemeyen ya da herkese açık olmayan bir adrese çözümlenen bir ana bilgisayar adı şimdiye kadar 422 alıyordu; artık 201 ile kabul ediliyor ve hesap başına 5 uç noktalık limite sayılıyor. Böyle bir uç noktaya yapılan her teslimat bu durumda yeniden denenmeden başarısız olur, GET /webhooks/{id}/deliveries üzerindeki error nedeni gösterir ve art arda 10 başarısız teslimat uç noktayı devre dışı bırakır. Bir uç nokta oluşturduktan sonra POST /webhooks/{id}/test ile ona bir test olayı gönderin ve erişilebilir olduğunu teslimat günlüğünden doğrulayın.
GET /usage yanıtındaki endpoints[].endpoint artık istenen yol yerine rota şablonunu veriyor: api/v1/coins/bitcoin yerine api/v1/coins/{slug}. Böylece her uç noktanın, her slug veya id için ayrı bir satır yerine tek bir satırı oluyor. Geçerli faturalandırma döneminde daha önce kaydedilen istekler yollarını koruyor, bu yüzden dönem bitene kadar iki biçim de görünebilir.
GET /exchanges/{slug} ve GET /exchanges/{slug}/trust-score, Data API'nin lansmanından bu yana her borsa için 500 hatasıyla başarısız oluyordu. Artık her ikisi de yanıt veriyor; parametreler ve yanıt alanları değişmedi ve sıralaması olmayan bir borsa için score ve breakdown null olarak döner.
Yayımlanan OpenAPI sözleşmesi artık null olabilen her alanı nullable olarak işaretliyor ve kesirli değerleri sayı olarak tanımlıyor (örneğin GET /calculators/dca yanıtındaki invested ve gösterge değerleri); ortak logo, last_updated ve sayfalama from/to alanları tüm uç noktalarda, coin name ve price alanları ise tüm coin listesi ve fiyat uç noktalarında nullable. Ayrıca DCA series alanını dizi olarak tanımlıyor, GET /coins/{slug}/markets, GET /coins/losers, GET /global/history/{metric} ve GET /sentiment/altseason yanıtlarını belgeliyor, GET /sentiment/altseason uç noktasındaki days parametresini 1–365 olarak belgeliyor (0 her zaman reddediliyordu; güncel değer için parametreyi belirtmeyin) ve hata şemasında endpoint_unavailable (503) ile http_error kodlarını listeliyor. Hiçbir istek ya da yanıt değişmedi - yalnızca nasıl tanımlandıkları değişti.
Başarısız kimlik doğrulama eskiden IP başına dakikada 30 denemeyle sınırlıydı; bu sınır aşıldığında o IP'nin arkasındaki her anahtar 429 alıyordu. Artık tek bir anahtar tek bir IP'den dakikada 30 kez, tek bir IP ise 300 kez başarısız olabiliyor; yaklaşık son 15 dakika içinde kimliği doğrulanmış anahtarlar IP sınırı tarafından engellenmiyor ve anahtarsız bir istek sayılmadan 401 döndürüyor. Engellenen istekler Retry-After ile birlikte 429 rate_limited alır.
Yolunda sonda eğik çizgi, çift eğik çizgi veya başta /index.php bulunan GET ve HEAD istekleri artık sunulmak yerine temiz URL'ye 301 ile yönlendiriliyor - örneğin /api/v1/coins/ adresinden /api/v1/coins adresine. Diğer yöntemler etkilenmez.
GET /calculators/compound-interest süreyi tam bileşik faiz dönemlerine yuvarlıyordu; bu nedenle bir dönemin ortasında biten bir süre olduğundan uzun ya da kısa simüle ediliyordu: annually bileşik faizle 6 ay tam bir yıl sürüyordu (12 yatırım ve tam bir yıllık faiz), 5 ay ise hiç dönem içermiyordu (yatırım yok, faiz yok). Tam dönemler artık eskisi gibi hesaplanıyor, son kısmi dönem orantılı faiz kazandırıyor (kesir için basit faiz) ve süre içindeki her yatırım sayılıyor. Süre tam sayıda bileşik faiz dönemine denk geldiğinde sonuçlar değişmez; parametreler ve yanıt alanları değişmedi.
API ve dokümantasyonu, rate değerini bileşik dönem başına faiz oranı olarak ele alıyordu; web sitesindeki hesaplayıcı ve kullanım kılavuzu ise yıllık faiz oranı kullanıyordu. GET /calculators/compound-interest, rate değerini her bileşik döneme tam olarak uyguluyordu; bu yüzden aylık bileşik %5, ayda %5 gibi büyüyordu. rate artık yıllık nominal faiz oranıdır: her dönem, rate değerinin yıllık dönem sayısına bölümü kadar getiri sağlar (aylık bileşik %5, ayda %5/12 demektir); meta.note artık bunu belirtir. Parametreler ve yanıt alanları değişmez; sonuçlar annually dışındaki tüm bileşik sıklıklarında değişir. Ayrıca contribution_frequency ve compound_frequency ikisi de daily veya ikisi de weekly olduğunda, düzenli para yatırma işlemleri artık kayan nokta yuvarlaması yüzünden gecikmiyor ya da atlanmıyor; bu nedenle duration_unit=months ile total_contributions bir yatırım tutarı kadar daha yüksek olabilir. Bu, mevcut bir parametrenin anlamını değiştirir: önceki sonuçları yeniden üretmek için rate değerinizi yıllık bileşik dönem sayısıyla çarpın.
Her Fear & Greed değeri artık score alanının yanında index alanını da içeriyor: Bitculator'da gösterildiği şekliyle 0–100 Fear & Greed endeksi (0–19 aşırı korku, 20–39 korku, 40–59 nötr, 60–79 açgözlülük, 80–100 aşırı açgözlülük) — görüntüleme için bunu kullanın. score değişmedi: index alanının türetildiği −100…+100 aralığındaki ham bileşik değerdir. GET /sentiment/fear-greed (ana değer ve intervals içindeki her kayıt), GET /global yanıtındaki fear_greed ve GET /global/heatmap yanıtındaki meta.fear_greed için geçerlidir. Yalnızca ekleme; mevcut hiçbir alan değişmedi.
GET /coins/{slug}, maksimum arzı olmayan coinler (örneğin arzı sınırsız olan Solana ve Ethereum) için fully_diluted_valuation alanını 0 olarak döndürüyordu. Artık toplam arza başvuruyor ve hiçbiri bilinmiyorsa null dönüyor; OpenAPI sözleşmesi bunu zaten belgeliyordu.
Henüz puanı olmayan bir Fear & Greed değeri score: 0 olarak bildiriliyordu. Artık GET /sentiment/fear-greed üzerinde null; aynısı GET /global yanıtındaki fear_greed ve GET /global/heatmap yanıtındaki meta.fear_greed için de geçerli.
Dolaşımdaki arzı olmayan bir coin için marketcap ve dominance null olabilir; sıralamaya girmemiş bir borsa için güven puanının score ve breakdown alanları null olur. Coin'in seçilen metrik için mevcut bir değeri yoksa POST /alarms 422 döndürür. /coins/recently-added ve /wallets/timeline artık sort parametresine uyar. /coins/gainers ve /coins/losers değişimin kendisine göre sıralanır (önceden fiilen piyasa değerine göre) ve losers 0.00 seviyesindeki coin'leri hariç tutar. Artan sıralamalar null değerleri en sona koyar. /prices, belirsiz bir sembolü en yüksek sıralamadaki aktif coin olarak çözümler. OpenAPI sözleşmesi null olabilen piyasa alanlarını işaretler ve 24 saatlik hacmi sayı olarak tanımlar.
GET /insights, GET /insights/{id} ve GET /coins/{slug}/insights üzerindeki her içgörü artık generated_by: "ai" değerini ve onu yazan model bilgisini taşıyor. Yalnızca ekleme; mevcut hiçbir alan değişmedi.
Huobi borsasının adı HTX olarak değiştirildi ve slug'ı huobi yerine htx oldu; API slug yönlendirmelerini izlemediği için /exchanges/huobi artık 404 döndürüyor. CoinEx devre dışı bırakıldı ve artık döndürülmüyor.
Bir coin'in değişimleri 15 dakikadır yeniden hesaplanmadığında change_24h ve change_7d artık eski bir hareketi göstermek yerine null oluyor. 18 Eylül'den bu yana aynısı change_rank_24h ve change_rank_7d için de geçerli.
Yayımlanan sözleşme artık medya türü düzeyinde örnekleri, her 4xx/5xx yanıtından referans verilen tek bir ortak hata şemasını, anahtarlı her çağrının döndürebileceği 401, 429 ve 500 yanıtlarını, her başarılı yanıttaki X-RateLimit-* ve X-Quota-* başlıklarını, POST /webhooks üzerinde callback olarak tanımlanan alarm.triggered teslimatını ve iletişim, lisans ve kullanım koşulları meta verilerini içeriyor. Hiçbir istek ya da yanıt değişmedi - yalnızca nasıl tanımlandıkları değişti.
Yeni: /apis.json, /.well-known/api-catalog (RFC 9727), /.well-known/security.txt (RFC 9116), ortak yanıt şekillerinin JSON Schema paketi, JSON ikiziyle birlikte herkese açık bir durum sayfası, bu değişiklik günlüğü ve sürümleme ve kullanımdan kaldırma politikası.
MCP araç çağrıları, Data API planının aylık kotasından ve ani istek limitinden düşülmeyi bıraktı; MCP sunucusunun bu günden itibaren kendi anahtarları ve planları var. GET /usage yanıtındaki tokens[].kind artık mcp olabilir ve kota aşımındaki 429 mesajı "Your Data API plan has reached its monthly request limit." şeklindedir (önceden embed planından söz ediyordu).
Geliştirici konsolunda bir Data API anahtarı oluşturmak veya yenilemek artık doğrulanmış bir e-posta adresi gerektiriyor; cüzdanla giriş yapılan hesaplar gibi e-postası olmayan hesaplar muaf. Anahtar oluşturma dakikada 10 ile sınırlı. Mevcut anahtarlar çalışmaya devam ediyor.
GET /tickers, GET /pairs, GET /pairs/{id}, GET /coins/{slug}/markets ve GET /exchanges/{slug}/tickers yanıtlarındaki volume_usd tam sayı olarak saklanıyordu; bu yüzden sentler kayboluyor ve 0,50 $ altındaki piyasalar 0 gösteriyordu. Hacimler artık iki ondalık basamağı koruyor ve bunlardan oluşturulan toplamlar artık yuvarlamayı devralmıyor.
GET /coins/{slug}/sparkline ve GET /exchanges/{slug}/sparkline yanıtlarındaki change, 30d ile 365d arasındaki dönemler için bir kesirdi (0,05, +%5 demekti), 24h ve 7d için ise yüzdeydi. Artık her dönem için yüzde (1.25, +%1,25 demek); bu nedenle uzun dönemlerin değerleri öncekinden 100 kat büyük ve %0,5'in altındaki hareketler artık 0'a yuvarlanmıyor.
Her iki sparkline uç noktasında low ve high, farklı bir pencere üzerinden oluşturulan bir özetten geliyordu ve points ile çelişebiliyordu - örneğin serideki fiyatların üzerinde bir low. Artık points verisinin örneklendiği dönemin gerçek uç değerleri.
GET /wallets, /wallets/timeline, /wallets/compare, /wallets/{slug} ve /wallets/{slug}/assets artık vaporware durumundaki cüzdanları da döndürüyor; dolayısıyla status bu değeri taşıyabilir.
İçgörülerdeki kaynak title ve excerpt alanları artık í gibi ham HTML varlıkları içermiyor.
Hiç düzenlenmemiş bir makale için GET /articles ve GET /articles/{slug} yanıtlarındaki updated_at, kaydın herhangi bir nedenle (örneğin görüntülenme sayısı veya bir oy) en son değiştiği zamanı gösteriyordu. Artık son editoryal düzenlemeyi, o yoksa yayımlanma tarihini gösteriyor ve POST /articles/{slug}/feedback artık onu değiştirmiyor.
İçgörüler artık sentiment içeriyor: bullish, bearish, sheepish veya sınıflandırılmamışsa null.
TypeScript, Python, PHP, Go, Rust, Java, C# ve C++ istemcileri; her biri aynı aktarım çekirdeği üzerinde tüm uç noktaları kapsar: Bearer kimlik doğrulama, zarf açma, X-Quota-* yakalama, 429 ve 5xx'te yeniden deneme, tipli hatalar ve sayfalama.
Uç noktalar artık bir plan gerektirebiliyor. Kullanıma sunulduğunda GET /sentiment/indicators Pro; GET /sentiment/bull-bear, GET /sentiment/altseason, GET /global, GET /global/heatmap ve GET /global/history/{metric} ise Starter gerektiriyordu. Planınızın dışındaki bir çağrı, kilidi açan planı details.required_plan alanında belirten 403 plan_required döndürür ve kota harcamaz.
Altı /liquidations uç noktası her planda kapatıldı: 503 endpoint_unavailable ("This endpoint is temporarily unavailable.") döndürüyorlar ve kota harcamıyorlar.
Pro planının aylık kotası 500.000 istekten 250.000 isteğe düştü.
Genel GET /coins/{slug}/indicators/{family}, aynı yollarda ayrı ayrı belgelenmiş 13 uç noktaya dönüştü: rsi, stoch-rsi, sma, cci, mfi, williams-r, price-volatility, volume-volatility, macd, obv, adx, vwap ve cmf. Mevcut çağrılar değişmedi; bilinmeyen bir gösterge adı artık geçerli adların listesi olmadan düz bir 404 alıyor.
Lansmanda Data API çağrıları ve embed widget istekleri, embed planına bağlı tek bir aylık havuzdan düşülüyordu. Data API'nin artık kendi Free, Starter ve Pro planları, aboneliği ve aylık kotası var; faturalandırma dönemi de kendisine ait: Free'de UTC'ye göre takvim ayı, ücretli planlarda yenileme gününe bağlı dönem. GET /ping ve GET /usage Data API planını bildirir ve /usage yalnızca Data API çağrılarını sayar. Ayrılma sırasında limitler değişmedi.
Referans /{locale}/documentation adresinden /{locale}/documentation/api/v1 adresine; Postman koleksiyonu ve OpenAPI YAML ise /documentation.postman ve /documentation.openapi adreslerinden /documentation/api/v1.postman ve /documentation/api/v1.openapi adreslerine taşındı. Eski yollar yönlendirme olmadan kaldırıldı; /api/v1/openapi.json değişmedi.
Lansman: 15 grupta 73 işlem - coin'ler, fiyatlar, piyasalar, borsalar, cüzdanlar, global, duyarlılık, göstergeler, likidasyonlar, dönüştürme, hesaplayıcılar, editoryal, alarmlar, webhook'lar ve meta. data-api yetkisine sahip Bearer anahtarları, { data, meta } zarfı, ondalık dize hassasiyeti, X-Quota-* başlıkları ve imzalı webhook'lar. Data API çağrıları ve embed widget istekleri embed planı altında tek bir aylık kotayı paylaşıyordu ve daha uzun gösterge pencereleri Starter gerektiriyordu.
Kullanımdan kaldırmalar, kaldırmadan en az altı ay önce burada ve her anahtar sahibine e-postayla duyurulur - bkz. kullanımdan kaldırma politikası. /apis.json adresindeki makine tarafından okunabilir dizin, en yeni kaydın tarihini modified damgası olarak taşır.