两个诚实的答案,先说短的那个。只是想试试 API,完全不需要密钥:/v1/latest、/v1/convert 和最近 30 天的日线历史支持匿名请求,限额是每分钟 10 次、每个 IP 每小时 100 次。只要是定时运行、或者要发给别人用的场景,就去 exchangerate.dev/signup 注册,确认邮箱,然后从控制台复制以 exr_live_ 开头的密钥。免费额度:每月 5,000 次调用,每分钟 10 次请求,最近 30 天的每日历史,无需信用卡。
- 无密钥可查最新汇率、换算和 30 天日线历史:10 次/分钟、100 次/小时/IP。
- 免费密钥在 /signup 创建,只需确认邮箱、无需信用卡,格式类似
exr_live_...。 - 免费额度:每月 5,000 次调用,每分钟 10 次请求,最近 30 天的每日历史,实时行情数据延迟15分钟到达。
- 把密钥放进
Authorization: Bearer exr_live_...头部发送;如果连接器无法设置 Authorization 头,就用X-API-Key。 - 绝不要把密钥写进 URL 或公开的浏览器代码包,只放在请求头里,前端要通过服务端代理转发。
免密钥路径:先试试 API
在创建任何东西之前,先调用一次 API,看看真实的返回数据长什么样。下面这样在任意终端里就能跑,不用注册:
# No key, no signup, works at 10 req/min, 100 req/hour per IPcurl -s https://api.exchangerate.dev/v1/latest/USD# A single pair, convertedcurl -s https://api.exchangerate.dev/v1/convert/USD/JPY/250每条响应都带有 source 和 market_session,所以在做任何决定之前,你都能看出这个汇率是实时市场汇率,还是 ECB 每日定盘价。你也可以直接在浏览器里跑同样的调用,看看返回的 JSON。
一次性脚本、课堂练习,或者手动查一次汇率,都在每小时 100 次请求的范围内。如果这就是你全部的用途,那就不用再折腾了,不需要密钥,也没有什么要保存或轮换。
获取免费密钥
- 打开 exchangerate.dev/signup,用邮箱注册。整个流程没有信用卡步骤。
- 确认邮箱。打开控制台时,一个 API 密钥已经为你准备好了。
- 复制这个密钥:它以
exr_live_开头,以后在配置文件里靠这个前缀就能认出它。
免费额度是每月 5,000 次调用、每分钟 10 次请求,包含最近 30 天的每日历史,以及延迟15分钟到达的实时汇率。付费档位实时接收同一数据源的行情,免费档位和免密钥调用延迟15分钟接收;调用量和请求速率限制也不同。
使用密钥:只放请求头,绝不放 URL
把密钥放进请求头里发送。Authorization: Bearer 是主要方式;X-API-Key 是为那些无法设置 Authorization 头的连接器准备的(部分 BI 工具和无代码平台):
# Primary formcurl -s https://api.exchangerate.dev/v1/latest/USD \ -H "Authorization: Bearer exr_live_your_key_here"# Fallback for connectors without Authorization supportcurl -s https://api.exchangerate.dev/v1/latest/USD \ -H "X-API-Key: exr_live_your_key_here"不要把密钥放进查询字符串,不要放进客户端 JavaScript 代码包,也不要提交进版本控制。在应用代码里,从环境变量读取密钥;如果是公开的前端页面,就通过一个小型服务端代理转发请求,让密钥永远不出现在浏览器里。
你到底需要哪条路径?
| 场景 | 匿名调用 | 免费密钥 |
|---|---|---|
| 试用 API、偶尔查一下 | 可以:每 IP 每分钟 10 次 | 也能用,但不是必须 |
| 定时任务或计划刷新 | 脆弱:和别人共享同一个 IP 限额 | 可以;你自己每月 5,000 次的配额 |
| 给别人用的工作表或表格 | 不行:用的是别人的 IP 和限额 | 可以:配额跟着密钥走 |
| 你要出售或分发的产品 | 可以,需显示来源链接 | 可以,需显示来源链接 |
无论匿名还是带密钥,使用的都是同一数据源:面向建模、分析和展示的指示性中间价数据,不是可交易报价。每条响应都会在 notice 字段里重复这一点。