Autenticación y límites Los endpoints de datos aceptan evaluación anónima: 12 solicitudes por minuto y 100 por hora e IP. Una clave aplica la cuota mensual de tu cuenta.
bash · header COPY
Authorization: Bearer YOUR_KEY
X-RateLimit-Remaining: 9999
X-RateLimit-Reset: 1788220800 Campos que explican la frescura `source` indica la clase de fuente, `market_session` el estado del mercado y `data_updated_at` cuándo se escribió el dato. Guarda los tres.
Endpoints GET /v1/latest[/{BASE}]Tipos actuales, todos o filtrados por symbols.
GET /v1/{YYYY-MM-DD}[/{BASE}]Foto histórica de una fecha y una base.
GET /v1/convert/{FROM}/{TO}[/{AMOUNT}] · POST /v1/convertConvierte un importe; GET individual o POST por lotes.
GET /v1/rate/{slug}Cotización plana de un par por slug.
GET /v1/rangeSerie diaria con paginación y descargas.
GET /v1/currenciesLista de monedas compatibles; no acepta parámetros.
GET /v1/accountCuenta, plan, clave activa y consumo del mes.
Errores Todos usan `{ result: "error", code, message }`. Un 429 añade `Retry-After`; no hay datos simulados cuando una fuente falla.
json · error COPY
{
"result": "error",
"code": "missing_parameter",
"message": "missing required parameter: symbols"
} English complete field-by-field reference →
Úsala con tu stack La misma solicitud funciona con curl, Python y JavaScript. No necesitas una clave para evaluar la API.
Abrir la guía de inicio → curl Python JavaScript / Node.js
Copiar código curl -fsS --max-time 10 "https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP" from urllib.request import Request, urlopen
import json
request = Request("https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP")
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); Respuesta de ejemplo {
"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 es la cantidad de EUR por 1 USD. effective_at.EUR es la hora de observación y sources.EUR identifica la fuente. Valores y fechas ilustrativos.
Python → JavaScript / Node.js → Google Sheets → Excel → Go → Swift → Zapier →