公开 API
Anon 发布了一小组公开的 HTTP API。它们是位于 https://api.anon.inc 上的只读 JSON 端点,任何人都可以调用:钱包、仪表板、状态页和脚本。无需 API 密钥,也无需账户,任何网站上的浏览器都可以读取它们。
测试版: 本页列出的所有 API 都处于测试阶段。字段、值和响应结构可能随时更改,恕不另行通知。请让你的客户端忽略未知的字段和值,并阅读每个页面的测试版状态和变更日志。
API 列表
| API | 端点 | 返回内容 | 缓存 | Schema |
|---|---|---|---|---|
| RAILGUN 运行状态 | GET /api/v1/railgun/liveness |
按链给出 Anon 所依赖的 Railgun 服务此刻是否有响应并已同步。 | 浏览器 15 秒,共享缓存 30 秒 | JSON Schema |
| RAILGUN 运行状态历史 | GET /api/v1/railgun/liveness/history |
同一份报告最近 14 天的数据,以 5 分钟为一个时间桶,并附 24 小时、7 天和 14 天可用率。 | 浏览器 60 秒,共享缓存 120 秒 | JSON Schema |
判断此刻的情况请用实时端点;图表和状态页请用历史端点。两者显示的都是 Anon 自己的监控器所看到的情况。它们不是 Railgun 官方状态,也绝不是“可安全交易”的信号。
curl -i https://api.anon.inc/api/v1/railgun/liveness
curl -i https://api.anon.inc/api/v1/railgun/liveness/history
所有公开 API 的共同点
| 属性 | 值 |
|---|---|
| 基础 URL | https://api.anon.inc |
| 身份验证 | 无 |
| 方法 | GET 和 HEAD。OPTIONS 用于应答 CORS 预检请求。其他任何方法都返回 405。 |
| 参数 | 无。任何查询字符串都会被忽略。 |
| 格式 | JSON(application/json; charset=utf-8),带有 schemaVersion 字段 |
| 状态 | 测试版,没有通知期,也没有 SLA |
- CORS。 每个应答都带有
Access-Control-Allow-Origin: *和Access-Control-Expose-Headers: ETag,从不带Access-Control-Allow-Credentials。普通的fetch不需要预检请求。 - 缓存。 每个
200都带有Cache-Control和ETag。把 ETag 放进If-None-Match发回,未变化的应答就是一个没有响应体的304。CDN 会为每个Origin请求头的值各保留一份缓存副本。 - 错误。 请根据 HTTP 状态码分支处理,切勿依据消息文本。API 自身返回的错误是
{"error": "<message>"},并带有Cache-Control: no-store。503表示数据此刻不可用:请带退避地重试。 - 速率限制。 同一 IP 每分钟超过约 120 个请求时,CDN 会在约 60 秒内返回
429(Cloudflare 错误 1015)。命中缓存的请求也计入。在浏览器中,这个429不带 CORS 响应头,所以fetch会以网络错误失败。 - JSON Schema 是宽松的。它们描述的是今天的响应,并不是承诺。
合理使用
- 遵守
Cache-Control,并使用ETag,让未变化的应答只需一次304。 - 在用户打开需要这些数据的界面时再获取,而不是按定时器获取。
- 轮询的服务器应发送一个描述性的
User-Agent,例如my-wallet/1.4 (+https://example.com/contact)。 - 如果你服务大量用户,请从你自己的服务器获取,并在那里缓存。
- 遇到
429和5xx时请退避,并继续显示最后一份有效的应答。
api.anon.inc 上的其他路由
只有本页列出的端点才是公开 API。api.anon.inc 上的其他路由为 Anon 自己的应用和网站服务。其中一些无需密钥也会应答,但它们没有面向其他调用方的文档,并且可能随时更改、迁移或受到限制。请不要基于它们进行开发。