Test anahtarıyla 5 dakikada ilk veriniz
Ücretsiz test anahtarınızla PortGate'i gerçek piyasa verisiyle deneyin: üç adımda anahtarınızı oluşturun, ilk isteğinizi gönderin ve neyi kapsadığını görün. Kod bilgisi gerekmez — her adımda kopyala-yapıştır yeter.
Entegrasyonu sizin yerinize bir AI asistanı (agent) mı yapacak? Ona bu sayfanın makine-okur ikizini verin — tek dosyada her şey var:
https://api.theportfoy.com/portal/docs/quickstart.md
1 — Test anahtarınızı oluşturun
Portala giriş yaptıktan sonra panelde tek bir düğme göreceksiniz: “Test anahtarını oluştur”. Düğmeye basın; anahtarınız (pg_live_… biçiminde) bir kez gösterilir — kopyalayıp güvenli bir yere kaydedin, bir daha gösterilmez.
Düğme kilitliyse önce telefon numaranızı doğrulamanız gerekir: size SMS ile 6 haneli bir kod gönderiyoruz, portalda girdiğinizde düğme açılır. Anahtar oluşturmanın ön koşulu budur.
Hesap başına aynı anda 1 aktif test anahtarı olur. Anahtarınızı kaybederseniz paneldeki anahtarı iptal edip yenisini oluşturabilirsiniz; yeni anahtar aynı bitiş tarihini korur. Test süresi 14 gün sonra kendiliğinden sona erer; panel geri sayımı gösterir.
2 — İlk isteğinizi gönderin
Anahtarınızı her isteğe X-API-Key başlığıyla eklersiniz (alternatif: Authorization: Bearer pg_live_…). Aşağıdaki komutu kopyalayın, pg_live_xxxxxxxxxxxxxxxx yerine kendi anahtarınızı yazın ve bir terminale (Mac'te Terminal, Windows'ta PowerShell) yapıştırıp Enter'a basın:
curl -H "X-API-Key: pg_live_xxxxxxxxxxxxxxxx" \
"https://api.theportfoy.com/portgate/v1/quotes/bist:GARAN"Saniyeler içinde Garanti Bankası hissesinin gecikmeli fiyatını JSON olarak görürsünüz:
{
"instrument_id": "bist:GARAN",
"symbol": "GARAN",
"market": "bist",
"currency": "TRY",
"last": "127.2",
"prev_close": "129.8",
"change_pct": "-2.003086",
"open": "128.2", "high": "130.2", "low": "127.2",
"bid": "127.2", "ask": "127.3",
"volume": "15121445", "turnover": "1946905275.4",
"limit_up": "142.7", "limit_down": "116.9",
"as_of": "2026-09-28T11:47:46Z",
"data_delay_seconds": 900
}Son 30 günün grafiği
Test anahtarı grafik verisini de kapsar: /v1/eod günlük kapanış barlarını, /v1/candles OHLC mumlarını döndürür (evren içi, son 30 gün). Tarih aralığını from ve to parametreleriyle YYYY-AA-GG biçiminde verirsiniz — GARAN'ın son 30 günü:
curl -H "X-API-Key: pg_live_xxxxxxxxxxxxxxxx" \
"https://api.theportfoy.com/portgate/v1/eod/bist:GARAN?from=2026-08-29&to=2026-09-28"Yanıt, aralıktaki her işlem günü için bir satır içeren bir bars listesidir (aşağıda kısaltıldı; BIST barlarında open ve volume kaynakta olmadığı için null döner):
{
"instrument_id": "bist:GARAN",
"currency": "TRY",
"bars": [
{ "date": "2026-08-31", "open": null, "close": "130.9", "high": "134",
"low": "130", "volume": null, "turnover": "4796538946.1",
"trade_count": 36379757, "change_pct": "-2.167421" },
… 19 more trading days …,
{ "date": "2026-09-28", "open": null, "close": "127.6", "high": "130.2",
"low": "127.2", "volume": null, "turnover": "2007336361",
"trade_count": 15595659, "change_pct": "-1.694919" }
]
}30 günden eski bir tarih isterseniz (örneğin from=2026-01-01) istek, 3. adımda göreceğiniz 403 sınır yanıtıyla reddedilir. Mum istiyorsanız aynı from/to parametreleri /v1/candles'ta da geçerlidir; resolution=1d günlük, resolution=5m gün içi barlar verir.
Tarayıcıda denemek isterseniz
Fiyat uç noktaları anahtarı başlıkta beklediği için adresi doğrudan tarayıcıya yapıştırmak 401 döndürür — bu normaldir. Tarayıcıda çalışan tek uç nokta logo ucudur; yalnız orada anahtar adresin içine yazılabilir. Şu adresi tarayıcınıza yapıştırın, GARAN'ın logosunu görürsünüz:
https://api.theportfoy.com/portgate/v1/logos/bist:GARAN?api_key=pg_live_xxxxxxxxxxxxxxxxPostman kullanıyorsanız
Yeni bir istek açın, yöntemi GET bırakın ve adres olarak yukarıdaki URL'yi girin. “Headers” sekmesine geçin; anahtar sütununa X-API-Key, değer sütununa kendi anahtarınızı yazın ve “Send”e basın. Yanıt panelinde aynı JSON'u görürsünüz. İsteği bir koleksiyona kaydederseniz sembolü değiştirerek (bist:ASELS, fx:USDTRY…) evrendeki diğer enstrümanları da çekebilirsiniz.
Google Sheets kullanıyorsanız
Sheets'in IMPORTDATA gibi hazır fonksiyonları başlık gönderemediği için anahtarınızı iletemez; bunun yerine Uzantılar → Apps Script menüsünden küçük bir fonksiyon eklersiniz. Aşağıdaki kodu yapıştırıp kaydedin; sonra herhangi bir hücreye =GARAN_SON() yazın — hücrede GARAN'ın son fiyatı belirir:
function GARAN_SON() {
const res = UrlFetchApp.fetch(
"https://api.theportfoy.com/portgate/v1/quotes/bist:GARAN",
{ headers: { "X-API-Key": "pg_live_xxxxxxxxxxxxxxxx" } }
);
const quote = JSON.parse(res.getContentText());
return Number(quote.last);
}3 — Sınırlarınız ve evreniniz
Test evreni: 6 enstrüman
Test anahtarı, enstrüman bazlı uç noktalarda (fiyat, grafik, logo) yalnız şu altı enstrümanı kapsar:
| Piyasa | Semboller |
|---|---|
| BIST hisseleri | GARAN · ASELS · AKBNK · THYAO |
| Döviz | USDTRY · EURTRY |
Keşif uç noktaları evren kısıtına takılmaz: enstrüman kataloğu, piyasa durumu, halka arz (IPO) listesi ve ekonomik takvim tam açıktır. Açık veri türleri: BIST hisse fiyatları, döviz kurları, grafik verisi (son 30 gün), halka arzlar, ekonomik takvim, logolar ve canlı bağlantı (gecikmeli WebSocket).
Limitler
| Limit | Değer |
|---|---|
| Hız | 0,5 istek/sn (anlık tepe 5) |
| Günlük kota | 500 birim/gün — kalanı yanıtlardaki X-Quota-* başlıklarından izleyin |
| Anahtar ömrü | 14 gün (uzatılmaz; devam için planlara bakın) |
| Tarihsel pencere | son 30 gün — yalnız grafik verisi (/v1/eod ve /v1/candles) |
| WebSocket | 1 bağlantı (gecikmeli akış) |
“Duvar”: evren dışına çıkarsanız ne olur?
Evren dışında bir enstrüman isterseniz (örneğin bist:TUPRS) istek reddedilir ve şu yanıtı alırsınız:
{
"title": "Forbidden",
"status": 403,
"detail": "Test anahtarı bu enstrümanı kapsamıyor. / This test key does not cover this instrument.",
"instance": "/portgate/v1/quotes/...",
"request_id": "…",
"code": "trial_key_universe",
"allowed_instruments": ["GARAN", "ASELS", "AKBNK", "THYAO", "USDTRY", "EURTRY"],
"docs": "https://api.theportfoy.com/portal/docs/quickstart"
}Bu bir hata değil, test anahtarının sınırı: allowed_instruments alanı neyi çekebileceğinizi söyler, docs alanı bu sayfaya geri getirir. Toplu isteklerde tek bir evren dışı sembol bile tüm isteği 403 yapar — istek ya tamamen evren içindedir ya reddedilir.
Finansallar ve değerleme test planında yok
Grafik dışındaki tarihsel uç noktalar — finansal tablolar, değerleme, sembol bazında temettüler gibi — test planına dahil değildir. (Tek istisna, piyasa geneli temettü listesi GET /v1/dividends: açıktır, dört BIST test hissesiyle sınırlanır.) Onlardan birini çağırırsanız (evren içi bir sembolle bile) şu kısa 403'ü alırsınız:
{
"title": "Forbidden",
"status": 403,
"detail": "Bu uç test anahtarının kapsamında değil. / This endpoint is not included in the test key plan.",
"instance": "/portgate/v1/stocks/bist:GARAN/financials",
"request_id": "…",
"code": "not_in_plan",
"docs": "https://api.theportfoy.com/portal/docs/quickstart"
}Buradaki code: "not_in_plan" evren duvarından farklı bir sınırdır: kapalı olan sembol değil, uç noktanın kendisidir. Tekrar denemenin anlamı yok — bu uç noktalar için tam bir plana geçmeniz gerekir.
Kod yazmadan denemek için Deneme Alanı'ndaki “Test evreni” bölümünü kullanın — GARAN fiyat örneği hazır bekliyor.
