Ana içeriğe geç

Anlık Görüntü API'si

Anlık Görüntü API'si, on-chain analiz grafiklerini PNG görselleri veya SVG vektör grafikleri olarak işler. Metrik kimliklerini ve isteğe bağlı görüntüleme parametrelerini gönderin; raporlara, panolara veya yapay zeka sohbetlerine gömülmeye hazır, tam olarak işlenmiş bir grafik görseli alın. Şu anda Bitcoin metriklerini destekler; çok zincirli kapsam (ETH, TON, TRON) genişlemektedir.

Uç Noktalar

YöntemYolAçıklama
GET/v1/chart/snapshotSorgu parametreleriyle basit grafikler
POST/v1/chart/snapshotJSON gövdesiyle tam özelleştirme

Her iki uç nokta da varsayılan olarak image/png döndürür. Accept istek başlığını ayarlayarak veya — POST üzerinde — format gövde alanını ("png", "svg", "json") kullanarak SVG'ye (image/svg+xml) ya da JSON meta verisine (application/json) geçin.

Başarılı PNG ve SVG yanıtları, işlenen grafiğin 1 saat içinde URL üzerinden yeniden alınabilmesi için bir X-Render-Id başlığı içerir:

ÇıktıÖnbelleğe alındığı yer
PNGhttps://api.blocklens.co/v1/chart/renders/{X-Render-Id}.png
SVGhttps://api.blocklens.co/v1/chart/renders/{X-Render-Id}.svg

Kimlik Doğrulama

Tüm istekler Authorization başlığı aracılığıyla bir API anahtarı gerektirir:

Authorization: Bearer YOUR_API_KEY

API anahtarlarının nasıl alınacağına dair ayrıntılar için bkz. Kimlik Doğrulama.

Erişim ve Hız Limitleri

Anlık Görüntü API'si Pro veya Enterprise katmanını gerektirir. Demo ve Free katman anahtarları 403 Forbidden alır.

Anlık Görüntü API'si, Data API ile aynı hız limitlerine tabidir. Ayrıntılar için bkz. Hız Limitleri.

Hız limiti aşıldığında, API bir retry_after alanıyla birlikte 429 Too Many Requests döndürür.

Metrik erişimi ayrıca dereceye göre sınırlandırılır: derece 0 metrikleri (fiyat, arz, MVRV) tüm Pro+ anahtarlarında kullanılabilir, derece 1 metrikleri (SOPR, kâr/zarar) Pro gerektirir ve derece 2 metrikleri (CBD ısı haritaları) Enterprise gerektirir.


GET /v1/chart/snapshot

Sorgu parametrelerinden bir grafik oluşturun. Basit, tek metrikli veya şablon tabanlı grafikler için idealdir.

Parametreler

ParametreTürVarsayılanAçıklama
metricstring-Tek metrik kimliği (örn. price, lth_supply). metrics ve template ile birlikte kullanılamaz.
metricsstring-Virgülle ayrılmış metrik kimlikleri, en fazla 6 (örn. lth_supply,sth_supply). metric ve template ile birlikte kullanılamaz.
templatestring-Önceden tanımlanmış şablon kimliği. metric ve metrics ile birlikte kullanılamaz.
daysinteger365Geçmiş veri gün sayısı (7-10000).
start_datestring-Başlangıç tarihi (YYYY-MM-DD). days parametresini geçersiz kılar.
end_datestring-Bitiş tarihi (YYYY-MM-DD). Varsayılan olarak bugündür.
stylestringautoGrafik stili: line, area, bar. Atlanırsa metrik kayıt defterinden otomatik algılanır.
scalestringlinearY ekseni ölçeği: linear veya log.
overlaystring-Sağ eksene ince kesik çizgili bir fiyat katmanı ekler (price kullanın). Şu anda BTC fiyatı.
widthinteger1200Piksel cinsinden görsel genişliği (600-2400).
heightinteger600Piksel cinsinden görsel yüksekliği (300-1200).
titlestringautoGrafik başlığı. Atlanırsa metrik adlarından otomatik oluşturulur.
themestringlightRenk teması: light veya dark.

metric, metrics veya template parametrelerinden tam olarak biri sağlanmalıdır.

Mevcut Şablonlar

ŞablonMetrikler
priceBTC Fiyatı
price_volumeFiyat + Hacim
market_capPiyasa Değeri
holder_supplyLTH Arzı + STH Arzı
mvrv_ratioLTH MVRV + STH MVRV
realized_priceLTH Gerçekleşen Fiyat + STH Gerçekleşen Fiyat
realized_capLTH Gerçekleşen Değer + STH Gerçekleşen Değer
unrealized_plLTH Gerçekleşmemiş K/Z + STH Gerçekleşmemiş K/Z
realized_plLTH Gerçekleşen K/Z + STH Gerçekleşen K/Z
soprLTH SOPR + STH SOPR
block_heightBlok Yüksekliği

Örnekler

# Bitcoin example: BTC price, 1 year, line chart
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.blocklens.co/v1/chart/snapshot?metric=price" \
--output price.png

# Bitcoin example: two metrics with area style
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.blocklens.co/v1/chart/snapshot?metrics=lth_supply,sth_supply&style=area&days=730" \
--output supply.png

# Template with dark theme
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.blocklens.co/v1/chart/snapshot?template=mvrv_ratio&theme=dark" \
--output mvrv_dark.png

# Log scale with price overlay
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.blocklens.co/v1/chart/snapshot?metric=lth_supply&scale=log&overlay=price&days=1095" \
--output supply_with_price.png

# Get JSON metadata instead of image
curl -H "Authorization: Bearer YOUR_KEY" \
-H "Accept: application/json" \
"https://api.blocklens.co/v1/chart/snapshot?metric=price" | jq

# Get SVG instead of PNG
curl -H "Authorization: Bearer YOUR_KEY" \
-H "Accept: image/svg+xml" \
"https://api.blocklens.co/v1/chart/snapshot?metric=price" \
--output price.svg

Başarılı Yanıt

PNG (varsayılan):

HTTP/1.1 200 OK
Content-Type: image/png
Cache-Control: public, max-age=3600
X-Snapshot-Cache: HIT
X-Snapshot-Render-Ms: 0
X-Render-Id: 0a1b2c3d4e5f6789

<binary PNG data>

SVG (Accept: image/svg+xml ile):

HTTP/1.1 200 OK
Content-Type: image/svg+xml
Cache-Control: public, max-age=3600
X-Snapshot-Cache: MISS
X-Snapshot-Render-Ms: 412
X-Render-Id: 0a1b2c3d4e5f6789
Content-Disposition: attachment; filename="chart.svg"

<svg xmlns="http://www.w3.org/2000/svg" ...>...</svg>

X-Render-Id değeri, aynı görseli 1 saate kadar /v1/chart/renders/{render_id}.png veya /v1/chart/renders/{render_id}.svg adresinde yeniden almak için kullanılabilir.


POST /v1/chart/snapshot

JSON gövdesiyle tam grafik özelleştirmesi. Metrik başına stillendirme, özel eksenler, formüller, referans çizgileri, referans alanları ve daha fazlasını destekler. Yapay zeka aracıları (MCP aracılığıyla) ve ileri düzey kullanıcılar için tasarlanmıştır.

İstek Gövdesi

Tam olarak bir veri kaynağı sağlayın (metric, metrics veya template):

{
"metric": "price",

"days": 365,
"start_date": "2025-01-01",
"end_date": "2026-02-23",

"title": "Custom Chart Title",
"width": 1200,
"height": 600,
"theme": "light",
"format": "png",

"style": "line",
"scale": "linear",
"overlay": "price",

"y_axes": [
{"id": "axis-left", "side": "left", "scale": "linear", "format": "number"},
{"id": "axis-right", "side": "right", "scale": "log", "format": "currency"}
],

"formulas": [
{"expression": "sma(m1, 200)", "label": "200-day SMA", "color": "#9333ea", "style": "line"}
],

"reference_lines": [
{"y": 1.0, "stroke": "#9ca3af", "stroke_dasharray": "3 3", "label": "Break-even"}
],
"reference_areas": [
{"y1": 0, "y2": 0.85, "fill": "#16a34a", "fill_opacity": 0.08, "label": "Undervalued"}
]
}

Not: metric, metrics veya template parametrelerinden tam olarak biri sağlanmalıdır.

Metrics Alanı

metrics alanı karışık türleri destekler:

// String shorthand
["price", "lth_supply"]

// Full config objects
[{"id": "price", "axis": "right", "style": "line", "color": "#374151"}]

// Mixed
["price", {"id": "lth_supply", "axis": "left", "style": "area"}]

// With params for parameterized metrics
[
{"id": "funding_binance", "params": {"exchange": "binance"}},
{"id": "price"}
]

Bazı metrikler ek parametreler gerektirir (örn. exchange, ticker, id). Bu metrikleri kullanırken metrik tanımındaki params nesnesini ekleyin.

Metrik Başına Seçenekler

AlanTürAçıklama
idstringZorunlu. Kayıt defterindeki metrik kimliği.
paramsobjectParametreli metrikler için parametreler (örn. {"exchange": "binance"}). Gerekli parametreler için metrik tanımına bakın.
axisleft / rightY ekseni tarafı. Atlanırsa otomatik atanır.
y_axis_idstringKimliğe göre belirli bir Y eksenine bağla (örn. axis-diff). axis parametresini geçersiz kılar.
styleline / area / barGrafik stili. Atlanırsa kayıt defteri varsayılanı.
colorstringOnaltılık renk (örn. #2563eb). Atlanırsa otomatik atanır.
labelstringGörünen etiket. Atlanırsa metrik adını kullanır.
stroke_widthintegerÇizgi genişliği (0-5). Varsayılan: 2. Kenarlıksız çubuklar için 0 kullanın.
fill_opacityfloatDolgu opaklığı (0.0-1.0). Saydam çubuklar için 0.2 gibi düşük değerler kullanın.
stroke_dashstringKesik çizgi deseni (örn. 5 5).
stack_groupstringYığılmış grafikler için yığın grubu kimliği.
show_in_legendbooleanGrafik açıklamasında gösterilip gösterilmeyeceği. Varsayılan: true.
visiblebooleanGöster/gizle. Varsayılan: true.

Özel Y Eksenleri

y_axes alanı, metrikler ve formüller için kullanılabilen Y eksenlerini tanımlar. Her eksenin, metrikler veya formüller üzerinde y_axis_id aracılığıyla referans verilebilen benzersiz bir id değeri vardır. İkiden fazla eksen tanımlayabilirsiniz — örneğin, hesaplanan farklar için ayrı bir eksen:

"y_axes": [
{"id": "axis-left", "side": "left", "scale": "linear", "format": "number"},
{"id": "axis-right", "side": "right", "scale": "log", "format": "currency"},
{"id": "axis-diff", "side": "left", "scale": "linear", "format": "number"}
]
AlanTürAçıklama
idstringBenzersiz eksen tanımlayıcısı. Metrikler/formüller üzerinde y_axis_id ile referans verilir.
sideleft / rightEksenin grafiğin hangi tarafında görüneceği.
scalelinear / logEksen ölçeği. Varsayılan: linear.
formatnumber / currency / percentEksen etiketleri için sayı biçimi.
range[number, number][from%, to%] olarak dikey bölge. 0 = alt, 100 = üst. Varsayılan: tam yükseklik. Eksenleri dikey olarak yığmak için kullanın (örn. hacim alt %20'de, fiyat üst %80'de).
domain_minnumberSabit minimum etki alanı sınırı. Eksen asla bu değerin altına inmez.
domain_maxnumberSabit maksimum etki alanı sınırı. Eksen asla bu değerin üstüne çıkmaz.
no_padding"top" / "bottom" / "both"Kenarlardan otomatik %10 boşluğu kaldırır. Etki alanı sınırı kesin bir sınır olduğunda yararlıdır (örn. düşüş 0'da sınırlanmış).

y_axes atlanırsa, eksenler metrik axis değerlerine göre otomatik oluşturulur.

Örnek: Dikey Bölgelerle Fiyat + Hacim

Hacim çubuklarını alt %20'ye, fiyatı kalan alana yığın:

curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"metrics": [
{"id": "price", "style": "line", "color": "#374151", "y_axis_id": "axis-price"},
{"id": "volume", "style": "bar", "color": "#3b82f6", "fill_opacity": 0.3, "stroke_width": 0, "y_axis_id": "axis-vol"}
],
"y_axes": [
{"id": "axis-price", "side": "right", "scale": "log", "format": "currency", "range": [20, 100]},
{"id": "axis-vol", "side": "left", "format": "number", "range": [0, 20], "no_padding": "bottom"}
],
"days": 365,
"title": "BTC Price + Volume (Zoned)"
}' --output price_volume_zones.png

Bunun ürettiği sonuç:

  • Hacim çubukları grafiğin alt %20'sini (range: [0, 20]) alt kenarda boşluk olmadan doldurur
  • Fiyat üst %80'i (range: [20, 100]) log ölçeğinde kaplar
  • İki seri asla çakışmaz; temiz, yığılmış bir düzen oluşturur

Örnek: Etki Alanı Sınırlı Düşüş (Drawdown)

Düşüşü 0'da (üst kenar) sınırlandırın, böylece çizgi bölgesinin üstüne değer:

curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"metrics": ["price"],
"formulas": [
{"expression": "drawdown(price)", "label": "Drawdown from ATH", "style": "area", "color": "#dc2626", "fill_opacity": 0.15, "y_axis_id": "axis-dd"}
],
"y_axes": [
{"id": "axis-right", "side": "right", "scale": "log", "format": "currency"},
{"id": "axis-dd", "side": "left", "format": "percent", "domain_max": 0, "no_padding": "top"}
],
"days": 1825,
"title": "BTC Price + Drawdown from ATH"
}' --output drawdown.png

Bunun ürettiği sonuç:

  • Düşüş her zaman ≤ 0'dır, dolayısıyla domain_max: 0 üst kenarı sınırlar
  • no_padding: "top", 0'ın üstündeki otomatik %10 boşluğu kaldırır ve düşüş %0 olduğunda çizginin üste değmesini sağlar
  • Fiyat, log ölçeğiyle sağ eksendedir

Formüller

formulas alanı, metriklerinizden türetilen hesaplanmış seriler tanımlamanıza olanak tanır. Formüller metriklere id değeriyle (örn. lth_supply) veya konumsal indeksle (metrics dizisindeki sıraya göre m1, m2, vb.) referans verebilir.

"formulas": [
{
"expression": "lth_supply - shift(lth_supply, 30)",
"label": "LTH 30d Change",
"color": "#16a34a",
"style": "bar",
"y_axis_id": "axis-diff",
"fill_opacity": 0.2,
"stroke_width": 0
}
]

Desteklenen fonksiyonlar (toplam 30):

Hareketli Ortalamalar ve Yuvarlanan İstatistikler

FonksiyonSözdizimiAçıklama
smasma(series, period)Basit Hareketli Ortalama
emaema(series, period)Üstel Hareketli Ortalama
medianmedian(series, period)Yuvarlanan medyan
sumsum(series, period)Yuvarlanan toplam
stdstd(series, period)Yuvarlanan standart sapma

Kümülatif

FonksiyonSözdizimiAçıklama
cumsumcumsum(series)Genişleyen kümülatif toplam
cummeancummean(series)Genişleyen kümülatif ortalama
cummediancummedian(series)Genişleyen kümülatif medyan
cumstdcumstd(series)Genişleyen kümülatif standart sapma
cummaxcummax(series)Tüm zamanların kümülatif maksimumu
cummincummin(series)Tüm zamanların kümülatif minimumu

Değişimler

FonksiyonSözdizimiAçıklama
percent_changepercent_change(series, period)Yüzde değişim (ondalık: 0.20 = +%20)
diffdiff(series, period)Mutlak değer değişimi

Matematik

FonksiyonSözdizimiAçıklama
absabs(series)Mutlak değer
powpow(series, n)n. kuvvete yükselt
loglog(series)10 tabanında logaritma
roundround(series, digits)N ondalık basamağa yuvarla
maxmax(a, b, ...)Nokta bazında maksimum
minmin(a, b, ...)Nokta bazında minimum

Teknik Göstergeler

FonksiyonSözdizimiAçıklama
rsirsi(series, period)Göreceli Güç Endeksi (0-100)
corrcorr(s1, s2, period)Pearson korelasyonu (-1 ile 1 arası)
drawdowndrawdown(series)ATH'den düşüş (negatif ondalık)

Risk ve Getiri

FonksiyonSözdizimiAçıklama
mean_returnmean_return(series, period)Yıllıklandırılmış yuvarlanan ortalama getiri
realized_volrealized_vol(series, period)Yıllıklandırılmış gerçekleşen oynaklık
sharpe_ratio_arithmeticsharpe_ratio_arithmetic(series, period)Sharpe oranı (aritmetik)
sharpe_ratio_geometricsharpe_ratio_geometric(series, period)Sharpe oranı (geometrik)

Seri Manipülasyonu

FonksiyonSözdizimiAçıklama
shiftshift(series, period)Seriyi N dönem kaydır
ifif(a, "op", b, then, else)Koşullu (op: =, !=, >, >=, <, <=)

Operatörler

Aritmetik: +, -, *, / Gruplama: (, )

Referans Verme

  • Metriklere ada göre: lth_supply + sth_supply — metrik kimliklerini doğrudan kullanın
  • Metriklere konuma göre: m1 + m2 — konumsal referanslar (m1 = ilk metrik, m2 = ikinci, vb.)
  • Diğer formüller: f1 * 2 — önceki formüllere referans (f1 = ilk formül, vb.)
  • Formüller sırayla değerlendirilir, dolayısıyla f2 f1'e referans verebilir, ancak tersi olmaz.

Formül seçenekleri:

AlanTürAçıklama
expressionstringZorunlu. Metrik kimlikleri veya konumsal referanslar (m1, m2) kullanan formül ifadesi.
labelstringZorunlu. Grafik açıklamasında görünen etiket.
colorstringOnaltılık renk. Atlanırsa otomatik atanır.
styleline / area / barGrafik stili. Varsayılan: line.
y_axis_idstringKimliğe göre belirli bir Y eksenine bağla (örn. axis-diff). axis parametresini geçersiz kılar.
axisleft / rightY ekseni tarafı. Varsayılan: left. y_axis_id ayarlanmışsa yoksayılır.
fill_opacityfloatDolgu opaklığı (0.0-1.0). Saydam çubuklar için 0.2 gibi düşük değerler kullanın.
stroke_widthintegerÇizgi genişliği (0-5). Kenarlıksız çubuklar için 0 kullanın.
stroke_dashstringKesik çizgi deseni (örn. 6 3).
stack_groupstringBirden fazla formül serisini yığmak için yığın grubu kimliği.

Referans Çizgileri ve Alanları

Referans çizgileri, belirli değerleri vurgulamak için yatay kılavuz çizgileri ekler (örn. 1.0'da başabaş, aşırı alım eşiği). Referans alanları, değer aralıklarını vurgulamak için gölgeli bölgeler ekler (örn. değerinin altında bölge, Bollinger benzeri bantlar). Her ikisi de formulas alanıyla aynı formül motorunu kullanarak statik değerleri ve dinamik formülleri destekler.

Referans Çizgisi Seçenekleri

AlanTürAçıklama
ynumberStatik Y değeri.
y_formulastringDinamik Y için formül ifadesi (örn. "sma(m1, 200)"). formulas ile aynı motoru kullanır.
y_axis_idstringY ekseni kimliği (varsayılan olarak ilk sol eksen).
strokestringÇizgi rengi onaltılık (varsayılan: #9ca3af).
stroke_dasharraystringKesik çizgi deseni, örn. kesikli için "3 3".
labelstringEtiket metni.

y (statik) veya y_formula (dinamik) parametrelerinden birini sağlayın, ikisini birden değil. Grafik başına en fazla 10 referans çizgisi.

Referans Alanı Seçenekleri

AlanTürAçıklama
y1numberStatik alt Y sınırı.
y2numberStatik üst Y sınırı.
y1_formulastringDinamik alt sınır için formül.
y2_formulastringDinamik üst sınır için formül.
y_axis_idstringY ekseni kimliği (varsayılan olarak ilk sol eksen).
fillstringDolgu rengi onaltılık (varsayılan: #3b82f6).
fill_opacitynumberDolgu opaklığı 0–1 (varsayılan: 0.1).
labelstringEtiket metni.

Statik (y1/y2) veya formül tabanlı (y1_formula/y2_formula) sınırlar sağlayın — bunları karıştırabilirsiniz (örn. statik y1 ile dinamik y2_formula). Grafik başına en fazla 10 referans alanı.

Örnek: Değer Bölgeleriyle MVRV

Yeşil değerinin altında bölge (0–0.85), kırmızı değerinin üstünde bölge (8–100) ve 1.0'da kesikli bir başabaş çizgisi ekleyin:

curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"metric": "mvrv",
"days": 1825,
"title": "MVRV Ratio — Value Zones",
"reference_lines": [
{"y": 1.0, "stroke": "#9ca3af", "stroke_dasharray": "3 3", "label": "Break-even"}
],
"reference_areas": [
{"y1": 0, "y2": 0.85, "fill": "#16a34a", "fill_opacity": 0.08, "label": "Undervalued"},
{"y1": 8, "y2": 100, "fill": "#dc2626", "fill_opacity": 0.08, "label": "Overvalued"}
]
}' --output mvrv_zones.png

Örnek: Formül Tabanlı Bant

İlk formülün etrafında Bollinger benzeri bir bant oluşturun (±%10 zarf):

curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"metrics": ["price"],
"days": 365,
"formulas": [
{"expression": "sma(m1, 50)", "label": "50-day SMA", "color": "#2563eb", "style": "line"}
],
"reference_areas": [
{"y1_formula": "f1 * 0.9", "y2_formula": "f1 * 1.1", "fill": "#2563eb", "fill_opacity": 0.06, "label": "±10% Band"}
],
"reference_lines": [
{"y_formula": "sma(m1, 200)", "stroke": "#9333ea", "stroke_dasharray": "6 3", "label": "200-day SMA"}
]
}' --output price_bands.png

Çıktı Biçimi

format alanı çıktıyı denetler:

BiçimContent-TypeAçıklama
png (varsayılan)image/pngRasterleştirilmiş grafik görseli
svgimage/svg+xmlVektör grafikleri (ölçeklenebilir, gömülebilir)
jsonapplication/jsonGrafik meta verisi (işleme yok)

Alternatif olarak, Accept başlığını kullanın:

  • Accept: image/png - PNG (varsayılan)
  • Accept: image/svg+xml - SVG
  • Accept: application/json - JSON meta verisi

JSON Meta Verisi Yanıtı

format=json veya Accept: application/json olduğunda:

{
"success": true,
"title": "BTC Price",
"metrics": [{"id": "price", "label": "BTC Price"}],
"days": 365,
"start_date": null,
"end_date": null,
"theme": "light",
"width": 1200,
"height": 600,
"formulas": [],
"data_points": 365,
"cached": false,
"render_time_ms": 0
}

Örnekler

# POST with single metric
curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"metric": "price", "days": 365}' \
--output price.png

# Multi-metric with custom styling
curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"metrics": [
{"id": "price", "axis": "right", "style": "line", "color": "#374151"},
{"id": "lth_supply", "axis": "left", "style": "area", "color": "#2563eb"}
],
"days": 730,
"title": "BTC Price vs LTH Supply",
"theme": "dark"
}' \
--output chart.png

# SVG output
curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"template": "mvrv_ratio", "format": "svg"}' \
--output mvrv.svg

# JSON metadata
curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"metric": "price", "format": "json"}' | jq

Isı Haritası İşleme

Anlık Görüntü API'si, Maliyet Bazı Dağılımı gibi dağılım tabanlı metrikler için ısı haritası grafikleri işleyebilir. Isı haritaları, standart metrik grafiklerinden ayrı bir parametre kümesi kullanır.

Isı Haritası Parametreleri

ParametreTürVarsayılanAçıklama
heatmap_idstring-Isı haritası tanımlayıcısı (örn. cost-basis-distribution)
heatmap_periodstring1yZaman aralığı: 3m, 6m, 1y, 2y, 3y, 5y, all
heatmap_color_scalestringviridisRenk ölçeği: viridis, plasma, inferno, magma, cividis
heatmap_y_scalestringlinearY ekseni ölçeği: linear veya log
themestringlightRenk teması: light veya dark
titlestringautoGrafik başlığı
widthinteger1200Piksel cinsinden görsel genişliği
heightinteger600Piksel cinsinden görsel yüksekliği

Örnek

curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"heatmap_id": "cost-basis-distribution",
"heatmap_period": "1y",
"heatmap_color_scale": "viridis",
"heatmap_y_scale": "log",
"theme": "dark",
"title": "Cost Basis Distribution"
}' --output cbd_heatmap.png

Not: Isı haritası parametreleri (heatmap_id, vb.) standart metrik parametreleriyle (metric, metrics, template) birlikte kullanılamaz. Isı haritası metrikleri Enterprise katmanı gerektirir.

Renk ölçeği açıklaması, seçilen renk paletine eşlenen değer aralığını gösterecek şekilde işlenen görsele dahil edilir.


Döngü Performansı Katman Grafikleri

Döngü performansı grafikleri, birden fazla Bitcoin döngüsünü aynı X ekseni üzerine bindirir, böylece bunları eş koşullarda karşılaştırabilirsiniz. Takvim tarihlerine karşı çizilmek yerine, her döngünün fiyatı kendi çapa olayına (döngü dibi, ATH veya halving) endekslenir ve o çapadan bu yana geçen günlere karşı çizilir.

Bir POST /v1/chart/snapshot isteğinde x_axis: "day_offset" ayarlayarak ve metrics dizisinde döngü metriklerini sağlayarak katman modunu açın. İşleyici, her veri noktasında date yerine day_offset alanını kullanır, böylece tüm döngüler X ekseninde 0. Gün'de başlar.

Tik etiketleri, seçilen ailenin en son döngüsündeki takvim tarihlerini gösterir. Örneğin, bir ATH katmanı (cycle_ath_1cycle_ath_5) 2025-10-06 tarihine çapalanır ve tikler Oct '25, Jan '26, Apr '26 vb. olarak okunur — Day 0, Day 90, Day 180 değil. Aynı grafikteki diğer döngüler aynı X ekseni konumlarına hizalanır, dolayısıyla cycle_ath_3 üzerinde Apr '26 tikindeki bir değer, "BTC'nin 2017 döngüsünün 182. gününde ne yaptığı" anlamına gelir. Arka uç çapayı belirleyemezse gün numaralandırması yalnızca yedek olarak yeniden görünür.

Çapa Türleri

Her çapa olayı için bir tane olmak üzere üç döngü metriği ailesi mevcuttur:

ÇapaMetrik kimliği önekiAçıklamaUç nokta ipucu
Döngü dibi → sonraki dipcycle_low_*Döngü dibine endekslenmiş fiyat — her seri dip tarihinde 1.0'da başlar ve bir sonraki döngünün dibine kadar devam eder.endpoint: "cycle-performance?type=low"
ATH → ATHcycle_ath_*Döngünün tüm zamanların en yükseğine endekslenmiş fiyat — her seri ATH tarihinde 1.0'da başlar ve bir sonraki ATH'ye kadar devam eder.endpoint: "cycle-performance?type=ath"
Halving → halvingcycle_halving_*Halving bloğuna endekslenmiş fiyat — her seri halving tarihinde 1.0'da başlar ve bir sonraki halving'e kadar devam eder.endpoint: "cycle-performance?type=halving"

Bir çapa ailesi içinde her döngü aynı veri şeklindedir — 1.0'da başlayan ve bir sonraki çapa olayına kadar (veya mevcut döngü için bugüne kadar) price(t) / price(anchor) değerini izleyen bir endeks. Katman karşılaştırmasını anlamlı kılan da budur: cycle_ath_3 üzerinde 200. günde 5.0 değeri, "BTC, o ATH'den 200 gün sonra 2017 ATH'sinin 5 katıydı" anlamına gelir.

Mevcut Tüm Döngü Metrikleri

Metrik KimliğiÇapa tarihiÇapa → bitiş tarihi
cycle_low_12011-11-182011-11-18 → 2015-01-14
cycle_low_22015-01-142015-01-14 → 2018-12-15
cycle_low_32018-12-152018-12-15 → 2022-11-21
cycle_low_42022-11-212022-11-21 → bugün (mevcut döngü)
cycle_ath_12011-06-112011-06-11 → 2013-11-30
cycle_ath_22013-11-302013-11-30 → 2017-12-17
cycle_ath_32017-12-172017-12-17 → 2021-11-10
cycle_ath_42021-11-102021-11-10 → 2025-10-06
cycle_ath_52025-10-062025-10-06 → bugün (mevcut döngü)
cycle_halving_12012-11-282012-11-28 → 2016-07-09
cycle_halving_22016-07-092016-07-09 → 2020-05-11
cycle_halving_32020-05-112020-05-11 → 2024-04-20
cycle_halving_42024-04-202024-04-20 → bugün (mevcut döngü)
Doğrulama kuralları
  • Tüm metrics aynı çapa ailesinden gelmelidir. cycle_ath_* ile cycle_low_* (veya daily_cycle_performance dışında herhangi bir şey) karıştırmak 400 invalid_params döndürür.
  • x_axis: "day_offset" bayrağı yalnızca döngü metrikleri için geçerlidir — başka herhangi bir metrikle eşleştirmek 400 invalid_params döndürür.
  • Standart "grafik başına en fazla 6 metrik" limiti geçerlidir — katman başına en fazla 6 döngü seçin.

Döngü Performansı Parametreleri

Tüm standart grafik parametrelerine (days, width, height, theme, scale, format, title, y_axes, reference_lines, reference_areas, formulas vb.) ek olarak, döngü katmanı modu şu alanları kullanır:

AlanTürVarsayılanAçıklama
x_axis"date" / "day_offset""date"Döngü katmanını etkinleştirmek için "day_offset" olarak ayarlayın. Aksi takdirde X ekseni takvim tarihidir.
metricsarrayzorunluAynı çapa ailesinden 1–6 döngü metriği kimliği. Dizeler veya nesneler ({id, color, style, label, stroke_width, fill_opacity, show_in_legend, y_axis_id}).
daysinteger365İşlenen maksimum gün ofsetini sınırlar (X ekseni aralığı, takvim günleri değil). Döngü başına ~4 yıl görmek için 1500 olarak ayarlayın.
scale"linear" / "log""linear"Neredeyse her zaman log ölçeğini tercih edersiniz — erken döngü çarpanları 100×–500×'e ulaşabilir ve doğrusal ölçekte okunamaz hâle gelir.
theme"light" / "dark""light"Bu grafikler için karanlık tema pano varsayılanıdır.

Referans çizgileri (reference_lines) katman grafiklerinde özellikle yararlıdır — örneğin y: 1.0 değerindeki yatay bir çizgi çapa seviyesini, y: 2.0 "çapanın 2 katı" değerini işaretler, vb.

Örnek: ATH Çapalı Katman (Döngü Başına Özel Renkler)

Bu tarif, panonun "ATH'den Bu Yana Fiyat Performansı" grafiğiyle eşleşir — beşi döngü, her biri log ekseninde belirgin bir renkte.

curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"metrics": [
{"id": "cycle_ath_1", "color": "#8b5cf6", "label": "2011 ATH cycle"},
{"id": "cycle_ath_2", "color": "#3b82f6", "label": "2013 ATH cycle"},
{"id": "cycle_ath_3", "color": "#22c55e", "label": "2017 ATH cycle"},
{"id": "cycle_ath_4", "color": "#f59e0b", "label": "2021 ATH cycle"},
{"id": "cycle_ath_5", "color": "#ef4444", "label": "2025 ATH cycle (current)"}
],
"x_axis": "day_offset",
"scale": "log",
"y_axes": [
{"id": "left", "side": "left", "scale": "log", "format": "number"}
],
"reference_lines": [
{"y": 1.0, "stroke": "#9ca3af", "stroke_dasharray": "3 3", "label": "ATH = 1.0"}
],
"days": 1500,
"theme": "dark",
"title": "Price Performance Since ATH"
}' --output cycle_ath.png

Örnek: Döngü Dibi Katmanı (Kısa Biçim)

Döngü başına stillendirme olmadan hızlı bir karşılaştırma için, metrik kimliklerini düz dizeler olarak geçirin — renkler otomatik olarak kayıt defteri paletinden gelir.

curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"metrics": ["cycle_low_1", "cycle_low_2", "cycle_low_3", "cycle_low_4"],
"x_axis": "day_offset",
"scale": "log",
"days": 1500,
"title": "Price Since Cycle Low"
}' --output cycle_low.png

Örnek: Halving Çapalı Katman

Aynı şekil, her halving olayına çapalanmış dört döngü.

curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"metrics": [
"cycle_halving_1", "cycle_halving_2", "cycle_halving_3", "cycle_halving_4"
],
"x_axis": "day_offset",
"scale": "log",
"days": 1500,
"theme": "dark",
"title": "Price Since Halving"
}' --output cycle_halving.png

MCP Aracı Karşılığı

MCP sunucusuna bağlı bir yapay zeka aracısından, aynı grafik tek bir araç çağrısıdır:

render_chart({
metrics: [
{ id: "cycle_ath_1", color: "#8b5cf6" },
{ id: "cycle_ath_2", color: "#3b82f6" },
{ id: "cycle_ath_3", color: "#22c55e" },
{ id: "cycle_ath_4", color: "#f59e0b" },
{ id: "cycle_ath_5", color: "#ef4444" }
],
x_axis: "day_offset",
scale: "log",
days: 1500,
theme: "dark",
title: "Price Performance Since ATH"
})

MCP sunucusu, HTTP API ile aynı x_axis enum'unu, aynı metrik kimliklerini ve aynı doğrulama kurallarını kabul eder.


Metrik Başına Açıklama Denetimi

Bir metriğin grafik açıklamasında görünüp görünmeyeceğini denetlemek için ayrı ayrı metrik yapılandırma nesnelerinde show_in_legend kullanın. Bazılarının bağlam/arka plan çizgileri olduğu birçok seriyi birleştirirken yararlıdır.

{
"metrics": [
{"id": "price", "show_in_legend": true},
{"id": "sma_200", "show_in_legend": false}
]
}
AlanTürVarsayılanAçıklama
show_in_legendbooleantrueMetriğin grafik açıklamasında görünüp görünmeyeceği

Akıllı Varsayılanlar

Anlık Görüntü API'si, minimum yapılandırmayla harika görünen grafikler elde edebilmeniz için akıllı varsayılanlar kullanır:

ParametreVarsayılanın Nasıl Belirlendiği
Grafik stiliMetrik kayıt defterinden (chart_types[0])
RenkMetrik kayıt defterinden, ardından palet döndürmesi
Y ekseni tarafıİlk metrik solda; aynı biçimdeki metrikler ekseni paylaşır; farklı biçim sağda
Y ekseni ölçeğilinear (scale=log ile geçersiz kılın)
Zaman aralığıKategori tabanlı: fiyat/değerleme/kâr için 365 gün, arz için 730, blockchain için 180
BaşlıkTek metrik: metrik adı. Birden fazla: "Ad1 vs Ad2"
Görsel boyutu1200 x 600 piksel
Temalight

Hata Yanıtları

Tüm hatalar JSON döndürür:

// 400 Bad Request
{"success": false, "error": "invalid_params", "message": "Exactly one of 'metric', 'metrics', or 'template' must be provided"}

// 401 Unauthorized
{"success": false, "error": "unauthorized", "message": "API key required"}

// 403 Forbidden
{"success": false, "error": "insufficient_tier", "message": "Metric 'lth_sopr' requires Pro tier", "upgrade_url": "https://blocklens.co/pricing"}

// 429 Rate Limited
{"success": false, "error": "rate_limited", "message": "Snapshot rate limit exceeded. Max 60 per hour for pro tier.", "retry_after": 120}

// 504 Timeout
{"success": false, "error": "render_timeout", "message": "Chart rendering timed out after 20.0s. Try a shorter date range."}

MCP Aracı: render_chart

Blocklens MCP sunucusu, yapay zeka aracılarının sohbetlerde doğrudan grafik görselleri oluşturmasına olanak tanıyan bir render_chart aracı içerir. Araç, Anlık Görüntü API'sini çağırır ve görseli satır içi olarak PNG (raster) veya SVG (vektör) olarak döndürür.

Parametreler

ParametreTürVarsayılanAçıklama
metricstring-Tek metrik kimliği
metricsarray-Birden fazla metrik (dizeler veya nesneler)
templatestring-Şablon kimliği
daysinteger365Geçmiş gün sayısı
start_datestring-Başlangıç tarihi (YYYY-MM-DD)
end_datestring-Bitiş tarihi (YYYY-MM-DD)
overlayprice-Fiyat katmanı ekle (şu anda BTC)
themelight / darklightRenk teması
widthinteger1200Görsel genişliği
heightinteger600Görsel yüksekliği
titlestringautoGrafik başlığı
styleline / area / barautoGrafik stili
scalelinear / loglinearY ekseni ölçeği
formatpng / svg / jsonpngÇıktı biçimi: png (raster görsel), svg (vektör görsel, kalite kaybı olmadan ölçeklenir) veya json (yalnızca meta veri — işleme yok)
y_axesarray-Bölgeli özel Y eksenleri (bkz. Özel Y Eksenleri)
x_axisdate / day_offsetdateX ekseni modu. Döngü performansı katmanları için day_offset kullanın — tüm metrics aynı döngü ailesinden olmalıdır.
heatmap_idcost-basis-distribution-Çizgi grafiği yerine ısı haritası işle (bkz. Isı Haritası İşleme). metric / metrics / template ile birlikte kullanılamaz.
heatmap_period3m / 6m / 1y / 2y / 3y / 5y / all1yIsı haritası bölmeleme penceresi.
heatmap_color_scaleviridis / plasma / inferno / magma / cividisviridisIsı haritası renk paleti.
heatmap_y_scalelinear / loglinearIsı haritası fiyat bölmesi Y ekseni ölçeği.
paramsobject-Parametreli metrikler için çağrı başına parametreler (örn. { "exchange": "binance" }, { "ticker": "IBIT" }, { "entity": "tesla" }).
reference_linesarray-Yatay referans çizgileri (bkz. Referans Çizgileri ve Alanları)
reference_areasarray-Gölgeli referans bölgeleri (bkz. Referans Çizgileri ve Alanları)

Kullanım Örnekleri

User: "Show me the MVRV ratio for the last 2 years"
Agent calls: render_chart({ template: "mvrv_ratio", days: 730 })
-> Returns PNG image inline

User: "Chart BTC price vs LTH supply"
Agent calls: render_chart({
metrics: [
{ id: "price", axis: "right" },
{ id: "lth_supply", axis: "left", style: "area" }
],
days: 365
})
-> Returns PNG image inline

User: "Is there capitulation? Show SOPR"
Agent calls: render_chart({ template: "sopr", days: 180, overlay: "price" })
-> Returns PNG image inline

User: "Render the MVRV chart as SVG so I can embed it in a slide deck"
Agent calls: render_chart({ template: "mvrv_ratio", format: "svg" })
-> Returns the chart inline as image/svg+xml and a /chart/renders/{id}.svg URL

MCP Yapılandırması

Grafik işlemeyi etkinleştirmek için Claude Desktop veya Cursor yapılandırmanıza ekleyin:

{
"mcpServers": {
"blocklens": {
"command": "npx",
"args": ["-y", "blocklens-mcp-server"],
"env": {
"BLOCKLENS_API_KEY": "your_api_key_here"
}
}
}
}

Tam kurulum talimatları için bkz. MCP Sunucusu.


İleri Düzey Örnek: LTH Arzı Grafiği

Bu örnek, Blocklens panosundan tam Uzun Vadeli Sahip (LTH) Arzı grafiğini yeniden oluşturur — iki metrik, iki hesaplanmış formül serisi ve üç Y ekseni:

curl -X POST "https://api.blocklens.co/v1/chart/snapshot" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"metrics": [
{"id": "price", "label": "BTC Price", "style": "line", "color": "#6b7280", "axis": "right", "fill_opacity": 0, "stroke_width": 1},
{"id": "lth_supply", "label": "LTH Supply", "style": "line", "color": "#2563eb", "axis": "left", "stroke_width": 2}
],
"y_axes": [
{"id": "axis-left", "side": "left", "scale": "linear"},
{"id": "axis-right", "side": "right", "scale": "log"},
{"id": "axis-diff", "side": "left", "scale": "linear"}
],
"formulas": [
{"expression": "max(lth_supply - shift(lth_supply, 30), 0)", "label": "LTH 30d+ diff", "color": "#16a34a", "style": "bar", "y_axis_id": "axis-diff", "fill_opacity": 0.2, "stroke_width": 0},
{"expression": "min(0, lth_supply - shift(lth_supply, 30))", "label": "LTH 30d- diff", "color": "#dc2626", "style": "bar", "y_axis_id": "axis-diff", "fill_opacity": 0.2, "stroke_width": 0}
],
"days": 730,
"title": "Long-Term Holder Supply"
}' --output lth_supply.png

Bunun ürettiği sonuç:

  • BTC Fiyatı — sağ eksende gri çizgi (log ölçeği)
  • LTH Arzı — sol eksende mavi çizgi (doğrusal)
  • 30 günlük pozitif birikim — ayrı bir axis-diff ekseninde yarı saydam yeşil çubuklar
  • 30 günlük dağıtım — aynı axis-diff ekseninde yarı saydam kırmızı çubuklar

Kullanılan başlıca teknikler:

  • shift(lth_supply, 30) 30 günlük geriye dönük değeri hesaplar
  • max(..., 0) ve min(0, ...) pozitif ve negatif değişimleri ayrı serilere böler
  • y_axis_id: "axis-diff" her iki formül çubuğunu da ana metrik eksenlerinden bağımsız özel bir eksene bağlar
  • fill_opacity: 0.2 + stroke_width: 0 ince, kenarlıksız saydam çubuklar oluşturur

Grafik Şablonları

Tam grafik yapılandırmaları (metrikler, formüller, eksenler ve stillendirme dahil) veritabanı destekli şablonlar olarak şu adres üzerinden kullanılabilir:

GET /api/lab/templates

Bu şablonlar, kendi POST istek gövdelerinizi oluşturmak için referans işlevi görebilir. Her şablon, Blocklens panosunda belirli bir grafik üreten tam yapılandırmayı içerir.


Filigran

Tüm işlenen grafik görselleri bir blocklens.co filigranı ve telif hakkı bildirimi içerir. Bu hem PNG hem de SVG çıktı biçimleri için geçerlidir.


Önbelleğe Alma

İşlenen anlık görüntüler Redis'te 1 saat süreyle önbelleğe alınır. Önbellek davranışı:

  • Aynı grafik yapılandırmaları anında önbelleğe alınmış sonuçlar döndürür
  • Önbellek anahtarı, tam grafik yapılandırmasından (metrikler, eksenler, zaman aralığı, tema, boyut) artı çıktı biçiminden türetilir — aynı grafiğin PNG ve SVG varyantları bağımsız olarak önbelleğe alınır
  • X-Snapshot-Cache yanıt başlığı HIT veya MISS belirtir
  • X-Snapshot-Render-Ms başlığı işleme süresini gösterir (önbellek isabetleri için 0)
  • İşlenen dosyalar ayrıca /v1/chart/renders/{render_id}.png ve /v1/chart/renders/{render_id}.svg altında diskte 1 saat süreyle kalıcı tutulur, böylece X-Render-Id başlığında döndürülen grafik URL'leri erişilebilir kalır
  • Popüler grafikler her günlük veri güncellemesinden sonra (05:00 UTC) önceden ısıtılır