Séries temporais de câmbio

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.

1. Intervalo / The range

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&quotes=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&quotes=BRL,USD,GBP

2. Downsampling com group / Downsampling with group

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&quotes=BRL&group=month
GET /rates?from=2024-01-01&to=2024-12-31&base=USD&quotes=BRL&group=week
Quando usar: séries longas (anos) com group=month para tendência; group=week para detalhe médio; sem group quando precisar de cada dia útil.
When to use: long ranges (years) with group=month for trend; group=week for medium detail; no group when you need every business day.

3. Exemplo completo (JavaScript) / Full example (JavaScript)

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

4. Parâmetros da série / Series parameters

ParamDescrição / Description
fromInício da série, AAAA-MM-DD. / Series start, ISO.
toFim da série, AAAA-MM-DD. / Series end, ISO.
baseMoeda de origem (padrão EUR). / Base currency (default EUR).
quotesMoedas-alvo separadas por vírgula. / Comma-separated targets.
groupweek ou month — uma observação por período. / one observation per period.
Cache: intervalos inteiramente no passado são imutáveis e cacheados por 24 h — repetir a mesma série é instantâneo. Se o to incluir hoje, o resultado segue o cache de cotações atuais (~1 h).
Caching: fully-past ranges are immutable and cached for 24 h — re-fetching the same series is instant. If to includes today, the result follows the latest-rate cache (~1 h).

API reference · Live demo · Back to Insyde APIs