认证与限额
数据接口支持匿名试用:每个 IP 每分钟 12 次、每小时 100 次。带密钥的请求使用账户月度额度。
说明数据新鲜度的字段
`source` 表示来源类别,`market_session` 表示市场状态,`data_updated_at` 表示对响应有贡献的最早观测时间。建议全部保存。
接口
日内序列与覆盖范围
/v1/timeseries 支持 1m、5m、15m、1h、4h 和日参考数据 1d,不支持 2h。不含 USD 的 SGD 交叉盘不支持 4h;USD/SGD 及反向支持。市场数据从 2026-09-14 开始采集。1m 保留 30 天,更大间隔没有计划到期删除。保留期限不代表已经积累了同样长度的历史。
历史交叉盘要求真实收盘观测位于同一 UTC 区间内,时间差不超过 5 秒。effective_at 使用较早的观测时间。不填补缺口;尚未结束的区间可能变化。1d 使用全目录的日参考数据。表中每个货币对只计一次,支持双向。
| interval | 唯一货币对 |
|---|---|
1m | 91 |
5m | 91 |
15m | 91 |
1h | 91 |
4h | 79 |
1d | 465 |
支持的时间窗口没有观测时返回 HTTP 200,包含 data: []、has_more: false 和 next_cursor: null。未知间隔返回 unsupported_interval;范围外货币对返回 unsupported_pair_interval 和 rejected_pairs(HTTP 400)。混合请求会整体拒绝。
AUD, CAD, CHF, EUR, GBP, JPY, MXN, NOK, NZD, PLN, SEK, SGD, USD, ZAR
实时 WebSocket
连接 wss://api.exchangerate.dev/v1/stream,并在 10 秒内发送 auth。密钥必须留在服务器,不能放在 URL 或公开 JavaScript 中。不支持匿名连接。收到 authenticated 后发送 subscribe。支持下列货币;交叉盘要求两条最新观测均未过期且相差不超过 5 秒。状态可能为 unavailable 或 stale。每条获准连接消耗一个月度配额单位。
表中为新账户的限制。现有账户保留 Free 1 × 5、Basic 3 × 25 或 Pro 10 × 100(连接数 × 每个连接的货币对数)。authenticated 消息会显示您的实际限制。
AUD, CAD, CHF, EUR, GBP, JPY, MXN, NOK, NZD, PLN, SEK, SGD, USD, ZAR
| 计划 | 并发连接 | 每条连接的货币对 |
|---|---|---|
| Free | 0 | 0 |
| Basic | 0 | 0 |
| Pro | 0 | 0 |
| Realtime | 10 | 100 |
错误
REST: 错误统一为 `{ result: "error", code, message }`。429 还会返回 `Retry-After`;数据源失败时不会悄悄改用模拟值。
在你的技术栈中使用
同一个请求可用于 curl、Python 和 JavaScript。评估 API 无需密钥。
响应示例
{
"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 表示 1 USD 对应的 EUR 数量。effective_at.EUR 是观测时间,sources.EUR 表示来源类别。数值和时间仅为示例。