LUME EXCHANGE RATES / API REFERENCE

Dokumentasi API

Sumber terkonfigurasi adalah Penyedia kurs eksternal. Respons mencantumkan sumber dan waktu publikasi. Mata uang tersedia mengikuti data nyata.

Base URLhttps://lumeexchangerates.com

Ringkasan

Lume Exchange Rates menyatukan perbandingan, konversi dan riwayat untuk perjalanan, harga internasional dan produk.

Sumber terkonfigurasi adalah Penyedia kurs eksternal. Respons mencantumkan sumber dan waktu publikasi. Mata uang tersedia mengikuti data nyata.

HTTPSJSONUTF-8GET / POSTUTC

Mulai cepat

Baca daftar mata uang, lalu pilih anchor dan targets. Nama kolom dan kode sama di semua bahasa.

cURL
curl --request GET 'https://lumeexchangerates.com/v1/quotes?anchor=USD&targets=EUR,JPY'
JavaScript · browser
const response = await fetch('/v1/quotes?anchor=USD&targets=EUR,JPY', {
  credentials: 'same-origin'
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const { meta, anchor, data } = await response.json();
console.log(anchor, meta.as_of, data);

Contoh browser memakai asal yang sama. Situs privat memerlukan izin; URL tidak melewati proses masuk.

Akses dan autentikasi

Akses mengikuti izin situs dan sesi browser. Kunci API pelanggan, autentikasi Bearer pelanggan dan API publik lintas asal belum tersedia. Simpan App ID penyedia di server.

ParameterTipeDeskripsi
Base URLURLhttps://lumeexchangerates.com
Content-Typeheaderapplication/json
Customer API key—Pratinjau terkelola ini menggunakan sesi browser yang sudah masuk. Kunci API per pelanggan belum diterbitkan.
Provider App IDserver secretOPEN_EXCHANGE_RATES_APP_ID
CORSsame-originHeader izin lintas asal belum disediakan.

Authorization: Token hanya untuk server ke Penyedia kurs eksternal, bukan autentikasi pelanggan. Periksa HTTP dan Content-Type: penolakan akses bisa berupa HTML atau pengalihan.

Endpoint

MethodPathDeskripsi
GET/v1/currenciesSemua simbol dengan kurs terkini dan nama dari penyedia. Termasuk mata uang alternatif dan logam yang tersedia.
GET/v1/quotesSimbol mata uang dasar; default USD. Semua simbol penyedia yang tersedia saat ini diterima.
GET/v1/exchangeJumlah numerik tidak negatif yang akan dikonversi.
GET/v1/historyGunakan /v1/history untuk tanggal tertentu dan /v1/series untuk rentang tanggal.
GET/v1/seriesGunakan /v1/history untuk tanggal tertentu dan /v1/series untuk rentang tanggal.
GET/v1/candlesOHLC
GET/v1/capabilitiesKetersediaan
GET/api/rates/latestKurs terakhir diterbitkan
GET/api/currenciesMata uang
GET/api/rates/historyGrafik
GET/api/rates/previousHari UTC sebelumnya
POST/api/convertKonverter

/v1 adalah API kueri ringkas; /api menyediakan kurs, riwayat dan konversi situs. Default dan format respons berbeda.

GET /v1/currencies

Semua simbol dengan kurs terkini dan nama dari penyedia. Termasuk mata uang alternatif dan logam yang tersedia.

Parameter: —

cURL
curl --request GET 'https://lumeexchangerates.com/v1/currencies'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "mode": "provider",
    "source": "Penyedia kurs eksternal",
    "source_url": "https://openexchangerates.org/",
    "as_of": "2026-01-01T00:00:00.000Z",
    "fetched_at": "2026-01-01T00:00:05.000Z",
    "currency_count": 3,
    "includes_alternative": true,
    "refresh_interval_seconds": 300,
    "provider_plan": "Unlimited",
    "notice": "Illustrative response; not live rates."
  },
  "data": [
    {
      "code": "USD",
      "name": "United States Dollar"
    },
    {
      "code": "EUR",
      "name": "Euro"
    },
    {
      "code": "JPY",
      "name": "Japanese Yen"
    }
  ]
}
ParameterTipeDeskripsi
data[].codestringKode huruf besar; aset alternatif bisa lebih dari tiga karakter atau mengandung garis bawah.
data[].namestringNama dari penyedia, atau kode bila nama tidak tersedia.

GET /v1/quotes

Simbol mata uang dasar; default USD. Semua simbol penyedia yang tersedia saat ini diterima.

ParameterTipeWajibDefaultDeskripsi
anchorstringOpsionalUSDSimbol mata uang dasar; default USD. Semua simbol penyedia yang tersedia saat ini diterima.
targetsstringOpsionalsemuaSimbol tujuan dipisahkan koma. Kosongkan untuk mengembalikan semua simbol yang tersedia.
cURL
curl --request GET 'https://lumeexchangerates.com/v1/quotes?anchor=USD&targets=EUR,JPY'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "mode": "provider",
    "source": "Penyedia kurs eksternal",
    "source_url": "https://openexchangerates.org/",
    "as_of": "2026-01-01T00:00:00.000Z",
    "fetched_at": "2026-01-01T00:00:05.000Z",
    "currency_count": 3,
    "includes_alternative": true,
    "refresh_interval_seconds": 300,
    "provider_plan": "Unlimited",
    "notice": "Illustrative response; not live rates."
  },
  "anchor": "USD",
  "data": [
    {
      "currency": "EUR",
      "value": 0.9
    },
    {
      "currency": "JPY",
      "value": 150
    }
  ]
}

/v1/quotes?anchor=EUR&targets=USD,JPY memberi unit tujuan per satu unit dasar. Duplikat dibuang; kode kosong, huruf kecil atau tidak tersedia mengembalikan 400.

ParameterTipeDeskripsi
anchorstringSimbol mata uang dasar; default USD. Semua simbol penyedia yang tersedia saat ini diterima.
data[].currencystringKe
data[].valuenumberrates[currency] / rates[anchor]

GET /v1/exchange

Jumlah numerik tidak negatif yang akan dikonversi.

ParameterTipeWajibDefaultDeskripsi
fromstringOpsionalUSDSimbol mata uang sumber; default USD.
tostringOpsionalKRWSimbol mata uang tujuan; default KRW.
quantitynumberOpsional1Jumlah numerik tidak negatif yang akan dikonversi.
cURL
curl --request GET 'https://lumeexchangerates.com/v1/exchange?from=USD&to=EUR&quantity=100'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "mode": "provider",
    "source": "Penyedia kurs eksternal",
    "source_url": "https://openexchangerates.org/",
    "as_of": "2026-01-01T00:00:00.000Z",
    "fetched_at": "2026-01-01T00:00:05.000Z",
    "currency_count": 3,
    "includes_alternative": true,
    "refresh_interval_seconds": 300,
    "provider_plan": "Unlimited",
    "notice": "Illustrative response; not live rates."
  },
  "data": {
    "from": "USD",
    "to": "EUR",
    "quantity": 100,
    "rate": 0.9,
    "result": 90
  }
}

/v1/exchange?from=USD&to=EUR&quantity=100. Selalu tentukan from dan to; rute GET lama ini memakai KRW sebagai default. Nilai kosong, negatif, NaN, tak terhingga dan luapan hasil mengembalikan 400.

ParameterTipeDeskripsi
data.ratenumberrates[to] / rates[from]
data.resultnumberquantity × rate

GET /api/rates/latest

Kurs terakhir diterbitkan

Parameter: —

cURL
curl --request GET 'https://lumeexchangerates.com/api/rates/latest'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "provider": "Penyedia kurs eksternal",
    "kind": "latest_published",
    "provider_timestamp": 1767225600,
    "published_at": "2026-01-01T00:00:00.000Z",
    "expected_interval_seconds": 300,
    "lag_seconds": 5,
    "stale": false,
    "timezone": "Asia/Seoul",
    "fetched_at": "2026-01-01T00:00:05.000Z",
    "persistent_storage": false
  },
  "data": {
    "base": "USD",
    "rates": {
      "USD": 1,
      "EUR": 0.9,
      "JPY": 150
    }
  }
}
ParameterTipeDeskripsi
data.basestringUSD
data.ratesobjectKurs relatif terhadap USD; periksa kode dalam respons terbaru.
meta.provider_timestampintegerUTC · UNIX seconds
meta.published_atstringISO 8601 · UTC
meta.fetched_atstringWaktu pengambilan server, berbeda dari publikasi penyedia.
meta.expected_interval_secondsintegerseconds
meta.stalebooleantrue jika usia melebihi max(3 × interval yang diharapkan, 900 detik).
meta.lag_secondsintegerDetik sejak publikasi penyedia.
meta.persistent_storagebooleanApakah layanan pengumpulan persisten telah terhubung.
meta.kindstringlatest_published | utc_daily

GET /api/currencies

Mata uang

ParameterTipeWajibDefaultDeskripsi
langstringOpsionalenen / ko / ja / zh / es / hi / bn / de / fr / nl / pt / it / ru / vi / th / ar / id / ur
cURL
curl --request GET 'https://lumeexchangerates.com/api/currencies?lang=en'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "provider": "Penyedia kurs eksternal",
    "kind": "latest_published",
    "provider_timestamp": 1767225600,
    "published_at": "2026-01-01T00:00:00.000Z",
    "expected_interval_seconds": 300,
    "lag_seconds": 5,
    "stale": false,
    "timezone": "Asia/Seoul",
    "fetched_at": "2026-01-01T00:00:05.000Z",
    "persistent_storage": false
  },
  "data": [
    {
      "code": "USD",
      "name": "US Dollar"
    },
    {
      "code": "EUR",
      "name": "Euro"
    }
  ]
}

Nama dilokalkan melalui Intl.DisplayNames; aset tak dikenal tetap memakai kode. Hanya kode dalam data terkini yang dikembalikan.

GET /api/rates/history

Gunakan /v1/history untuk tanggal tertentu dan /v1/series untuk rentang tanggal.

ParameterTipeWajibDefaultDeskripsi
fromstringOpsionalUSDDari
tostringOpsionalEURKe
periodenumOpsional1M1D | 1W | 1M | 3M | 1Y
cURL
curl --request GET 'https://lumeexchangerates.com/api/rates/history?from=USD&to=EUR&period=1W'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "kind": "utc_daily",
    "from": "USD",
    "to": "EUR",
    "period": "1W",
    "provider": "Penyedia kurs eksternal",
    "persistent_storage": false
  },
  "data": [
    {
      "time": "2026-01-01",
      "value": 0.9
    },
    {
      "time": "2026-01-02",
      "value": 0.91
    }
  ]
}

1W dimulai tujuh hari lalu; 1M, 3M dan 1Y mengikuti kalender. Data harian berakhir kemarin. Batas bulan dan tahun kabisat disesuaikan. Periode panjang dibagi per bulan, diurutkan dan dihapus duplikatnya.

ParameterTipeDeskripsi
data[].timestring | integerHarian: YYYY-MM-DD (UTC). Intrahari: detik UNIX.
data[].valuenumberrates[to] / rates[from]
meta.kindstringutc_daily | intraday
JSON
{
  "meta": {
    "kind": "intraday",
    "persistent_storage": false
  },
  "data": []
}

Tanpa layanan pengumpulan, 1D mengembalikan HTTP 200 dan daftar kosong; bukan galat atau data per menit. Mata uang yang belum ada pada periode historis dapat gagal.

GET /api/rates/previous

Hari UTC sebelumnya

ParameterTipeWajibDefaultDeskripsi
fromstringOpsionalUSDDari
tostringOpsionalEURKe
cURL
curl --request GET 'https://lumeexchangerates.com/api/rates/previous?from=USD&to=EUR'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "kind": "utc_daily",
    "reference_date": "2026-01-01",
    "reference_timestamp": "2026-01-01T23:59:59Z"
  },
  "data": {
    "from": "USD",
    "to": "EUR",
    "rate": 0.9,
    "rates": {
      "USD": 1,
      "EUR": 0.9
    }
  }
}

Dibandingkan dengan hari UTC sebelumnya. reference_timestamp adalah akhir hari logis, bukan waktu publikasi. Persentase: (terkini − acuan) / acuan × 100.

POST /api/convert

Konverter

ParameterTipeWajibDefaultDeskripsi
Content-TypeheaderWajibapplication/jsonapplication/json
amountnumberWajib—0 ≤ amount ≤ 1e15; finite
fromstringWajib—Dari
tostringWajib—Ke
cURL
curl --request POST 'https://lumeexchangerates.com/api/convert' \
  --header 'Content-Type: application/json' \
  --data '{"amount":100,"from":"USD","to":"EUR"}'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "provider": "Penyedia kurs eksternal",
    "kind": "latest_published",
    "provider_timestamp": 1767225600,
    "published_at": "2026-01-01T00:00:00.000Z",
    "expected_interval_seconds": 300,
    "lag_seconds": 5,
    "stale": false,
    "timezone": "Asia/Seoul",
    "fetched_at": "2026-01-01T00:00:05.000Z",
    "persistent_storage": false
  },
  "data": {
    "amount": 100,
    "from": "USD",
    "to": "EUR",
    "rate": 0.9,
    "result": 90
  }
}

Kirim amount sebagai angka JSON; string "100" mengembalikan 400. Kode harus ada di snapshot terkini. Tidak menjalankan transfer atau perdagangan.

GET /v1/history

Gunakan /v1/history untuk tanggal tertentu dan /v1/series untuk rentang tanggal.

ParameterTipeWajibDefaultDeskripsi
dateYYYY-MM-DDWajib—1999-01-01 ≤ date ≤ UTC today
anchorstringOpsionalUSDDari
targetsCSVOpsionalallKe
cURL
curl --request GET 'https://lumeexchangerates.com/v1/history?date=2026-01-01&anchor=EUR&targets=USD,JPY'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "date": "2026-01-01",
    "published_at": "2026-01-01T23:00:00Z",
    "partial_day": false
  },
  "anchor": "EUR",
  "data": [
    {
      "currency": "USD",
      "value": 1.1
    }
  ]
}
ParameterTipeDeskripsi
meta.partial_daybooleanReferensi harian UTC
meta.published_atISO 8601 UTCKurs terakhir diterbitkan

GET /v1/series

Gunakan /v1/history untuk tanggal tertentu dan /v1/series untuk rentang tanggal.

ParameterTipeWajibDefaultDeskripsi
start / endYYYY-MM-DDWajib—1999-01-01 ≤ start ≤ end < UTC today; ≤ 366 days inclusive
anchor / targetsstring / CSVOpsionalUSD / allsame as /v1/quotes
cURL
curl --request GET 'https://lumeexchangerates.com/v1/series?start=2026-01-01&end=2026-01-07&anchor=USD&targets=EUR'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "start": "2026-01-01",
    "end": "2026-01-02",
    "timezone": "UTC",
    "count": 2
  },
  "anchor": "USD",
  "data": [
    {
      "date": "2026-01-01",
      "rates": [
        {
          "currency": "EUR",
          "value": 0.9
        }
      ]
    },
    {
      "date": "2026-01-02",
      "rates": [
        {
          "currency": "EUR",
          "value": 0.91
        }
      ]
    }
  ]
}

OHLC melalui /v1/candles memerlukan hak akses penyedia. Periksa /v1/capabilities; ketersediaan mengikuti paket yang terhubung.

JSON
{
  "timezone": "UTC",
  "date_bounds": "inclusive",
  "max_days": 366,
  "upstream_chunk": "calendar_month"
}

GET /v1/candles

OHLC melalui /v1/candles memerlukan hak akses penyedia. Periksa /v1/capabilities; ketersediaan mengikuti paket yang terhubung.

ParameterTipeWajibDefaultDeskripsi
startYYYY-MM-DDTHH:mm:00ZWajib—UTC; completed period only; ≥ 2016-12-19
periodenumWajib—1m | 5m | 15m | 30m | 1h | 12h | 1d | 1w | 1mo
anchor / targetsstring / CSVOpsionalUSD / allprovider base / symbols
cURL
curl --request GET 'https://lumeexchangerates.com/v1/candles?start=2026-01-01T00%3A00%3A00Z&period=1d&anchor=USD&targets=EUR'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "meta": {
    "start": "2026-01-01T00:00:00Z",
    "end": "2026-01-01T23:59:59Z",
    "period": "1d"
  },
  "anchor": "USD",
  "data": [
    {
      "currency": "EUR",
      "open": 0.9,
      "high": 0.92,
      "low": 0.89,
      "close": 0.91,
      "average": 0.905
    }
  ]
}
JSON
{
  "source": "provider_ohlc",
  "synthetic": false,
  "cross_rate_ohlc": false,
  "max_age": {
    "1m": "1h",
    "5m": "24h",
    "15m": "24h",
    "30m": "32d",
    "1h": "32d"
  },
  "alignment_minutes": {
    "5m": 5,
    "15m": 15,
    "30m": 30,
    "1h": 30,
    "12h": 30,
    "1d": 30
  },
  "calendar_alignment": {
    "1w": "00:00 UTC",
    "1mo": "YYYY-MM-01T00:00:00Z"
  }
}

GET /v1/capabilities

Ketersediaan

Parameter: —

cURL
curl --request GET 'https://lumeexchangerates.com/v1/capabilities'

Nilai dan tanggal adalah contoh, bukan kurs terkini. Daftar dapat diringkas; gunakan uji API untuk data nyata.

JSON
{
  "data": {
    "latest": true,
    "currencies": true,
    "conversion": "latest_snapshot",
    "historical": "verified_on_request",
    "time_series": true,
    "ohlc": false,
    "refresh_interval_seconds": 300,
    "customer_api_keys": false
  }
}

OHLC melalui /v1/candles memerlukan hak akses penyedia. Periksa /v1/capabilities; ketersediaan mengikuti paket yang terhubung.

Data dan presisi

Kurs indikatif bukan penawaran bank atau harga transaksi yang dijamin. Konversi memakai snapshot yang sama; bulatkan saat menampilkan atau menyelesaikan transaksi.

Formula
rate = rates[to] / rates[from]
result = amount * rate

Kurs mempertahankan presisi angka pecahan tanpa pemotongan desimal tetap. Bulatkan hanya untuk tampilan atau sesuai kebijakan akuntansi Anda.

Satu unit sumber, termasuk JPY. Kalikan 100 hanya untuk tampilan jika diperlukan. Perhatikan galat biner JavaScript dan tetapkan aturan desimal serta pembulatan saat penyelesaian.

Tanggal dan waktu

UNIX berupa detik UTC; ISO memakai Z. Tanggal UTC bisa berbeda dari lokal. Situs memakai zona browser; meta.timezone hanya petunjuk tampilan.

ParameterTipeDeskripsi
/v1 meta.as_ofISO 8601 | YYYY-MM-DDWaktu penyedia
/v1 meta.refresh_interval_secondsintegerCache
/v1 meta.currency_countinteger… mata uang tersedia
/v1 meta.modeprovider | dailySumber data
/api meta.published_atISO 8601 UTCKurs terakhir diterbitkan
history data[].timeYYYY-MM-DD UTC | UNIX secondsReferensi harian UTC

Kesalahan

HTTPcodeDeskripsi
400INVALID_CURRENCY / INVALID_INPUT / INVALID_CONVERSION / INVALID_JSON / INVALID_PERIODMasukkan jumlah yang tidak negatif
405METHOD_NOT_ALLOWEDGET: /v1/*, /api/rates/*, /api/currencies; POST: /api/convert
404NOT_FOUND/api/rates/*
422HISTORY_NOT_IN_PLAN / DATA_UNAVAILABLEKetersediaan
429RATE_LIMITED/api/* · 90 / IP / minute
404NOT_FOUNDUnknown /v1 endpoint
422FEATURE_NOT_IN_PLAN / HISTORY_NOT_IN_PLAN / OHLC_NOT_IN_PLANKetersediaan
400INVALID_DATE / INVALID_DATE_RANGE / INVALID_PERIOD / INCOMPLETE_PERIODMasukkan jumlah yang tidak negatif
503PROVIDER_UNAVAILABLE / DATA_UNAVAILABLE / SERVICE_UNAVAILABLEKurs tidak tersedia. Silakan coba lagi nanti.
JSON
{
  "error": {
    "code": "INVALID_CURRENCY",
    "message": "Symbol not available in latest provider data"
  }
}

message dapat tidak disertakan. Gunakan HTTP dan error.code. Perbaiki masukan; untuk 429 atau 503 sementara gunakan percobaan terbatas dengan jeda eksponensial dan acak. Retry-After tidak dijamin.

Batas dan cache

Data di-cache dengan interval konfigurasi lima menit. /api: 90 permintaan per menit per IP, lokal pada Worker langsung atau bersama melalui Redis. /v1 belum menerapkan kuota paket mendatang.

Cache-Control: no-store berlaku untuk respons, bukan cache penyedia di server. Gunakan ulang snapshot menurut publikasi. Saat gangguan, data valid terakhir bisa dikembalikan: periksa stale atau as_of. Cache Worker tidak persisten.

JSON
{
  "endpoints": [
    "/v1/history",
    "/v1/series",
    "/v1/candles",
    "/v1/capabilities"
  ],
  "requests_per_ip_per_minute": 60,
  "cache": "in_process",
  "completed_history_cache_seconds": 3600,
  "current_day_cache_seconds": 60
}

Ketersediaan

OHLC melalui /v1/candles memerlukan hak akses penyedia. Periksa /v1/capabilities; ketersediaan mengikuti paket yang terhubung.

OHLC melalui /v1/candles memerlukan hak akses penyedia. Periksa /v1/capabilities; ketersediaan mengikuti paket yang terhubung.

Uji API

Panggil API di situs ini. Kunci penyedia tetap tersimpan di server.

PERMINTAAN / cURL
RESPONS / JSON
Jalankan permintaan untuk melihat respons JSON nyata.
WELCOME TO LUME EXCHANGE RATES

Mulai berkarya dengan Lume Exchange Rates

Jelajahi kurs nyata tanpa kartu. Akses API gratis masih berupa pratinjau; tidak ada pembelian akun atau penagihan.

Kurs nyata · Tanpa pembayaran

SUBSCRIPTION / USD

Tinjau langganan Anda

Langganan berulang dalam USD. Tinjau pajak dan total akhir di jendela pembayaran aman sebelum menyetujui.

Pajak yang berlaku ditampilkan saat pembayaran. Anda dapat mengelola perpanjangan dan pembatalan melalui portal tagihan.

Paddle

ACCOUNT / BILLING

Langganan Anda