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

Test anahtarı gecikmeli veri akışı sunar, 14 gün geçerlidir ve küçük bir enstrüman evreniyle sınırlıdır (3. adıma bakın). Tam kapsam için planlara göz atın.

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:

response
{
  "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):

response
{
  "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_xxxxxxxxxxxxxxxx

Postman 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:

Apps Script
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:

PiyasaSemboller
BIST hisseleriGARAN · ASELS · AKBNK · THYAO
DövizUSDTRY · 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

LimitDeğer
Hız0,5 istek/sn (anlık tepe 5)
Günlük kota500 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 pencereson 30 gün — yalnız grafik verisi (/v1/eod ve /v1/candles)
WebSocket1 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:

403 — trial_key_universe
{
  "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:

403 — not_in_plan
{
  "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.

Daha fazlasına ihtiyacınız varsa — daha çok sembol, tarihsel derinlik, diğer piyasalar — planlara göz atın.

Kod yazmadan denemek için Deneme Alanı'ndaki “Test evreni” bölümünü kullanın — GARAN fiyat örneği hazır bekliyor.