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/PHE"const res = await fetch(
"https://fonoloji.com/v1/funds/PHE",
{ 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/PHE",
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": "PHE",
"name": "PUSULA PORTFÖY HİSSE SENEDİ FONU (HİSSE SENEDİ YOĞUN FON)",
"type": "YAT",
"category": "Hisse Senedi Şemsiye Fonu",
"management_company": "Pusula Portföy Yönetimi A.Ş.",
"isin": "TRYPSLP00010",
"risk_score": 6,
"trading_status": "AKTİF",
"trading_start": "09:00",
"trading_end": "17:00",
"buy_valor": 1,
"sell_valor": 2,
"current_price": 2.816142,
"current_date": "2026-04-30",
"return_1d": -0.000586,
"return_1w": -0.00501,
"return_1m": 0.091457,
"return_3m": 0.512178,
"return_6m": 1.230964,
"return_1y": 1.670785,
"return_ytd": 0.946855,
"real_return_1y": 1.040792,
"volatility_90": 0.174613,
"sharpe_90": 7.9141,
"sortino_90": 12.8878,
"calmar_1y": 6.39,
"beta_1y": 1.0017,
"max_drawdown_1y": -0.172801,
"ma_30": 2.672913,
"ma_90": 2.15306,
"ma_200": 1.67323,
"aum": 36522590809.75,
"investor_count": 90471,
"first_seen": "2024-04-09",
"last_seen": "2026-05-01",
"kap_url": "https://www.kap.org.tr/tr/fon-bilgileri/genel/phe-..."
},
"portfolio": {
"code": "PHE",
"date": "2026-04-22",
"stock": 79.18,
"government_bond": 0,
"treasury_bill": 0,
"corporate_bond": 0,
"eurobond": 0,
"gold": 0,
"cash": 0,
"other": 20.82
}
}{
"code": "PHE",
"period": "1y",
"points": [
{
"date": "2025-05-02",
"price": 1.036193,
"total_value": 0,
"investor_count": 632
},
{
"date": "2025-05-05",
"price": 1.047051,
"total_value": 0,
"investor_count": 619
},
...
{
"date": "2026-04-29",
"price": 2.817793,
"total_value": 36522590809.75,
"investor_count": 90471
},
{
"date": "2026-04-30",
"price": 2.816142,
"total_value": null,
"investor_count": null
}
]
}{
"code": "PHE",
"summary": "Pusula Portföy Hisse Senedi Fonu, son 1 yılda nominal %167.1, reel olarak ise %104.1 getiri sağladı. Portföyün %79'u hisse senedinden oluşuyor, bu da fonun hisse senedi yoğun kategorisiyle uyumlu. Sharpe oranı 7.91 ve volatilitesi %17.5 seviyesinde, bu da yüksek getiriyle birlikte görece makul bir risk profili olduğunu gösteriyor. Maksimum değer kaybı %17.3 olarak gerçekleşti. Fonun toplam yönetilen varlığı 36.52 milyon TL seviyesinde bulunuyor.",
"cached": true,
"model": "gpt-4.1-mini",
"generated_at": 1777632746304
}// 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/PHE 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/PHE/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/PHE/heatmap-image?period=dailyperiod=daily | monthly | quarterly. Günlük cache, gece yenilenir.
https://fonoloji.com/v1/funds/PHE/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/PHE/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
Fon 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"Fonun kimliği + güncel metrikleri (NAV, getiriler, risk, AUM, yatırımcı sayısı)
https://fonoloji.com/v1/funds/PHEcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/PHE"Zaman serileri — include=nav,drawdown,monthly,benchmark,allocation-history
https://fonoloji.com/v1/funds/PHE/timeseriescurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/PHE/timeseries"Portföy — include=allocation,holdings,dates,fundamentals,analysts
https://fonoloji.com/v1/funds/PHE/portfoliocurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/PHE/portfolio"Analizler — include=summary,percentile,advanced,estimate,estimate-accuracy,gold,heatmap,disclosures
https://fonoloji.com/v1/funds/PHE/analysiscurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/PHE/analysis"3, 4 ve 5 numaralı uçlar ?include= ile blok seçtirir — örn. /funds/PHE/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
Fon-metrik tablosu CSV (saatte 5 istek)
https://fonoloji.com/v1/funds.csvcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds.csv"Sadece TEFAS kodları (saatte 5 istek)
https://fonoloji.com/v1/funds/codescurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/codes"Görseller
Portföy dağılım görseli (PNG)
https://fonoloji.com/v1/funds/PHE/holdings-imagecurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/PHE/holdings-image"PNG döner. Cache'te yoksa 503 + Retry-After; ısınması için /fon/<kod> sayfası bir kez ziyaret edilmeli.
Performans haritası görseli (PNG)
https://fonoloji.com/v1/funds/PHE/heatmap-imagecurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/funds/PHE/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ü
Gü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"Kategori istatistikleri (1Y ortalama getiri sıralı)
https://fonoloji.com/v1/categoriescurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/categories"Kategori detayı + içindeki fonlar
https://fonoloji.com/v1/categories/Xcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/categories/X"Portföy yönetim şirketleri performans tablosu
https://fonoloji.com/v1/management-companiescurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/management-companies"Tek şirketin tüm fonları + performansı
https://fonoloji.com/v1/management-companies/Xcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/management-companies/X"Fon arama (kod veya ad)
https://fonoloji.com/v1/searchcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/search"En ç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"Para akışı liderleri (giriş/çıkış)
https://fonoloji.com/v1/insights/flowcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/insights/flow"Piyasa & Ekonomi
Fon 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"Canlı 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"AI günlük piyasa özeti (DB cache, readonly)
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.
Anlık altın fiyatları (gram, çeyrek, ons, …)
https://fonoloji.com/v1/gold/livecurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/gold/live"TÜİK enflasyon (TÜFE) zaman serisi
https://fonoloji.com/v1/economy/cpicurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/economy/cpi"Son KAP bildirimleri (kategori filtreli)
https://fonoloji.com/v1/disclosures/recentcurl -H "X-API-Key: $KEY" \
"https://fonoloji.com/v1/disclosures/recent"Araçlar
Ç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"İ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"Anahtarı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.
⚠ MCP kotası bu API kotasından tamamen ayrıdır; biri diğerini tüketmez. MCP tarafında birim araç çağrısıdır ve ayrıca günde incelenebilecek farklı fon/hisse sayısı sınırlıdır — aynı fona tekrar bakmak sayaç işletmez. Bağlantılarını ve kullanımını panelden görebilirsin.
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:
x-ratelimit-limitDakika başına izin verilen istek sayısı (plana göre)x-ratelimit-remainingBu pencerede kalan istekx-ratelimit-resetPencerenin sıfırlanmasına kalan saniyex-ratelimit-costBu isteğin kota maliyeti — dönen fon kaydı sayısıx-ratelimit-limit-monthlyAylık toplam kota (fon kaydı)x-ratelimit-remaining-monthlyBu ay kalan kayıtx-ratelimit-limit-dailyGünlük toplam kota (fon kaydı)retry-after429/503 durumunda bekleme süresi (saniye)x-quota-refunded1 ise bu istek hiç veri döndürmedi ve kotadan düşmedix-cacheGö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 |