Fetch and analyze exchange-rate history with a single request
O endpoint /rates vira uma série temporal quando você passa from e to:
uma linha por dia útil, para o par escolhido. As taxas são de referência oficiais de bancos centrais,
atualizadas uma vez por dia útil.
The /rates endpoint becomes a time series when you pass from and to:
one row per business day, for the chosen pair. Rates are official central-bank reference rates, updated
once per business day.
Base: https://moneta.api.insyde.one — aberta, sem autenticação / open, no auth.
Defina o início com from e o fim com to (datas ISO AAAA-MM-DD).
Escolha a base e as quotes para focar no que importa.
Set the start with from and the end with to (ISO YYYY-MM-DD dates).
Pick a base and quotes to focus on what matters.
GET /rates?from=2024-01-01&to=2024-12-31&base=USD"es=BRL
A resposta são linhas planas — uma por data / The response is flat rows — one per date:
[
{ "date": "2024-01-02", "base": "USD", "quote": "BRL", "rate": 4.8536 },
{ "date": "2024-01-03", "base": "USD", "quote": "BRL", "rate": 4.9011 },
// ... uma linha por dia útil / one row per business day
]
Com várias quotes, cada data aparece repetida — uma linha por par. Filtre por
quote no cliente.
With multiple quotes, each date repeats — one row per pair. Filter by quote
on the client.
GET /rates?from=2024-01-01&to=2024-12-31&base=EUR"es=BRL,USD,GBP
Um ano diário são ~250 linhas por par. Para gráficos ou resumos, use group=week ou
group=month — a API entrega uma observação por semana/mês e reduz muito o payload.
A year of daily data is ~250 rows per pair. For charts or summaries, use group=week or
group=month — the API returns one observation per week/month and shrinks the payload a lot.
GET /rates?from=2020-01-01&to=2024-12-31&base=USD"es=BRL&group=month
GET /rates?from=2024-01-01&to=2024-12-31&base=USD"es=BRL&group=week
group=month para tendência;
group=week para detalhe médio; sem group quando precisar de cada dia útil.
group=month for trend;
group=week for medium detail; no group when you need every business day.
Busca um ano de USD/BRL e calcula mínimo, máximo e a variação percentual do período:
Fetch a year of USD/BRL and compute min, max and the period's percentage change:
const BASE = 'https://moneta.api.insyde.one';
async function analyzeSeries() {
const qs = new URLSearchParams({
from: '2024-01-01', to: '2024-12-31',
base: 'USD', quotes: 'BRL',
});
const r = await fetch(`${BASE}/rates?${qs}`);
if (!r.ok) throw new Error((await r.json()).error);
const rows = await r.json(); // [{ date, base, quote, rate }]
rows.sort((a, b) => a.date < b.date ? -1 : 1);
const rates = rows.map(row => row.rate);
const min = Math.min(...rates);
const max = Math.max(...rates);
const first = rates[0];
const last = rates[rates.length - 1];
const variation = ((last - first) / first) * 100;
console.log(`Período: ${rows[0].date} → ${rows.at(-1).date}`);
console.log(`Mínimo: ${min.toFixed(4)} Máximo: ${max.toFixed(4)}`);
console.log(`Variação: ${variation.toFixed(2)}%`);
}
analyzeSeries();
| Param | Descrição / Description |
|---|---|
from | Início da série, AAAA-MM-DD. / Series start, ISO. |
to | Fim da série, AAAA-MM-DD. / Series end, ISO. |
base | Moeda de origem (padrão EUR). / Base currency (default EUR). |
quotes | Moedas-alvo separadas por vírgula. / Comma-separated targets. |
group | week ou month — uma observação por período. / one observation per period. |
to incluir hoje, o resultado segue o cache de cotações
atuais (~1 h).
to includes today, the result follows the latest-rate cache (~1 h).