altinapi Dokümantasyon
altinapi, gerçek zamanlı altın, döviz ve değerli metal fiyatları sağlayan bir REST API ve WebSocket servisidir. Aynı veri sağlayıcısından beslendiği için fiyatlar Harem Altın ile birebir örtüşür.
ℹ️ Base URL:
https://altinapi.com/api/v1 · WebSocket: wss://altinapi.com
Hızlı Başlangıç
curl
# API key ile tüm fiyatları çek curl -H "X-API-Key: hapi_YOUR_KEY" \ https://altinapi.com/api/v1/prices
Kimlik Doğrulama
Tüm fiyat endpoint'leri için geçerli bir API key gereklidir. API key'inizi Dashboard'dan oluşturabilirsiniz.
Header ile (Önerilen)
http
GET /api/v1/prices HTTP/1.1
Host: altinapi.com
X-API-Key: hapi_YOUR_API_KEY
Query Parameter ile
curl
curl "https://altinapi.com/api/v1/prices?api_key=hapi_YOUR_KEY"
Rate Limits
İstekler dakika başına aşağıdaki sınırlara tabidir (kayan pencere):
| Plan | REST API | WebSocket Bağlantı |
|---|---|---|
| Ücretsiz Deneme | 1000/ay | — |
| Starter | 30/dk | — |
| Pro | 60/dk | 3 |
| Enterprise | 60/dk | 10 |
Limit aşıldığında 429 Too Many Requests döner. Response header'larında limit bilgisi bulunur:
http
X-RateLimit-Limit: 30 X-RateLimit-Remaining: 27 X-RateLimit-Reset: 1710000060
Fiyat Endpoints
⚠️ Tüm fiyat endpoint'leri için geçerli API key gereklidir.
GET
/prices
Tüm fiyatlar
curl
curl https://altinapi.com/api/v1/prices \
-H "X-API-Key: hapi_YOUR_KEY"
Response
{
"data": [
{
"symbol": "USDTRY",
"category": "DOVIZ",
"bid": 32.45,
"ask": 32.48,
"timestamp": 1710000000000
},
// ... tüm semboller
],
"updatedAt": "2024-03-10T12:00:00.000Z",
"stale": false
}
GET
/prices/category/:category
Kategori bazlı filtre
Geçerli kategoriler: DOVIZ, MADEN, PARITE, GRAM ALTIN, SARRAFIYE
curl
curl "https://altinapi.com/api/v1/prices/category/DOVIZ" \ -H "X-API-Key: hapi_YOUR_KEY"
GET
/prices/:symbol
Tek sembol
curl
curl "https://altinapi.com/api/v1/prices/ALTIN" \ -H "X-API-Key: hapi_YOUR_KEY"
Response
{
"symbol": "ALTIN",
"category": "MADEN",
"bid": 2312.50,
"ask": 2315.00,
"timestamp": 1710000000000
}
WebSocket (Socket.io)
altinapi, gerçek zamanlı fiyat güncellemeleri için Socket.io kullanır. Bağlantı sırasında API key'inizi auth objesiyle gönderin.
javascript
// npm install socket.io-client const { io } = require("socket.io-client"); const socket = io("https://altinapi.com", { auth: { api_key: "hapi_YOUR_KEY" } }); socket.on("connect", () => { console.log("Bağlandı"); // İsteğe bağlı: belirli sembollere subscribe socket.emit("subscribe", ["DOVIZ", "MADEN"]); }); // Anlık snapshot (bağlantı anında gelir) socket.on("prices:snapshot", (data) => { console.log("Snapshot:", data); }); // Gerçek zamanlı güncellemeler socket.on("prices:update", (update) => { console.log("Güncelleme:", update); }); // Bağlantı durumu socket.on("data:stale", () => console.log("Veri güncellenmemiş")); socket.on("data:live", () => console.log("Veri canlı"));
python
# pip install "python-socketio[client]" import socketio sio = socketio.Client() @sio.event def connect(): print("Bağlandı") sio.emit("subscribe", ["DOVIZ"]) @sio.on("prices:update") def on_update(data): print("Güncelleme:", data) @sio.on("prices:snapshot") def on_snapshot(data): print("Snapshot:", data) sio.connect( "https://altinapi.com", auth={"api_key": "hapi_YOUR_KEY"} ) sio.wait()
php
// composer require elephox/socket-io-client // Alternatif: REST API polling önerilir // REST ile basit kullanım: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://altinapi.com/api/v1/prices"); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "X-API-Key: hapi_YOUR_KEY" ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $data = json_decode($response, true); print_r($data);
WebSocket Events
İstemciden → Sunucuya
| Event | Payload | Açıklama |
|---|---|---|
| subscribe | ["SEMBOL1", "SEMBOL2"] | Belirli sembollere abone ol |
| unsubscribe | ["SEMBOL1", "SEMBOL2"] | Aboneliği iptal et |
Sunucudan → İstemciye
| Event | Payload | Açıklama |
|---|---|---|
| prices:snapshot | Array<Price> | Bağlantı anında tüm fiyatlar |
| prices:update | Array<Price> | Gerçek zamanlı güncellemeler |
| data:stale | — | Kaynak bağlantısı koptu |
| data:live | — | Kaynak bağlantısı yeniden kuruldu |
Price Nesnesi
TypeScript
interface Price { symbol: string; // örn: "USDTRY", "ALTIN" category: string; // "DOVIZ" | "MADEN" | "PARITE" | "GRAM ALTIN" | "SARRAFIYE" bid: number; // Alış fiyatı ask: number; // Satış fiyatı timestamp: number; // Unix timestamp (ms) }
Sembol Listesi
Toplam 66 sembol, 5 kategori. Semboller büyük/küçük harf duyarsızdır.
Maden (MADEN) — 19 sembol
| Sembol | Açıklama |
|---|---|
| ALTIN | Altın (TL/gram) |
| XAUUSD | Altın (USD/ons) |
| XAUUSDS | Altın (USD/ons, spot) |
| XAUEUR | Altın (EUR/ons) |
| XAUXAG | Altın / Gümüş Oranı |
| GUMTRY | Gümüş (TL/gram) |
| GUMUSD | Gümüş (USD/ons) |
| XAGUSD | Gümüş (USD/ons) |
| KXAGUSD | Gümüş (USD/kg) |
| PLATIN | Platin (TL) |
| XPTUSD | Platin (USD/ons) |
| PALADYUM | Paladyum (TL) |
| XPDUSD | Paladyum (USD/ons) |
| PARUSD | Altın parite (USD) |
| PAREUR | Altın parite (EUR) |
| PARGBP | Altın parite (GBP) |
| PARCHF | Altın parite (CHF) |
| FARK | Altın fark değeri |
| VADE FARK | Vadeli altın fark değeri |
Gram Altın (GRAM ALTIN) — 5 sembol
| Sembol | Açıklama |
|---|---|
| 5 GR GRAM ALTIN | 5 gram altın |
| 10 GR GRAM ALTIN | 10 gram altın |
| 20 GR GRAM ALTIN | 20 gram altın |
| 50 GR GRAM ALTIN | 50 gram altın |
| 100 GR GRAM ALTIN | 100 gram altın |
Sarrafiye (SARRAFIYE) — 15 sembol
| Sembol | Açıklama |
|---|---|
| CEYREK_YENI | Çeyrek Altın (Yeni Cumhuriyet) |
| CEYREK_ESKI | Çeyrek Altın (Eski Cumhuriyet) |
| YARIM_YENI | Yarım Altın (Yeni Cumhuriyet) |
| YARIM_ESKI | Yarım Altın (Eski Cumhuriyet) |
| TEK_YENI | Tam Altın (Yeni Cumhuriyet) |
| TEK_ESKI | Tam Altın (Eski Cumhuriyet) |
| ATA_YENI | Ata Altın (Yeni) |
| ATA_ESKI | Ata Altın (Eski) |
| ATA5_YENI | 5'li Ata Altın (Yeni) |
| ATA5_ESKI | 5'li Ata Altın (Eski) |
| GREMESE_YENI | Gremese Altın (Yeni) |
| GREMESE_ESKI | Gremese Altın (Eski) |
| AYAR22 | 22 Ayar Bilezik Altın |
| AYAR14 | 14 Ayar Altın |
| KULCEALTIN | Külçe Altın |
Döviz (DOVIZ) — 16 sembol
| Sembol | Açıklama |
|---|---|
| USDTRY | Amerikan Doları / Türk Lirası |
| EURTRY | Euro / Türk Lirası |
| GBPTRY | İngiliz Sterlini / Türk Lirası |
| CHFTRY | İsviçre Frangı / Türk Lirası |
| AUDTRY | Avustralya Doları / Türk Lirası |
| CADTRY | Kanada Doları / Türk Lirası |
| JPYTRY | Japon Yeni / Türk Lirası |
| SARTRY | Suudi Riyali / Türk Lirası |
| DKKTRY | Danimarka Kronu / Türk Lirası |
| NOKTRY | Norveç Kronu / Türk Lirası |
| SEKTRY | İsveç Kronu / Türk Lirası |
| EURGBP | Euro / İngiliz Sterlini |
| EURCHF | Euro / İsviçre Frangı |
| EURUSDS | Euro / ABD Doları (spot) |
| XUSDTRY | USD/TRY (çapraz kur) |
| FARKEUR | EUR bazlı fark değeri |
Parite (PARITE) — 11 sembol
| Sembol | Açıklama |
|---|---|
| EURUSD | Euro / ABD Doları |
| GBPUSD | İngiliz Sterlini / ABD Doları |
| AUDUSD | Avustralya Doları / ABD Doları |
| USDCHF | ABD Doları / İsviçre Frangı |
| USDCAD | ABD Doları / Kanada Doları |
| USDJPY | ABD Doları / Japon Yeni |
| USDSAR | ABD Doları / Suudi Riyali |
| USDDKK | ABD Doları / Danimarka Kronu |
| USDNOK | ABD Doları / Norveç Kronu |
| USDSEK | ABD Doları / İsveç Kronu |
| USDRUB | ABD Doları / Rus Rublesi |
Hata Kodları
| HTTP Kodu | Hata | Açıklama |
|---|---|---|
| 400 | Bad Request | Geçersiz istek parametresi |
| 401 | Unauthorized | API key eksik veya geçersiz |
| 403 | Forbidden | Abonelik aktif değil / IP kısıtlaması |
| 404 | Not Found | Sembol bulunamadı |
| 429 | Too Many Requests | Rate limit aşıldı |
| 503 | Service Unavailable | Kaynak bağlantısı kesildi (stale veri) |
Error Response
{
"error": "Açıklayıcı hata mesajı"
}