跳至正文
Anon Wallet

公开 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 自己的应用和网站服务。其中一些无需密钥也会应答,但它们没有面向其他调用方的文档,并且可能随时更改、迁移或受到限制。请不要基于它们进行开发。