Kimlik doğrulama ve sınırlar
Veri endpointleri anonim denenebilir: IP başına dakikada 10, saatte 100 istek. Anahtarlı istek hesabın aylık kotasını kullanır. Free fiyatları 15 dakika gecikmelidir (X-Price-Delay-Seconds: 900 başlığı).
Authorization: Bearer YOUR_KEYX-RateLimit-Remaining: 9999X-RateLimit-Reset: 1788220800Tazeliği açıklayan alanlar
source kaynak sınıfını, market_session piyasa durumunu, data_updated_at yanıta katkı sağlayan en eski gözlemin zamanını gösterir. Üçünü de saklayın.
Endpointler
| GET /v1/latest[/{BASE}] | Güncel kurlar; tamamı veya symbols ile filtreli. |
| GET /v1/{YYYY-MM-DD}[/{BASE}] | Tarih ve baz para birimi için geçmiş anlık görüntü. |
| GET /v1/convert/{FROM}/{TO}[/{AMOUNT}] · POST /v1/convert | Tutar çevirme; tek GET veya toplu POST. |
| GET /v1/rate/{slug} | Slug ile tek parite için düz yanıt. |
| GET /v1/range | Sayfalama ve dosya indirmeli günlük seri. |
| GET /v1/currencies | Desteklenen para birimleri; parametre almaz. |
| GET /v1/account | Hesap, plan, etkin anahtar ve aylık kullanım. |
| GET /v1/indices/{index_slug} · GET /v1/indices/{index_slug}/timeseries | USD endekslerinin son değeri ve geçmiş serileri. |
Gün içi seriler ve kapsam
/v1/timeseries; 1m, 5m, 15m, 1h, 4h ve günlük referans verisi 1d aralıklarını destekler. 2h yoktur. USD içermeyen SGD çaprazları 4h için desteklenmez; USD/SGD ve tersi desteklenir. Piyasa verileri 2026-09-14 tarihinde toplanmaya başladı. 1m verileri 30 gün tutulur; daha büyük aralıklar için planlı silme süresi yoktur. Saklama süresi, o kadar geçmişin zaten biriktiği anlamına gelmez. 1m ile 1h arası gün içi kapsam 221 benzersiz paritedir: 143 USD paritesi ve 78 çapraz parite.
Geçmiş çaprazlar aynı UTC aralığındaki gerçek kapanış gözlemlerini kullanır; zaman farkı en fazla 5 saniyedir. effective_at daha eski gözlemin zamanıdır. Boşluklar doldurulmaz; açık aralık değişebilir. 1d tüm katalog için günlük referans verisidir. Tablo benzersiz pariteleri sayar; iki yön de desteklenir.
| interval | Benzersiz pariteler |
|---|---|
1m | 221 |
5m | 221 |
15m | 221 |
1h | 221 |
4h | 209 |
1d | 10296 |
curl "https://api.exchangerate.dev/v1/timeseries?base=EUR&symbols=JPY&interval=15m&from=2026-09-14T12:00:00Z&to=2026-09-14T13:00:00Z" \ -H "Authorization: Bearer YOUR_API_KEY"Desteklenen bir zaman penceresinde gözlem yoksa HTTP 200 ile data: [], has_more: false ve next_cursor: null döner. Bilinmeyen aralık unsupported_interval; kapsam dışı parite unsupported_pair_interval ve rejected_pairs döndürür (HTTP 400). Karma istekler bütünüyle reddedilir.
Canlı WebSocket
wss://api.exchangerate.dev/v1/stream adresine bağlanıp 10 saniye içinde auth gönderin. Anahtarı sunucuda tutun; URL veya herkese açık JavaScript içine koymayın. Anonim bağlantı desteklenmez. authenticated sonrasında subscribe gönderin. Aşağıdaki para birimleri desteklenir; çaprazlar iki güncel gözlemin en fazla 5 saniye aralıklı olmasını gerektirir. Durum unavailable veya stale olabilir. Kabul edilen her bağlantı aylık kotadan bir birim tüketir.
Tablo: yeni hesap sınırları. Mevcut hesaplar eski Basic 3 × 25 veya eski Pro 10 × 100 sınırlarını korur (bağlantı × bağlantı başına parite). authenticated mesajı hesabınızın geçerli sınırlarını bildirir.
AUD, CAD, CHF, EUR, GBP, JPY, MXN, NOK, NZD, PLN, SEK, SGD, USD, ZAR
| Plan | Eşzamanlı bağlantılar | Bağlantı başına parite |
|---|---|---|
| Free | 0 | 0 |
| Basic | 0 | 0 |
| Plus | 1 | 10 |
| Pro | 3 | 100 |
{"action":"auth","api_key":"YOUR_KEY"}{"action":"subscribe","base":"EUR","symbols":["USD","JPY"]}Hatalar
REST: Her hata { result: "error", code, message } biçimindedir. 429 yanıtında Retry-After bulunur; kaynak arızasında sahte veri dönmez. HTTP 403 plan_gated, tier, interval alanlarını içerir; geçmiş sınırı aşıldığında history_days, earliest_allowed de eklenir. Bir üst plan isteğe izin veriyorsa upgrade_plans, upgrade_offers (plan, loses), upgrade_url döndürülür.
{ "result": "error", "code": "missing_parameter", "message": "required parameter missing: symbols"}{ "result": "error", "code": "plan_gated", "message": "The 15m interval is not included in your plan.", "tier": "plus_2026", "interval": "15m", "upgrade_plans": ["pro_2026"], "upgrade_offers": [{ "plan": "pro_2026", "loses": [] }], "upgrade_url": "https://exchangerate.dev/pricing?plan=pro_2026&source=api&reason=plan_gated"}curl -fsS --max-time 10 "https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP"from urllib.request import Request, urlopenimport json# Identify your application explicitly when calling the API.request = Request("https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP", headers={"User-Agent": "exchangerate-docs/1.0"})with urlopen(request, timeout=10) as response: data = json.load(response)print(data["rates"]["EUR"])const response = await fetch("https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP", { signal: AbortSignal.timeout(10_000),});if (!response.ok) throw new Error(`HTTP ${response.status}`);const data = await response.json();console.log(data.rates.EUR);Entegrasyon kılavuzları: Python · JavaScript / Node.js · Google Sheets · Excel · Go · Swift · Zapier