Hızlı Başlangıç
Sıfırdan çalışan ilk isteğe 5 dakika. Anahtar alın, başlığı ekleyin, yanıtı işleyin.
İlk isteğiniz — 5 adım
Hesap açın ve anahtarınızı alın
Kayıt formunu doldurup e-postanızı doğrulayın. Panelin
API Anahtarları sekmesinde APIBIR- ile başlayan anahtarınız hazır olur.
İstediğiniz kadar anahtar üretebilir, her birine ayrı IP kısıtı ve kredi limiti tanımlayabilirsiniz.
Anahtarınızı tarayıcıda saklamayın. Anahtar sunucu tarafında, ortam değişkeninde tutulmalıdır. Frontend'den doğrudan çağrı yapmanız gerekiyorsa kendi backend'inizde bir proxy uç noktası açın veya panelden domain kısıtlı public token üretin.
Anahtarı ortam değişkenine yazın
export APIBIR_KEY="APIBIR-8f2c4b7e9a1d3c5f7b2e9d41"$env:APIBIR_KEY = "APIBIR-8f2c4b7e9a1d3c5f7b2e9d41"APIBIR_KEY=APIBIR-8f2c4b7e9a1d3c5f7b2e9d41
APIBIR_BASE=https://api.apibir.com/v1İlk isteğinizi atın
Doğrulamanın çalıştığını görmek için kredi harcamayan /v1/ping ucunu kullanın.
curl -i "https://api.apibir.com/v1/ping" \
-H "Authorization: apikey $APIBIR_KEY"{
"success": true,
"message": "pong",
"plan": "free",
"creditsRemaining": 4998,
"resetAt": "2026-09-01T00:00:00+03:00",
"serverTime": "2026-08-07T10:44:02+03:00"
}Gerçek bir veri çekin
Örnek olarak güncel dolar ve euro kurunu alalım:
curl "https://api.apibir.com/v1/fx/latest?symbols=USD,EUR" \
-H "Authorization: apikey $APIBIR_KEY"const BASE = "https://api.apibir.com/v1";
async function apibir(path, params = {}) {
const url = new URL(BASE + path);
Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v));
const res = await fetch(url, {
headers: { Authorization: `apikey ${process.env.APIBIR_KEY}` }
});
const json = await res.json();
if (!json.success) throw new Error(json.error.message);
return json.data;
}
const kurlar = await apibir("/fx/latest", { symbols: "USD,EUR" });
console.table(kurlar);import os
import requests
BASE = "https://api.apibir.com/v1"
SESSION = requests.Session()
SESSION.headers["Authorization"] = f"apikey {os.environ['APIBIR_KEY']}"
def apibir(path, **params):
r = SESSION.get(BASE + path, params=params, timeout=10)
r.raise_for_status()
body = r.json()
if not body.get("success"):
raise RuntimeError(body["error"]["message"])
return body["data"]
for kur in apibir("/fx/latest", symbols="USD,EUR"):
print(kur["code"], kur["selling"])Yanıtı ve hataları yönetin
Her yanıt aynı zarfı kullanır. Üretimde success alanını kontrol edin, 429 durumunda
üstel geri çekilme (exponential backoff) uygulayın.
async function apibirSafe(path, params, retry = 3) {
const url = new URL("https://api.apibir.com/v1" + path);
Object.entries(params || {}).forEach(([k, v]) => url.searchParams.set(k, v));
for (let i = 0; i < retry; i++) {
const res = await fetch(url, {
headers: { Authorization: `apikey ${process.env.APIBIR_KEY}` }
});
if (res.status === 429) {
const wait = Number(res.headers.get("Retry-After") || 2 ** i);
await new Promise(r => setTimeout(r, wait * 1000));
continue;
}
const json = await res.json();
if (json.success) return json.data;
// 4xx hataları tekrar denemeye değmez
if (res.status < 500) throw new Error(`${json.error.code}: ${json.error.message}`);
}
throw new Error("apibir: yeniden deneme hakkı tükendi");
}import time
import requests
def apibir_safe(path, retry=3, **params):
for attempt in range(retry):
r = SESSION.get(BASE + path, params=params, timeout=10)
if r.status_code == 429:
time.sleep(int(r.headers.get("Retry-After", 2 ** attempt)))
continue
body = r.json()
if body.get("success"):
return body["data"]
if r.status_code < 500:
raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
raise RuntimeError("apibir: yeniden deneme hakkı tükendi")Sonraki adımlar
Tam Dokümantasyon
Kimlik doğrulama, kredi sistemi, hata kodları, sayfalama, webhook ve SDK'lar.
API Kataloğu
15 servisin parametre listeleri ve örnek yanıtları.
AI ile Dashboard
Claude'a tek promptla pano kurdurun; hazır şablonlar ve MCP tanımı.
Kullanım Senaryoları
Sektör sektör, uçtan uca örnek mimariler.
Ücretsiz API anahtarınızı 30 saniyede alın
Kredi kartı istemiyoruz. Ücretsiz plan tüm API'leri kapsar; yalnızca aylık kredi limiti farklıdır.