LUME EXCHANGE RATES / API REFERENCE

Documentación

La fuente configurada es Proveedor externo de tipos de cambio. Las respuestas incluyen la fuente y la fecha de publicación. Las divisas disponibles dependen de los datos reales.

Base URLhttps://lumeexchangerates.com

Resumen

Lume Exchange Rates reúne comparación, conversión e historial para viajes, precios internacionales y desarrollo de productos.

La fuente configurada es Proveedor externo de tipos de cambio. Las respuestas incluyen la fuente y la fecha de publicación. Las divisas disponibles dependen de los datos reales.

HTTPSJSONUTF-8GET / POSTUTC

Inicio rápido

Consulta primero el catálogo de divisas y después elige anchor y targets. Los campos y códigos son iguales en todos los idiomas.

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);

El ejemplo del navegador usa el mismo origen. cURL y las solicitudes de servidor a un sitio privado requieren acceso autorizado; la URL no evita el inicio de sesión.

Acceso y autenticación

El acceso sigue los permisos del sitio y la sesión del navegador. No hay claves de cliente, autenticación Bearer de cliente ni API pública entre orígenes. Conserva el App ID del proveedor en el servidor.

ParámetroTipoDescripción
Base URLURLhttps://lumeexchangerates.com
Content-Typeheaderapplication/json
Customer API key—Esta vista previa usa la sesión del navegador. Aún no emite claves API individuales para clientes.
Provider App IDserver secretOPEN_EXCHANGE_RATES_APP_ID
CORSsame-originActualmente no se envían cabeceras que permitan solicitudes entre orígenes.

Authorization: Token solo lo usa el servidor Lume Exchange Rates para contactar con Proveedor externo de tipos de cambio; no autentica clientes. El control de acceso puede devolver HTML o redirecciones: comprueba el estado HTTP y Content-Type.

Endpoints

MethodPathDescripción
GET/v1/currenciesTodos los símbolos con tipos actuales y sus nombres. Incluye divisas alternativas y metales disponibles.
GET/v1/quotesDivisa base; USD por defecto. Acepta todos los símbolos actuales del proveedor.
GET/v1/exchangeImporte numérico no negativo que se desea convertir.
GET/v1/historyConsulta una fecha con /v1/history y un intervalo con /v1/series.
GET/v1/seriesConsulta una fecha con /v1/history y un intervalo con /v1/series.
GET/v1/candlesOHLC
GET/v1/capabilitiesDisponibilidad
GET/api/rates/latestÚltimo tipo publicado
GET/api/currenciesDivisa
GET/api/rates/historyGráficos
GET/api/rates/previousDía UTC anterior
POST/api/convertConversor

/v1 ofrece consultas simplificadas; /api proporciona los contratos de tipos actuales, historial y conversión de la web. Sus valores predeterminados y respuestas son distintos.

GET /v1/currencies

Todos los símbolos con tipos actuales y sus nombres. Incluye divisas alternativas y metales disponibles.

Parámetro: —

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

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

JSON
{
  "meta": {
    "mode": "provider",
    "source": "Proveedor externo de tipos de cambio",
    "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"
    }
  ]
}
ParámetroTipoDescripción
data[].codestringCódigo en mayúsculas. Los activos alternativos pueden superar tres caracteres o incluir guiones bajos.
data[].namestringNombre de la divisa proporcionado por el proveedor, o su código si no hay nombre.

GET /v1/quotes

Divisa base; USD por defecto. Acepta todos los símbolos actuales del proveedor.

ParámetroTipoObligatorioPredeterminadoDescripción
anchorstringOpcionalUSDDivisa base; USD por defecto. Acepta todos los símbolos actuales del proveedor.
targetsstringOpcionaltodasSímbolos de destino separados por comas. Omítelo para devolver todos los símbolos disponibles.
cURL
curl --request GET 'https://lumeexchangerates.com/v1/quotes?anchor=USD&targets=EUR,JPY'

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

JSON
{
  "meta": {
    "mode": "provider",
    "source": "Proveedor externo de tipos de cambio",
    "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
    }
  ]
}

Ejemplo: /v1/quotes?anchor=EUR&targets=USD,JPY. value indica unidades de destino por unidad base. Se eliminan targets duplicados; los códigos vacíos, en minúsculas o no disponibles devuelven 400.

ParámetroTipoDescripción
anchorstringDivisa base; USD por defecto. Acepta todos los símbolos actuales del proveedor.
data[].currencystringA
data[].valuenumberrates[currency] / rates[anchor]

GET /v1/exchange

Importe numérico no negativo que se desea convertir.

ParámetroTipoObligatorioPredeterminadoDescripción
fromstringOpcionalUSDDivisa de origen; USD por defecto.
tostringOpcionalKRWDivisa de destino; KRW por defecto.
quantitynumberOpcional1Importe numérico no negativo que se desea convertir.
cURL
curl --request GET 'https://lumeexchangerates.com/v1/exchange?from=USD&to=EUR&quantity=100'

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

JSON
{
  "meta": {
    "mode": "provider",
    "source": "Proveedor externo de tipos de cambio",
    "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
  }
}

Ejemplo: /v1/exchange?from=USD&to=EUR&quantity=100. Especifica siempre from y to. Esta ruta GET heredada usa KRW como destino predeterminado. Los valores vacíos, negativos, NaN, infinitos o resultados desbordados devuelven 400.

ParámetroTipoDescripción
data.ratenumberrates[to] / rates[from]
data.resultnumberquantity × rate

GET /api/rates/latest

Último tipo publicado

Parámetro: —

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

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

JSON
{
  "meta": {
    "provider": "Proveedor externo de tipos de cambio",
    "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
    }
  }
}
ParámetroTipoDescripción
data.basestringUSD
data.ratesobjectTipos disponibles relativos a USD; verifica los símbolos en la respuesta más reciente.
meta.provider_timestampintegerUTC · UNIX seconds
meta.published_atstringISO 8601 · UTC
meta.fetched_atstringHora de recuperación del servidor, distinta de la publicación del proveedor.
meta.expected_interval_secondsintegerseconds
meta.stalebooleanEs true si la antigüedad supera max(3 × intervalo previsto, 900 segundos).
meta.lag_secondsintegerSegundos desde la publicación del proveedor.
meta.persistent_storagebooleanIndica si está conectado el servicio de recopilación persistente.
meta.kindstringlatest_published | utc_daily

GET /api/currencies

Divisa

ParámetroTipoObligatorioPredeterminadoDescripción
langstringOpcionalenen / 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'

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

JSON
{
  "meta": {
    "provider": "Proveedor externo de tipos de cambio",
    "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"
    }
  ]
}

Los nombres se localizan con Intl.DisplayNames. Los activos no reconocidos conservan su código. Solo se devuelven símbolos presentes en los datos actuales.

GET /api/rates/history

Consulta una fecha con /v1/history y un intervalo con /v1/series.

ParámetroTipoObligatorioPredeterminadoDescripción
fromstringOpcionalUSDDe
tostringOpcionalEURA
periodenumOpcional1M1D | 1W | 1M | 3M | 1Y
cURL
curl --request GET 'https://lumeexchangerates.com/api/rates/history?from=USD&to=EUR&period=1W'

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

JSON
{
  "meta": {
    "kind": "utc_daily",
    "from": "USD",
    "to": "EUR",
    "period": "1W",
    "provider": "Proveedor externo de tipos de cambio",
    "persistent_storage": false
  },
  "data": [
    {
      "time": "2026-01-01",
      "value": 0.9
    },
    {
      "time": "2026-01-02",
      "value": 0.91
    }
  ]
}

1W comienza hace siete días; 1M, 3M y 1Y siguen el calendario. Todos terminan ayer y excluyen el día UTC incompleto. Se ajustan finales de mes y años bisiestos. Los intervalos largos se dividen por mes y se combinan en orden, sin fechas duplicadas.

ParámetroTipoDescripción
data[].timestring | integerDiario: YYYY-MM-DD (UTC). Intradía: segundos UNIX.
data[].valuenumberrates[to] / rates[from]
meta.kindstringutc_daily | intraday
JSON
{
  "meta": {
    "kind": "intraday",
    "persistent_storage": false
  },
  "data": []
}

Sin servicio de recopilación, 1D devuelve HTTP 200 y una lista vacía. No es un error ni datos por minuto. Las divisas inexistentes en el período histórico pueden fallar.

GET /api/rates/previous

Día UTC anterior

ParámetroTipoObligatorioPredeterminadoDescripción
fromstringOpcionalUSDDe
tostringOpcionalEURA
cURL
curl --request GET 'https://lumeexchangerates.com/api/rates/previous?from=USD&to=EUR'

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

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
    }
  }
}

La comparación usa la referencia del día UTC anterior. reference_timestamp es el cierre lógico del día, no la publicación real. Variación porcentual: (actual − referencia) / referencia × 100.

POST /api/convert

Conversor

ParámetroTipoObligatorioPredeterminadoDescripción
Content-TypeheaderObligatorioapplication/jsonapplication/json
amountnumberObligatorio—0 ≤ amount ≤ 1e15; finite
fromstringObligatorio—De
tostringObligatorio—A
cURL
curl --request POST 'https://lumeexchangerates.com/api/convert' \
  --header 'Content-Type: application/json' \
  --data '{"amount":100,"from":"USD","to":"EUR"}'

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

JSON
{
  "meta": {
    "provider": "Proveedor externo de tipos de cambio",
    "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
  }
}

Envía amount como número JSON; la cadena "100" devuelve 400. Los símbolos deben existir en la instantánea actual. La ruta calcula un valor; no ejecuta transferencias ni operaciones.

GET /v1/history

Consulta una fecha con /v1/history y un intervalo con /v1/series.

ParámetroTipoObligatorioPredeterminadoDescripción
dateYYYY-MM-DDObligatorio—1999-01-01 ≤ date ≤ UTC today
anchorstringOpcionalUSDDe
targetsCSVOpcionalallA
cURL
curl --request GET 'https://lumeexchangerates.com/v1/history?date=2026-01-01&anchor=EUR&targets=USD,JPY'

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

JSON
{
  "meta": {
    "date": "2026-01-01",
    "published_at": "2026-01-01T23:00:00Z",
    "partial_day": false
  },
  "anchor": "EUR",
  "data": [
    {
      "currency": "USD",
      "value": 1.1
    }
  ]
}
ParámetroTipoDescripción
meta.partial_daybooleanReferencia diaria UTC
meta.published_atISO 8601 UTCÚltimo tipo publicado

GET /v1/series

Consulta una fecha con /v1/history y un intervalo con /v1/series.

ParámetroTipoObligatorioPredeterminadoDescripción
start / endYYYY-MM-DDObligatorio—1999-01-01 ≤ start ≤ end < UTC today; ≤ 366 days inclusive
anchor / targetsstring / CSVOpcionalUSD / 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'

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

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 en /v1/candles requiere autorización del proveedor. Consulta /v1/capabilities; la disponibilidad depende del plan configurado.

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

GET /v1/candles

OHLC en /v1/candles requiere autorización del proveedor. Consulta /v1/capabilities; la disponibilidad depende del plan configurado.

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

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

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

Disponibilidad

Parámetro: —

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

Los valores y fechas ilustran la estructura; no son tipos actuales. Las listas pueden estar abreviadas. Usa el explorador API para obtener datos reales.

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 en /v1/candles requiere autorización del proveedor. Consulta /v1/capabilities; la disponibilidad depende del plan configurado.

Datos y precisión

Los tipos son indicativos, no ofertas bancarias ni precios garantizados. La conversión usa una misma instantánea; redondea al mostrar o liquidar.

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

No se truncan los tipos a decimales fijos. Redondea al mostrar o según tus criterios contables.

Todos los tipos usan una unidad de origen, incluido JPY. Multiplica por 100 solo al mostrarlo si lo necesitas. Considera el error binario de JavaScript y define reglas de decimales y redondeo para la liquidación.

Fechas y horas

Los tiempos UNIX son segundos UTC y los ISO usan Z. La fecha UTC diaria puede diferir de la local. La web muestra la zona horaria del navegador. meta.timezone es una indicación de visualización y no cambia el significado del timestamp.

ParámetroTipoDescripción
/v1 meta.as_ofISO 8601 | YYYY-MM-DDFecha del proveedor
/v1 meta.refresh_interval_secondsintegerCaché
/v1 meta.currency_countinteger… divisas disponibles
/v1 meta.modeprovider | dailyFuente de datos
/api meta.published_atISO 8601 UTCÚltimo tipo publicado
history data[].timeYYYY-MM-DD UTC | UNIX secondsReferencia diaria UTC

Errores

HTTPcodeDescripción
400INVALID_CURRENCY / INVALID_INPUT / INVALID_CONVERSION / INVALID_JSON / INVALID_PERIODIntroduce un importe igual o mayor que cero
405METHOD_NOT_ALLOWEDGET: /v1/*, /api/rates/*, /api/currencies; POST: /api/convert
404NOT_FOUND/api/rates/*
422HISTORY_NOT_IN_PLAN / DATA_UNAVAILABLEDisponibilidad
429RATE_LIMITED/api/* · 90 / IP / minute
404NOT_FOUNDUnknown /v1 endpoint
422FEATURE_NOT_IN_PLAN / HISTORY_NOT_IN_PLAN / OHLC_NOT_IN_PLANDisponibilidad
400INVALID_DATE / INVALID_DATE_RANGE / INVALID_PERIOD / INCOMPLETE_PERIODIntroduce un importe igual o mayor que cero
503PROVIDER_UNAVAILABLE / DATA_UNAVAILABLE / SERVICE_UNAVAILABLENo se pueden cargar los tipos. Inténtalo de nuevo más tarde.
JSON
{
  "error": {
    "code": "INVALID_CURRENCY",
    "message": "Symbol not available in latest provider data"
  }
}

message puede omitirse. Usa el estado HTTP y error.code. Corrige la entrada antes de reintentar; para 429 o 503 temporal usa retroceso exponencial limitado y aleatorizado. Retry-After no está garantizado.

Límites y caché

Los datos se almacenan en caché y la configuración actual apunta a cinco minutos. /api admite 90 solicitudes por minuto por IP; el límite directo es local a la instancia y Redis lo comparte. /v1 aún no aplica cuotas de futuros planes.

Las respuestas usan Cache-Control: no-store. La caché del navegador difiere de la del proveedor en el servidor. Reutiliza instantáneas por publicación. En una caída puede devolverse el último dato válido: comprueba stale o as_of. La caché directa de Worker no es persistente.

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
}

Disponibilidad

OHLC en /v1/candles requiere autorización del proveedor. Consulta /v1/capabilities; la disponibilidad depende del plan configurado.

OHLC en /v1/candles requiere autorización del proveedor. Consulta /v1/capabilities; la disponibilidad depende del plan configurado.

Explorador API

Llama a la API de este sitio. La clave del proveedor permanece en el servidor.

PETICIÓN / cURL
RESPUESTA / JSON
Ejecuta la petición para ver la respuesta JSON real.
WELCOME TO LUME EXCHANGE RATES

Empieza a crear con Lume Exchange Rates

Explora tipos reales sin tarjeta. El acceso gratuito es una vista previa; no se genera ninguna compra ni cargo.

Datos reales · Sin pago

SUBSCRIPTION / USD

Revisa tu suscripción

Suscripción recurrente en USD. Revisa los impuestos y el total en la ventana de pago segura antes de confirmar.

Los impuestos aplicables se muestran al pagar. Puedes gestionar la renovación y cancelar desde el portal de facturación.

Paddle

ACCOUNT / BILLING

Tu suscripción