REST API dokümanı
JSON yanıt, kararlı URL şeması, nazik rate limit başlıkları. AI özeti ve PNG görseller dahil — hepsi tek anahtarla. Kayıt olun, 2 dakikada uygulamanıza bağlayın.
Fonları artık yapay zekâna sor
TEFAS fonları, KAP bildirimleri ve canlı fiyatlar Claude ve ChatGPT’nin içinde. Ücretsiz üyelikte dahil.
X-API-Key başlığı. JWT/OAuth karmaşası yok.
Türkiye edge sunucusu — p95 <50ms.
Portföy + heatmap görselleri cache'lenmiş, anlık servise hazır.
DeepSeek tarafından üretilmiş Türkçe fon özetleri.
Hızlı başlangıç
Ortam değişkenini ayarla ve çağır.
export KEY="fon_..."
curl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/IIH"const res = await fetch(
"https://fonoloji.com/v1/funds/IIH",
{ headers: { "X-API-Key": process.env.FONOLOJI_KEY } }
);
const fund = await res.json();import os, requests
key = os.environ["FONOLOJI_KEY"]
r = requests.get(
"https://fonoloji.com/v1/funds/IIH",
headers={"X-API-Key": key},
)
print(r.json())Örnek yanıtlar
Tüm endpoint'ler JSON döner. Tarihler ISO-8601, parasal değerler TL cinsinden.
{
"fund": {
"code": "IIH",
"name": "İSTANBUL PORTFÖY ÜÇÜNCÜ HİSSE SENEDİ FONU (HİSSE SENEDİ YOĞUN FON)",
"type": "YAT",
"category": "Hisse Senedi Şemsiye Fonu",
"management_company": "İstanbul Portföy Yönetimi A.Ş.",
"isin": "TRYISTP00109",
"risk_score": 7,
"trading_status": "AKTİF",
"trading_start": "09:00",
"trading_end": "17:30",
"buy_valor": 1,
"sell_valor": 2,
"current_price": 32.501632,
"current_date": "2026-09-25",
"return_1d": -0.021478,
"return_1w": -0.007747,
"return_1m": -0.032491,
"return_3m": -0.00845,
"return_6m": 0.082018,
"return_1y": 0.196815,
"return_ytd": 0.189539,
"real_return_1y": -0.089925,
"volatility_90": 0.205798,
"sharpe_90": -1.8471,
"sortino_90": -1.8503,
"calmar_1y": 1.4829,
"beta_1y": 0.8626,
"max_drawdown_1y": -0.132727,
"ma_30": 33.324049,
"ma_90": 32.860645,
"ma_200": 32.51339,
"aum": 1486584069.38,
"investor_count": 19300,
"first_seen": "2021-06-15",
"last_seen": "2026-09-25",
"kap_url": "https://www.kap.org.tr/tr/fon-bilgileri/genel/iih-..."
},
"portfolio": {
"code": "IIH",
"date": "2026-09-25",
"stock": 87.32,
"government_bond": 0,
"treasury_bill": 0,
"corporate_bond": 0,
"eurobond": 0,
"gold": 0,
"cash": 3.26,
"other": 0
}
}{
"code": "IIH",
"period": "1y",
"points": [
{
"date": "2025-09-26",
"price": 27.063296,
"total_value": 3154947528.04,
"investor_count": 32133
},
{
"date": "2025-09-29",
"price": 26.591406,
"total_value": 3085645380.54,
"investor_count": 32017
},
...
{
"date": "2026-09-24",
"price": 33.215041,
"total_value": 1555284745.61,
"investor_count": 19532
},
{
"date": "2026-09-25",
"price": 32.501632,
"total_value": 1486584069.38,
"investor_count": 19300
}
]
}{
"code": "IIH",
"summary": "İstanbul Portföy Üçüncü Hisse Senedi Fonu son 1 yılda nominal %19.7 getiri sağladı; TÜFE'ye göre reel getirisi ise %-9.0. Portföyün %87'si hisse senedinden oluşuyor, bu da fonun hisse senedi yoğun kategorisiyle uyumlu. 90 günlük volatilite %20.6, Sharpe oranı -1.85. Son bir yıldaki en büyük değer kaybı %13.3. Fonun toplam yönetilen varlığı 1.49 milyar TL.",
"cached": true,
"model": "gpt-4.1-mini",
"generated_at": 1790380800000
}// HTTP 503 — görsel henüz cache'te değil
{
"error": "Görsel henüz hazırlanmadı",
"message": "Bu fon için görsel cache boş. Birkaç dakika sonra tekrar deneyin veya tarayıcıdan https://fonoloji.com/fon/IIH adresini ziyaret ederek cache'i ısıtın.",
"retryAfterSeconds": 60
}Görsel ve AI endpoint'leri
Portföy görselleri, ısı haritası PNG'leri ve AI fon özetleri hazır cache'ten servis edilir — API üzerinden sıfırdan üretim yapılmaz. Bir fonun cache'i hazırsa anlık (x-cache: HIT) yanıt alırsın; hazır değilse 503 Service Unavailable + Retry-After: 60 döner. Cache, fonun sayfası site üzerinden ziyaret edildiğinde otomatik ısınır.
https://fonoloji.com/v1/funds/IIH/holdings-image?variant=v6Variants: v3 (poster), v4 (radial), v5 (sınıf), v6 (değişim defteri — önceki ay diff).
https://fonoloji.com/v1/funds/IIH/heatmap-image?period=dailyperiod=daily | monthly | quarterly. Günlük cache, gece yenilenir.
https://fonoloji.com/v1/funds/IIH/ai-summaryDB'den okur; yoksa 404. Türkçe 3-5 cümle özet.
curl -H "X-API-Key: $KEY" -o phe-portfoy.png \
"https://fonoloji.com/v1/funds/IIH/holdings-image?variant=v6"
# Yanıt başlıkları:
# Content-Type: image/png
# X-Cache: HIT
# Cache-Control: public, max-age=3600, s-maxage=86400Endpoint'ler
Base URL: https://fonoloji.com/v1 · Kimlik: X-API-Key başlığı veya ?api_key= query parametresi
Fonlar
5 uçGET/fundsFon listesi / tarama — filtre, sıralama, sayfalama (q, category, type, sort, dir, limit) · status=new|archived
https://fonoloji.com/v1/fundscurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds"GET/funds/:codeFonun kimliği + güncel metrikleri (NAV, getiriler, risk, AUM, yatırımcı sayısı)
https://fonoloji.com/v1/funds/IIHcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/IIH"GET/funds/:code/timeseriesZaman serileri — include=nav,drawdown,monthly,benchmark,allocation-history
https://fonoloji.com/v1/funds/IIH/timeseriescurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/IIH/timeseries"GET/funds/:code/portfolioPortföy — include=allocation,holdings,dates,fundamentals,analysts
https://fonoloji.com/v1/funds/IIH/portfoliocurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/IIH/portfolio"GET/funds/:code/analysisAnalizler — include=summary,percentile,advanced,estimate,estimate-accuracy,gold,heatmap,disclosures
https://fonoloji.com/v1/funds/IIH/analysiscurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/IIH/analysis"3, 4 ve 5 numaralı uçlar ?include= ile blok seçtirir — örn. /funds/IIH/timeseries?include=nav,drawdown. Birden fazla blok tek istekte gelir ve tek fon kaydı kotası düşer.
/history, /holdings, /ai-summary gibi eski uçlar belgelerden kaldırıldı ama mevcut entegrasyonlar için süresiz açık kalıyor — daha önce duyurulan 15 Ağustos 2026 kapanışı iptal edildi. Yeni geliştirmelerde yine de yukarıdaki 5'li uçları öneriyoruz: aynı veriyi tek istekte, tek fon-kaydı kotasıyla verir.Toplu indirme
2 uçGET/funds.csvFon-metrik tablosu CSV (saatte 5 istek)
https://fonoloji.com/v1/funds.csvcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds.csv"GET/funds/codesSadece TEFAS kodları (saatte 5 istek)
https://fonoloji.com/v1/funds/codescurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/codes"Görseller
2 uçGET/funds/:code/holdings-imagePortföy dağılım görseli (PNG) PNG
https://fonoloji.com/v1/funds/IIH/holdings-imagecurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/IIH/holdings-image"PNG döner. Cache'te yoksa 503 + Retry-After; ısınması için /fon/<kod> sayfası bir kez ziyaret edilmeli.
GET/funds/:code/heatmap-imagePerformans haritası görseli (PNG) PNG
https://fonoloji.com/v1/funds/IIH/heatmap-imagecurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/IIH/heatmap-image"PNG döner. Cache'te yoksa 503 + Retry-After; ısınması için /fon/<kod> sayfası bir kez ziyaret edilmeli.
İstatistik & İçgörü
8 uçGET/summary/todayGünün fon piyasası özeti (kazandıranlar, kaybettirenler, agregat)
https://fonoloji.com/v1/summary/todaycurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/summary/today"GET/categoriesKategori istatistikleri (1Y ortalama getiri sıralı)
https://fonoloji.com/v1/categoriescurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/categories"GET/categories/:nameKategori detayı + içindeki fonlar
https://fonoloji.com/v1/categories/Xcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/categories/X"GET/management-companiesPortföy yönetim şirketleri performans tablosu
https://fonoloji.com/v1/management-companiescurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/management-companies"GET/management-companies/:nameTek şirketin tüm fonları + performansı
https://fonoloji.com/v1/management-companies/Xcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/management-companies/X"GET/searchFon arama (kod veya ad)
https://fonoloji.com/v1/searchcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/search"GET/insights/moversEn çok kazandıran/kaybettiren fonlar (period=1d|1w|1m|3m|1y|ytd)
https://fonoloji.com/v1/insights/moverscurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/insights/movers"GET/insights/flowPara akışı liderleri (giriş/çıkış)
https://fonoloji.com/v1/insights/flowcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/insights/flow"Piyasa & Ekonomi
6 uçGET/market/moversFon piyasası en çok kazandıran/kaybettiren (1d/1w/1m)
https://fonoloji.com/v1/market/moverscurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/market/movers"GET/market/liveCanlı endeks ve kurlar (BIST 100, USD/TRY, EUR/TRY, gümüş)
https://fonoloji.com/v1/market/livecurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/market/live"GET/market/digestAI günlük piyasa özeti (DB cache, readonly) AI
https://fonoloji.com/v1/market/digestcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/market/digest"DB'den okur — taze üretim yapmaz. Yoksa 404.
GET/gold/liveAnlık altın fiyatları (gram, çeyrek, ons, …)
https://fonoloji.com/v1/gold/livecurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/gold/live"GET/economy/cpiTÜİK enflasyon (TÜFE) zaman serisi
https://fonoloji.com/v1/economy/cpicurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/economy/cpi"GET/disclosures/recentSon KAP bildirimleri (kategori filtreli)
https://fonoloji.com/v1/disclosures/recentcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/disclosures/recent"Araçlar
3 uçPOST/tools/portfolio-xrayÇoklu fon portföyü için risk/getiri/dağılım analizi
https://fonoloji.com/v1/tools/portfolio-xraycurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/tools/portfolio-xray"GET/tools/fund-overlapİki fon arasındaki portföy çakışması (a=AAA&b=BBB)
https://fonoloji.com/v1/tools/fund-overlapcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/tools/fund-overlap"GET/quotaAnahtarının kota durumu: limitler, bugünkü/aylık kullanım, kalan, sıfırlama zamanları. Bu uç kotadan düşmez.
https://fonoloji.com/v1/quotacurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/quota"Claude & ChatGPT bağlantısı (MCP)
Fonoloji bir MCP sunucusu olarak da çalışır: fon, hisse ve KAP verilerini doğrudan yapay zekâ sohbetinde kullanabilirsin. Bağlayıcı adresi:
https://fonoloji.com/mcpClaude'da Ayarlar → Connectors → Add custom connector, ChatGPT'de Settings → Connectors → Add MCP server ile ekle; Fonoloji hesabınla giriş yapıp hangi izinleri vereceğini seç. Portföy erişimi varsayılan olarak kapalıdır.
Kota nasıl hesaplanır
Kota birimi dönen fon kaydıdır, istek sayısı değil. Tek fon döndüren uçlar (fon detayı, NAV geçmişi, portföy dağılımı) 1 kota; liste ucu ise döndürdüğü kayıt kadar düşer.
| İstek | Kota maliyeti |
|---|---|
/v1/funds/AFA | 1 |
/v1/funds/AFA/history | 1 — tek fon, kaç NAV noktası döndüğü fark etmez |
/v1/funds?limit=100 | 100 |
/v1/funds?limit=500 | 500 |
Kalan kotan istediğin kayıt sayısından azsa istek reddedilmez — yalnız kotanın yettiği kadar kayıt döner ve _meta.capped alanı true olur. Her yanıtta x-ratelimit-cost başlığı o isteğin gerçek maliyetini bildirir. Daha yüksek limite ihtiyacın olursa talepte bulunabilirsin.
Veri dönmeyen istek kotadan düşmez. Fon bulunamadıysa, istediğin blok üretilemediyse ya da yanıt sıfır kayıtla döndüyse (ör. o fonun yayınlanabilir portföy dağılım raporu yoksa) günlük/aylık sayacın iade edilir ve yanıtta x-quota-refunded: 1 başlığı bulunur. Dakikalık istek limiti (rpm) iade edilmez.
Rate limit başlıkları
Her yanıtta döneriz:
| Başlık | Anlamı |
|---|---|
x-ratelimit-limit | Dakika başına izin verilen istek sayısı (plana göre) |
x-ratelimit-remaining | Bu pencerede kalan istek |
x-ratelimit-reset | Pencerenin sıfırlanmasına kalan saniye |
x-ratelimit-cost | Bu isteğin kota maliyeti — dönen fon kaydı sayısı |
x-ratelimit-limit-monthly | Aylık toplam kota (fon kaydı) |
x-ratelimit-remaining-monthly | Bu ay kalan kayıt |
x-ratelimit-limit-daily | Günlük toplam kota (fon kaydı) |
retry-after | 429/503 durumunda bekleme süresi (saniye) |
x-quota-refunded | 1 ise bu istek hiç veri döndürmedi ve kotadan düşmedi |
x-cache | Görsel/AI: HIT (cache'ten) veya MISS (taze üretildi, cache'lendi) |
Hata kodları
| Kod | Anlamı |
|---|---|
200 | Başarılı |
400 | Eksik veya geçersiz parametre |
401 | API anahtarı eksik veya geçersiz |
403 | Hesap pasife alınmış (iletişime geçin) |
404 | Fon/kategori/AI özet bulunamadı |
429 | Dakika/günlük/aylık kota aşımı (kota birimi = fon kaydı) — retry-after'a bakın |
503 | Görsel cache henüz boş — Retry-After saniye sonra tekrar deneyin (cache site ziyaretinde otomatik ısınır) |
5xx | Sunucu hatası — otomatik raporlanır, 5sn sonra tekrar deneyin |