newbee6688

API 文档

本站提供三类接口:公开 API(无需登录)、账户 API(需登录 Cookie)、以及 API Key(v1)接口(需密钥)。 当前为预览能力,正式计费与套餐以后续公告为准。

目录

基础地址

所有路径均相对于站点根 URL,例如 http://localhost:3000

公开 API(无需登录)

这些接口可直接调用,主要用于工具页展示;通常会代理第三方数据源,并做基础校验与超时保护。

GET /api/public/exchange-rates/currencies

返回可用货币列表(来自 Frankfurter)。

GET /api/public/exchange-rates/latest?from=USD&to=CNY

返回最新汇率(校验 3 位大写货币代码)。成功返回:{ date, from, to, rate, source }

GET /api/public/metal-prices

金属现货参考价(USD + 按 USD/CNY 换算 CNY),包含克价字段。成功返回:{ usdCnyRate, rows: [...] }

GET /api/public/popular-tools?period=day|week|month|year

返回热门工具榜单(按周期统计的热度)。成功返回:{ period, rows: [{ slug, title, heat, rank }] }

GET /api/public/timezone

返回访问者公网 IP 推断的 IANA 时区。成功返回:{ timezone, source }(失败则 timezone 为 null)。

GET /api/public/ads

首页轮播广告数据(若未配置或不可用,返回空数组)。

错误码约定(公开 API)

  • 400:参数不合法(例如货币代码格式错误)
  • 502:上游服务不可用/超时/数据格式异常

账户 API(需登录)

这些接口用于站内账户功能,基于浏览器 Cookie 会话鉴权(不是 API Key)。若未登录通常返回 401

GET /api/account/api-keys

列出当前用户未撤销的 API Key(不含明文)。

POST /api/account/api-keys

创建 API Key。请求体:{ name?: string }。成功返回包含 key(仅此一次可见)。

PATCH /api/account/profile

修改昵称与头像 URL。请求体:{ name, image? }

POST /api/account/tool-like

点赞/取消点赞工具。请求体:{ toolSlug },返回 { liked, totalLikes }

API Key(v1)接口(需密钥)

请求头任选其一(不要同时使用多种方式混传多把密钥):Authorization: Bearer <完整密钥>X-Api-Key: <完整密钥>

密钥须以 sk_live_ 开头,在 API 密钥 页面创建;服务端仅保存哈希,明文仅创建时展示一次。

配额与审计

  • 每把密钥按 UTC 自然日 计数;默认每日最多 10000 次消耗型调用(由 API_DAILY_LIMIT_PER_KEY 控制)。
  • /api/v1/echo 消耗 1 次;/api/v1/status 不消耗。
  • 调用会写入审计日志,可在「API 调用日志」中查看。
GET /api/v1/echo

校验密钥并返回示例 JSON;消耗配额。返回:{ ok, endpoint, userId, usage }

GET /api/v1/status

返回当前 UTC 日用量与上限;不消耗配额。返回:{ ok, endpoint, usage }

错误响应(v1)

  • 401{ "error": "unauthorized" }
  • 429 { "error": "quota_exceeded", "limit": <number> }
  • 500{ "error": "server_error" }

示例

<密钥> 替换为真实 Key。

curl -sS -H "Authorization: Bearer <密钥>" \
  "http://localhost:3000/api/v1/echo"

curl -sS -H "X-Api-Key: <密钥>" \
  "http://localhost:3000/api/v1/status"
const r = await fetch("http://localhost:3000/api/v1/echo", {
  headers: { Authorization: "Bearer <密钥>" },
});
console.log(await r.json());

配额与审计

每把密钥按 UTC 自然日 计数;默认每日最多 10000 次可消耗配额的调用,由环境变量 API_DAILY_LIMIT_PER_KEY 控制。超额返回 HTTP 429,响应体含 error: "quota_exceeded" limit

接入 withApiV1Auth 的路由会写入审计表,可在 API 调用日志 中按密钥与条件筛选。

端点

GET /api/v1/echo

校验密钥并返回示例 JSON;消耗 1 次当日配额。

GET /api/v1/status

返回当前 UTC 日已用量与上限;不消耗 配额。

错误响应

  • 401{ "error": "unauthorized" }
  • 429 — 配额用尽(echo 等消耗型接口)
  • 500{ "error": "server_error" }

示例

<密钥> 替换为真实 Key。

curl -sS -H "Authorization: Bearer <密钥>" \
  "http://localhost:3000/api/v1/echo"

curl -sS -H "X-Api-Key: <密钥>" \
  "http://localhost:3000/api/v1/status"
const r = await fetch("http://localhost:3000/api/v1/echo", {
  headers: { Authorization: "Bearer <密钥>" },
});
console.log(await r.json());

OpenAPI

机器可读规范(OpenAPI 3.0 JSON): http://localhost:3000/api/openapi

← 返回帮助