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öntem | Yol | Açıklama |
|---|---|---|
GET | /v1/chart/snapshot | Sorgu parametreleriyle basit grafikler |
POST | /v1/chart/snapshot | JSON 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 |
|---|---|
| PNG | https://api.blocklens.co/v1/chart/renders/{X-Render-Id}.png |
| SVG | https://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
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
metric | string | - | Tek metrik kimliği (örn. price, lth_supply). metrics ve template ile birlikte kullanılamaz. |
metrics | string | - | Virgülle ayrılmış metrik kimlikleri, en fazla 6 (örn. lth_supply,sth_supply). metric ve template ile birlikte kullanılamaz. |
template | string | - | Önceden tanımlanmış şablon kimliği. metric ve metrics ile birlikte kullanılamaz. |
days | integer | 365 | Geçmiş veri gün sayısı (7-10000). |
start_date | string | - | Başlangıç tarihi (YYYY-MM-DD). days parametresini geçersiz kılar. |
end_date | string | - | Bitiş tarihi (YYYY-MM-DD). Varsayılan olarak bugündür. |
style | string | auto | Grafik stili: line, area, bar. Atlanırsa metrik kayıt defterinden otomatik algılanır. |
scale | string | linear | Y ekseni ölçeği: linear veya log. |
overlay | string | - | Sağ eksene ince kesik çizgili bir fiyat katmanı ekler (price kullanın). Şu anda BTC fiyatı. |
width | integer | 1200 | Piksel cinsinden görsel genişliği (600-2400). |
height | integer | 600 | Piksel cinsinden görsel yüksekliği (300-1200). |
title | string | auto | Grafik başlığı. Atlanırsa metrik adlarından otomatik oluşturulur. |
theme | string | light | Renk teması: light veya dark. |
metric, metrics veya template parametrelerinden tam olarak biri sağlanmalıdır.
Mevcut Şablonlar
| Şablon | Metrikler |
|---|---|
price | BTC Fiyatı |
price_volume | Fiyat + Hacim |
market_cap | Piyasa Değeri |
holder_supply | LTH Arzı + STH Arzı |
mvrv_ratio | LTH MVRV + STH MVRV |
realized_price | LTH Gerçekleşen Fiyat + STH Gerçekleşen Fiyat |
realized_cap | LTH Gerçekleşen Değer + STH Gerçekleşen Değer |
unrealized_pl | LTH Gerçekleşmemiş K/Z + STH Gerçekleşmemiş K/Z |
realized_pl | LTH Gerçekleşen K/Z + STH Gerçekleşen K/Z |
sopr | LTH SOPR + STH SOPR |
block_height | Blok 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
| Alan | Tür | Açıklama |
|---|---|---|
id | string | Zorunlu. Kayıt defterindeki metrik kimliği. |
params | object | Parametreli metrikler için parametreler (örn. {"exchange": "binance"}). Gerekli parametreler için metrik tanımına bakın. |
axis | left / right | Y ekseni tarafı. Atlanırsa otomatik atanır. |
y_axis_id | string | Kimliğe göre belirli bir Y eksenine bağla (örn. axis-diff). axis parametresini geçersiz kılar. |
style | line / area / bar | Grafik stili. Atlanırsa kayıt defteri varsayılanı. |
color | string | Onaltılık renk (örn. #2563eb). Atlanırsa otomatik atanır. |
label | string | Görünen etiket. Atlanırsa metrik adını kullanır. |
stroke_width | integer | Çizgi genişliği (0-5). Varsayılan: 2. Kenarlıksız çubuklar için 0 kullanın. |
fill_opacity | float | Dolgu opaklığı (0.0-1.0). Saydam çubuklar için 0.2 gibi düşük değerler kullanın. |
stroke_dash | string | Kesik çizgi deseni (örn. 5 5). |
stack_group | string | Yığılmış grafikler için yığın grubu kimliği. |
show_in_legend | boolean | Grafik açıklamasında gösterilip gösterilmeyeceği. Varsayılan: true. |
visible | boolean | Gö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"}
]
| Alan | Tür | Açıklama |
|---|---|---|
id | string | Benzersiz eksen tanımlayıcısı. Metrikler/formüller üzerinde y_axis_id ile referans verilir. |
side | left / right | Eksenin grafiğin hangi tarafında görüneceği. |
scale | linear / log | Eksen ölçeği. Varsayılan: linear. |
format | number / currency / percent | Eksen 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_min | number | Sabit minimum etki alanı sınırı. Eksen asla bu değerin altına inmez. |
domain_max | number | Sabit 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
| Fonksiyon | Sözdizimi | Açıklama |
|---|---|---|
sma | sma(series, period) | Basit Hareketli Ortalama |
ema | ema(series, period) | Üstel Hareketli Ortalama |
median | median(series, period) | Yuvarlanan medyan |
sum | sum(series, period) | Yuvarlanan toplam |
std | std(series, period) | Yuvarlanan standart sapma |
Kümülatif
| Fonksiyon | Sözdizimi | Açıklama |
|---|---|---|
cumsum | cumsum(series) | Genişleyen kümülatif toplam |
cummean | cummean(series) | Genişleyen kümülatif ortalama |
cummedian | cummedian(series) | Genişleyen kümülatif medyan |
cumstd | cumstd(series) | Genişleyen kümülatif standart sapma |
cummax | cummax(series) | Tüm zamanların kümülatif maksimumu |
cummin | cummin(series) | Tüm zamanların kümülatif minimumu |
Değişimler
| Fonksiyon | Sözdizimi | Açıklama |
|---|---|---|
percent_change | percent_change(series, period) | Yüzde değişim (ondalık: 0.20 = +%20) |
diff | diff(series, period) | Mutlak değer değişimi |
Matematik
| Fonksiyon | Sözdizimi | Açıklama |
|---|---|---|
abs | abs(series) | Mutlak değer |
pow | pow(series, n) | n. kuvvete yükselt |
log | log(series) | 10 tabanında logaritma |
round | round(series, digits) | N ondalık basamağa yuvarla |
max | max(a, b, ...) | Nokta bazında maksimum |
min | min(a, b, ...) | Nokta bazında minimum |
Teknik Göstergeler
| Fonksiyon | Sözdizimi | Açıklama |
|---|---|---|
rsi | rsi(series, period) | Göreceli Güç Endeksi (0-100) |
corr | corr(s1, s2, period) | Pearson korelasyonu (-1 ile 1 arası) |
drawdown | drawdown(series) | ATH'den düşüş (negatif ondalık) |
Risk ve Getiri
| Fonksiyon | Sözdizimi | Açıklama |
|---|---|---|
mean_return | mean_return(series, period) | Yıllıklandırılmış yuvarlanan ortalama getiri |
realized_vol | realized_vol(series, period) | Yıllıklandırılmış gerçekleşen oynaklık |
sharpe_ratio_arithmetic | sharpe_ratio_arithmetic(series, period) | Sharpe oranı (aritmetik) |
sharpe_ratio_geometric | sharpe_ratio_geometric(series, period) | Sharpe oranı (geometrik) |
Seri Manipülasyonu
| Fonksiyon | Sözdizimi | Açıklama |
|---|---|---|
shift | shift(series, period) | Seriyi N dönem kaydır |
if | if(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:
| Alan | Tür | Açıklama |
|---|---|---|
expression | string | Zorunlu. Metrik kimlikleri veya konumsal referanslar (m1, m2) kullanan formül ifadesi. |
label | string | Zorunlu. Grafik açıklamasında görünen etiket. |
color | string | Onaltılık renk. Atlanırsa otomatik atanır. |
style | line / area / bar | Grafik stili. Varsayılan: line. |
y_axis_id | string | Kimliğe göre belirli bir Y eksenine bağla (örn. axis-diff). axis parametresini geçersiz kılar. |
axis | left / right | Y ekseni tarafı. Varsayılan: left. y_axis_id ayarlanmışsa yoksayılır. |
fill_opacity | float | Dolgu opaklığı (0.0-1.0). Saydam çubuklar için 0.2 gibi düşük değerler kullanın. |
stroke_width | integer | Çizgi genişliği (0-5). Kenarlıksız çubuklar için 0 kullanın. |
stroke_dash | string | Kesik çizgi deseni (örn. 6 3). |
stack_group | string | Birden 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
| Alan | Tür | Açıklama |
|---|---|---|
y | number | Statik Y değeri. |
y_formula | string | Dinamik Y için formül ifadesi (örn. "sma(m1, 200)"). formulas ile aynı motoru kullanır. |
y_axis_id | string | Y ekseni kimliği (varsayılan olarak ilk sol eksen). |
stroke | string | Çizgi rengi onaltılık (varsayılan: #9ca3af). |
stroke_dasharray | string | Kesik çizgi deseni, örn. kesikli için "3 3". |
label | string | Etiket 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
| Alan | Tür | Açıklama |
|---|---|---|
y1 | number | Statik alt Y sınırı. |
y2 | number | Statik üst Y sınırı. |
y1_formula | string | Dinamik alt sınır için formül. |
y2_formula | string | Dinamik üst sınır için formül. |
y_axis_id | string | Y ekseni kimliği (varsayılan olarak ilk sol eksen). |
fill | string | Dolgu rengi onaltılık (varsayılan: #3b82f6). |
fill_opacity | number | Dolgu opaklığı 0–1 (varsayılan: 0.1). |
label | string | Etiket 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çim | Content-Type | Açıklama |
|---|---|---|
png (varsayılan) | image/png | Rasterleştirilmiş grafik görseli |
svg | image/svg+xml | Vektör grafikleri (ölçeklenebilir, gömülebilir) |
json | application/json | Grafik meta verisi (işleme yok) |
Alternatif olarak, Accept başlığını kullanın:
Accept: image/png- PNG (varsayılan)Accept: image/svg+xml- SVGAccept: 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
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
heatmap_id | string | - | Isı haritası tanımlayıcısı (örn. cost-basis-distribution) |
heatmap_period | string | 1y | Zaman aralığı: 3m, 6m, 1y, 2y, 3y, 5y, all |
heatmap_color_scale | string | viridis | Renk ölçeği: viridis, plasma, inferno, magma, cividis |
heatmap_y_scale | string | linear | Y ekseni ölçeği: linear veya log |
theme | string | light | Renk teması: light veya dark |
title | string | auto | Grafik başlığı |
width | integer | 1200 | Piksel cinsinden görsel genişliği |
height | integer | 600 | Piksel 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_1…cycle_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:
| Çapa | Metrik kimliği öneki | Açıklama | Uç nokta ipucu |
|---|---|---|---|
| Döngü dibi → sonraki dip | cycle_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 → ATH | cycle_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 → halving | cycle_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_1 | 2011-11-18 | 2011-11-18 → 2015-01-14 |
cycle_low_2 | 2015-01-14 | 2015-01-14 → 2018-12-15 |
cycle_low_3 | 2018-12-15 | 2018-12-15 → 2022-11-21 |
cycle_low_4 | 2022-11-21 | 2022-11-21 → bugün (mevcut döngü) |
cycle_ath_1 | 2011-06-11 | 2011-06-11 → 2013-11-30 |
cycle_ath_2 | 2013-11-30 | 2013-11-30 → 2017-12-17 |
cycle_ath_3 | 2017-12-17 | 2017-12-17 → 2021-11-10 |
cycle_ath_4 | 2021-11-10 | 2021-11-10 → 2025-10-06 |
cycle_ath_5 | 2025-10-06 | 2025-10-06 → bugün (mevcut döngü) |
cycle_halving_1 | 2012-11-28 | 2012-11-28 → 2016-07-09 |
cycle_halving_2 | 2016-07-09 | 2016-07-09 → 2020-05-11 |
cycle_halving_3 | 2020-05-11 | 2020-05-11 → 2024-04-20 |
cycle_halving_4 | 2024-04-20 | 2024-04-20 → bugün (mevcut döngü) |
- Tüm
metricsaynı çapa ailesinden gelmelidir.cycle_ath_*ilecycle_low_*(veyadaily_cycle_performancedışında herhangi bir şey) karıştırmak400 invalid_paramsdöndürür. x_axis: "day_offset"bayrağı yalnızca döngü metrikleri için geçerlidir — başka herhangi bir metrikle eşleştirmek400 invalid_paramsdö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:
| Alan | Tür | Varsayılan | Açı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. |
metrics | array | zorunlu | Aynı ç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}). |
days | integer | 365 | İş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}
]
}
| Alan | Tür | Varsayılan | Açıklama |
|---|---|---|---|
show_in_legend | boolean | true | Metriğ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:
| Parametre | Varsayılanın Nasıl Belirlendiği |
|---|---|
| Grafik stili | Metrik kayıt defterinden (chart_types[0]) |
| Renk | Metrik 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ği | linear (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ık | Tek metrik: metrik adı. Birden fazla: "Ad1 vs Ad2" |
| Görsel boyutu | 1200 x 600 piksel |
| Tema | light |
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
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
metric | string | - | Tek metrik kimliği |
metrics | array | - | Birden fazla metrik (dizeler veya nesneler) |
template | string | - | Şablon kimliği |
days | integer | 365 | Geçmiş gün sayısı |
start_date | string | - | Başlangıç tarihi (YYYY-MM-DD) |
end_date | string | - | Bitiş tarihi (YYYY-MM-DD) |
overlay | price | - | Fiyat katmanı ekle (şu anda BTC) |
theme | light / dark | light | Renk teması |
width | integer | 1200 | Görsel genişliği |
height | integer | 600 | Görsel yüksekliği |
title | string | auto | Grafik başlığı |
style | line / area / bar | auto | Grafik stili |
scale | linear / log | linear | Y ekseni ölçeği |
format | png / svg / json | png | Çı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_axes | array | - | Bölgeli özel Y eksenleri (bkz. Özel Y Eksenleri) |
x_axis | date / day_offset | date | X ekseni modu. Döngü performansı katmanları için day_offset kullanın — tüm metrics aynı döngü ailesinden olmalıdır. |
heatmap_id | cost-basis-distribution | - | Çizgi grafiği yerine ısı haritası işle (bkz. Isı Haritası İşleme). metric / metrics / template ile birlikte kullanılamaz. |
heatmap_period | 3m / 6m / 1y / 2y / 3y / 5y / all | 1y | Isı haritası bölmeleme penceresi. |
heatmap_color_scale | viridis / plasma / inferno / magma / cividis | viridis | Isı haritası renk paleti. |
heatmap_y_scale | linear / log | linear | Isı haritası fiyat bölmesi Y ekseni ölçeği. |
params | object | - | Parametreli metrikler için çağrı başına parametreler (örn. { "exchange": "binance" }, { "ticker": "IBIT" }, { "entity": "tesla" }). |
reference_lines | array | - | Yatay referans çizgileri (bkz. Referans Çizgileri ve Alanları) |
reference_areas | array | - | 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-diffekseninde yarı saydam yeşil çubuklar - 30 günlük dağıtım — aynı
axis-diffekseninde 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 hesaplarmax(..., 0)vemin(0, ...)pozitif ve negatif değişimleri ayrı serilere bölery_axis_id: "axis-diff"her iki formül çubuğunu da ana metrik eksenlerinden bağımsız özel bir eksene bağlarfill_opacity: 0.2+stroke_width: 0ince, 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-Cacheyanıt başlığıHITveyaMISSbelirtirX-Snapshot-Render-Msbaşlığı işleme süresini gösterir (önbellek isabetleri için 0)- İşlenen dosyalar ayrıca
/v1/chart/renders/{render_id}.pngve/v1/chart/renders/{render_id}.svgaltında diskte 1 saat süreyle kalıcı tutulur, böyleceX-Render-Idbaş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