Solicita una fecha
En fin de semana o festivo se devuelve el último fixing publicado y `is_forward_filled` vale true. No se inventa una observación.
Solicita un intervalo
Indica `symbols`, `start_date` y `end_date`. JSON devuelve hasta 366 filas por página; continúa con `next_cursor` cuando `has_more` sea true.
Descarga CSV o Parquet
Añade `format=csv` o `format=parquet`. La descarga contiene todo el intervalo solicitado y no usa cursor JSON.
Conserva la procedencia
Guarda `source`, `is_forward_filled` y `derived_symbols` junto a cada observación. Sin ellos, luego no podrás explicar el dato.
source · is_forward_filled · derived_symbols
Series intradía y cobertura
/v1/timeseries admite 1m, 5m, 15m, 1h, 4h y referencias diarias 1d; no hay 2h. Los cruces SGD sin USD no admiten 4h; USD/SGD y su inverso sí. La recopilación de mercado comenzó el 2026-09-14. Los datos 1m se conservan 30 días; los intervalos mayores no tienen caducidad programada. La retención no garantiza que ya exista toda esa profundidad.
Los cruces históricos requieren cierres reales del mismo intervalo UTC, separados como máximo 5 segundos. effective_at conserva la observación más antigua. No se rellenan huecos y el intervalo abierto puede cambiar. 1d usa referencias diarias de todo el catálogo. La tabla cuenta pares únicos; se admiten ambos sentidos.
| interval | Pares únicos |
|---|---|
1m | 91 |
5m | 91 |
15m | 91 |
1h | 91 |
4h | 79 |
1d | 465 |
Una ventana admitida sin observaciones devuelve HTTP 200 con data: [], has_more: false y next_cursor: null. Un intervalo desconocido devuelve unsupported_interval; un par fuera de cobertura, unsupported_pair_interval y rejected_pairs (HTTP 400). Las solicitudes mixtas se rechazan completas.
AUD, CAD, CHF, EUR, GBP, JPY, MXN, NOK, NZD, PLN, SEK, SGD, USD, ZAR