Présentation
Lume Exchange Rates réunit comparaison, conversion et historique pour les voyages, les prix internationaux et les produits.
La source configurée est Fournisseur externe de taux de change. Les réponses précisent la source et l’heure de publication. Les devises disponibles proviennent des données réelles.
Démarrage rapide
Consultez d’abord le catalogue des devises, puis choisissez anchor et targets. Les champs et codes sont identiques dans toutes les langues.
curl --request GET 'https://lumeexchangerates.com/v1/quotes?anchor=USD&targets=EUR,JPY'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);L’exemple du navigateur utilise la même origine. Les requêtes cURL et serveur vers un site privé nécessitent une autorisation ; l’URL ne contourne pas la connexion.
Accès et authentification
L’accès suit les autorisations du site et la session du navigateur. Pas encore de clés API client, d’authentification Bearer client ou d’API publique entre origines. Gardez l’App ID du fournisseur sur le serveur.
| Paramètre | Type | Description |
|---|---|---|
| Base URL | URL | https://lumeexchangerates.com |
| Content-Type | header | application/json |
| Customer API key | — | Cette préversion hébergée utilise la session connectée du navigateur. Elle ne délivre pas encore de clés API individuelles. |
| Provider App ID | server secret | OPEN_EXCHANGE_RATES_APP_ID |
| CORS | same-origin | Aucun en-tête autorisant les requêtes entre origines n’est actuellement fourni. |
Authorization: Token est réservé au serveur Lume Exchange Rates pour contacter Fournisseur externe de taux de change, et non à l’authentification des clients. Le contrôle d’accès peut renvoyer du HTML ou une redirection : vérifiez le statut HTTP et Content-Type.
Points de terminaison
| Method | Path | Description |
|---|---|---|
| GET | /v1/currencies | Tous les symboles disposant de taux actuels, avec les noms du fournisseur. Inclut les devises alternatives et métaux disponibles. |
| GET | /v1/quotes | Symbole de base ; USD par défaut. Tous les symboles actuels du fournisseur sont acceptés. |
| GET | /v1/exchange | Montant numérique positif ou nul à convertir. |
| GET | /v1/history | Consultez une date avec /v1/history et une période avec /v1/series. |
| GET | /v1/series | Consultez une date avec /v1/history et une période avec /v1/series. |
| GET | /v1/candles | OHLC |
| GET | /v1/capabilities | Disponibilité |
| GET | /api/rates/latest | Dernier taux publié |
| GET | /api/currencies | Devise |
| GET | /api/rates/history | Graphiques |
| GET | /api/rates/previous | Jour UTC précédent |
| POST | /api/convert | Convertisseur |
/v1 propose des requêtes compactes ; /api fournit les contrats de taux actuels, d’historique et de conversion du site. Leurs valeurs par défaut et formats de réponse diffèrent.
GET /v1/currencies
Tous les symboles disposant de taux actuels, avec les noms du fournisseur. Inclut les devises alternatives et métaux disponibles.
Paramètre: —
curl --request GET 'https://lumeexchangerates.com/v1/currencies'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"meta": {
"mode": "provider",
"source": "Fournisseur externe de taux de change",
"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"
}
]
}| Paramètre | Type | Description |
|---|---|---|
| data[].code | string | Code en majuscules. Les actifs alternatifs peuvent dépasser trois caractères ou contenir des traits de soulignement. |
| data[].name | string | Nom de devise fourni par le fournisseur, ou code si le nom est absent. |
GET /v1/quotes
Symbole de base ; USD par défaut. Tous les symboles actuels du fournisseur sont acceptés.
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| anchor | string | Facultatif | USD | Symbole de base ; USD par défaut. Tous les symboles actuels du fournisseur sont acceptés. |
| targets | string | Facultatif | toutes | Symboles cibles séparés par des virgules. Omettez ce paramètre pour renvoyer tous les symboles disponibles. |
curl --request GET 'https://lumeexchangerates.com/v1/quotes?anchor=USD&targets=EUR,JPY'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"meta": {
"mode": "provider",
"source": "Fournisseur externe de taux de change",
"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
}
]
}Exemple : /v1/quotes?anchor=EUR&targets=USD,JPY. value représente les unités cibles par unité de base. Les doublons sont supprimés ; les codes vides, en minuscules ou indisponibles renvoient 400.
| Paramètre | Type | Description |
|---|---|---|
| anchor | string | Symbole de base ; USD par défaut. Tous les symboles actuels du fournisseur sont acceptés. |
| data[].currency | string | Vers |
| data[].value | number | rates[currency] / rates[anchor] |
GET /v1/exchange
Montant numérique positif ou nul à convertir.
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| from | string | Facultatif | USD | Symbole de la devise source ; USD par défaut. |
| to | string | Facultatif | KRW | Symbole de la devise cible ; KRW par défaut. |
| quantity | number | Facultatif | 1 | Montant numérique positif ou nul à convertir. |
curl --request GET 'https://lumeexchangerates.com/v1/exchange?from=USD&to=EUR&quantity=100'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"meta": {
"mode": "provider",
"source": "Fournisseur externe de taux de change",
"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
}
}Exemple : /v1/exchange?from=USD&to=EUR&quantity=100. Précisez toujours from et to. Cette ancienne route GET utilise KRW comme cible par défaut. Valeurs vides, négatives, NaN, infinies ou dépassements de capacité renvoient 400.
| Paramètre | Type | Description |
|---|---|---|
| data.rate | number | rates[to] / rates[from] |
| data.result | number | quantity × rate |
GET /api/rates/latest
Dernier taux publié
Paramètre: —
curl --request GET 'https://lumeexchangerates.com/api/rates/latest'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"meta": {
"provider": "Fournisseur externe de taux de change",
"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
}
}
}| Paramètre | Type | Description |
|---|---|---|
| data.base | string | USD |
| data.rates | object | Tous les taux disponibles relatifs à USD ; vérifiez les codes dans la dernière réponse. |
| meta.provider_timestamp | integer | UTC · UNIX seconds |
| meta.published_at | string | ISO 8601 · UTC |
| meta.fetched_at | string | Heure de récupération du serveur, distincte de la publication du fournisseur. |
| meta.expected_interval_seconds | integer | seconds |
| meta.stale | boolean | true si l’ancienneté dépasse max(3 × intervalle prévu, 900 secondes). |
| meta.lag_seconds | integer | Secondes écoulées depuis la publication du fournisseur. |
| meta.persistent_storage | boolean | Indique si le service de collecte persistante est connecté. |
| meta.kind | string | latest_published | utc_daily |
GET /api/currencies
Devise
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| lang | string | Facultatif | en | en / ko / ja / zh / es / hi / bn / de / fr / nl / pt / it / ru / vi / th / ar / id / ur |
curl --request GET 'https://lumeexchangerates.com/api/currencies?lang=en'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"meta": {
"provider": "Fournisseur externe de taux de change",
"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"
}
]
}Les noms utilisent Intl.DisplayNames. Les actifs inconnus conservent leur code. Seuls les codes présents dans les données actuelles sont renvoyés.
GET /api/rates/history
Consultez une date avec /v1/history et une période avec /v1/series.
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| from | string | Facultatif | USD | De |
| to | string | Facultatif | EUR | Vers |
| period | enum | Facultatif | 1M | 1D | 1W | 1M | 3M | 1Y |
curl --request GET 'https://lumeexchangerates.com/api/rates/history?from=USD&to=EUR&period=1W'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"meta": {
"kind": "utc_daily",
"from": "USD",
"to": "EUR",
"period": "1W",
"provider": "Fournisseur externe de taux de change",
"persistent_storage": false
},
"data": [
{
"time": "2026-01-01",
"value": 0.9
},
{
"time": "2026-01-02",
"value": 0.91
}
]
}1W commence il y a sept jours ; 1M, 3M et 1Y suivent le calendrier. Les données quotidiennes finissent hier et excluent le jour UTC inachevé. Les fins de mois et années bissextiles sont ajustées. Les longues périodes sont découpées par mois, triées, fusionnées et dédupliquées.
| Paramètre | Type | Description |
|---|---|---|
| data[].time | string | integer | Quotidien : YYYY-MM-DD (UTC). Intrajournalier : secondes UNIX. |
| data[].value | number | rates[to] / rates[from] |
| meta.kind | string | utc_daily | intraday |
{
"meta": {
"kind": "intraday",
"persistent_storage": false
},
"data": []
}Sans service de collecte, 1D renvoie HTTP 200 et une liste vide. Ce n’est ni une erreur ni des données à la minute. Une devise absente à une période historique peut ne pas être consultable.
GET /api/rates/previous
Jour UTC précédent
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| from | string | Facultatif | USD | De |
| to | string | Facultatif | EUR | Vers |
curl --request GET 'https://lumeexchangerates.com/api/rates/previous?from=USD&to=EUR'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"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
}
}
}La comparaison utilise la référence du jour UTC précédent. reference_timestamp est la fin logique du jour, pas l’heure réelle de publication. Variation : (actuel − référence) / référence × 100.
POST /api/convert
Convertisseur
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| Content-Type | header | Obligatoire | application/json | application/json |
| amount | number | Obligatoire | — | 0 ≤ amount ≤ 1e15; finite |
| from | string | Obligatoire | — | De |
| to | string | Obligatoire | — | Vers |
curl --request POST 'https://lumeexchangerates.com/api/convert' \
--header 'Content-Type: application/json' \
--data '{"amount":100,"from":"USD","to":"EUR"}'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"meta": {
"provider": "Fournisseur externe de taux de change",
"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
}
}Envoyez amount comme nombre JSON : la chaîne "100" renvoie 400. Les devises doivent exister dans l’instantané actuel. Ce point de terminaison calcule une valeur ; il n’exécute aucun virement ni échange.
GET /v1/history
Consultez une date avec /v1/history et une période avec /v1/series.
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| date | YYYY-MM-DD | Obligatoire | — | 1999-01-01 ≤ date ≤ UTC today |
| anchor | string | Facultatif | USD | De |
| targets | CSV | Facultatif | all | Vers |
curl --request GET 'https://lumeexchangerates.com/v1/history?date=2026-01-01&anchor=EUR&targets=USD,JPY'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"meta": {
"date": "2026-01-01",
"published_at": "2026-01-01T23:00:00Z",
"partial_day": false
},
"anchor": "EUR",
"data": [
{
"currency": "USD",
"value": 1.1
}
]
}| Paramètre | Type | Description |
|---|---|---|
| meta.partial_day | boolean | Référence quotidienne UTC |
| meta.published_at | ISO 8601 UTC | Dernier taux publié |
GET /v1/series
Consultez une date avec /v1/history et une période avec /v1/series.
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| start / end | YYYY-MM-DD | Obligatoire | — | 1999-01-01 ≤ start ≤ end < UTC today; ≤ 366 days inclusive |
| anchor / targets | string / CSV | Facultatif | USD / all | same as /v1/quotes |
curl --request GET 'https://lumeexchangerates.com/v1/series?start=2026-01-01&end=2026-01-07&anchor=USD&targets=EUR'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"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 via /v1/candles nécessite les droits du fournisseur. Consultez /v1/capabilities ; la disponibilité dépend de l’offre configurée.
{
"timezone": "UTC",
"date_bounds": "inclusive",
"max_days": 366,
"upstream_chunk": "calendar_month"
}GET /v1/candles
OHLC via /v1/candles nécessite les droits du fournisseur. Consultez /v1/capabilities ; la disponibilité dépend de l’offre configurée.
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| start | YYYY-MM-DDTHH:mm:00Z | Obligatoire | — | UTC; completed period only; ≥ 2016-12-19 |
| period | enum | Obligatoire | — | 1m | 5m | 15m | 30m | 1h | 12h | 1d | 1w | 1mo |
| anchor / targets | string / CSV | Facultatif | USD / all | provider base / symbols |
curl --request GET 'https://lumeexchangerates.com/v1/candles?start=2026-01-01T00%3A00%3A00Z&period=1d&anchor=USD&targets=EUR'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"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
}
]
}{
"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
Disponibilité
Paramètre: —
curl --request GET 'https://lumeexchangerates.com/v1/capabilities'Les valeurs et dates illustrent la structure, pas les taux actuels. Les listes peuvent être abrégées. Utilisez l’explorateur API pour consulter les données réelles.
{
"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 via /v1/candles nécessite les droits du fournisseur. Consultez /v1/capabilities ; la disponibilité dépend de l’offre configurée.
Données et précision
Les taux sont indicatifs, sans offre bancaire ni prix garanti. Une conversion utilise un même instantané ; arrondissez à l’affichage ou au règlement.
rate = rates[to] / rates[from]
result = amount * rateLes taux conservent leur précision flottante sans troncature à un nombre fixe de décimales. Arrondissez uniquement pour l’affichage ou selon vos règles comptables.
Tous les taux portent sur une unité source, JPY compris. Multipliez par 100 uniquement à l’affichage si nécessaire. Tenez compte des erreurs binaires JavaScript et définissez vos règles décimales et d’arrondi pour le règlement.
Dates et heures
Les temps UNIX sont des secondes UTC ; les dates ISO utilisent Z. Le jour UTC peut différer du jour local. Le site utilise le fuseau du navigateur. meta.timezone est une indication d’affichage, sans modifier la signification du timestamp.
| Paramètre | Type | Description |
|---|---|---|
| /v1 meta.as_of | ISO 8601 | YYYY-MM-DD | Horodatage du fournisseur |
| /v1 meta.refresh_interval_seconds | integer | Cache |
| /v1 meta.currency_count | integer | … devises disponibles |
| /v1 meta.mode | provider | daily | Source des données |
| /api meta.published_at | ISO 8601 UTC | Dernier taux publié |
| history data[].time | YYYY-MM-DD UTC | UNIX seconds | Référence quotidienne UTC |
Erreurs
| HTTP | code | Description |
|---|---|---|
| 400 | INVALID_CURRENCY / INVALID_INPUT / INVALID_CONVERSION / INVALID_JSON / INVALID_PERIOD | Saisissez un montant positif ou nul |
| 405 | METHOD_NOT_ALLOWED | GET: /v1/*, /api/rates/*, /api/currencies; POST: /api/convert |
| 404 | NOT_FOUND | /api/rates/* |
| 422 | HISTORY_NOT_IN_PLAN / DATA_UNAVAILABLE | Disponibilité |
| 429 | RATE_LIMITED | /api/* · 90 / IP / minute |
| 404 | NOT_FOUND | Unknown /v1 endpoint |
| 422 | FEATURE_NOT_IN_PLAN / HISTORY_NOT_IN_PLAN / OHLC_NOT_IN_PLAN | Disponibilité |
| 400 | INVALID_DATE / INVALID_DATE_RANGE / INVALID_PERIOD / INCOMPLETE_PERIOD | Saisissez un montant positif ou nul |
| 503 | PROVIDER_UNAVAILABLE / DATA_UNAVAILABLE / SERVICE_UNAVAILABLE | Les taux sont indisponibles. Réessayez dans un instant. |
{
"error": {
"code": "INVALID_CURRENCY",
"message": "Symbol not available in latest provider data"
}
}message peut être absent. Traitez le statut HTTP et error.code. Corrigez d’abord les entrées ; pour 429 ou 503 temporaire, utilisez un recul exponentiel limité avec délai aléatoire. Retry-After n’est pas garanti.
Limites et cache
Les données sont mises en cache ; la configuration actuelle vise cinq minutes. /api : 90 requêtes par minute par IP, localement par instance en mode direct et globalement avec Redis. /v1 n’applique pas encore les futurs quotas.
Les réponses utilisent Cache-Control: no-store. Le cache du navigateur diffère du cache fournisseur du serveur. Réutilisez les instantanés selon leur publication. En cas de panne, le dernier état valide peut revenir : vérifiez stale ou as_of. Le cache direct Worker n’est pas persistant.
{
"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
}Disponibilité
OHLC via /v1/candles nécessite les droits du fournisseur. Consultez /v1/capabilities ; la disponibilité dépend de l’offre configurée.
OHLC via /v1/candles nécessite les droits du fournisseur. Consultez /v1/capabilities ; la disponibilité dépend de l’offre configurée.
Explorateur API
Appelez l’API de ce site. Votre clé fournisseur reste sur le serveur.
Exécutez la requête pour afficher la véritable réponse JSON.