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.
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"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.
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-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 |