İçeriğe geç
Geliştiriciler İçin

Canlı Altın Fiyatı Akışı (SSE)

Canlı altın fiyatı akışı, sorgu yapmadan fiyat değiştiği anda güncel veriyi almanızı sağlar. Bağlantı açık kaldıkça sunucu her değişimde bütün kalemleri tek mesajla gönderir.

Akış Nasıl Çalışır?

Adres: GET https://hesaplialtin.com/api/v1/public-stream; API anahtarınız X-API-Key başlığıyla ya da ?anahtar= parametresiyle gönderilir. Yanıt text/event-stream biçiminde bir Server-Sent Events (SSE) akışıdır. Bağlantı açılınca önce retry: 3000 satırı, hemen ardından güncel fiyatların tamamı gelir; sonra yalnız fiyatlar değiştiğinde yeni mesaj gönderilir. Bağlantının açık kaldığını göstermek için 25 saniyede bir :ping yorum satırı ve veri taşımayan event: nabiz olayı (data: {}) gelir; fiyat içermez, yok sayabilir ya da bağlantının canlı olduğunu anlamak için kullanabilirsiniz (60 saniye hiçbir şey gelmezse yeniden bağlanın).

retry: 3000

data: {"u":"2026-09-27T10:15:02.000Z","p":"canli","k":{"GRAM_ALTIN_TRY":[6648.2,6752.2,0.412],"USD_TRY":[48.809,49.011,0.051]}}

:ping
event: nabiz
data: {}

Mesaj Biçimi

uFiyat verisinin üretildiği an (ISO 8601, UTC); JSON yanıtındaki updatedAt ile aynıdır.
pcanli ya da durgun (fiyatlar bir süredir değişmiyor, çoğunlukla hafta sonu: son fiyat).
kKod → [alış, satış, 24 saatlik yüzde değişim] dizisi. Değişim bilinmiyorsa üçüncü eleman null. Kodlar JSON kılavuzundaki kodlardır (gremse yalnız GREMESE_* yazımıyla).

Sunucu yeniden başlatılırken event: kapanis olayı gönderilir ve bağlantı kapanır; retry değeri gereği 3 saniye sonra yeniden bağlanın. Aynı anda açık bağlantı sayısı sınırlıdır: anahtar başına en çok 5 bağlantı (aşılırsa 429); sunucunun toplam sınırı doluysa yanıt 503 durum kodu ve Retry-After: 30 başlığıyla gelir. Akışı bir kez sunucunuzda dinleyip kendi kullanıcılarınıza dağıtın.

Tarayıcıda Kullanım

Akış adresi yalnız hesaplialtin.com sayfalarından tarayıcıyla (EventSource) açılabilir; başka alan adındaki bir sayfadan açılırsa tarayıcı güvenlik kuralı (CORS) bağlantıyı engeller. Kendi sitenizde canlı fiyat göstermek için iki yol vardır: akışı kendi sunucunuzda dinleyip sayfanıza iletmek ya da tarayıcıdan her 15–60 saniyede bir JSON uç noktasını sorgulamak (bu uç nokta bütün sitelere açıktır; örnek JavaScript kılavuzunda).

Node.js ile Dinleme

Node.js 18 ve üzerinde ek paket gerekmez; aşağıdaki kod mesajları ayrıştırır ve bağlantı koparsa 3 saniye bekleyip yeniden bağlanır.

const ADRES = 'https://hesaplialtin.com/api/v1/public-stream';
const ANAHTAR = 'ANAHTARINIZ';

async function dinle(mesajGeldi) {
  for (;;) {
    try {
      const yanit = await fetch(ADRES, { headers: { Accept: 'text/event-stream', 'X-API-Key': ANAHTAR } });
      if (!yanit.ok) throw new Error('HTTP ' + yanit.status);
      const okuyucu = yanit.body.pipeThrough(new TextDecoderStream()).getReader();
      let tampon = '';
      for (;;) {
        const { value, done } = await okuyucu.read();
        if (done) break;
        tampon += value;
        let i;
        while ((i = tampon.indexOf('\n\n')) >= 0) {
          const olay = tampon.slice(0, i);
          tampon = tampon.slice(i + 2);
          const veri = olay.split('\n').filter((s) => s.startsWith('data: ')).map((s) => s.slice(6)).join('\n');
          if (!veri) continue; // :ping ve retry satırları
          const d = JSON.parse(veri);
          if (d.k) mesajGeldi(d);
        }
      }
    } catch (e) {
      console.error('Akış hatası:', e.message);
    }
    await new Promise((r) => setTimeout(r, 3000)); // yeniden bağlanmadan önce bekle
  }
}

dinle((d) => {
  const [alis, satis, degisim] = d.k.GRAM_ALTIN_TRY ?? [];
  console.log(d.u, 'gram altın', alis, satis, degisim);
});

Python ile Dinleme

import json
import time
import requests

ADRES = "https://hesaplialtin.com/api/v1/public-stream"
ANAHTAR = "ANAHTARINIZ"

while True:
    try:
        with requests.get(ADRES, headers={"X-API-Key": ANAHTAR}, stream=True, timeout=(10, 60)) as yanit:
            yanit.raise_for_status()
            for satir in yanit.iter_lines(decode_unicode=True):
                if not satir or not satir.startswith("data: "):
                    continue  # :ping, retry ve boş satırlar
                d = json.loads(satir[6:])
                if "k" in d and "GRAM_ALTIN_TRY" in d["k"]:
                    alis, satis, degisim = d["k"]["GRAM_ALTIN_TRY"]
                    print(d["u"], "gram altın", alis, satis, degisim)
    except requests.RequestException as hata:
        print("Akış hatası:", hata)
    time.sleep(3)

Okuma zaman aşımı (60 saniye) 25 saniyelik :ping aralığından uzun olmalıdır; yoksa bağlantı boşuna kopar. Akışı komut satırında denemek için: curl -N -H "X-API-Key: ANAHTARINIZ" https://hesaplialtin.com/api/v1/public-stream.

Kullanım Koşulu

API'yi kullanmak için ücretsiz bir API anahtarı gerekir; anahtar her istekte X-API-Key başlığıyla ya da ?anahtar= parametresiyle gönderilir. 13 Ekim 2026 tarihine kadar anahtarsız istekler de yanıtlanır (yanıtta ek uyari alanı ve Warning başlığı bulunur); bu tarihten sonra anahtarsız istek 401 alır. Sınırlar anahtar başınadır: dakikada 60 istek (anlık fiyat ve geçmiş seri toplamı) ve aynı anda en çok 5 canlı akış bağlantısı; aşılınca 429 döner. Anahtar tek bir site ya da uygulama içindir ve başkasıyla paylaşılmaz; koşullara uyulmadığında ya da kötüye kullanımda anahtar kapatılabilir. Kaynak bağlantısı şart değildir; veriyi gösterdiğiniz sayfada "Kaynak: Hesaplı Altın" bağlantısı (https://hesaplialtin.com/) verirseniz dakika sınırınız iki katına çıkar. Servisi 5 saniyeden sık sorgulamayın; yoğun kullanımda kendi sunucunuzda önbellek tutun. Fiyatlar Kapalıçarşı ve serbest piyasa fiyatlarından hesaplanır, bilgi amaçlıdır ve alım satım teklifi değildir. Veri olduğu gibi sunulur; doğruluk ve kesintisiz erişim garantisi verilmez, servis önceden haber verilmeden değiştirilebilir ya da durdurulabilir ve aşırı kullanımda erişim sınırlanabilir. Kod yazmadan fiyat göstermek isterseniz hazır fiyat kutusunu kullanabilirsiniz.

Fiyatları nasıl hesaplıyoruz? · Sitene altın fiyatı ekle · Altın hesaplama kutusu · Kapalıçarşı altın fiyatları