API
答案之书 API
最后更新:2026-06-19
一个纯随机的应答接口。问一个问题,得到一句原创短句——不接 AI、不算命、零数据留存。约 1/8 概率掉落公有领域古诗隐藏款。
概览
接口
GET /api/oracle
鉴权
无需
速率限制
每分钟 3 次 / IP
返回格式
application/json
请求
只需一个 GET 请求,不需要任何参数、请求体或请求头。
请求
GET https://echoir.xyz/api/oracle 成功响应 200
响应体
{
"answer": "风已经在吹了,扬帆吧。",
"kind": "modern",
"source": null,
"meta": {
"service": "Echoir Oracle",
"site": "https://echoir.xyz",
"description": "纯随机应答,不接 AI。每约 8 次有概率掉落公有领域古诗隐藏款。"
}
} 字段说明
-
answerstring应答文本。普通款为原创现代短句;诗意款为公有领域真实诗句。
-
kind"modern" | "poetic"答案类型。普通款
modern,古诗隐藏款poetic(约 1/8 概率)。 -
sourcestring | null出处。仅诗意款返回(如「—— 苏轼」),普通款为
null。 -
metaobject接口元信息,含服务名、站点地址与简介。
超限响应 429
超过每分钟 3 次限制时返回。响应头会带上标准限流信息,方便调用方自适应等待。
响应头
Retry-After: 38
X-RateLimit-Limit: 3
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1750000000 响应体
{
"error": "rate_limited",
"message": "请求过于频繁,限制为每分钟 3 次。",
"retry_after": 38
} -
Retry-Afterheader · 秒距离窗口重置还需等待多少秒。
-
X-RateLimit-Resetheader · unix 时间戳当前固定窗口的结束时间(UTC)。
-
retry_afternumber响应体里的同款字段,方便代码读取。
跨域 & 预检
接口允许任意来源跨域调用(Access-Control-Allow-Origin: *),浏览器前端可直接 fetch。OPTIONS 预检请求返回 204。
代码示例
cURL
curl https://echoir.xyz/api/oracle JavaScript
const res = await fetch("https://echoir.xyz/api/oracle");
if (res.status === 429) {
const wait = res.headers.get("Retry-After");
console.log(`稍等 ${wait} 秒`);
return;
}
const { answer, kind, source } = await res.json();
console.log(`${answer}${source ? " " + source : ""}`); Python
import requests, time
res = requests.get("https://echoir.xyz/api/oracle")
if res.status_code == 429:
wait = int(res.headers.get("Retry-After", 60))
print(f"稍等 {wait} 秒")
time.sleep(wait)
res = requests.get("https://echoir.xyz/api/oracle")
data = res.json()
print(data["answer"])
if data.get("source"):
print(" ", data["source"]) 为什么只开放答案之书
塔罗与八字每次调用都要消耗 AI 推理,公开接口会被滥用、迅速耗尽额度。答案之书是纯前端随机,不依赖任何模型,几乎没有运行成本——这是它唯一适合开放的原因。我们也不打算把这个接口做成 B2B 产品,它只是一个允许被机器消费的轻量应答器。