Dokumentasi /

Referensi API

Ringkasan REST untuk autentikasi, batas, field kesegaran, endpoint, dan error.

Autentikasi dan batas

Endpoint data menerima percobaan anonim: 12 permintaan per menit dan 100 per jam untuk setiap IP. Key menggunakan kuota bulanan akun Anda.

bash · header
Authorization: Bearer YOUR_KEY
X-RateLimit-Remaining: 9999
X-RateLimit-Reset: 1788220800

Field yang menjelaskan kesegaran

`source` menunjukkan kelas sumber, `market_session` menunjukkan keadaan pasar, dan `data_updated_at` menunjukkan waktu observasi tertua yang menyumbang pada respons. Simpan ketiganya.

Endpoint

GET /v1/latest[/{BASE}]Nilai tukar terkini, seluruhnya atau disaring dengan symbols.
GET /v1/{YYYY-MM-DD}[/{BASE}]Snapshot historis untuk satu tanggal dan mata uang dasar.
GET /v1/convert/{FROM}/{TO}[/{AMOUNT}] · POST /v1/convertKonversi jumlah melalui GET tunggal atau POST batch.
GET /v1/rate/{slug}Respons datar untuk satu pasangan berdasarkan slug.
GET /v1/rangeDeret harian dengan pagination dan unduhan.
GET /v1/currenciesDaftar mata uang yang didukung tanpa parameter.
GET /v1/accountAkun, paket, key aktif, dan pemakaian bulan berjalan.

Deret intraday dan cakupan

/v1/timeseries mendukung 1m, 5m, 15m, 1h, 4h dan referensi harian 1d; tidak ada 2h. Pasangan silang SGD tanpa USD tidak mendukung 4h, tetapi USD/SGD dan kebalikannya didukung. Data pasar mulai dikumpulkan pada 2026-09-14. Retensi 1m adalah 30 hari; interval lebih besar tidak memiliki kedaluwarsa terjadwal. Retensi bukan jaminan kedalaman data yang sudah tersedia.

Pasangan silang historis memerlukan tick penutupan nyata dalam bucket UTC yang sama, dengan selisih maksimal 5 detik. effective_at memakai waktu observasi tertua. Celah tidak diisi; bucket yang masih terbuka dapat berubah. 1d menggunakan referensi harian untuk seluruh katalog. Tabel menghitung pasangan unik; kedua arah didukung.

intervalPasangan unik
1m91
5m91
15m91
1h91
4h79
1d465
curl · EUR/JPY · 15m
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"

Rentang yang didukung tanpa observasi mengembalikan HTTP 200 dengan data: [], has_more: false dan next_cursor: null. Interval tidak dikenal menghasilkan unsupported_interval; pasangan di luar cakupan menghasilkan unsupported_pair_interval dan rejected_pairs (HTTP 400). Permintaan campuran ditolak seluruhnya.

AUD, CAD, CHF, EUR, GBP, JPY, MXN, NOK, NZD, PLN, SEK, SGD, USD, ZAR

Rincian cakupan dan batas

API nilai tukar intrahari

WebSocket live

Hubungkan ke wss://api.exchangerate.dev/v1/stream dan kirim pesan auth dalam 10 detik. Simpan API key di server, bukan URL atau JavaScript publik. Koneksi anonim tidak didukung. Setelah authenticated, kirim subscribe. Stream memakai mata uang di bawah; silang memerlukan kedua observasi terbaru masih segar dan berselisih maksimal 5 detik. Nilai dapat berstatus unavailable atau stale. Setiap koneksi yang diterima memakai satu unit kuota bulanan.

Tabel menunjukkan batas akun baru. Akun lama tetap mendapat Free 1 × 5, Basic 3 × 25, atau Pro 10 × 100 (koneksi × pasangan per koneksi). Pesan authenticated menunjukkan batas efektif akun Anda.

AUD, CAD, CHF, EUR, GBP, JPY, MXN, NOK, NZD, PLN, SEK, SGD, USD, ZAR

PaketKoneksi serentakPasangan per koneksi
Free00
Basic00
Pro00
Realtime10100
JSON · auth
{"action":"auth","api_key":"YOUR_KEY"}
JSON · subscribe
{"action":"subscribe","base":"EUR","symbols":["USD","JPY"]}

WebSocket live →

Error

REST: Semua error memakai bentuk `{ result: "error", code, message }`. Respons 429 menyertakan `Retry-After`; kegagalan sumber tidak diganti dengan data buatan.

json · error
{
  "result": "error",
  "code": "missing_parameter",
  "message": "missing required parameter: symbols"
}

Referensi API →

Gunakan dengan stack Anda

Permintaan yang sama berjalan dengan curl, Python, dan JavaScript. Key API tidak diperlukan untuk evaluasi.

Buka quickstart →
curl -fsS --max-time 10 "https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP"
Contoh respons
{
  "result": "success",
  "base": "USD",
  "source": "live",
  "sources": {
    "EUR": "live",
    "GBP": "live"
  },
  "market_session": "open",
  "timestamp": "2026-06-15T12:00:00Z",
  "data_updated_at": "2026-06-15T12:00:00Z",
  "effective_at": {
    "EUR": "2026-06-15T12:00:00Z",
    "GBP": "2026-06-15T12:00:00Z"
  },
  "rates": {
    "EUR": 0.86207,
    "GBP": 0.74627
  },
  "derived_symbols": [],
  "notice": "Indicative rates, not for settlement."
}

rates.EUR adalah jumlah EUR untuk 1 USD. effective_at.EUR adalah waktu observasi dan sources.EUR menunjukkan kelas sumber. Nilai dan waktu hanya contoh.

Buka respons JSON ↗Referensi API →