[
  {
    "id": "2fa",
    "title": "2FA 动态验证码（TOTP）生成 / 验证 / 批量",
    "category": "大模型与文本",
    "summary": "标准 TOTP（RFC 6238，HMAC-SHA1），兼容 Google Authenticator、 Microsoft Authenticator、1Password、阿里/腾讯令牌等所有主流 2FA 应用。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/2fa",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - secret  string  必填；Base32 编码的 TOTP 密钥（自动忽略空格/连字符，不区分大小写）\n  - action  string  可选；操作类型，默认 generate\n      generate = 生成当前验证码\n      verify   = 校验用户输入的验证码（需配合 code）\n      batch    = 批量返回 上一/当前/下一 周期验证码\n  - code    string  action=verify 时必填；待校验的验证码\n  - period  number  可选；验证码有效期（秒），默认 30，范围 10~120\n  - digits  number  可选；验证码位数，默认 6，范围 4~8",
    "spec": {},
    "doc": "/api/2fa · 2FA 动态验证码（TOTP）生成 / 验证 / 批量\n\n标准 TOTP（RFC 6238，HMAC-SHA1），兼容 Google Authenticator、\nMicrosoft Authenticator、1Password、阿里/腾讯令牌等所有主流 2FA 应用。\n\n参数：\n  - secret  string  必填；Base32 编码的 TOTP 密钥（自动忽略空格/连字符，不区分大小写）\n  - action  string  可选；操作类型，默认 generate\n      generate = 生成当前验证码\n      verify   = 校验用户输入的验证码（需配合 code）\n      batch    = 批量返回 上一/当前/下一 周期验证码\n  - code    string  action=verify 时必填；待校验的验证码\n  - period  number  可选；验证码有效期（秒），默认 30，范围 10~120\n  - digits  number  可选；验证码位数，默认 6，范围 4~8\n\n返回示例（action=generate）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"totp_code\": \"123456\",\n      \"remaining_seconds\": 17,\n      \"period\": 30,\n      \"digits\": 6,\n      \"timestamp\": 1782000000,\n      \"next_refresh\": \"2026-06-30 12:00:30\"\n    }\n  }\n\n特性：\n  - 零上游：纯 PHP 内置 hash_hmac() 计算，毫秒级返回\n  - 不缓存：TOTP 每 period 秒变化，缓存无意义且不安全\n  - 安全：secret / code 仅参与计算，不缓存、不回显 secret；verify 用 hash_equals 防时序攻击\n\n限流建议：登录 QPS=20 / 日免=500；匿名 QPS=5 / 日免=100（纯计算成本低，可放宽）"
  },
  {
    "id": "address-parse",
    "title": "中文地址解析（纯自研）",
    "category": "天气与生活",
    "summary": "能力： - 从一段中文地址字符串中识别「省 / 市 / 区县 / 街道 / 详细地址」 - 自动抽取嵌入的「姓名 / 手机号 / 邮编」 - 纯本地正则，不依赖任何上游，毫秒级响应",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/address-parse",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - address  string  必填；支持 GET/POST；长度 ≤ 500",
    "spec": {},
    "doc": "/api/address-parse · 中文地址解析（纯自研）\n\n能力：\n  - 从一段中文地址字符串中识别「省 / 市 / 区县 / 街道 / 详细地址」\n  - 自动抽取嵌入的「姓名 / 手机号 / 邮编」\n  - 纯本地正则，不依赖任何上游，毫秒级响应\n\n参数：\n  - address  string  必填；支持 GET/POST；长度 ≤ 500\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"original\": \"张三 13812345678 上海市浦东新区张江镇科苑路88号 201203\",\n      \"province\": \"上海市\",\n      \"city\":     \"上海市\",\n      \"district\": \"浦东新区\",\n      \"street\":   \"张江镇\",\n      \"detail\":   \"科苑路88号\",\n      \"zipcode\":  \"201203\",\n      \"phone\":    \"13812345678\",\n      \"name\":     \"张三\"\n    },\n    \"request_id\": \"...\"\n  }\n\n特性：\n  - 无上游调用，无缓存（每次输入都不同，本地正则 < 1ms）\n  - 支持 34 个省级行政区 + 简称识别（如「北京」→「北京市」）\n  - 支持嵌入式快递地址解析（姓名/手机/邮编混合输入）\n\n建议：method=POST，避免地址含个人信息进入 access_log"
  },
  {
    "id": "aggregate-translate",
    "title": "聚合翻译（DeepL / 百度 / 腾讯 / 有道）",
    "category": "大模型与文本",
    "summary": "三个 action（GET/POST 均可）： - translate 默认；翻译文本（支持指定引擎或自动选优） 必填：text 可选：source_lang（默认 auto）、target_lang（默认 en）、engine、platform - engines 返回当前可用的翻译引擎列表",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/aggregate-translate",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "/api/aggregate-translate · 聚合翻译（DeepL / 百度 / 腾讯 / 有道）\n\n三个 action（GET/POST 均可）：\n  - translate  默认；翻译文本（支持指定引擎或自动选优）\n               必填：text\n               可选：source_lang（默认 auto）、target_lang（默认 en）、engine、platform\n  - engines    返回当前可用的翻译引擎列表\n  - languages  返回支持的语言代码列表\n\n     实现细节：调用 DeepL Web 端（含 ts/i_count 算法 + 数字调整）、百度移动端\n              （含 sign 反混淆 + token + gtk）、腾讯翻译君、有道（AES-CBC 解密）。\n\n缓存：\n  - translate:  按 sha1(text+target+source+engine+platform) 缓存 6 小时\n  - engines:    缓存 1 天\n  - languages:  缓存 1 天\n\n返回示例（translate）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"result\": {\"text\":\"你好世界\", \"source_lang\":\"en\", \"target_lang\":\"zh\", \"engine\":\"deepl\"},\n      \"alternatives\": null\n    }\n  }\n\nplatform=all 模式：result 仍是首选，alternatives 列出所有引擎结果（用于对比）"
  },
  {
    "id": "ai-chat",
    "title": "官方 AI 中转（OpenAI Chat Completions 兼容）",
    "category": "大模型与文本",
    "summary": "- model string 必填；上游模型 ID（如 deepseek-v4-flash / qwen3.7-plus） - messages array 必填；[{role, content}, ...] - temperature / max_tokens / top_p / stream 可选（stream 暂",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ai-chat",
    "timeout_sec": 100,
    "kyc": false,
    "media": false,
    "params": "参数（JSON body / form）：\n  - model     string  必填；上游模型 ID（如 deepseek-v4-flash / qwen3.7-plus）\n  - messages  array   必填；[{role, content}, ...]\n  - temperature / max_tokens / top_p / stream  可选（stream 暂不透传）",
    "spec": {},
    "doc": "/api/ai-chat · 官方 AI 中转（OpenAI Chat Completions 兼容）\n\n参数（JSON body / form）：\n  - model     string  必填；上游模型 ID（如 deepseek-v4-flash / qwen3.7-plus）\n  - messages  array   必填；[{role, content}, ...]\n  - temperature / max_tokens / top_p / stream  可选（stream 暂不透传）\n\n上游默认：AgentsFlare（当前生产）。可切初和，不改默认：\n  AgentsFlare  POST https://api.agentsflare.com/v1/chat/completions\n  初和         POST https://api.lk888.ai/v1/chat/completions\n\n返回 data 为 OpenAI chat.completion 结构（choices / usage / model …）"
  },
  {
    "id": "ai-couplet",
    "title": "智能对联（AI）",
    "category": "大模型与文本",
    "summary": "输入上联关键词，AI 生成对应下联。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ai-couplet",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - keyword  string  必填；上联关键词（1~30 字）",
    "spec": {},
    "doc": "/api/ai-couplet · 智能对联（AI）\n\n输入上联关键词，AI 生成对应下联。\n\n参数：\n  - keyword  string  必填；上联关键词（1~30 字）\n\n上游：https://v3.alapi.cn/api/ai/couplet  (POST JSON, token header)\n缓存：Redis 24h（相同上联固定下联）"
  },
  {
    "id": "air-history",
    "title": "历史空气质量（全国城市逐日 AQI 与六项污染物月度档案）",
    "category": "天气与生活",
    "summary": "按「城市 + 年月」查询该月每日空气质量指数（AQI）与六项污染物（PM2.5/PM10/SO₂/NO₂/CO/O₃） 浓度，返回逐日明细（含等级、首要污染物、全国排名）与月度汇总（均值、最佳/最差日、优良天数分布）。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/air-history",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - city   string  必填；城市中文名（如 北京、上海、成都）\n  - month  string  必填；年月 YYYYMM（如 202503），可查范围 2013-01 至当前月",
    "spec": {},
    "doc": "/api/air-history · 历史空气质量（全国城市逐日 AQI 与六项污染物月度档案）\n\n按「城市 + 年月」查询该月每日空气质量指数（AQI）与六项污染物（PM2.5/PM10/SO₂/NO₂/CO/O₃）\n浓度，返回逐日明细（含等级、首要污染物、全国排名）与月度汇总（均值、最佳/最差日、优良天数分布）。\n\n参数：\n  - city   string  必填；城市中文名（如 北京、上海、成都）\n  - month  string  必填；年月 YYYYMM（如 202503），可查范围 2013-01 至当前月\n\n返回示例（截断）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"meta\": {\"city\":\"北京\",\"month\":\"202412\",\"month_format\":\"2024年12月\",\"total_days\":31},\n      \"units\": {\"aqi\":\"无量纲\",\"pm2_5\":\"μg/m³\",\"co\":\"mg/m³\", ...},\n      \"summary\": {\"aqi_avg\":58.3,\"aqi_avg_level\":\"良\",\"best_day\":{...},\"worst_day\":{...},\"days_distribution\":{...},\"overall_text\":\"...\"},\n      \"daily\": [{\"date\":\"2024-12-01\",\"aqi\":53,\"level\":\"良\",\"primary_pollutant\":\"细颗粒物(PM2.5)\",\"rank\":123,\"pollutants\":{...}}]\n    }\n  }\n\n上游：本平台自建历史空气质量数据源（加密接口，免密钥）。加密参数内置于服务端、来源标识/作者信息均已剔除。\n缓存：历史月份 Redis 24h、当前月份 1h（Key：v1:cache:air-history:<md5(city:month)>）。\n数据：逐日为日均值；首要污染物按国标 HJ 633-2012 IAQI 分指数计算（AQI≤50 记「无」）。"
  },
  {
    "id": "air-quality",
    "title": "空气质量（免费 · Open-Meteo）",
    "category": "天气与生活",
    "summary": "对齐常见「空气质量查询」产品的 7 个场景，单一入口用 type 切换： now 空气质量实况（城市 / 经纬度） rank 实时排行（国内重点城市近似榜） rank_yesterday 昨日排行（同上，按昨日小时均值） past24 过去 24 小时逐时",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/air-quality",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  type      可选，默认 now；见上\n  city      城市名（与 location 二选一；rank* / cities 可不传）\n  location  经纬度 lon,lat（如 116.4074,39.9042）\n  limit     排行条数，默认 20，最大 50（仅 rank / rank_yesterday）\n  hours     预报小时数，默认 24，范围 1~72（仅 hourly）\n  days      预报天数，默认 5，范围 1~7（仅 daily）",
    "spec": {},
    "doc": "/api/air-quality · 空气质量（免费 · Open-Meteo）\n\n对齐常见「空气质量查询」产品的 7 个场景，单一入口用 type 切换：\n  now            空气质量实况（城市 / 经纬度）\n  rank           实时排行（国内重点城市近似榜）\n  rank_yesterday 昨日排行（同上，按昨日小时均值）\n  past24         过去 24 小时逐时\n  hourly         逐小时预报\n  daily          逐日预报（由小时聚合）\n  cities         国内城市列表（内置表）\n\n参数：\n  type      可选，默认 now；见上\n  city      城市名（与 location 二选一；rank* / cities 可不传）\n  location  经纬度 lon,lat（如 116.4074,39.9042）\n  limit     排行条数，默认 20，最大 50（仅 rank / rank_yesterday）\n  hours     预报小时数，默认 24，范围 1~72（仅 hourly）\n  days      预报天数，默认 5，范围 1~7（仅 daily）\n\n上游：Open-Meteo Air Quality API（免密钥）\n  https://air-quality-api.open-meteo.com/v1/air-quality\nAQI：国标 HJ 633-2012（IAQI 取最大）；Open-Meteo CO 为 μg/m³，换算为 mg/m³ 再算。\n排行说明：Open-Meteo 无官方国控站全国榜，本接口对内置重点城市批量取数后本地排序，属近似榜。\n\n缓存：实况/排行 10 分钟；预报 30 分钟；城市列表 24h。"
  },
  {
    "id": "anti-delete-snapshot",
    "title": "知乎豆瓣快照",
    "category": "视频与内容",
    "summary": "把一条知乎或豆瓣链接收成正文快照。只在用户给出具体链接时调用。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/anti-delete-snapshot",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "必填 url。可选 format（markdown / text / both）、cookie、min_voteup、max_answers、with_images、timeout。",
    "spec": {},
    "doc": ""
  },
  {
    "id": "app-store",
    "title": "App Store 应用信息查询",
    "category": "视频与内容",
    "summary": "- app_id string 与 url 二选一；App 数字 ID（如 414478124） - url string 与 app_id 二选一；应用商店链接，自动提取数字 ID - country string 可选；两位国家/地区码（如 cn/us/jp）；默认 cn；非法自动回退 cn",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/app-store",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - app_id   string  与 url 二选一；App 数字 ID（如 414478124）\n  - url      string  与 app_id 二选一；应用商店链接，自动提取数字 ID\n  - country  string  可选；两位国家/地区码（如 cn/us/jp）；默认 cn；非法自动回退 cn",
    "spec": {},
    "doc": "/api/app-store · App Store 应用信息查询\n\n参数：\n  - app_id   string  与 url 二选一；App 数字 ID（如 414478124）\n  - url      string  与 app_id 二选一；应用商店链接，自动提取数字 ID\n  - country  string  可选；两位国家/地区码（如 cn/us/jp）；默认 cn；非法自动回退 cn\n\n返回：应用名/包名/开发者/多尺寸图标/价格/版本/评分/分类/兼容性/内容分级/大小/描述/截图/语言/商店链接等\n\n上游：本平台自建应用目录查询能力（免密钥、GET）\n缓存：Redis api:app-store:{id}:{country} · TTL 3600s（应用元数据变动不频繁）"
  },
  {
    "id": "baby-naming",
    "title": "八字起名 + 重名查询",
    "category": "查询与娱乐",
    "summary": "基于「五行补缺 + 五格数理 + 三才配置」综合评分生成高分名字候选，附寓意标签和全国重名预估。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/baby-naming",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action          string  可选；naming（默认）/ duplicate / bazi\n  - surname         string  起名时必填；父姓（单字）\n  - mother_surname  string  起名时可选；母姓（生成双姓名）\n  - birth_year      int     起名 / 八字必填；2000-2100\n  - birth_month     int     起名 / 八字必填；1-12\n  - birth_day       int     起名 / 八字必填；1-31\n  - birth_hour      int     起名 / 八字可选；0-23，默认 12\n  - gender          string  起名可选；male/female/neutral，默认 neutral\n  - count           int     起名可选；返回数量 1-30，默认 10\n  - name            string  重名查询必填；名字（不含姓）",
    "spec": {},
    "doc": "/api/baby-naming · 八字起名 + 重名查询\n\n基于「五行补缺 + 五格数理 + 三才配置」综合评分生成高分名字候选，附寓意标签和全国重名预估。\n\n参数：\n  - action          string  可选；naming（默认）/ duplicate / bazi\n  - surname         string  起名时必填；父姓（单字）\n  - mother_surname  string  起名时可选；母姓（生成双姓名）\n  - birth_year      int     起名 / 八字必填；2000-2100\n  - birth_month     int     起名 / 八字必填；1-12\n  - birth_day       int     起名 / 八字必填；1-31\n  - birth_hour      int     起名 / 八字可选；0-23，默认 12\n  - gender          string  起名可选；male/female/neutral，默认 neutral\n  - count           int     起名可选；返回数量 1-30，默认 10\n  - name            string  重名查询必填；名字（不含姓）\n\n返回示例（naming）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"bazi\": {\"八字\": \"...\", \"四柱\": [...], \"日主\": \"金\"},\n      \"wu_xing_analysis\": {\"五行分布\": {...}, \"五行缺失\": [\"木\"], \"建议补充\": [\"木\"]},\n      \"needed_wuxing\": [\"木\"],\n      \"names\": [{\"name\": \"王梓森\", ..., \"score\": 95.0, \"wuge\": {...}, \"duplicate_rate\": {...}}]\n    }\n  }\n\n上游：无（纯算法 + 内置数据：396 姓笔画 / 175 起名字 / 50 高频名 / 88 姓人口）\n缓存：不缓存（每次随机评分扰动）"
  },
  {
    "id": "bank-card",
    "title": "银行卡 BIN 查询 API",
    "category": "身份与号码",
    "summary": "银行卡 BIN 查询 API",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/bank-card",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数: card_number (银行卡号或前6位)",
    "spec": {},
    "doc": "银行卡 BIN 查询 API\n参数: card_number (银行卡号或前6位)"
  },
  {
    "id": "barcode-gs1",
    "title": "商品条码查询（GS1 中国官网）",
    "category": "识别与票证",
    "summary": "热路径打官网 ProductListByGTIN，额度/429/空包换号换出口。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/barcode-gs1",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：code  商品条形码（8/12/13/14 位，或 16 位 AI(01)+GTIN-14）",
    "spec": {},
    "doc": "/api/barcode-gs1 · 商品条码查询（GS1 中国官网）\n\n热路径打官网 ProductListByGTIN，额度/429/空包换号换出口。\n生产由 gds_pool_server.php（curl_multi 并发池）接请求。\n官网基础设施全挂再走 ANCC / mxnzp 活源；未登记回查无。不靠本地库顶成功。\n\n参数：code  商品条形码（8/12/13/14 位，或 16 位 AI(01)+GTIN-14）"
  },
  {
    "id": "barcode-lookup",
    "title": "商品条码查询（免费版）",
    "category": "识别与票证",
    "summary": "输入 8~13 位数字条形码（EAN-13 / UPC-A / UPC-E / EAN-8 等），",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/barcode-lookup",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "/api/barcode-lookup · 商品条码查询（免费版）\n\n输入 8~13 位数字条形码（EAN-13 / UPC-A / UPC-E / EAN-8 等），\n返回商品名称、品牌、厂商、规格、参考价。不含商品图。\n商品图 / 包装尺寸 / 官方登记档案请用会员版 /api/barcode-gs1（字段 images）。\n\n主接口返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"barcode\": \"6921168509256\",\n      \"found\": true,\n      \"name\": \"农夫山泉 饮用天然水550ml\",\n      \"brand\": \"农夫山泉\",\n      \"manufacturer\": \"农夫山泉股份有限公司\",\n      \"spec\": \"550ml\",\n      \"price\": 1.5,\n      \"category\": null,\n      \"description\": null\n    },\n    \"request_id\": \"...\"\n  }\n\n缓存：不缓存。蜜小智日额熔断后：免费库 → 会员库只读 → 百川条码 tiaoma.cnaidc.com。"
  },
  {
    "id": "basketball",
    "title": "篮球赛事",
    "category": "查询与娱乐",
    "summary": "按日期查 NBA / WNBA / NCAA 男篮当日赛程，以及 CBA（独立备源）。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/basketball",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action   string  可选；matches=赛程（默认） / leagues=支持的联赛代码\n  - date     string  可选；YYYY-MM-DD 或 YYYYMMDD，默认北京今天\n  - league   string  可选；all（默认 NBA+WNBA）或 nba / wnba / ncaa / cba\n  - status   string  可选；all / live / upcoming / finished（默认 all）\n  - limit    int     可选；1–200，默认 80",
    "spec": {},
    "doc": "/api/basketball · 篮球赛事\n\n按日期查 NBA / WNBA / NCAA 男篮当日赛程，以及 CBA（独立备源）。\n返回开赛时间、比分、状态、场馆。不返回赔率或门票。\n\n参数：\n  - action   string  可选；matches=赛程（默认） / leagues=支持的联赛代码\n  - date     string  可选；YYYY-MM-DD 或 YYYYMMDD，默认北京今天\n  - league   string  可选；all（默认 NBA+WNBA）或 nba / wnba / ncaa / cba\n  - status   string  可选；all / live / upcoming / finished（默认 all）\n  - limit    int     可选；1–200，默认 80\n\n上游：NBA/WNBA/NCAA 走 ESPN 公开 scoreboard（免密钥）；CBA 走 TheSportsDB。\n缓存：45 秒，键 v1:cache:sports:basketball:{league}:{date}\n时间：start_at / generated_at 为北京时间；start_ts 为 Unix 秒。"
  },
  {
    "id": "bencao",
    "title": "本草纲目·中药查询",
    "category": "查询与娱乐",
    "summary": "输入药品名称（如「丁香」「人参」「甘草」），返回该药材的详细信息： 释名、气味、主治、附方等。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/bencao",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "/api/bencao · 本草纲目·中药查询\n\n输入药品名称（如「丁香」「人参」「甘草」），返回该药材的详细信息：\n释名、气味、主治、附方等。\n\n数据来源：本地 bencao.json 文件（同目录下，由运维侧上传维护）。\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"name\": \"人参\",\n      \"detail\": \"释名... 气味... 主治...\",\n      \"matched\": \"exact\"\n    }\n  }\n\n未找到时（带模糊建议）：\n  {\n    \"code\": 4040, \"msg\": \"未找到「xx」\",\n    \"data\": {\n      \"query\": \"xx\",\n      \"suggestions\": [\"xx1\", \"xx2\", ...]\n    }\n  }\n\n缓存：不缓存（本地 JSON 解析已经足够快）"
  },
  {
    "id": "bili-danmaku",
    "title": "B站弹幕热词",
    "category": "视频与内容",
    "summary": "拉一条 B 站视频的弹幕并统计热词。video 传 BV 或 AV。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/bili-danmaku",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "必填 video（别名 id、bv、av）。可选 limit、page_mode（默认 all）、timeout。",
    "spec": {},
    "doc": ""
  },
  {
    "id": "bili-dynamic",
    "title": "B站用户动态查询",
    "category": "视频与内容",
    "summary": "通过 B 站官方公开 API 拉取指定用户的最新动态列表（视频投稿/图文/转发等）。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/bili-dynamic",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - uid  string  必填；B 站用户 UID（纯数字）",
    "spec": {},
    "doc": "/api/bili-dynamic · B站用户动态查询\n\n通过 B 站官方公开 API 拉取指定用户的最新动态列表（视频投稿/图文/转发等）。\n\n参数：\n  - uid  string  必填；B 站用户 UID（纯数字）\n\n返回：动态 ID / 类型 / 文本 / 视频/图集详情 / 互动数据\n\n上游：https://api.bilibili.com/x/polymer/web-dynamic/desktop/v1/feed/space\n缓存：5 分钟（动态发布频率约几十分钟一条）\n\n限流：登录 QPS=5/日免=100；匿名 QPS=1/日免=20"
  },
  {
    "id": "blood-type",
    "title": "血型遗传规律查询",
    "category": "查询与娱乐",
    "summary": "根据父母血型查询子女可能/不可能的血型，基于 ABO 显性遗传规律。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/blood-type",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - father  string  必填；父亲血型，A / B / O / AB（大小写不敏感）\n  - mother  string  必填；母亲血型，A / B / O / AB（大小写不敏感）",
    "spec": {},
    "doc": "/api/blood-type · 血型遗传规律查询\n\n根据父母血型查询子女可能/不可能的血型，基于 ABO 显性遗传规律。\n\n参数：\n  - father  string  必填；父亲血型，A / B / O / AB（大小写不敏感）\n  - mother  string  必填；母亲血型，A / B / O / AB（大小写不敏感）\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"father\": \"A\",\n      \"mother\": \"B\",\n      \"possible\": [\"A\", \"B\", \"AB\", \"O\"],\n      \"impossible\": [],\n      \"summary\": \"子女可能为 A、B、AB、O 型血；无不可能的血型\"\n    }\n  }\n\n特性：\n  - 零上游：纯本地查找表（10 个组合，覆盖全部 4×4=16 种父母组合，对称等价）\n  - 不缓存：纯计算，本地比 Redis 还快\n\n限流：登录 QPS=20/日免=200；匿名 QPS=5/日免=100（科普类，放宽匿名）"
  },
  {
    "id": "bodyfat",
    "title": "体脂率 · BMI · 基础代谢一站式计算",
    "category": "查询与娱乐",
    "summary": "综合计算 BMI（BMI = kg/m²）、体脂率 BFP（Deurenberg 公式）、 基础代谢率 BMR（Mifflin-St Jeor 公式）、理想体重范围（BMI 18.5~24.9）、 腰围身高比 WHR 与健康风险评估、专业建议。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/bodyfat",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - weight  number  必填；体重，公斤（kg），范围 (0, 500]\n  - height  number  必填；身高，米（m），范围 (0, 3]，禁用厘米\n  - waist   number  必填；腰围，厘米（cm），范围 (0, 300]\n  - gender  string  必填；性别，支持：男 / female / male / m / f / 女\n  - age     number  可选；年龄，默认 30，范围 [1, 150]",
    "spec": {},
    "doc": "/api/bodyfat · 体脂率 · BMI · 基础代谢一站式计算\n\n综合计算 BMI（BMI = kg/m²）、体脂率 BFP（Deurenberg 公式）、\n基础代谢率 BMR（Mifflin-St Jeor 公式）、理想体重范围（BMI 18.5~24.9）、\n腰围身高比 WHR 与健康风险评估、专业建议。\n\n参数：\n  - weight  number  必填；体重，公斤（kg），范围 (0, 500]\n  - height  number  必填；身高，米（m），范围 (0, 3]，禁用厘米\n  - waist   number  必填；腰围，厘米（cm），范围 (0, 300]\n  - gender  string  必填；性别，支持：男 / female / male / m / f / 女\n  - age     number  可选；年龄，默认 30，范围 [1, 150]\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"bmi\": 22.86, \"bfp\": 18.43, \"bmr\": 1632.50,\n      \"category\": \"正常\",\n      \"ideal_weight_min\": 56.6, \"ideal_weight_max\": 76.2,\n      \"waist_height_ratio\": 0.46, \"health_risk\": \"低\",\n      \"advice\": \"体脂率正常，保持现有的生活方式。\",\n      \"input\": {...}\n    }\n  }\n\n特性：\n  - 零上游：纯公式计算，毫秒级返回\n  - 不缓存：每次输入不同，缓存命中率低于 5%\n\n限流：登录 QPS=20/日免=200；匿名 QPS=5/日免=100"
  },
  {
    "id": "brain-teaser",
    "title": "脑筋急转弯随机题",
    "category": "查询与娱乐",
    "summary": "从本地题库（4500+ 题）随机返回一条脑筋急转弯，包含题目和答案。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/brain-teaser",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：（无）",
    "spec": {},
    "doc": "/api/brain-teaser · 脑筋急转弯随机题\n\n从本地题库（4500+ 题）随机返回一条脑筋急转弯，包含题目和答案。\n\n参数：（无）\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"question\": \"什么动物最爱贴在墙上？\",\n      \"answer\": \"海报。\",\n      \"total_pool\": 4500\n    }\n  }\n\n特性：\n  - 零上游：本地 JSON 题库（44KB），进程内静态缓存\n  - 不缓存：每次请求随机不同的题目，缓存反而降低体验\n\n限流：登录 QPS=20/日免=200；匿名 QPS=5/日免=100"
  },
  {
    "id": "browser-fingerprint",
    "title": "浏览器指纹风控分析",
    "category": "域名与网络",
    "summary": "接收前端 SDK 采集的浏览器指纹 JSON（UA / Canvas / WebGL / 字体 / 时区 / 硬件 / WebDriver 等 20+ 维度）， 综合 9 类规则（UA / WebDriver / Canvas / WebGL / 时区 / 字体 / 硬件 / 插件 / 一致性）输出 0-100 风险评",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/browser-fingerprint",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（POST body, application/json）：\n  - ua, platform, language, languages[], timezone, timezoneOffset\n  - screenWidth, screenHeight, colorDepth, pixelRatio\n  - hardwareConcurrency, deviceMemory, maxTouchPoints\n  - canvasHash, canvasData, webglVendor, webglRenderer, webglHash\n  - fonts[], fontCount, plugins[], pluginCount\n  - webdriver, automation[], cookieEnabled, doNotTrack\n  - audioHash, webrtcIPs[], storageAvailable[], permissions[], connection{}, battery{}",
    "spec": {},
    "doc": "/api/browser-fingerprint · 浏览器指纹风控分析\n\n接收前端 SDK 采集的浏览器指纹 JSON（UA / Canvas / WebGL / 字体 / 时区 / 硬件 / WebDriver 等 20+ 维度），\n综合 9 类规则（UA / WebDriver / Canvas / WebGL / 时区 / 字体 / 硬件 / 插件 / 一致性）输出 0-100 风险评分、\n风险等级（safe/low/medium/high/critical）以及命中的风险因子和异常项。\n\n调用方式：POST 提交完整指纹 JSON。也支持 GET 但 GET 没有 body 时返回 4000 提示。\n\n参数（POST body, application/json）：\n  - ua, platform, language, languages[], timezone, timezoneOffset\n  - screenWidth, screenHeight, colorDepth, pixelRatio\n  - hardwareConcurrency, deviceMemory, maxTouchPoints\n  - canvasHash, canvasData, webglVendor, webglRenderer, webglHash\n  - fonts[], fontCount, plugins[], pluginCount\n  - webdriver, automation[], cookieEnabled, doNotTrack\n  - audioHash, webrtcIPs[], storageAvailable[], permissions[], connection{}, battery{}\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"fingerprint_id\": \"a1b2c3d4...\",\n      \"risk\": 72, \"risk_level\": \"high\", \"risk_label\": \"高风险\",\n      \"factors\": [{\"name\":\"webdriver\",\"score\":30,\"desc\":\"WebDriver 标记为 true\"}, ...],\n      \"anomalies\": [\"UA 声称 Windows 但 platform 不匹配\"],\n      \"device_profile\": { \"os\": \"Windows\", \"browser\": \"Chrome 125\", ... },\n      \"timestamp\": 1715097600\n    }\n  }\n\n上游：无（纯算法风控规则，本地分析）\n缓存：不缓存（每次指纹都要新分析）"
  },
  {
    "id": "bus-realtime",
    "title": "实时公交到站查询",
    "category": "天气与生活",
    "summary": "- type string 可选；query=到站（默认） / cities=城市列表 / stations=搜官方站名 / line=静态线路详情 / line-live=单线全部实时车辆 / line-search=按关键词搜本地线路 - city string query/stations/line/line-l",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/bus-realtime",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - type       string  可选；query=到站（默认） / cities=城市列表 / stations=搜官方站名 / line=静态线路详情 / line-live=单线全部实时车辆 / line-search=按关键词搜本地线路\n  - city       string  query/stations/line/line-live 必填；城市名（长沙 / 长沙市 / 崇阳县 / 恩施土家族苗族自治州 均可）\n  - station    string  query/stations 必填；站名或关键词（如 五一广场）；query 兼容别名 line；line-live 可选（筛某站到站）\n  - line       string  type=line / line-live 必填；line-search 可空（空=该城可查线路）；线路名或路号（如 401 / 401路 / 1）；也认 station\n  - direction  int     query=第几个站台（1 起，可大于 2）；line/line-live=1 默认 / 2 对向",
    "spec": {},
    "doc": "/api/bus-realtime · 实时公交到站查询\n\n参数：\n  - type       string  可选；query=到站（默认） / cities=城市列表 / stations=搜官方站名 / line=静态线路详情 / line-live=单线全部实时车辆 / line-search=按关键词搜本地线路\n  - city       string  query/stations/line/line-live 必填；城市名（长沙 / 长沙市 / 崇阳县 / 恩施土家族苗族自治州 均可）\n  - station    string  query/stations 必填；站名或关键词（如 五一广场）；query 兼容别名 line；line-live 可选（筛某站到站）\n  - line       string  type=line / line-live 必填；line-search 可空（空=该城可查线路）；线路名或路号（如 401 / 401路 / 1）；也认 station\n  - direction  int     query=第几个站台（1 起，可大于 2）；line/line-live=1 默认 / 2 对向\n\n返回：\n  query     该站点各线路的实时车辆（每线最多约 3 辆最近车）。没有在途车辆时该线 buses 为 []。车辆另有 lat/lng，没有坐标时为 null\n  cities    覆盖城市的官方短名；查询时也认 县/市/区/自治州 全称\n  stations  该城市关键词命中的官方站名（查到站必须用这里的 name）\n  line      该线路单向全程站点、首末班、票价（静态；地铁常无全程）\n  line-live 该线路单向全部实时车辆（可选再筛某一站的到站）。没有在途车辆时 buses 与 arrivals 为 []\n  line-search 该城市关键词命中的线路列表；line 为空则列出该城可查线路（选中后再用 line / line-live）\n\n上游：车来了 H5（web.chelaile.net.cn）与掌上公交 H5（h5.mygolbs.com）互补。\n      同一城市两边都有就合并；只有一边有就用那一边。回包字段相同。\n缓存：城市表 Redis 12h；站点搜索 10min；线路详情 1h；实时结果 Redis 15s\nQPS：到站按库内匿名 5 / 登录 10；cities/stations/line/line-search 单独 15 次/秒（见 RateLimit）"
  },
  {
    "id": "business-license",
    "title": "营业执照识别",
    "category": "识别与票证",
    "summary": "结构化识别营业执照，返回统一社会信用代码、名称、类型、法人、注册资本、 成立日期、住所、经营范围、核准日期等字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/business-license",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；图片 URL 或 base64（可带 data:image 前缀，≤10MB）",
    "spec": {},
    "doc": "/api/business-license · 营业执照识别\n\n结构化识别营业执照，返回统一社会信用代码、名称、类型、法人、注册资本、\n成立日期、住所、经营范围、核准日期等字段。\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；图片 URL 或 base64（可带 data:image 前缀，≤10MB）\n\n返回（data）：\n  certificate_type / unified_social_credit_code / company_name / company_type /\n  legal_representative / registered_capital / established_time / established_date /\n  business_term / domicile / business_scope / registration_authority /\n  approval_date / website / ocr_ms\n\n      ALAPI 没有的栏位（business_term / registration_authority）固定回 null\n      ocr_ms 本地计时，不读上游\n\n缓存：同图同结果 7 天（cache key v4：含证件类型校验，与旧错误成功包隔离）\n\n安全：上游 token 通过 .env 注入，代码不含密钥"
  },
  {
    "id": "car-owner-check",
    "title": "车牌车主一致性核验",
    "category": "身份与号码",
    "summary": "- cp string 必填；车牌号（中文省份简称开头 + 6~7 位字母数字）；兼容别名 plate - m string 必填；车主姓名；兼容别名 name / owner",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/car-owner-check",
    "timeout_sec": 25,
    "kyc": true,
    "media": false,
    "params": "参数：\n  - cp  string  必填；车牌号（中文省份简称开头 + 6~7 位字母数字）；兼容别名 plate\n  - m   string  必填；车主姓名；兼容别名 name / owner",
    "spec": {},
    "doc": "/api/car-owner-check · 车牌车主一致性核验\n\n参数：\n  - cp  string  必填；车牌号（中文省份简称开头 + 6~7 位字母数字）；兼容别名 plate\n  - m   string  必填；车主姓名；兼容别名 name / owner\n\n返回：车牌与车主是否相符（仅返回一致性结论，不泄露车主隐私）\n  { plate, owner, matched(bool), result }\n\n上游：本平台自建车辆信息核验能力（AES-128-CBC 加密通信，凭据走 .env）\n缓存：Redis api:car-owner-check:{md5} · TTL 300s"
  },
  {
    "id": "carrier-3c",
    "title": "运营商三要素核验（姓名 + 手机号 + 身份证号一致性）",
    "category": "身份与号码",
    "summary": "校验「真实姓名 + 手机号码 + 18 位身份证号」三者是否与运营商实名登记一致。 双通道冗余：主通道故障（失效/超限/异常）时自动切换备用通道，保障可用性。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/carrier-3c",
    "timeout_sec": 25,
    "kyc": true,
    "media": false,
    "params": "参数：\n  - name    string  必填；真实姓名（中文），兼容别名 realname / xm\n  - mobile  string  必填；11 位手机号，兼容别名 phone / sj\n  - idcard  string  必填；18 位身份证号（末位兼容 X），兼容别名 id_card / sf",
    "spec": {},
    "doc": "/api/carrier-3c · 运营商三要素核验（姓名 + 手机号 + 身份证号一致性）\n\n校验「真实姓名 + 手机号码 + 18 位身份证号」三者是否与运营商实名登记一致。\n双通道冗余：主通道故障（失效/超限/异常）时自动切换备用通道，保障可用性。\n\n参数：\n  - name    string  必填；真实姓名（中文），兼容别名 realname / xm\n  - mobile  string  必填；11 位手机号，兼容别名 phone / sj\n  - idcard  string  必填；18 位身份证号（末位兼容 X），兼容别名 id_card / sf\n\n返回示例：\n  { \"code\": 0, \"msg\": \"成功\",\n    \"data\": { \"name\": \"张三\", \"mobile\": \"138****0000\", \"idcard\": \"110***********001X\",\n              \"match\": true, \"result\": \"三要素一致\" },\n    \"request_id\": \"...\" }\n\n上游：本平台自建实名核验能力（双通道冗余，凭据置于 .env，不下发前端）\n缓存：不缓存（实时核验，每次都走上游）"
  },
  {
    "id": "cdn-ips",
    "title": "CDN 优选 IP",
    "category": "域名与网络",
    "summary": "获取主流 CDN 服务商的官方 IP 段（CIDR）列表，用于 CDN 优选、反代、流量分流等场景。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/cdn-ips",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  server  必填  CDN 服务商：cloudflare / cloudfront / gcore\n                兼容老格式：1=cloudflare / 2=cloudfront / 3=gcore\n  type    必填  IP 协议版本：v4 或 v6",
    "spec": {},
    "doc": "/api/cdn-ips · CDN 优选 IP\n\n获取主流 CDN 服务商的官方 IP 段（CIDR）列表，用于 CDN 优选、反代、流量分流等场景。\n\n参数：\n  server  必填  CDN 服务商：cloudflare / cloudfront / gcore\n                兼容老格式：1=cloudflare / 2=cloudfront / 3=gcore\n  type    必填  IP 协议版本：v4 或 v6\n\n返回：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"server\":      \"CloudFlare\",\n      \"type\":        \"v4\",\n      \"count\":       15,\n      \"ips\":         [\"173.245.48.0/20\", ...],\n      \"update_time\": \"2026-05-06 07:55:00\"\n    }\n  }\n\n上游：\n  CloudFlare:  https://www.cloudflare.com/ips-v4 / -v6\n  CloudFront:  https://ip-ranges.amazonaws.com/ip-ranges.json （筛选 service=CLOUDFRONT）\n  Gcore:       https://api.gcore.com/cdn/public-ip-list（addresses / addresses_v6）\n\n缓存：12 小时（CDN IP 段日级更新，长缓存合理）\n  key: v1:cache:cdn-ips:<server>:<type>"
  },
  {
    "id": "cf-dns",
    "title": "Cloudflare DNS 记录更新（DDNS 必备）",
    "category": "域名与网络",
    "summary": "通过用户自己提供的 Cloudflare API Token，更新指定域名的 A/AAAA 记录。 适合家庭宽带 DDNS、公司外网 IP 变化时自动同步等场景。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/cf-dns",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - domain   string  必填；根域名，如 example.com\n  - host     string  必填；主机记录，@ 表示根域名，www 表示 www 子域名\n  - ip       string  必填；要设置的 IP（IPv4 或 IPv6）\n  - token    string  必填；Cloudflare API Token（用户在 dash.cloudflare.com 创建）\n  - type     string  可选；记录类型 A / AAAA（默认 A，IPv6 需用 AAAA）\n  - ttl      number  可选；TTL 120-86400（默认 120）\n  - proxied  bool    可选；是否启用 Cloudflare CDN 代理（默认 false）",
    "spec": {},
    "doc": "/api/cf-dns · Cloudflare DNS 记录更新（DDNS 必备）\n\n通过用户自己提供的 Cloudflare API Token，更新指定域名的 A/AAAA 记录。\n适合家庭宽带 DDNS、公司外网 IP 变化时自动同步等场景。\n\n参数：\n  - domain   string  必填；根域名，如 example.com\n  - host     string  必填；主机记录，@ 表示根域名，www 表示 www 子域名\n  - ip       string  必填；要设置的 IP（IPv4 或 IPv6）\n  - token    string  必填；Cloudflare API Token（用户在 dash.cloudflare.com 创建）\n  - type     string  可选；记录类型 A / AAAA（默认 A，IPv6 需用 AAAA）\n  - ttl      number  可选；TTL 120-86400（默认 120）\n  - proxied  bool    可选；是否启用 Cloudflare CDN 代理（默认 false）\n\n返回：旧 IP / 新 IP / Zone ID / Record ID\n\n不缓存：DDNS 是写入操作\n\n限流：登录 QPS=5/日免=50；匿名关闭（涉及用户 Token，要求登录身份）"
  },
  {
    "id": "code-beautify",
    "title": "代码高亮卡片",
    "category": "大模型与文本",
    "summary": "把一段代码画成高亮卡片。code 必填。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/code-beautify",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "必填 code。可选 language、theme、title、output（json / svg / png）、line_numbers、scale、tab_size、font_size。",
    "spec": {},
    "doc": ""
  },
  {
    "id": "company-contacts",
    "title": "企业联系人",
    "category": "企业与招投标",
    "summary": "企业联系人",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/company-contacts",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：companyName\n默认：pageNo=1，pageSize=5\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "companyName"
      ],
      "optional": [],
      "defaults": {
        "pageNo": "1",
        "pageSize": "5"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/company-contacts · 企业联系人\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "company-customers",
    "title": "企业客户项目",
    "category": "企业与招投标",
    "summary": "企业客户项目",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/company-customers",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：companyName\n默认：pageNo=1，pageSize=20\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "companyName"
      ],
      "optional": [],
      "defaults": {
        "pageNo": "1",
        "pageSize": "20"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/company-customers · 企业客户项目\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "company-profile",
    "title": "企业档案深度查询",
    "category": "企业与招投标",
    "summary": "输入企业名称，返回单个企业的多维度深度档案： basic(工商基本信息) / shareholders(股东) / executives(高管) / investments(对外投资) / changes(变更记录) / risk(风险综合 6 类) / annual_report(年报年份+最近一年) / licen",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/company-profile",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  company    必填  企业名称（2-80 字、含中文，支持简称/全称模糊搜索）；兼容别名 name\n  dimension  选填  维度组合，逗号分隔，默认 basic\n                   可选：basic,shareholders,executives,investments,changes,risk,\n                   annual_report,licenses,trademarks,patents\n旧字段只增不删。",
    "spec": {},
    "doc": "/api/company-profile · 企业档案深度查询\n\n输入企业名称，返回单个企业的多维度深度档案：\n  basic(工商基本信息) / shareholders(股东) / executives(高管)\n  / investments(对外投资) / changes(变更记录) / risk(风险综合 6 类)\n  / annual_report(年报年份+最近一年) / licenses(资质+行政许可字段) / trademarks(商标)\n  / patents(专利，仅公开)\n并附企业化扩展：注册资本规模、经营状态、企业年龄、活力评分、自然语言摘要。\n\n参数：\n  company    必填  企业名称（2-80 字、含中文，支持简称/全称模糊搜索）；兼容别名 name\n  dimension  选填  维度组合，逗号分隔，默认 basic\n                   可选：basic,shareholders,executives,investments,changes,risk,\n                   annual_report,licenses,trademarks,patents\n旧字段只增不删。\n\n与 /api/company-search 的区别：company-search 是关键词搜索多个候选企业的基础信息，\n本接口是「单企业」的多维度深度档案 + 风险 + 评分。\n\n缓存：6 小时（企业档案日级以上更新）  key: v1:cache:company-profile:tm3:<md5(company|dims)>"
  },
  {
    "id": "company-search",
    "title": "企业工商信息查询",
    "category": "企业与招投标",
    "summary": "通过企业名称关键词查询工商信息，默认返回 20 条，可用 page/size 翻页。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/company-search",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  name  必填  企业名称关键词（≥ 2 字符），如「腾讯科技」「阿里巴巴」\n  page  选填  页码，从 1 起，默认 1\n  size  选填  每页条数，1–20，默认 20（兼容 page_size）",
    "spec": {},
    "doc": "/api/company-search · 企业工商信息查询\n\n通过企业名称关键词查询工商信息，默认返回 20 条，可用 page/size 翻页。\n\n参数：\n  name  必填  企业名称关键词（≥ 2 字符），如「腾讯科技」「阿里巴巴」\n  page  选填  页码，从 1 起，默认 1\n  size  选填  每页条数，1–20，默认 20（兼容 page_size）\n\n上游：天眼查 capi（字段最全，请求头/体与 searchCompany 一致）\n  机房出口已被拉黑，默认不直连。主路走炎迪转发（一号一条粘性出口，失败换这个号的 IP 再轮号）。\n  「请登录」只按文案判断；state=ok 的空列表是未找到，不是 Token 失效。\n\n缓存：\n  1. 热 24 小时 Redis（只收字段齐全的结果）\n  2. MySQL 天眼查底库 tyc_search / tyc_companies（只收齐全工商行）\n  3. 成功结果另存 Redis 30 天；上游 502 时回吐最近一次成功结果（短锁 90 秒）。\n查询顺序：Redis → 底库 → 天眼查。"
  },
  {
    "id": "company-stats",
    "title": "企业招中标统计",
    "category": "企业与招投标",
    "summary": "企业招中标统计",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/company-stats",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：companyName\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "companyName"
      ],
      "optional": [],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/company-stats · 企业招中标统计\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "company-suppliers",
    "title": "企业供应商项目",
    "category": "企业与招投标",
    "summary": "企业供应商项目",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/company-suppliers",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：companyName\n默认：pageNo=1，pageSize=20\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "companyName"
      ],
      "optional": [],
      "defaults": {
        "pageNo": "1",
        "pageSize": "20"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/company-suppliers · 企业供应商项目\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "contact-parse",
    "title": "联系人三要素解析（姓名 / 电话 / 地址）",
    "category": "大模型与文本",
    "summary": "从一段乱序中文文本中抽出姓名、电话号码、地址。顺序任意。 纯本地规则，无上游。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/contact-parse",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - text     string  必填（兼容 q / content / address）；≤ 1000 字",
    "spec": {},
    "doc": "/api/contact-parse · 联系人三要素解析（姓名 / 电话 / 地址）\n\n从一段乱序中文文本中抽出姓名、电话号码、地址。顺序任意。\n纯本地规则，无上游。\n\n参数：\n  - text     string  必填（兼容 q / content / address）；≤ 1000 字\n\n返回：\n  name / phone / address（及中文别名 姓名/电话号码/地址）\n  formatted：如「姓名=张三，电话号码=18997536335，地址=…」\n\n建议 POST，避免个人信息进 access_log。"
  },
  {
    "id": "content-extract",
    "title": "网页正文提取（基于文本密度）",
    "category": "大模型与文本",
    "summary": "自动从新闻、博客、公众号等网页中抽取主体正文，去除导航/侧栏/广告/评论等噪音。 算法：候选选择器（article/.content/.post 等） + 文本密度排序 + DOM 噪音清洗。 同步返回标题、发布时间、配图列表、字数与预估阅读时长。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/content-extract",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - url  string  必填；目标网页 URL",
    "spec": {},
    "doc": "/api/content-extract · 网页正文提取（基于文本密度）\n\n自动从新闻、博客、公众号等网页中抽取主体正文，去除导航/侧栏/广告/评论等噪音。\n算法：候选选择器（article/.content/.post 等） + 文本密度排序 + DOM 噪音清洗。\n同步返回标题、发布时间、配图列表、字数与预估阅读时长。\n\n参数：\n  - url  string  必填；目标网页 URL\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"url\": \"https://...\", \"title\": \"...\",\n      \"publish_time\": \"2024-08-15\", \"content\": \"...\",\n      \"word_count\": 2300, \"reading_time\": \"5分钟\",\n      \"image_count\": 3, \"images\": [\"https://...\", ...]\n    }\n  }\n\n缓存：6 小时\n\n限流：登录 QPS=5/日免=100；匿名 QPS=1/日免=20"
  },
  {
    "id": "content-moderation",
    "title": "内容审核（敏感词 + 正则 + AI 特征评分）",
    "category": "大模型与文本",
    "summary": "检测文本中的色情 / 政治 / 广告 / 联系方式 / 引流 / 谩骂 6 大类敏感内容， 综合 3 重策略：敏感词库（多关键词遍历）+ 正则规则（联系方式 / 变体绕过 / 广告模式）+ AI 特征加权评分。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/content-moderation",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action  string  可选；moderate（默认）/ batch / categories\n  - text    string  审核单条文本时必填，长度 1-5000\n  - texts   array   批量审核（仅 action=batch），最多 50 条\n  - mask    bool    可选，是否返回脱敏文本，默认 false",
    "spec": {},
    "doc": "/api/content-moderation · 内容审核（敏感词 + 正则 + AI 特征评分）\n\n检测文本中的色情 / 政治 / 广告 / 联系方式 / 引流 / 谩骂 6 大类敏感内容，\n综合 3 重策略：敏感词库（多关键词遍历）+ 正则规则（联系方式 / 变体绕过 / 广告模式）+ AI 特征加权评分。\n\n参数：\n  - action  string  可选；moderate（默认）/ batch / categories\n  - text    string  审核单条文本时必填，长度 1-5000\n  - texts   array   批量审核（仅 action=batch），最多 50 条\n  - mask    bool    可选，是否返回脱敏文本，默认 false\n\n返回示例（moderate）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"is_pass\": false, \"risk_level\": \"high\",\n      \"categories\": [\"谩骂\"],\n      \"details\": [{\"category\": \"谩骂\", \"method\": \"敏感词\", \"matches\": [\"傻逼\", \"脑残\"], \"count\": 2}],\n      \"masked_text\": \"你这个**，**吧\",\n      \"original_length\": 10\n    }\n  }\n\n上游：无（纯算法 + 外置词库 cm_wordlists.php + 正则 + 特征评分）\n缓存：不缓存（同文本不同请求都需要再算）"
  },
  {
    "id": "crazy-thursday",
    "title": "疯狂星期四文案",
    "category": "查询与娱乐",
    "summary": "内置 KFC「疯四文学」+ AI 大模型搞笑文案，覆盖 11 个分类。支持： - random 随机一条（可按分类筛选） - batch 批量获取多条不重复 - categories 分类列表 + 各分类数量 - countdown 距离下一个星期四的倒计时",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/crazy-thursday",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action    string  可选；random（默认）/ batch / categories / countdown\n  - category  string  可选；分类筛选：情感/搞笑/职场/文艺/学术/古风/悬疑/科幻/鸡汤/日常/AI\n  - count     int     可选（仅 batch 用）；1-20，默认 5",
    "spec": {},
    "doc": "/api/crazy-thursday · 疯狂星期四文案\n\n内置 KFC「疯四文学」+ AI 大模型搞笑文案，覆盖 11 个分类。支持：\n  - random    随机一条（可按分类筛选）\n  - batch     批量获取多条不重复\n  - categories  分类列表 + 各分类数量\n  - countdown   距离下一个星期四的倒计时\n\n参数：\n  - action    string  可选；random（默认）/ batch / categories / countdown\n  - category  string  可选；分类筛选：情感/搞笑/职场/文艺/学术/古风/悬疑/科幻/鸡汤/日常/AI\n  - count     int     可选（仅 batch 用）；1-20，默认 5\n\n返回示例（random）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"text\": \"今天表白被拒绝了...V我50。\",\n      \"category\": \"情感\",\n      \"is_thursday\": true,\n      \"thursday_tip\": \"今天就是疯狂星期四！冲！\"\n    },\n    \"request_id\": \"...\"\n  }\n\n上游：无（内置文案库）\n缓存：不缓存（每次随机）"
  },
  {
    "id": "csdn-profile",
    "title": "CSDN 博主信息查询",
    "category": "视频与内容",
    "summary": "通过 CSDN 用户名查询博主公开档案：昵称、头像、码龄、博客等级、原创数、 粉丝数、关注数、博客排名、IP 属地、加入时间、原力等级、勋章、成就。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/csdn-profile",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - username  string  必填；CSDN 用户名，如 weixin_44906759",
    "spec": {},
    "doc": "/api/csdn-profile · CSDN 博主信息查询\n\n通过 CSDN 用户名查询博主公开档案：昵称、头像、码龄、博客等级、原创数、\n粉丝数、关注数、博客排名、IP 属地、加入时间、原力等级、勋章、成就。\n\n参数：\n  - username  string  必填；CSDN 用户名，如 weixin_44906759\n\n返回：博主完整档案（含成就、勋章列表）\n\n上游：抓取 https://blog.csdn.net/{username} 主页 + tab API\n缓存：1 小时（博主信息变化频率较低，但粉丝数等会持续增长）\n\n限流：登录 QPS=5/日免=100；匿名 QPS=1/日免=20"
  },
  {
    "id": "desensitize",
    "title": "数据脱敏（手机号/身份证/银行卡/邮箱/姓名）",
    "category": "大模型与文本",
    "summary": "自动检测并脱敏文本中的敏感信息，支持 5 大类型自由组合。 全部为本地正则匹配，零上游、毫秒级返回。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/desensitize",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - text           string  必填；要脱敏的文本，最长 50000 字节\n  - types          string  可选；脱敏类型，逗号分隔，默认 all\n                           可选：phone / idcard / bankcard / email / name / all\n  - with_original  bool    可选；是否在 detections 中回显原文，默认 false\n                           出于隐私保护考虑默认不回显（日志/缓存均不持久原文）",
    "spec": {},
    "doc": "/api/desensitize · 数据脱敏（手机号/身份证/银行卡/邮箱/姓名）\n\n自动检测并脱敏文本中的敏感信息，支持 5 大类型自由组合。\n全部为本地正则匹配，零上游、毫秒级返回。\n\n参数：\n  - text           string  必填；要脱敏的文本，最长 50000 字节\n  - types          string  可选；脱敏类型，逗号分隔，默认 all\n                           可选：phone / idcard / bankcard / email / name / all\n  - with_original  bool    可选；是否在 detections 中回显原文，默认 false\n                           出于隐私保护考虑默认不回显（日志/缓存均不持久原文）\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"masked_text\": \"我叫张*，电话 138****8000，身份证 110101********1234\",\n      \"detection_count\": 3,\n      \"summary\": {\"name\": 1, \"phone\": 1, \"idcard\": 1},\n      \"detections\": [\n        {\"type\": \"name\",   \"masked\": \"张*\"},\n        {\"type\": \"phone\",  \"masked\": \"138****8000\"},\n        {\"type\": \"idcard\", \"masked\": \"110101********1234\"}\n      ]\n    }\n  }\n\n脱敏规则：\n  - 手机号：保留前3位+后4位，中间4位掩码（138****8000）\n  - 身份证18位：保留前6位+后4位（110101********1234）\n  - 身份证15位：保留前6位+后3位（110101******123）\n  - 银行卡：4位+ **** **** + 后4位（6225 **** **** 1234）\n  - 邮箱：本地名首2位+星号+原域名（zh***@gmail.com）\n  - 中文姓名：仅识别带「姓名/先生/女士」等上下文特征的姓氏，避免误伤\n\n限流：登录 QPS=10/日免=200；匿名 QPS=2/日免=50"
  },
  {
    "id": "dns-check",
    "title": "DNS 劫持检测",
    "category": "域名与网络",
    "summary": "通过 4 家 DoH（DNS over HTTPS）服务器并发查询同一域名，对比 A/AAAA 记录的解析结果， 检测 DNS 是否被运营商劫持、终端 hosts 篡改或遭遇异常 GeoDNS 分流。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/dns-check",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  domain  必填  要检测的域名（如 baidu.com，自动剥离 http(s):// 协议头与路径）",
    "spec": {},
    "doc": "/api/dns-check · DNS 劫持检测\n\n通过 4 家 DoH（DNS over HTTPS）服务器并发查询同一域名，对比 A/AAAA 记录的解析结果，\n检测 DNS 是否被运营商劫持、终端 hosts 篡改或遭遇异常 GeoDNS 分流。\n\n参数：\n  domain  必填  要检测的域名（如 baidu.com，自动剥离 http(s):// 协议头与路径）\n\n返回：\n  data.domain              规范化后的域名\n  data.summary             综合判定（status/risk_level/risk_score/cname_chain/...）\n  data.unique_ipv4         去重后的全部 A 记录\n  data.unique_ipv6         去重后的全部 AAAA 记录\n  data.servers[]           4 家 DoH 的明细（status/latency_ms/ipv4/ipv6/cname/ttl）\n  data.exec_ms             总耗时（毫秒）\n\n上游：\n  AliDNS    https://dns.alidns.com/resolve\n  DNSPod    https://doh.pub/dns-query\n  360       https://doh.360.cn/resolve\n  Cloudflare https://cloudflare-dns.com/dns-query   （境内可能超时，如失败标记 status=timeout）\n\n缓存：60 秒（避免短时间重复查询冲击上游）\n  key: v1:cache:dns-check:<md5(domain)>"
  },
  {
    "id": "dns-hijack",
    "title": "DNS 劫持检测",
    "category": "域名与网络",
    "summary": "通过对比多个权威 DoH (DNS-over-HTTPS) 服务商对同一域名的解析结果， 检测本地 DNS 是否被劫持/污染/篡改。结果一致 = 安全；多源不一致 = 高风险。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/dns-hijack",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - domain  string  必填；域名（不含 https:// 与路径），如 baidu.com",
    "spec": {},
    "doc": "/api/dns-hijack · DNS 劫持检测\n\n通过对比多个权威 DoH (DNS-over-HTTPS) 服务商对同一域名的解析结果，\n检测本地 DNS 是否被劫持/污染/篡改。结果一致 = 安全；多源不一致 = 高风险。\n\n参数：\n  - domain  string  必填；域名（不含 https:// 与路径），如 baidu.com\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"domain\": \"baidu.com\",\n      \"is_hijacked\": false,\n      \"risk_level\": \"low\",\n      \"summary\": \"5 个 DoH 服务商解析结果一致，未检测到劫持迹象\",\n      \"results\": [\n        {\"provider\":\"Cloudflare\",\"ips\":[\"110.242.68.3\",\"...\"],\"success\":true,\"duration_ms\":120},\n        ...\n      ],\n      \"unique_ips\": [\"110.242.68.3\",\"...\"]\n    }\n  }\n\n上游：5 个公共 DoH（Cloudflare / Google / AliDNS / DNSPod / OpenDNS）\n缓存：5 分钟（DNS 解析有 TTL，短缓存合理）\n\n限流：登录 QPS=5/日免=100；匿名 QPS=1/日免=20"
  },
  {
    "id": "dns-lookup",
    "title": "DNS 记录查询",
    "category": "域名与网络",
    "summary": "按域名查 DNS。domain 必填，type 默认 A。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/dns-lookup",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "必填 domain（别名 name、host）。可选 type（默认 A）、server、timeout、doh、doh_provider。",
    "spec": {},
    "doc": ""
  },
  {
    "id": "dns-query",
    "title": "DNS 记录查询",
    "category": "域名与网络",
    "summary": "查询域名的各类标准 DNS 记录（A/AAAA/NS/CNAME/MX/TXT/CAA/SOA），支持 ANY 一次返回全部。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/dns-query",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  host   必填  域名（如 baidu.com，自动剥离协议头与路径）\n  type   可选  记录类型，默认 A\n                 - 字符串：A / AAAA / NS / CNAME / MX / TXT / CAA / SOA / ANY\n                 - 数字（兼容）：1=A / 2=NS / 5=CNAME / 6=SOA / 15=MX / 16=TXT / 28=AAAA / 257=CAA",
    "spec": {},
    "doc": "/api/dns-query · DNS 记录查询\n\n查询域名的各类标准 DNS 记录（A/AAAA/NS/CNAME/MX/TXT/CAA/SOA），支持 ANY 一次返回全部。\n\n参数：\n  host   必填  域名（如 baidu.com，自动剥离协议头与路径）\n  type   可选  记录类型，默认 A\n                 - 字符串：A / AAAA / NS / CNAME / MX / TXT / CAA / SOA / ANY\n                 - 数字（兼容）：1=A / 2=NS / 5=CNAME / 6=SOA / 15=MX / 16=TXT / 28=AAAA / 257=CAA\n\n上游：3 家国内 DoH 并发（AliDNS / DNSPod / 360），结果合并去重，自建无第三方依赖\n\n返回：\n  data.host        规范化后的域名\n  data.type        请求类型（标准化为大写）\n  data.type_code   类型数字编码\n  data.records[]   记录列表（含 raw + parsed 结构化解析）\n  data.total       记录数\n  data.exec_ms     总耗时\n  data.sources     成功响应的 DoH 列表\n  data.notes       提示信息（如未找到记录时）\n\n缓存：60 秒（避免重复查询冲击上游 + 域名变更通常需 TTL 周期）\n  key: v1:cache:dns-query:<md5(host|type)>"
  },
  {
    "id": "domain-trade",
    "title": "域名交易市场行情",
    "category": "域名与网络",
    "summary": "拉取 EDNS 域名交易市场公开数据，支持按价格、长度、后缀、交易类型筛选。 适合站长扫货短米、行业研究、域名估值参考。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/domain-trade",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - page        number  可选；页码，默认 1\n  - pagesize    number  可选；每页数量，默认 50（≤100）\n  - max_price   number  可选；最高价格（元）\n  - max_length  number  可选；域名最大长度\n  - suffix      string  可选；后缀，如 .com / .cn / .net\n  - sale_type   string  可选；交易类型",
    "spec": {},
    "doc": "/api/domain-trade · 域名交易市场行情\n\n拉取 EDNS 域名交易市场公开数据，支持按价格、长度、后缀、交易类型筛选。\n适合站长扫货短米、行业研究、域名估值参考。\n\n参数：\n  - page        number  可选；页码，默认 1\n  - pagesize    number  可选；每页数量，默认 50（≤100）\n  - max_price   number  可选；最高价格（元）\n  - max_length  number  可选；域名最大长度\n  - suffix      string  可选；后缀，如 .com / .cn / .net\n  - sale_type   string  可选；交易类型\n\n上游：https://www.edns.com/v1/domain_trades\n缓存：5 分钟（行情快速变化但绝大多数域名变化≠秒级）\n\n限流：登录 QPS=5/日免=100；匿名 QPS=1/日免=20"
  },
  {
    "id": "douban-movie",
    "title": "豆瓣电影信息查询",
    "category": "查询与娱乐",
    "summary": "通过豆瓣 ID 或 URL 查询电影详情：评分、导演、演员、类型、地区、片长、 集数、热门短评等。基于豆瓣公开 JSON API。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/douban-movie",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - id  string  必填；豆瓣 ID（如 1292052）或豆瓣电影 URL（自动提取 ID）",
    "spec": {},
    "doc": "/api/douban-movie · 豆瓣电影信息查询\n\n通过豆瓣 ID 或 URL 查询电影详情：评分、导演、演员、类型、地区、片长、\n集数、热门短评等。基于豆瓣公开 JSON API。\n\n参数：\n  - id  string  必填；豆瓣 ID（如 1292052）或豆瓣电影 URL（自动提取 ID）\n\n返回：name / year / score / director / actor / genre / area / duration / short_comment ...\n\n上游：https://movie.douban.com/j/subject_abstract\n缓存：24h（电影信息相对稳定，长缓存合理）\n\n限流：登录 QPS=5/日免=100；匿名 QPS=1/日免=30"
  },
  {
    "id": "doubao-image",
    "title": "豆包图片生成（即梦 5.0 Pro）",
    "category": "视频与内容",
    "summary": "直连初和媒体接口，不走本站 /api/ai-chat。 模型：doubao-seedream-5-0-pro-260628（同款上游里最便宜的豆包生图，约 0.31 算力/张）。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/doubao-image",
    "timeout_sec": 25,
    "kyc": false,
    "media": true,
    "params": "参数：\n  - prompt  string  必填；图片描述，中英均可；1~1000 字符\n  - size    string  可选；对外仍用像素枚举，内部映射为 1K + 宽高比",
    "spec": {},
    "doc": "/api/doubao-image · 豆包图片生成（即梦 5.0 Pro）\n\n直连初和媒体接口，不走本站 /api/ai-chat。\n模型：doubao-seedream-5-0-pro-260628（同款上游里最便宜的豆包生图，约 0.31 算力/张）。\n\n参数：\n  - prompt  string  必填；图片描述，中英均可；1~1000 字符\n  - size    string  可选；对外仍用像素枚举，内部映射为 1K + 宽高比\n\n上游：\n  POST https://api.lk888.ai/v1/media/generate\n  GET  https://api.lk888.ai/v1/skills/task-status?task_id="
  },
  {
    "id": "doubao-parse",
    "title": "豆包内容解析",
    "category": "视频与内容",
    "summary": "从豆包视频分享链接或豆包对话分享链接中提取无水印视频直链、封面或原图列表。 优先本机直连豆包播放接口；未命中再回落综合解析（url 内部 Base64）。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/doubao-parse",
    "timeout_sec": 25,
    "kyc": false,
    "media": true,
    "params": "",
    "spec": {},
    "doc": "/api/doubao-parse · 豆包内容解析\n\n从豆包视频分享链接或豆包对话分享链接中提取无水印视频直链、封面或原图列表。\n优先本机直连豆包播放接口；未命中再回落综合解析（url 内部 Base64）。"
  },
  {
    "id": "douyin-search",
    "title": "抖音关键词视频搜索",
    "category": "视频与内容",
    "summary": "按关键词返回公开搜索页里的视频页链接（最多 20 条），不返回可播 CDN。 要无水印直链请另调 /api/video-parse。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/douyin-search",
    "timeout_sec": 25,
    "kyc": false,
    "media": true,
    "params": "参数：\n  keyword  string  必填；搜索词，最长 40 字\n  cookie   string  必填；www.douyin.com 任意已登录页的完整 Cookie（须含 sessionid）\n  count    int     可选；条数 1–20，默认 10\n  offset   int     可选；翻页起点，默认 0",
    "spec": {},
    "doc": "/api/douyin-search · 抖音关键词视频搜索\n\n按关键词返回公开搜索页里的视频页链接（最多 20 条），不返回可播 CDN。\n要无水印直链请另调 /api/video-parse。\n\n参数：\n  keyword  string  必填；搜索词，最长 40 字\n  cookie   string  必填；www.douyin.com 任意已登录页的完整 Cookie（须含 sessionid）\n  count    int     可选；条数 1–20，默认 10\n  offset   int     可选；翻页起点，默认 0\n\nCookie 传法（按稳妥程度）：\n  1. POST JSON：{\"keyword\":\"手机\",\"cookie\":\"ttwid=...; sessionid=...\"}\n  2. Header：X-Douyin-Cookie: ttwid=...; sessionid=...\n  3. GET 时请把整段 Cookie 做 URL 编码。未编码时 sessionid/ttwid 会被 & 拆开，\n     本接口会把这些碎片重新拼回 Cookie，不会当成 keyword/count 等字段。\n\n缓存：180 秒（按 keyword+count+offset+cookie 指纹）"
  },
  {
    "id": "douyin-user",
    "title": "抖音用户公开信息查询",
    "category": "视频与内容",
    "summary": "通过抖音用户主页链接（短链或长链），获取昵称、头像、签名、作品数、 粉丝数、关注数、获赞总数等公开信息。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/douyin-user",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - url  string  必填；抖音用户主页链接（v.douyin.com 短链 或 douyin.com/user/ 长链）",
    "spec": {},
    "doc": "/api/douyin-user · 抖音用户公开信息查询\n\n通过抖音用户主页链接（短链或长链），获取昵称、头像、签名、作品数、\n粉丝数、关注数、获赞总数等公开信息。\n\n参数：\n  - url  string  必填；抖音用户主页链接（v.douyin.com 短链 或 douyin.com/user/ 长链）\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"sec_uid\": \"MS4wLjABAAAA...\",\n      \"unique_id\": \"douyin_id\",\n      \"nickname\": \"张三\",\n      \"avatar\": \"https://...\",\n      \"signature\": \"...\",\n      \"aweme_count\": 123, \"follower_count\": 9999,\n      \"following_count\": 50, \"total_favorited\": 100000\n    }\n  }\n\n上游：m.douyin.com ，空包时再试 www.iesdouyin.com。都不走代理。\n同一机房出口大约每秒只放行 1 次上游。再快抖音会回 HTTP 200 空包，并持续约一小时。\n缓存：2 小时。命中缓存不打上游。\n\n限流：登录 QPS=5/日免=100；匿名 QPS=1/日免=20"
  },
  {
    "id": "douyin-works",
    "title": "抖音用户作品采集",
    "category": "视频与内容",
    "summary": "按用户主页链接或 sec_user_id 返回公开作品卡片（最多 20 条）。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/douyin-works",
    "timeout_sec": 25,
    "kyc": false,
    "media": true,
    "params": "参数：\n  url / sec_user_id  二选一；主页链接（短链或长链）或网页 sec_user_id\n  cookie             必填；一条或最多 20 条完整 Cookie（须含 sessionid）\n                     一条传字符串；多条传 JSON 数组 [\"COOKIE1\",\"COOKIE2\"]，按轮询使用，最多 20 条\n  count              可选；条数 1–20，默认 10\n  max_cursor         可选；翻页游标，默认 0；下一页用上次返回的 next_cursor",
    "spec": {},
    "doc": "/api/douyin-works · 抖音用户作品采集\n\n按用户主页链接或 sec_user_id 返回公开作品卡片（最多 20 条）。\n\n参数：\n  url / sec_user_id  二选一；主页链接（短链或长链）或网页 sec_user_id\n  cookie             必填；一条或最多 20 条完整 Cookie（须含 sessionid）\n                     一条传字符串；多条传 JSON 数组 [\"COOKIE1\",\"COOKIE2\"]，按轮询使用，最多 20 条\n  count              可选；条数 1–20，默认 10\n  max_cursor         可选；翻页游标，默认 0；下一页用上次返回的 next_cursor\n\nCookie 传法：\n  1. 单条：表单文本或 {\"cookie\":\"ttwid=...; sessionid=...\"}\n  2. 多条：{\"cookie\":[\"ttwid=...; sessionid=a\",\"ttwid=...; sessionid=b\"]}\n     或用 ||| / 换行分隔；也认 cookies 字段\n  3. Header：X-Douyin-Cookie（多条同样可用 |||）\n  4. GET 时请把整段 Cookie 做 URL 编码\n\n出站由服务端走住宅代理隧道，调用方不用传代理。\n缓存：180 秒（按 sec_user_id+count+max_cursor+Cookie 池指纹）"
  },
  {
    "id": "driving-license",
    "title": "驾驶证识别",
    "category": "识别与票证",
    "summary": "结构化识别驾驶证图片，返回证号、姓名、性别、国籍、住址、 出生日期、初次领证日期、准驾车型、有效期起止、发证机关、相片位置等 12 个字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/driving-license",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；图片传入方式：url 或 base64\n  - input_data  string  必填；图片 URL 或 base64 编码字符串",
    "spec": {},
    "doc": "/api/driving-license · 驾驶证识别\n\n结构化识别驾驶证图片，返回证号、姓名、性别、国籍、住址、\n出生日期、初次领证日期、准驾车型、有效期起止、发证机关、相片位置等 12 个字段。\n\n参数：\n  - input_type  string  必填；图片传入方式：url 或 base64\n  - input_data  string  必填；图片 URL 或 base64 编码字符串\n\n返回：\n  id_number / name / sex / nationality / address / date_of_birth /\n  date_of_first_issue / class / valid_begin / valid_end /\n  license_issuing_authority / id_photo_location\n\n上游：POST https://v3.alapi.cn/api/ocr/driving-license\n缓存：Redis 7 天（按 md5(input_type|input_data) 哈希）"
  },
  {
    "id": "drug-insert",
    "title": "药品说明书查询",
    "category": "查询与娱乐",
    "summary": "name 药品名称关键词（搜索） id 说明书 ID（详情，如 sms125387） 二者至少传一个；同时传时以 id 为准。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/drug-insert",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "/api/drug-insert · 药品说明书查询\n\n  name  药品名称关键词（搜索）\n  id    说明书 ID（详情，如 sms125387）\n  二者至少传一个；同时传时以 id 为准。\n\n搜索缓存 10 分钟，详情缓存 1 小时。"
  },
  {
    "id": "earthquake",
    "title": "全球地震速报（近实时地震监测数据）",
    "category": "天气与生活",
    "summary": "汇聚全球地震监测数据，按「时间范围 + 震级档位」查询近期地震事件，返回 震级 / 震源深度 / 经纬度 / 发生时间 / 烈度 / 海啸提示 / 警报级别 等结构化信息。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/earthquake",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - period         string  可选；时间范围 hour/day/week/month（默认 day）；兼容旧别名 t=h/d/w/m\n  - level          string  可选；震级档位 all/significant/4.5/2.5/1.0（默认 all）\n                           all=全部  significant=显著地震  4.5=M4.5+  2.5=M2.5+  1.0=M1.0+\n  - min_magnitude  number  可选；最小震级过滤（0=不过滤，默认 0）；兼容旧别名 m\n  - order          string  可选；排序 time=最新在前(默认) / magnitude=震级大→小\n  - limit          int     可选；返回条数上限（默认 100，最大 500）",
    "spec": {},
    "doc": "/api/earthquake · 全球地震速报（近实时地震监测数据）\n\n汇聚全球地震监测数据，按「时间范围 + 震级档位」查询近期地震事件，返回\n震级 / 震源深度 / 经纬度 / 发生时间 / 烈度 / 海啸提示 / 警报级别 等结构化信息。\n\n参数：\n  - period         string  可选；时间范围 hour/day/week/month（默认 day）；兼容旧别名 t=h/d/w/m\n  - level          string  可选；震级档位 all/significant/4.5/2.5/1.0（默认 all）\n                           all=全部  significant=显著地震  4.5=M4.5+  2.5=M2.5+  1.0=M1.0+\n  - min_magnitude  number  可选；最小震级过滤（0=不过滤，默认 0）；兼容旧别名 m\n  - order          string  可选；排序 time=最新在前(默认) / magnitude=震级大→小\n  - limit          int     可选；返回条数上限（默认 100，最大 500）\n\n返回示例（截断）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"summary\": {\"count\":100,\"total\":240,\"max_magnitude\":6.5,\"period\":\"day\",\"level\":\"all\",\"generated_at\":\"2026-07-01 12:45:33\"},\n      \"earthquakes\": [{\n        \"id\":\"us7000abcd\",\"magnitude\":6.5,\"magnitude_type\":\"mww\",\"place\":\"34 km WSW of Sarangani, Philippines\",\n        \"time\":\"2026-07-01 09:12:30\",\"timestamp\":1782877783910,\"updated\":\"2026-07-01 09:20:11\",\n        \"longitude\":125.11,\"latitude\":5.62,\"depth_km\":42.3,\n        \"alert\":\"green\",\"tsunami\":false,\"felt\":49,\"intensity_cdi\":4.1,\"intensity_mmi\":5.2,\n        \"significance\":650,\"status\":\"人工复核\",\"event_type\":\"地震\"\n      }]\n    }\n  }\n\n上游：全球地震监测数据源（GeoJSON feed，免密钥）。事件详情链接、来源标识、内部编号均已剔除。\n      （与 video-parse 同一 mihomo）在听就走代理，失败再直连。空字符串=强制直连。\n缓存：60 秒（Redis：v1:cache:earthquake:<period>:<level>，缓存全量标准化列表）；\n      min_magnitude / order / limit 为轻量本地二次处理，不参与缓存 key。\n时间：time / updated / generated_at 均为北京时间（UTC+8）；timestamp 为原始毫秒时间戳。"
  },
  {
    "id": "email-check",
    "title": "邮箱地址检测",
    "category": "域名与网络",
    "summary": "综合性邮箱质量评估接口： ① 格式校验（RFC 5322） ② 临时邮箱检测（基于 72,345 个开源临时邮箱域名库，3 个数据源合并去重） ③ MX 记录验证（用 AliDNS DoH，避开 PHP getmxrr 在 IDC 内的不稳定） ④ 拼写纠正（gmial.com → 提示 gmail.com）",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/email-check",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  email  必填  要检测的邮箱地址",
    "spec": {},
    "doc": "/api/email-check · 邮箱地址检测\n\n综合性邮箱质量评估接口：\n  ① 格式校验（RFC 5322）\n  ② 临时邮箱检测（基于 72,345 个开源临时邮箱域名库，3 个数据源合并去重）\n  ③ MX 记录验证（用 AliDNS DoH，避开 PHP getmxrr 在 IDC 内的不稳定）\n  ④ 拼写纠正（gmial.com → 提示 gmail.com）\n  ⑤ 国内/国际邮箱服务商识别（QQ邮箱/网易/Gmail/Outlook 等）\n  ⑥ 综合风险评分 0~100，附详细原因\n\n参数：\n  email  必填  要检测的邮箱地址\n\n返回：\n  data.email             小写规范化后的邮箱\n  data.valid_format      格式是否正确\n  data.local / domain    本地部分 / 域名部分\n  data.is_disposable     是否临时邮箱\n  data.disposable_match  匹配上的具体临时邮箱域名（可能匹配上级域名）\n  data.is_trusted        是否知名邮箱服务商\n  data.provider          服务商名称（如「QQ 邮箱」「Gmail」）\n  data.has_mx            域名是否有 MX 记录\n  data.mx_records[]      MX 记录列表（按 priority 升序）\n  data.spelling_suggestion 如果疑似拼写错误，给出建议（如 \"gmial.com\" → \"gmail.com\"）\n  data.risk_score        0~100 综合风险评分（越高越可信）\n  data.risk_level        risk_score 的文字等级\n  data.reasons[]         详细原因列表\n\n缓存：6 小时（域名级特征变化频率极低）\n  key: v1:cache:email-check:<md5(email)>"
  },
  {
    "id": "exchange-rate",
    "title": "实时汇率查询",
    "category": "天气与生活",
    "summary": "- money number 可选；默认 1；要转换的金额，必须 > 0 - from string 可选；默认 CNY；源货币代码（2-5 字符，如 CNY/USD/EUR） - to string 可选；默认 USD；目标货币代码（2-5 字符） - action string 可选；传 \"currencies\" ",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/exchange-rate",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - money   number  可选；默认 1；要转换的金额，必须 > 0\n  - from    string  可选；默认 CNY；源货币代码（2-5 字符，如 CNY/USD/EUR）\n  - to      string  可选；默认 USD；目标货币代码（2-5 字符）\n  - action  string  可选；传 \"currencies\" 时直接返回 26 种支持货币列表（不调上游、不计费）",
    "spec": {},
    "doc": "/api/exchange-rate · 实时汇率查询\n\n参数：\n  - money   number  可选；默认 1；要转换的金额，必须 > 0\n  - from    string  可选；默认 CNY；源货币代码（2-5 字符，如 CNY/USD/EUR）\n  - to      string  可选；默认 USD；目标货币代码（2-5 字符）\n  - action  string  可选；传 \"currencies\" 时直接返回 26 种支持货币列表（不调上游、不计费）\n\n上游：新浪财经即期（分钟级，26 种对人民币交叉）。不接 ALAPI。\n缓存：汇率表 60 秒，金额在本地乘。"
  },
  {
    "id": "express",
    "title": "快递物流查询-免费版（ALAPI V1 /api/kd）",
    "category": "快递",
    "summary": "- number string 必填；快递单号（8-40 位字母数字） - com string 可选；仅 sto/yto/sf/zto/jt - phone string 可选；手机号后 4 位（顺丰、中通、极兔必填）",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/express",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - number  string  必填；快递单号（8-40 位字母数字）\n  - com     string  可选；仅 sto/yto/sf/zto/jt\n  - phone   string  可选；手机号后 4 位（顺丰、中通、极兔必填）\n\n只打 ALAPI V1 /api/kd。官网查询只留给 /api/express-pro。禁止回落计次 V2。\n韵达/京东/EMS/自动识别失败请走 /api/express-pro。\nToken：UPSTREAM_ALAPI_KEY（ALAPI 会员）。不要用 UPSTREAM_ALAPI_EXPRESS_KEY。",
    "spec": {},
    "doc": "/api/express · 快递物流查询-免费版（ALAPI V1 /api/kd）\n\n参数：\n  - number  string  必填；快递单号（8-40 位字母数字）\n  - com     string  可选；仅 sto/yto/sf/zto/jt\n  - phone   string  可选；手机号后 4 位（顺丰、中通、极兔必填）\n\n只打 ALAPI V1 /api/kd。官网查询只留给 /api/express-pro。禁止回落计次 V2。\n韵达/京东/EMS/自动识别失败请走 /api/express-pro。\n缓存：900 秒  key: v1:cache:express:alapi:<number>:<com>:<phone_md5_4>"
  },
  {
    "id": "express-pro",
    "title": "快递物流查询 PRO（按次计费）",
    "category": "快递",
    "summary": "圆通、顺丰、中通、申通、韵达、极兔、邮政先查官网。官网没有轨迹时再走 ALAPI 计次备用。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/express-pro",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "必填 number（8-40 位运单号）。com 可空。顺丰、中通必须再传 phone，内容是手机号后 4 位。",
    "spec": {},
    "doc": "/api/express-pro · 快递物流查询 PRO（按次计费）\n\n圆通、顺丰、中通、申通、韵达、极兔、邮政先查官网。官网没有轨迹时再走 ALAPI 计次备用。\n缓存：有轨迹 900 秒，空结果 60 秒。\nkey: v1:cache:express-pro:<number>:<com>:<phone_md5_4>"
  },
  {
    "id": "express-tracking",
    "title": "快递查询（自动识别 + 物流轨迹）",
    "category": "快递",
    "summary": "三个 action（GET/POST 均可）： - track 默认；自动识别快递公司并返回完整物流轨迹 必填：tracking_no 可选：courier（公司代码，不填则自动识别） - identify 仅识别可能的快递公司，不查询轨迹 必填：tracking_no - couriers 返回支持的快递公司列表",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/express-tracking",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "/api/express-tracking · 快递查询（自动识别 + 物流轨迹）\n\n三个 action（GET/POST 均可）：\n  - track     默认；自动识别快递公司并返回完整物流轨迹\n              必填：tracking_no\n              可选：courier（公司代码，不填则自动识别）\n  - identify  仅识别可能的快递公司，不查询轨迹\n              必填：tracking_no\n  - couriers  返回支持的快递公司列表\n\n     实现细节：单号正则匹配识别 + 快递100/快递鸟接口，结果归一化为 traces 数组\n\n缓存：\n  - track:     同 tracking_no 缓存 5 分钟（物流变化频率不高）\n  - identify:  同 tracking_no 缓存 1 小时（识别规则稳定）\n  - couriers:  缓存 1 天（列表几乎不变）\n\n返回示例（track）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"tracking_no\": \"SF1234567890\",\n      \"courier\": {\"courier_key\":\"shunfeng\", \"courier_name\":\"顺丰速运\", \"courier_code\":\"shunfeng\", \"phone\":\"95338\"},\n      \"state\": \"delivered\", \"state_text\": \"已签收\",\n      \"traces\": [\n        {\"time\":\"2026-05-10 14:30\",\"status\":\"已签收\",\"area\":\"北京市\"},\n        ...\n      ]\n    }\n  }"
  },
  {
    "id": "food-license",
    "title": "食品经营许可证识别",
    "category": "识别与票证",
    "summary": "结构化识别食品经营许可证图片，返回许可证编号、经营者名称、 法定代表人、经营场所、主体业态、经营项目、有效期等字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/food-license",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url 或 base64\n  - input_data  string  必填；图片 URL 或 base64（可带 data:image 前缀，≤10MB）",
    "spec": {},
    "doc": "/api/food-license · 食品经营许可证识别\n\n结构化识别食品经营许可证图片，返回许可证编号、经营者名称、\n法定代表人、经营场所、主体业态、经营项目、有效期等字段。\n\n参数：\n  - input_type  string  必填；url 或 base64\n  - input_data  string  必填；图片 URL 或 base64（可带 data:image 前缀，≤10MB）\n\n返回（data）：\n  license_number / operator / legal_representative / premise /\n  main_body / operating_item / validity_period / domicile /\n  issuing_authority / issuer / daily_supervisor /\n  daily_supervisory_authorities / complaints_hotline /\n  certificate_type / unified_social_credit_code / issue_date / ocr_ms\n\n缓存：同图同结果 7 天（cache key v4：有效期至拆行也能填截止日期）\n上游：本平台自建识别服务（URL/Token 见 .env）"
  },
  {
    "id": "football",
    "title": "足球赛事",
    "category": "查询与娱乐",
    "summary": "按日期查英超 / 西甲 / 意甲 / 德甲 / 法甲 / 欧冠 / 欧联 / 中超等当日赛程，",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/football",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action   string  可选；matches=赛程（默认） / leagues=支持的联赛代码\n  - date     string  可选；YYYY-MM-DD 或 YYYYMMDD，默认北京今天\n  - league   string  可选；all（默认，五大联赛+欧冠+中超）或 epl / laliga / seriea /\n                     bundesliga / ligue1 / ucl / uel / csl / facup / worldcup\n  - status   string  可选；all / live / upcoming / finished（默认 all）\n  - limit    int     可选；1–200，默认 80",
    "spec": {},
    "doc": "/api/football · 足球赛事\n\n按日期查英超 / 西甲 / 意甲 / 德甲 / 法甲 / 欧冠 / 欧联 / 中超等当日赛程，\n返回开赛时间、比分、状态、场馆。不返回赔率或门票。\n\n参数：\n  - action   string  可选；matches=赛程（默认） / leagues=支持的联赛代码\n  - date     string  可选；YYYY-MM-DD 或 YYYYMMDD，默认北京今天\n  - league   string  可选；all（默认，五大联赛+欧冠+中超）或 epl / laliga / seriea /\n                     bundesliga / ligue1 / ucl / uel / csl / facup / worldcup\n  - status   string  可选；all / live / upcoming / finished（默认 all）\n  - limit    int     可选；1–200，默认 80\n\n上游：ESPN 公开 scoreboard（免密钥）。国内机直连可能超时；\n缓存：45 秒，键 v1:cache:sports:football:{league}:{date}\n时间：start_at / generated_at 为北京时间；start_ts 为 Unix 秒。"
  },
  {
    "id": "fund",
    "title": "基金估值跟踪（聚合 4 个 action）",
    "category": "天气与生活",
    "summary": "- action string 必填；操作类型： · estimate — 基金实时估值（天天基金 App / JSONP / 新浪 / 历史净值） · index — 指数行情（新浪 / 东方财富 双通道） · info — 基金详细信息（爬天天基金 HTML） · indices — 全部 6 个常用指数批量",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/fund",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action  string  必填；操作类型：\n      · estimate — 基金实时估值（天天基金 App / JSONP / 新浪 / 历史净值）\n      · index    — 指数行情（新浪 / 东方财富 双通道）\n      · info     — 基金详细信息（爬天天基金 HTML）\n      · indices  — 全部 6 个常用指数批量\n  - code    string  estimate/index/info 必填；6 位数字代码",
    "spec": {},
    "doc": "/api/fund · 基金估值跟踪（聚合 4 个 action）\n\n参数：\n  - action  string  必填；操作类型：\n      · estimate — 基金实时估值（天天基金 App / JSONP / 新浪 / 历史净值）\n      · index    — 指数行情（新浪 / 东方财富 双通道）\n      · info     — 基金详细信息（爬天天基金 HTML）\n      · indices  — 全部 6 个常用指数批量\n  - code    string  estimate/index/info 必填；6 位数字代码\n\n返回示例（estimate）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"action\": \"estimate\",\n      \"fund_code\": \"005827\", \"fund_name\": \"易方达蓝筹精选混合\",\n      \"net_value\": 1.7393, \"estimate\": 1.7270,\n      \"change_rate\": -0.71, \"update_time\": \"2026-05-06 15:00\"\n    }\n  }\n\n返回示例（index）：\n  { \"data\": { \"action\":\"index\", \"index_code\":\"000001\", \"index_name\":\"上证指数\",\n              \"current_value\":4160.17, \"change_amount\":48.01, \"change_rate\":\"1.17%\",\n              \"source\":\"sina\" } }\n\n返回示例（info）：返回基金完整画像（净值/收益/类型/规模/经理/成立日/管理人）\n返回示例（indices）：返回 6 个常用指数（上证/深证/创业板/上证50/沪深300/中证500）\n\n上游：\n  - estimate: 天天基金 FundMNFInfo → fundgz JSONP → 新浪 f_code → 东方财富 lsjz\n  - index sina: https://hq.sinajs.cn/list=s_<sh|sz><code>  (GBK)\n  - index em:   https://push2.eastmoney.com/api/qt/stock/get\n  - info: https://fund.eastmoney.com/<code>.html (HTML 爬虫)\n\n缓存：\n  - estimate / index / indices: 30~60 秒（实时数据）\n  - info: 6 小时（详情数据变化慢）"
  },
  {
    "id": "gold",
    "title": "黄金价格查询（国际 + 国内 + 十大品牌金店）",
    "category": "天气与生活",
    "summary": "- type string 可选；返回类型，默认 all · all — 全部三类（国际 + 国内 + 品牌金店） · brand — 仅十大品牌金店 · international — 仅国际贵金属（金/铂/银/钯） · domestic — 仅国内金价（延期/投资金条/回收等）",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/gold",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - type  string  可选；返回类型，默认 all\n      · all           — 全部三类（国际 + 国内 + 品牌金店）\n      · brand         — 仅十大品牌金店\n      · international — 仅国际贵金属（金/铂/银/钯）\n      · domestic      — 仅国内金价（延期/投资金条/回收等）\n\n数据源（2026-07 起）：\n  1. 实时行情：http://res.huangjinjiage.com.cn/jin.js  （与官网 loadPrice() 同源）\n  2. 品牌金店：http://www.huangjinjiage.cn/ HTML 表格（门店牌价，非实时推送）\n\n旧实现直接解析首页静态 HTML，国际/国内价常为过期快照；现改为先拉 jin.js。",
    "spec": {},
    "doc": "/api/gold · 黄金价格查询（国际 + 国内 + 十大品牌金店）\n\n参数：\n  - type  string  可选；返回类型，默认 all\n      · all           — 全部三类（国际 + 国内 + 品牌金店）\n      · brand         — 仅十大品牌金店\n      · international — 仅国际贵金属（金/铂/银/钯）\n      · domestic      — 仅国内金价（延期/投资金条/回收等）\n\n数据源（2026-07 起）：\n  1. 实时行情：http://res.huangjinjiage.com.cn/jin.js  （与官网 loadPrice() 同源）\n  2. 品牌金店：http://www.huangjinjiage.cn/ HTML 表格（门店牌价，非实时推送）\n\n旧实现直接解析首页静态 HTML，国际/国内价常为过期快照；现改为先拉 jin.js。\n\n缓存：2 分钟（实时源刷新更勤）"
  },
  {
    "id": "hash",
    "title": "哈希加密计算（12 种算法 · 支持 HMAC · 支持 hex/base64 输出）",
    "category": "大模型与文本",
    "summary": "- text string 必填；要计算哈希的文本（最长 10000 字节，UTF-8 中文 1 字符 = 3 字节） - algorithm string 可选；算法标识，默认 all，支持： all / md5 / sha1 / sha256 / sha384 / sha512 /",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/hash",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - text       string  必填；要计算哈希的文本（最长 10000 字节，UTF-8 中文 1 字符 = 3 字节）\n  - algorithm  string  可选；算法标识，默认 all，支持：\n      all / md5 / sha1 / sha256 / sha384 / sha512 /\n      sha3-256 / sha3-512 / ripemd160 / whirlpool /\n      crc32 / crc32b / adler32\n  - encoding   string  可选；输出编码，默认 hex；可选 base64\n  - hmac_key   string  可选；HMAC 密钥；传入则使用 hash_hmac() 生成签名",
    "spec": {},
    "doc": "/api/hash · 哈希加密计算（12 种算法 · 支持 HMAC · 支持 hex/base64 输出）\n\n参数：\n  - text       string  必填；要计算哈希的文本（最长 10000 字节，UTF-8 中文 1 字符 = 3 字节）\n  - algorithm  string  可选；算法标识，默认 all，支持：\n      all / md5 / sha1 / sha256 / sha384 / sha512 /\n      sha3-256 / sha3-512 / ripemd160 / whirlpool /\n      crc32 / crc32b / adler32\n  - encoding   string  可选；输出编码，默认 hex；可选 base64\n  - hmac_key   string  可选；HMAC 密钥；传入则使用 hash_hmac() 生成签名\n\n返回示例（algorithm=md5）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"text_length\": 5,\n      \"encoding\": \"hex\",\n      \"hmac\": false,\n      \"hash_count\": 1,\n      \"hashes\": {\n        \"md5\": {\"algorithm\":\"MD5\",\"bits\":128,\"value\":\"5d41402abc4b2a76b9719d911017c592\",\"length\":32}\n      }\n    }\n  }\n\n特性：\n  - 零上游：纯 PHP 内置 hash() / hash_hmac() 计算，毫秒级返回\n  - 不缓存：hash 是确定性计算，本地计算比 Redis 还快\n  - 安全：hmac_key 仅参与计算，不写日志、不缓存、不回显\n\n限流：登录 QPS=20/日免=1000；匿名 QPS=5/日免=200（纯计算成本低，放宽配额）"
  },
  {
    "id": "history-today",
    "title": "历史上的今天",
    "category": "查询与娱乐",
    "summary": "- action string 可选；list（默认）/ detail / search - month int 可选；1–12，list 默认北京时间当月 - day int 可选；1–31，list 默认北京时间当天 - id string detail 必填",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/history-today",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action  string  可选；list（默认）/ detail / search\n  - month   int     可选；1–12，list 默认北京时间当月\n  - day     int     可选；1–31，list 默认北京时间当天\n  - id      string  detail 必填\n  - word    string  search 必填，1–40 字\n  - page    int     search 可选，默认 1\n\n列表、详情按日期或 id 缓存，同一天的大事不会每次都重新拉取。",
    "spec": {},
    "doc": "/api/history-today · 历史上的今天\n\n参数：\n  - action  string  可选；list（默认）/ detail / search\n  - month   int     可选；1–12，list 默认北京时间当月\n  - day     int     可选；1–31，list 默认北京时间当天\n  - id      string  detail 必填\n  - word    string  search 必填，1–40 字\n  - page    int     search 可选，默认 1\n\n列表、详情按日期或 id 缓存，同一天的大事不会每次都重新拉取。"
  },
  {
    "id": "hitokoto",
    "title": "一言 · 经典语录随机抽取",
    "category": "查询与娱乐",
    "summary": "从本地语录库（370+ 条，覆盖 12 个分类）随机返回一条经典句子， 包含原文、出处、作者、分类、字数等。可按分类与长度筛选。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/hitokoto",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - c           string  可选；分类，单个字母 a-l：\n                         a=动画 b=漫画 c=游戏 d=文学 e=原创 f=来自网络\n                         g=其他 h=影视 i=诗词 j=网易云 k=哲学 l=抖机灵\n  - min_length  number  可选；句子最小字符数\n  - max_length  number  可选；句子最大字符数",
    "spec": {},
    "doc": "/api/hitokoto · 一言 · 经典语录随机抽取\n\n从本地语录库（370+ 条，覆盖 12 个分类）随机返回一条经典句子，\n包含原文、出处、作者、分类、字数等。可按分类与长度筛选。\n\n参数：\n  - c           string  可选；分类，单个字母 a-l：\n                         a=动画 b=漫画 c=游戏 d=文学 e=原创 f=来自网络\n                         g=其他 h=影视 i=诗词 j=网易云 k=哲学 l=抖机灵\n  - min_length  number  可选；句子最小字符数\n  - max_length  number  可选；句子最大字符数\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"id\": 1234, \"uuid\": \"abc-...\",\n      \"hitokoto\": \"落霞与孤鹜齐飞，秋水共长天一色。\",\n      \"type\": \"i\", \"type_name\": \"诗词\",\n      \"from\": \"滕王阁序\", \"from_who\": \"王勃\",\n      \"creator\": \"...\", \"length\": 16\n    }\n  }\n\n特性：\n  - 数据来自 hitokoto.cn 公开 API（已离线汇编 370 条到本地，零运行时上游依赖）\n  - 不缓存：每次随机不同，缓存反而降低体验\n\n限流：登录 QPS=20/日免=500；匿名 QPS=5/日免=200"
  },
  {
    "id": "holiday",
    "title": "中国法定节假日查询 API",
    "category": "天气与生活",
    "summary": "数据源: 国务院办公厅历年放假安排通知（本地静态）",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/holiday",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数: year (可选，默认当前年份；仅支持 2020–2026)\n数据源: 国务院办公厅历年放假安排通知（本地静态）\n\n说明: 2020–2026 已按国务院正式通知录入（含 2020 春节疫情延长假期）。\n2027 及以后待正式通知发布后再扩展。",
    "spec": {},
    "doc": "中国法定节假日查询 API\n参数: year (可选，默认当前年份；仅支持 2020–2026)\n数据源: 国务院办公厅历年放假安排通知（本地静态）\n\n说明: 2020–2026 已按国务院正式通知录入（含 2020 春节疫情延长假期）。\n2027 及以后待正式通知发布后再扩展。"
  },
  {
    "id": "hot-baidu",
    "title": "百度热搜榜",
    "category": "视频与内容",
    "summary": "抓取 https://top.baidu.com/board?tab=<...> 并解析为结构化 JSON。 支持 4 个榜单：实时热搜、小说、电影、电视剧。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/hot-baidu",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "/api/hot-baidu · 百度热搜榜\n\n抓取 https://top.baidu.com/board?tab=<...> 并解析为结构化 JSON。\n支持 4 个榜单：实时热搜、小说、电影、电视剧。\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"tab\": \"realtime\",\n      \"update_time\": \"2026-05-06 07:15:00\",\n      \"total\": 30,\n      \"list\": [\n        { \"rank\": 1, \"title\": \"...\", \"desc\": \"...\", \"hot_index\": 5000000,\n          \"link\": \"https://www.baidu.com/s?wd=...\",\n          \"image\": \"https://fyb-2.cdn.bcebos.com/...\",\n          \"tag\": \"热\", \"author\": \"?\", \"category\": \"?\", \"actors\": \"?\" },\n        ...\n      ]\n    }\n  }\n\n缓存：60 秒（热榜数据更新频率本身就是分钟级，短缓存合理）\n  key: v1:cache:hot-baidu:<tab>"
  },
  {
    "id": "hot-search",
    "title": "多平台热榜",
    "category": "视频与内容",
    "summary": "微博、知乎、B站、贴吧热榜。platform 默认 all。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/hot-search",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "可选 platform：all、weibo、zhihu、bilibili、tieba，多个用逗号分隔。可选 limit、timeout。",
    "spec": {},
    "doc": ""
  },
  {
    "id": "icp",
    "title": "ICP 备案查询",
    "category": "域名与网络",
    "summary": "通过域名查询工信部 ICP 备案信息（备案号、主办单位、单位性质、审核时间）。 主源：mxnzp.com /api/beian/search（已备案 → code=1，未备案 → code=10083） 备源：ALAPI /api/icp（mxnzp 日额打满后切；凭证 UPSTREAM_ALAPI_TOKEN / K",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/icp",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - domain  string  必填；要查询的域名，如 baidu.com（自动剥离协议/路径/端口/www 前缀）",
    "spec": {},
    "doc": "/api/icp · ICP 备案查询\n\n通过域名查询工信部 ICP 备案信息（备案号、主办单位、单位性质、审核时间）。\n主源：mxnzp.com /api/beian/search（已备案 → code=1，未备案 → code=10083）\n\n参数：\n  - domain  string  必填；要查询的域名，如 baidu.com（自动剥离协议/路径/端口/www 前缀）\n\n返回示例（已备案）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"domain\": \"baidu.com\",\n      \"is_filed\": true,\n      \"icp_code\": \"京ICP证030173号-1\",\n      \"main_licence\": \"京ICP证030173号\",\n      \"site_name\": \"百度一下，你就知道\",\n      \"company_name\": \"北京百度网讯科技有限公司\",\n      \"company_type\": \"企业\",\n      \"audit_time\": \"2019-05-16 16:06:21\",\n      \"content_type\": \"\",\n      \"limit_access\": \"否\"\n    }\n  }\n\n返回示例（未备案）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"domain\": \"google.com\",\n      \"is_filed\": false,\n      \"icp_code\": \"\", \"main_licence\": \"\", \"site_name\": \"\",\n      \"company_name\": \"\", \"company_type\": \"\", \"audit_time\": \"\",\n      \"content_type\": \"\", \"limit_access\": \"\"\n    }\n  }\n\n缓存：Redis 24h；查到的结果写入自建库 icp_lookup，重复查询直接回库。"
  },
  {
    "id": "idcard-2c",
    "title": "身份证二要素核验（姓名 + 身份证号一致性）",
    "category": "身份与号码",
    "summary": "校验「真实姓名 + 18 位身份证号」是否与公安权威库一致。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/idcard-2c",
    "timeout_sec": 25,
    "kyc": true,
    "media": false,
    "params": "参数：\n  - name    string  必填；真实姓名（中文），兼容别名 realname、m\n  - idcard  string  必填；18 位身份证号（末位兼容 X/x），兼容别名 id_card、h",
    "spec": {},
    "doc": "/api/idcard-2c · 身份证二要素核验（姓名 + 身份证号一致性）\n\n校验「真实姓名 + 18 位身份证号」是否与公安权威库一致。\n\n参数：\n  - name    string  必填；真实姓名（中文），兼容别名 realname、m\n  - idcard  string  必填；18 位身份证号（末位兼容 X/x），兼容别名 id_card、h\n\n返回示例：\n  { \"code\": 0, \"msg\": \"成功\",\n    \"data\": { \"name\": \"张三\", \"idcard\": \"110***********1234\",\n              \"valid\": true, \"result_code\": 100, \"message\": \"一致\" },\n    \"request_id\": \"...\" }\n\n备用：同一接口的备用 Token。只在主通道故障时调用，\n      主通道已返回一致/不一致时不再打备用，避免重复计费。\n再备用：ALAPI 身份证实名认证（POST /api/verfiy/idcard），前两路都故障才调用。\n缓存：不缓存（实时核验，每次都走上游）"
  },
  {
    "id": "idcard-face-3c",
    "title": "人像三要素核验（姓名 + 身份证号 + 人脸照）",
    "category": "身份与号码",
    "summary": "将「真实姓名 + 身份证号 + 人脸照片」与公安库身份证头像做 1:1 比对。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/idcard-face-3c",
    "timeout_sec": 25,
    "kyc": true,
    "media": false,
    "params": "参数：\n  - name    string  必填；真实姓名（中文），兼容别名 realname\n  - idcard  string  必填；18 位身份证号（末位兼容 X/x），兼容别名 id_card\n  - image   string  必填；人脸照片 base64（可带 data:image/...;base64, 前缀），兼容别名 face_image",
    "spec": {},
    "doc": "/api/idcard-face-3c · 人像三要素核验（姓名 + 身份证号 + 人脸照）\n\n将「真实姓名 + 身份证号 + 人脸照片」与公安库身份证头像做 1:1 比对。\n\n参数：\n  - name    string  必填；真实姓名（中文），兼容别名 realname\n  - idcard  string  必填；18 位身份证号（末位兼容 X/x），兼容别名 id_card\n  - image   string  必填；人脸照片 base64（可带 data:image/...;base64, 前缀），兼容别名 face_image\n\n返回示例：\n  { \"code\": 0, \"msg\": \"成功\",\n    \"data\": { \"name\": \"张三\", \"idcard\": \"110***********1234\",\n              \"valid\": true, \"score\": 86.5, \"result_code\": 100, \"message\": \"一致\" },\n    \"request_id\": \"...\" }\n\n上游：APISpace 人像三要素\n  https://eolink.o.apispace.com/identity-three/name_number_image\n缓存：不缓存（实时核验）"
  },
  {
    "id": "idcard-organ",
    "title": "身份证签发机关查询",
    "category": "身份与号码",
    "summary": "通过身份证号前 6 位行政区划代码，查询对应的签发机关（地方公安局）。 全部数据本地化，零上游。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/idcard-organ",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - id  string  必填；6 位区划代码或完整身份证号（自动截取前 6 位）",
    "spec": {},
    "doc": "/api/idcard-organ · 身份证签发机关查询\n\n通过身份证号前 6 位行政区划代码，查询对应的签发机关（地方公安局）。\n全部数据本地化，零上游。\n\n参数：\n  - id  string  必填；6 位区划代码或完整身份证号（自动截取前 6 位）\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"code\": \"110101\",\n      \"organization\": \"北京市公安局东城分局\"\n    }\n  }\n\n特性：\n  - 零上游：本地 JSON 数据（309KB，覆盖全国 3000+ 区划代码），进程内静态缓存\n  - 缓存：24h（签发机关变更频率极低，长缓存合理）\n\n限流：登录 QPS=10/日免=100；匿名关闭（kyc 类默认关闭匿名）"
  },
  {
    "id": "idcard-region",
    "title": "身份证归属地查询",
    "category": "身份与号码",
    "summary": "根据身份证号前 6 位查询省/市/区三级归属地。 区划数据放在本机 data.json（代码 => 名称），不请求外部数据源。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/idcard-region",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - idcard  string  必填；6 位区划代码或完整身份证号（自动截取前 6 位）",
    "spec": {},
    "doc": "/api/idcard-region · 身份证归属地查询\n\n根据身份证号前 6 位查询省/市/区三级归属地。\n区划数据放在本机 data.json（代码 => 名称），不请求外部数据源。\n\n参数：\n  - idcard  string  必填；6 位区划代码或完整身份证号（自动截取前 6 位）\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"idcard\": \"110101************\",\n      \"province\": {\"code\": \"110000\", \"name\": \"北京市\"},\n      \"city\":     {\"code\": \"110100\", \"name\": \"北京市\"},\n      \"district\": {\"code\": \"110101\", \"name\": \"东城区\"}\n    }\n  }\n\n数据：v1/api/idcard-region/data.json\n缓存：Redis 24h\n\n限流：登录 QPS=10/日免=100；匿名关闭（kyc 类默认关闭匿名）"
  },
  {
    "id": "image-enhance",
    "title": "AI 图片变清晰",
    "category": "识别与票证",
    "summary": "输入一张模糊 / 低分辨率图片（URL 或 base64），返回经 AI 增强的高清版本（约 4 倍超分辨率）。 实测：300×300 → 1200×1200，平均 4 秒完成。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/image-enhance",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "/api/image-enhance · AI 图片变清晰\n\n输入一张模糊 / 低分辨率图片（URL 或 base64），返回经 AI 增强的高清版本（约 4 倍超分辨率）。\n实测：300×300 → 1200×1200，平均 4 秒完成。\n\n双模式（用 query string `mode` 区分，避开 nginx 二级路由）：\n\n  1. 主接口模式（默认）· POST /api/image-enhance  body: img=<图片URL 或 base64>\n     → 走完整 bootstrap（鉴权、限流、计费、日志），返回 JSON\n\n  2. 图片代理模式 · GET /api/image-enhance?mode=image&u=<base64url>&s=<sig>\n     → 不走 bootstrap；公开访问；输出图片二进制\n     → 用户解出 base64 也用不了，因为缺 HMAC 签名\n\n主接口返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"original_url\": \"https://example.com/blurry.jpg\",\n      \"enhanced_url\": \"https://v1.apizero.cn/api/image-enhance?mode=image&u=...&s=...\",\n      \"width\": 1200,\n      \"height\": 1200,\n      \"expires_in\": 21600\n    },\n    \"request_id\": \"...\"\n  }\n\n上游：image.baidu.com 逆向（不需要 Key/Cookie，token = md5(...) 自算）\n入参 img：公网图片 URL，或 data URI / 纯 base64（≤10MB，jpeg/png/webp/bmp）。\n拉用户图（仅此步）：国内图床直连；海外图床走与 video-parse 同一出口\n上游图床 / 变清晰 / 轮询一律直连，不走代理。\n缓存：不缓存"
  },
  {
    "id": "image-nsfw",
    "title": "图片内容安全",
    "category": "识别与票证",
    "summary": "判断图片是否含不适内容。传 image_url 或 image_b64，不要传云厂商密钥。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/image-nsfw",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "image_url（别名 url）与 image_b64（别名 b64、image）至少给一个。",
    "spec": {},
    "doc": ""
  },
  {
    "id": "invoice",
    "title": "增值税发票识别",
    "category": "识别与票证",
    "summary": "通过图片 URL 或 base64 编码识别增值税专用 / 普通 / 电子发票，输出结构化字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/invoice",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https）\n                        · input_type=base64 → 图片 base64 字符串（≤ 6MB；约对应 4.5MB 原图）",
    "spec": {},
    "doc": "/api/invoice · 增值税发票识别\n\n通过图片 URL 或 base64 编码识别增值税专用 / 普通 / 电子发票，输出结构化字段。\n上游：alapi.cn /api/ocr/vat-invoice（付费 OCR）\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https）\n                        · input_type=base64 → 图片 base64 字符串（≤ 6MB；约对应 4.5MB 原图）\n\n限流：登录 QPS=2/日免 30；匿名 QPS=1/日免 5（OCR 上游为付费配额，需保守限流）"
  },
  {
    "id": "ios-cert",
    "title": "iOS 证书与描述文件检测",
    "category": "域名与网络",
    "summary": "解析 .p12 证书与 .mobileprovision 描述文件，检测： 1. 证书有效期与吊销状态 2. 描述文件类型（开发/分发/企业）、Team ID、设备列表 3. 25 项关键 entitlements 权限（VPN/HealthKit/Push/Keychain/SiriKit 等）",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ios-cert",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（POST，application/json）：\n  - cert       string  必填；Base64 编码的 .p12 文件内容\n  - provision  string  必填；Base64 编码的 .mobileprovision 文件内容\n  - password   string  可选；证书密码，默认空\n\n不缓存：每个证书都不同；且证书属敏感数据，不应进 Redis",
    "spec": {},
    "doc": "/api/ios-cert · iOS 证书与描述文件检测\n\n解析 .p12 证书与 .mobileprovision 描述文件，检测：\n  1. 证书有效期与吊销状态\n  2. 描述文件类型（开发/分发/企业）、Team ID、设备列表\n  3. 25 项关键 entitlements 权限（VPN/HealthKit/Push/Keychain/SiriKit 等）\n  4. 证书与描述文件是否匹配（基于 subjectKeyIdentifier 与 serialNumber）\n\n参数（POST，application/json）：\n  - cert       string  必填；Base64 编码的 .p12 文件内容\n  - provision  string  必填；Base64 编码的 .mobileprovision 文件内容\n  - password   string  可选；证书密码，默认空\n\n不缓存：每个证书都不同；且证书属敏感数据，不应进 Redis\n\n限流：登录 QPS=5/日免=50；匿名关闭（开发者工具，要求登录身份）"
  },
  {
    "id": "ip-pro",
    "title": "IP 地址查询（多源 + 代理池，单文件版）",
    "category": "域名与网络",
    "summary": "主源：ip77.net（街道级 + ISP + 风险） 走「巨量 HTTP 不限量套餐代理池」，每次换 IP 绕开软封锁 国内兜底：mir6 / 太平洋电脑网（机房直连，city 级） 海外兜底：ip-api.com（国内机房常被墙，放到最后短超时）",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ip-pro",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：ip（IPv4/IPv6，可空 → 用调用者自身 IP）",
    "spec": {},
    "doc": "/api/ip-pro · IP 地址查询（多源 + 代理池，单文件版）\n\n上游链路：\n  ┌──── 主源：ip77.net（街道级 + ISP + 风险）\n  │       └── 走「巨量 HTTP 不限量套餐代理池」，每次换 IP 绕开软封锁\n  ├──── 国内兜底：mir6 / 太平洋电脑网（机房直连，city 级）\n  └──── 海外兜底：ip-api.com（国内机房常被墙，放到最后短超时）\n\n代理池：文件级，data/storage/proxy_pool_juliangip.json\n  - flock(LOCK_EX) 并发安全\n  - 多 PHP-FPM worker 共享\n  - 池空 / TTL 不足时自动从巨量补一批（默认 10 个）\n\n缓存：主源 12h、备用源 1h\n\n参数：ip（IPv4/IPv6，可空 → 用调用者自身 IP）\n\n返回字段保持兼容旧版，仅新增 data.source 标识数据来源。"
  },
  {
    "id": "jd-address",
    "title": "京东地址智能解析（4 级行政区划）",
    "category": "天气与生活",
    "summary": "调用京东地址智能识别接口，将自然语言地址解析为「省/市/区/镇」四级行政区划， 并返回每级对应的京东 ID。比传统三级行政区划接口多一个「镇」级别。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/jd-address",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - address  string  必填；地址文本。可混入姓名/电话，如\n    「18997536335，张三，新疆乌鲁木齐市天山区澜嘉小区30号楼201室」",
    "spec": {},
    "doc": "/api/jd-address · 京东地址智能解析（4 级行政区划）\n\n调用京东地址智能识别接口，将自然语言地址解析为「省/市/区/镇」四级行政区划，\n并返回每级对应的京东 ID。比传统三级行政区划接口多一个「镇」级别。\n\n参数：\n  - address  string  必填；地址文本。可混入姓名/电话，如\n    「18997536335，张三，新疆乌鲁木齐市天山区澜嘉小区30号楼201室」\n\n返回：四级行政区划 + 拆出的姓名/电话/地址（name/phone/address 及中文别名）。\n\n上游：https://api.m.jd.com/client.action（functionId=address_getIntelligentText_m）\n缓存：30 分钟（同一地址解析结果稳定）\n\n限流：登录 QPS=5/日免=100；匿名关闭（避免被滥用刷京东接口）"
  },
  {
    "id": "mingyan",
    "title": "名人名言",
    "category": "查询与娱乐",
    "summary": "- action string 可选；'types' 列出全部类型；默认/空：返回一条名言 - typeid string 可选；指定名言类型 ID（仅在不传 action 时有效）",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/mingyan",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action  string  可选；'types' 列出全部类型；默认/空：返回一条名言\n  - typeid  string  可选；指定名言类型 ID（仅在不传 action 时有效）",
    "spec": {},
    "doc": "/api/mingyan · 名人名言\n\n返回一条名人名言，或列出所有可用的名言类型。\n\n参数：\n  - action  string  可选；'types' 列出全部类型；默认/空：返回一条名言\n  - typeid  string  可选；指定名言类型 ID（仅在不传 action 时有效）\n\n上游：\n  https://v3.alapi.cn/api/mingyan       (POST JSON, token header)\n  https://v3.alapi.cn/api/mingyan/type  (POST JSON, token header)\n\n缓存：\n  - types: Redis 24h\n  - 名言列表: 不缓存（每次随机）"
  },
  {
    "id": "mobile",
    "title": "手机号归属地查询",
    "category": "身份与号码",
    "summary": "通过 11 位中国大陆手机号查询归属省份/城市与运营商。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/mobile",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - mobile  string  必填；11 位手机号，正则 ^1[3-9]\\d{9}$",
    "spec": {},
    "doc": "/api/mobile · 手机号归属地查询\n\n通过 11 位中国大陆手机号查询归属省份/城市与运营商。\n上游：mxnzp.com /api/mobile_location/aim_mobile\n\n参数：\n  - mobile  string  必填；11 位手机号，正则 ^1[3-9]\\d{9}$\n\n返回：\n  - mobile     string  传入的手机号（原样回传，便于批量场景定位）\n  - province   string  归属地（省+市合并字符串，如「山西太原」「北京」）\n  - carrier    string  运营商（中国移动 / 中国联通 / 中国电信）\n  - is_found   bool    是否查询到（false 时 province/carrier 为空字符串）\n\n缓存：Redis 7 天（号段分配相对稳定；携号转网不影响归属地）"
  },
  {
    "id": "moji-weather",
    "title": "墨迹天气",
    "category": "天气与生活",
    "summary": "四种调用方式：",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/moji-weather",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "/api/moji-weather · 墨迹天气\n\n协议来源：iOS 客户端反编译 + 真机抓包还原（详见仓库内 ANALYSIS.md）。\n\n四种调用方式：\n\n  1. /api/moji-weather?city=北京                   ← 推荐：自动匹配城市，查实况\n     → 拉该城市天气，返回完整结构（实况/未来7天/24h/AQI/预警/生活指数）\n\n  2. /api/moji-weather?id=33                       ← internal_id 直查实况\n     → 跳过城市搜索，直接拉天气；id 是 search 返回的 id 字段\n\n  3. /api/moji-weather?op=search&keyword=北京      ← 仅查城市列表，拿 id\n     → 不调上游，本地 SQLite 模糊匹配，返回 [{id, city_id, name, pinyin, parent}]\n\n  4. /api/moji-weather?op=history&city=北京&day=2026-05-10  ← 历史天气\n     → 查某一天的真实历史天气（已过去的日期）。day 支持 YYYY-MM-DD / MM-DD / DD\n     → 也可只传 month=202605 拿整月（当前月返回 1 号 ~ 昨天；历史月返回完整 30 天）\n\n缓存：\n  - 实况天气按 internal_id 缓存 5 分钟（Redis: moji:weather:<id>）\n  - 历史天气按 (id, 月份) 缓存：当前月 30 分钟 / 历史月 24 小时（Redis: moji:history:<id>:<YYYYMM>）\n  - 设备 UID 永久缓存（Redis: moji:device_uid）\n  - 城市搜索不缓存（PDO sqlite + LIKE，单次 ~5ms）"
  },
  {
    "id": "movie-box",
    "title": "实时电影票房",
    "category": "查询与娱乐",
    "summary": "仅支持当日实时数据（取票房前 10 部），无参数。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/movie-box",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "/api/movie-box · 实时电影票房\n\n上游：猫眼专业版 dashboard-ajax（JSON）。首页 HTML 已改成骨架屏，\n不再带 <p class=\"movie-name\">，旧解析会得到空列表 → 5020。\n\n仅支持当日实时数据（取票房前 10 部），无参数。\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"update_time\": \"2026-05-06 07:30:00\",\n      \"total\": 10,\n      \"list\": [\n        {\n          \"rank\": 1,\n          \"name\": \"消失的人\",\n          \"release_days\": \"上映6天\",\n          \"total_box\": \"2.66亿\",       // 累计票房（保留中文单位便于展示）\n          \"box_office\": 163.25,         // 实时票房（万元，number）\n          \"box_rate\": 35.5,             // 票房占比 %\n          \"show_rate\": 28.8,            // 排片占比 %\n          \"seat_rate\": 33.0             // 上座率 %\n        },\n        ...\n      ]\n    }\n  }\n\n字段说明：\n  - box_office 单位为「万元」（猫眼原始口径，不做换算）\n  - 占比类字段：上游遇到极小值会写 \"&lt;0.1%\"，本接口统一返回 0.1 number\n  - 实时票房数字被猫眼字体加密；用大盘金额 × 占比反推同一套 0-9 映射\n\n缓存：2 小时（7200 秒）\n  - 实时票房日内仍会变化，2 小时刷新兼顾鲜度与上游压力\n  - key: v1:cache:movie-box:v4\n  - 字体映射失败导致票房全 0 时不写缓存，避免把空值锁 2 小时\n  - 网关侧计费/限流仍按每次请求计数；缓存只挡上游抓取"
  },
  {
    "id": "netease-comment",
    "title": "网易云热门乐评",
    "category": "视频与内容",
    "summary": "随机返回一条网易云音乐高赞热评，含歌曲信息与评论详情。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/netease-comment",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：无",
    "spec": {},
    "doc": "/api/netease-comment · 网易云热门乐评\n\n随机返回一条网易云音乐高赞热评，含歌曲信息与评论详情。\n\n参数：无\n\n上游：https://v3.alapi.cn/api/comment  (POST JSON, token header)\n平时不缓存，保证每次随机。上游 503 / 超时时重试一次，仍失败则回最近一条成功结果。"
  },
  {
    "id": "nine-grid-cutter",
    "title": "朋友圈九宫格切图",
    "category": "识别与票证",
    "summary": "上传一张图片，自动「居中裁切为正方形」后均分为 N×N 宫格小图，按朋友圈发图顺序返回。 切片顺序：从左到右、从上到下编号 1..N²。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/nine-grid-cutter",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - grid    int     可选；2/3/4，默认 3（即 3×3=9 张）\n  - gap     int     可选；0-20，每张切片之间的留白像素，默认 0\n  - output  string  可选；base64（默认）/ zip（直接返回 application/zip 二进制）",
    "spec": {},
    "doc": "/api/nine-grid-cutter · 朋友圈九宫格切图\n\n上传一张图片，自动「居中裁切为正方形」后均分为 N×N 宫格小图，按朋友圈发图顺序返回。\n切片顺序：从左到右、从上到下编号 1..N²。\n\n输入（POST，三选一）：\n  1. multipart/form-data  字段 file（推荐）\n  2. application/json     字段 image_base64（dataURL 或纯 base64）\n  3. application/json     字段 image_url（HTTPS 公网 URL）\n\n参数：\n  - grid    int     可选；2/3/4，默认 3（即 3×3=9 张）\n  - gap     int     可选；0-20，每张切片之间的留白像素，默认 0\n  - output  string  可选；base64（默认）/ zip（直接返回 application/zip 二进制）\n\n返回示例（base64）：\n  { \"code\": 0, \"msg\": \"成功\", \"data\": {\n      \"grid\": \"3x3\", \"total\": 9,\n      \"original_size\": \"1080x1920\", \"cell_size\": \"360x360\",\n      \"pieces\": [\n        {\"index\":1, \"size\":\"360x360\", \"base64\":\"iVBORw0K...\",  \"data_url\":\"data:image/png;base64,...\"},\n        ...\n      ]\n  }}\n\n上游：无（本地 Imagick 处理）\n缓存：不缓存（每次都是不同图片）\n\n限制：单图最大 10MB，最长边不超过 6000px（Imagick 资源保护）"
  },
  {
    "id": "ocr-bank-card",
    "title": "银行卡 OCR 识别",
    "category": "识别与票证",
    "summary": "通过图片 URL 或 base64 编码识别银行卡上的卡号与有效期。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-bank-card",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，≤10MB，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（≤10MB；可带 data:image/xxx;base64, 前缀）",
    "spec": {},
    "doc": "/api/ocr-bank-card · 银行卡 OCR 识别\n\n通过图片 URL 或 base64 编码识别银行卡上的卡号与有效期。\n上游：alapi.cn /api/ocr/bank-card\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，≤10MB，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（≤10MB；可带 data:image/xxx;base64, 前缀）\n\n返回：\n  - card_number    string  银行卡号\n  - date_of_expiry string  有效期（如 \"12/28\"，未识别到时为空字符串）\n\n缓存：同图同结果缓存 24h（图片 URL / base64 哈希作 Key）\n上游：https://v3.alapi.cn/api/ocr/bank-card（token 来自常量）"
  },
  {
    "id": "ocr-cn-passport",
    "title": "中国护照识别",
    "category": "识别与票证",
    "summary": "结构化识别中国护照，返回护照号码、中英文姓名、出生日期、有效期、签发地点。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-cn-passport",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（可带 data:image/xxx;base64, 前缀）",
    "spec": {},
    "doc": "/api/ocr-cn-passport · 中国护照识别\n\n结构化识别中国护照，返回护照号码、中英文姓名、出生日期、有效期、签发地点。\n上游：alapi.cn /api/ocr/cn-passport\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（可带 data:image/xxx;base64, 前缀）\n\n缓存：同图同结果缓存 7 天\n上游：https://v3.alapi.cn/api/ocr/cn-passport"
  },
  {
    "id": "ocr-health-cert",
    "title": "健康证识别",
    "category": "识别与票证",
    "summary": "结构化识别健康证（含武汉电子健康证等常见版式），返回姓名、性别、年龄、 体检结论、有效期、体检编码、发证/体检单位等字段；兼容旧版 6 字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-health-cert",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https）\n                        · input_type=base64 → 图片 base64（可带 data:image/xxx;base64, 前缀）",
    "spec": {},
    "doc": "/api/ocr-health-cert · 健康证识别\n\n结构化识别健康证（含武汉电子健康证等常见版式），返回姓名、性别、年龄、\n体检结论、有效期、体检编码、发证/体检单位等字段；兼容旧版 6 字段。\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https）\n                        · input_type=base64 → 图片 base64（可带 data:image/xxx;base64, 前缀）\n\n返回（data）：\n  name / gender / age / id_number / cert_number / industry /\n  exam_items / exam_result / birth /\n  issued_by / date_of_handling / date_of_issue /\n  date_of_medical_examination / valid_date / ocr_ms\n\n缓存：同图同结果缓存 7 天（cache key v2，切换上游后与旧缓存隔离）\n上游：本平台自建识别服务（URL/Token 见 .env）"
  },
  {
    "id": "ocr-idcard",
    "title": "身份证识别",
    "category": "识别与票证",
    "summary": "识别身份证正反面照片，结构化返回姓名、性别、民族、出生日期、 地址、身份证号、签发机关、有效期等 10 个字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-idcard",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；图片传入方式：url 或 base64\n  - input_data  string  必填；图片 URL 或 base64 编码字符串（jpg/png，≤10 MB）",
    "spec": {},
    "doc": "/api/ocr-idcard · 身份证识别\n\n识别身份证正反面照片，结构化返回姓名、性别、民族、出生日期、\n地址、身份证号、签发机关、有效期等 10 个字段。\n\n参数：\n  - input_type  string  必填；图片传入方式：url 或 base64\n  - input_data  string  必填；图片 URL 或 base64 编码字符串（jpg/png，≤10 MB）\n\n返回：\n  side / identity_name / identity_code / gender / race / birth /\n  address / issued_by / valid_date_start / valid_date_end\n\n上游：POST https://v3.alapi.cn/api/ocr/id_card\n缓存：Redis 7 天（按 md5(input_type|input_data) 哈希）"
  },
  {
    "id": "ocr-qrcode",
    "title": "二维码 / 条形码识别",
    "category": "识别与票证",
    "summary": "先走本机 OpenCV（印刷实拍/低对比），失败再回落 ALAPI POST https://v3.alapi.cn/api/qr/decode",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-qrcode",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数（两组等价，任选其一）：\n  - input_type + input_data   与其它 OCR 一致：url / base64\n  - url 或 image              ALAPI 原名（image = base64）",
    "spec": {},
    "doc": "/api/ocr-qrcode · 二维码 / 条形码识别\n\n先走本机 OpenCV（印刷实拍/低对比），失败再回落 ALAPI\nPOST https://v3.alapi.cn/api/qr/decode\n\n参数（两组等价，任选其一）：\n  - input_type + input_data   与其它 OCR 一致：url / base64\n  - url 或 image              ALAPI 原名（image = base64）\n\n返回：count + items[{ text, type, position }]"
  },
  {
    "id": "ocr-taxi-invoice",
    "title": "出租车发票识别",
    "category": "识别与票证",
    "summary": "结构化识别全国出租车机打发票，返回车号、上下车时间、里程、金额、 发票代码/号码、单价、附加费、印章信息等关键字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-taxi-invoice",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（可带 data:image/xxx;base64, 前缀）",
    "spec": {},
    "doc": "/api/ocr-taxi-invoice · 出租车发票识别\n\n结构化识别全国出租车机打发票，返回车号、上下车时间、里程、金额、\n发票代码/号码、单价、附加费、印章信息等关键字段。\n上游：alapi.cn /api/ocr/taxi-invoice\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（可带 data:image/xxx;base64, 前缀）\n\n缓存：同图同结果缓存 7 天\n上游：https://v3.alapi.cn/api/ocr/taxi-invoice"
  },
  {
    "id": "ocr-text",
    "title": "OCR 文字识别（通用文本）",
    "category": "识别与票证",
    "summary": "通过图片 URL 或 base64 编码识别任意图片中的文字内容，输出逐行文本列表 + 完整拼接文本。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-text",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https）\n                        · input_type=base64 → 图片 base64 字符串（≤ 6MB；可带 data:image/xxx;base64, 前缀）",
    "spec": {},
    "doc": "/api/ocr-text · OCR 文字识别（通用文本）\n\n通过图片 URL 或 base64 编码识别任意图片中的文字内容，输出逐行文本列表 + 完整拼接文本。\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https）\n                        · input_type=base64 → 图片 base64 字符串（≤ 6MB；可带 data:image/xxx;base64, 前缀）\n\n限流：登录 QPS=2/日免 30；匿名 QPS=1/日免 5（OCR 上游为付费配额）"
  },
  {
    "id": "ocr-text-box",
    "title": "OCR 文字坐标识别",
    "category": "识别与票证",
    "summary": "从图片抽出文字，并返回每条文字在【原图】上的像素坐标。 给图片编辑（盖字、换字、打码）用。与 /api/ocr-text 互相独立： - 旧接口回包仍是 text_list / full_text，一行不改 - 本接口回 items[].rect / items[].box",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-text-box",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；图片 URL 或 base64（≤10MB，可带 data:image 前缀）",
    "spec": {},
    "doc": "/api/ocr-text-box · OCR 文字坐标识别\n\n从图片抽出文字，并返回每条文字在【原图】上的像素坐标。\n给图片编辑（盖字、换字、打码）用。与 /api/ocr-text 互相独立：\n  - 旧接口回包仍是 text_list / full_text，一行不改\n  - 本接口回 items[].rect / items[].box\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；图片 URL 或 base64（≤10MB，可带 data:image 前缀）\n\n上游：111.170.155.144:18192/ocr/text-box（独立进程，不走 18180）\n缓存：同图同结果 7 天（cache key v3，只换这一路）"
  },
  {
    "id": "ocr-train-ticket",
    "title": "火车票识别",
    "category": "识别与票证",
    "summary": "结构化识别国内全类型火车票，返回出发站/到达站、车次、姓名、座位号、 票价、出发时间、身份证号、售卖站等关键字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-train-ticket",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（可带 data:image/xxx;base64, 前缀）",
    "spec": {},
    "doc": "/api/ocr-train-ticket · 火车票识别\n\n结构化识别国内全类型火车票，返回出发站/到达站、车次、姓名、座位号、\n票价、出发时间、身份证号、售卖站等关键字段。\n上游：alapi.cn /api/ocr/train-ticket\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（可带 data:image/xxx;base64, 前缀）\n\n缓存：同图同结果缓存 7 天\n上游：https://v3.alapi.cn/api/ocr/train-ticket"
  },
  {
    "id": "ocr-tw-permit",
    "title": "台湾居民来往大陆通行证识别（台胞证）",
    "category": "识别与票证",
    "summary": "结构化识别台湾居民来往大陆通行证（台胞证），返回中文姓名、英文姓名、 出生日期、证件号码、有效期等关键字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-tw-permit",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（可带 data:image/xxx;base64, 前缀）",
    "spec": {},
    "doc": "/api/ocr-tw-permit · 台湾居民来往大陆通行证识别（台胞证）\n\n结构化识别台湾居民来往大陆通行证（台胞证），返回中文姓名、英文姓名、\n出生日期、证件号码、有效期等关键字段。\n上游：alapi.cn /api/ocr/tw-permit\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（可带 data:image/xxx;base64, 前缀）\n\n缓存：同图同结果缓存 7 天\n上游：https://v3.alapi.cn/api/ocr/tw-permit"
  },
  {
    "id": "ocr-vehicle-invoice",
    "title": "机动车销售发票识别",
    "category": "识别与票证",
    "summary": "结构化识别机动车销售发票，提取发票代码、号码、开票日期、购买方/销售方信息、 车辆信息及价税明细等 20+ 字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-vehicle-invoice",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，≤10MB，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（≤10MB；可带 data:image/xxx;base64, 前缀）",
    "spec": {},
    "doc": "/api/ocr-vehicle-invoice · 机动车销售发票识别\n\n结构化识别机动车销售发票，提取发票代码、号码、开票日期、购买方/销售方信息、\n车辆信息及价税明细等 20+ 字段。\n上游：alapi.cn /api/ocr/vehicle-invoice\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，≤10MB，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（≤10MB；可带 data:image/xxx;base64, 前缀）\n\n缓存：同图同结果缓存 7 天\n上游：https://v3.alapi.cn/api/ocr/vehicle-invoice"
  },
  {
    "id": "ocr-vehicle-license",
    "title": "行驶证识别",
    "category": "识别与票证",
    "summary": "结构化识别行驶证，返回号牌号码、车辆类型、所有人、住址、品牌型号、 发动机号、VIN、注册日期、总质量、核定载质量、外廓尺寸、检验记录等 20 个字段。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ocr-vehicle-license",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（可带 data:image/xxx;base64, 前缀）",
    "spec": {},
    "doc": "/api/ocr-vehicle-license · 行驶证识别\n\n结构化识别行驶证，返回号牌号码、车辆类型、所有人、住址、品牌型号、\n发动机号、VIN、注册日期、总质量、核定载质量、外廓尺寸、检验记录等 20 个字段。\n上游：alapi.cn /api/ocr/vehicle-license\n\n参数：\n  - input_type  string  必填；url / base64\n  - input_data  string  必填；\n                        · input_type=url    → 公网可访问的图片 URL（http/https，jpg/png）\n                        · input_type=base64 → 图片 base64 字符串（可带 data:image/xxx;base64, 前缀）\n\n缓存：同图同结果缓存 7 天\n上游：https://v3.alapi.cn/api/ocr/vehicle-license"
  },
  {
    "id": "oil-price",
    "title": "全国油价（各省 92/95/98 号汽油 + 0 号柴油今日价格）",
    "category": "天气与生活",
    "summary": "按省级行政区查询最新成品油零售限价，返回 92/95/98 号汽油与 0 号柴油价格、 数据更新日期、下次调价时间、后续涨跌预测等结构化信息。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/oil-price",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - province  string  必填；省/直辖市/自治区名称（中文简称或全称均可，如「广东」「广东省」「内蒙古」）；\n                      兼容别名 area / region / msg；也支持常见城市名（自动归属到所在省，如「广州」→ 广东）。",
    "spec": {},
    "doc": "/api/oil-price · 全国油价（各省 92/95/98 号汽油 + 0 号柴油今日价格）\n\n按省级行政区查询最新成品油零售限价，返回 92/95/98 号汽油与 0 号柴油价格、\n数据更新日期、下次调价时间、后续涨跌预测等结构化信息。\n\n参数：\n  - province  string  必填；省/直辖市/自治区名称（中文简称或全称均可，如「广东」「广东省」「内蒙古」）；\n                      兼容别名 area / region / msg；也支持常见城市名（自动归属到所在省，如「广州」→ 广东）。\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"province\": \"广东\",\n      \"update_date\": \"2026-06-20\",\n      \"prices\": [\n        {\"name\":\"92号汽油\",\"type\":\"gasoline_92\",\"price\":7.96,\"unit\":\"元/升\"},\n        {\"name\":\"95号汽油\",\"type\":\"gasoline_95\",\"price\":8.62,\"unit\":\"元/升\"},\n        {\"name\":\"98号汽油\",\"type\":\"gasoline_98\",\"price\":10.62,\"unit\":\"元/升\"},\n        {\"name\":\"0号柴油\",\"type\":\"diesel_0\",\"price\":7.62,\"unit\":\"元/升\"}\n      ],\n      \"next_adjustment\": \"下次油价7月3日24时调整\",\n      \"forecast\": \"预计下调630元/吨(0.48元/升-0.57元/升)\"\n    }\n  }\n\n上游：零售价与调价预测取按日更新的成品油页面（GB18030）。旧页面把预测句停在调价周期开头，只作失败时的兜底。\n缓存：3600 秒（Redis：v1:cache:oil-price:v3:<slug>）。\n覆盖：31 个大陆省级行政区（港澳台暂不支持）；同省内各城市油价一致，城市名自动归属到省。"
  },
  {
    "id": "oil-price-forecast",
    "title": "今日油价预测",
    "category": "天气与生活",
    "summary": "根据国际原油（WTI、布伦特）走势，预估国内下一次调价方向；并提供 32 省份基准油价、调价时间表。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/oil-price-forecast",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action    string  可选；forecast（默认）/ price / price-all / schedule\n  - province  string  仅 action=price 用；省份名（如 北京/广东/上海）\n  - year      int     仅 action=schedule 用；2025 或 2026，默认 2026",
    "spec": {},
    "doc": "/api/oil-price-forecast · 今日油价预测\n\n根据国际原油（WTI、布伦特）走势，预估国内下一次调价方向；并提供 32 省份基准油价、调价时间表。\n\n参数：\n  - action    string  可选；forecast（默认）/ price / price-all / schedule\n  - province  string  仅 action=price 用；省份名（如 北京/广东/上海）\n  - year      int     仅 action=schedule 用；2025 或 2026，默认 2026\n\n返回示例（forecast）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"crude_oil\": {\"wti\": 61.50, \"brent\": 64.80, \"wti_change\": -0.3, \"brent_change\": -0.2, \"source\": \"sina_finance\"},\n      \"next_adjust_date\": \"2026-08-14\", \"days_remaining\": 1,\n      \"prediction\": {\"direction\": \"搁浅\", \"direction_emoji\": \"⏸️\", \"estimated_change_per_ton\": -30, \"estimated_change_per_liter\": 0.022, \"confidence\": \"高\", \"analysis\": \"...\"}\n    },\n    \"request_id\": \"...\"\n  }\n\n上游：新浪财经 hq.sinajs.cn/list=hf_CL,hf_OIL（GET，返回 JS 字符串）\n缓存：原油 5 分钟（key: v1:cache:oil-price:crude:<minute_bucket>）；省份油价 / 调价表无需缓存（静态数据）\n\n调价日历：国内成品油按「10 个工作日」一轮，窗口当日 24 时生效（节假日顺延）。\n不是按自然日约两周估的；已过窗口应标实际上调/下调/搁浅，而不是一律「已过」。"
  },
  {
    "id": "planned-detail",
    "title": "拟在建项目详情",
    "category": "企业与招投标",
    "summary": "拟在建项目详情",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/planned-detail",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：id、publishTime\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "id",
        "publishTime"
      ],
      "optional": [],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/planned-detail · 拟在建项目详情\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "planned-files",
    "title": "拟在建项目附件",
    "category": "企业与招投标",
    "summary": "拟在建项目附件",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/planned-files",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：projectId、publishTime\n可选：projectTypeID\n默认：projectTypeID=2\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "projectId",
        "publishTime"
      ],
      "optional": [
        "projectTypeID"
      ],
      "defaults": {
        "projectTypeID": "2"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/planned-files · 拟在建项目附件\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "planned-search",
    "title": "拟在建项目搜索",
    "category": "企业与招投标",
    "summary": "拟在建项目搜索",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/planned-search",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：startDate、endDate\n可选：keyword、excludeKW、inCludeKW、searchMode、areaCode\n默认：pageId=1，pageNumber=20，searchType=3\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "startDate",
        "endDate"
      ],
      "optional": [
        "keyword",
        "excludeKW",
        "inCludeKW",
        "searchMode",
        "areaCode"
      ],
      "defaults": {
        "pageId": "1",
        "pageNumber": "20",
        "searchType": "3"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/planned-search · 拟在建项目搜索\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "qianwen-parse",
    "title": "千问内容解析",
    "category": "视频与内容",
    "summary": "从阿里千问对话分享链接中提取图片原始资源列表。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/qianwen-parse",
    "timeout_sec": 25,
    "kyc": false,
    "media": true,
    "params": "",
    "spec": {},
    "doc": "/api/qianwen-parse · 千问内容解析\n\n从阿里千问对话分享链接中提取图片原始资源列表。\n上游要求 url 参数 Base64 编码，本接口对调用方保持原始 URL 入参，内部自动编码。"
  },
  {
    "id": "qq",
    "title": "QQ 信息查询",
    "category": "身份与号码",
    "summary": "通过 QQ 号查询 QQ 昵称、QQ 邮箱、QQ 空间链接、多尺寸头像 URL。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/qq",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - qq  string  必填；5-11 位 QQ 号码（^\\d{5,11}$，11 位上限是为了避免上游字符串截断引起的号码错位）",
    "spec": {},
    "doc": "/api/qq · QQ 信息查询\n\n通过 QQ 号查询 QQ 昵称、QQ 邮箱、QQ 空间链接、多尺寸头像 URL。\n上游：腾讯官方 fcg-bin/cgi_get_portrait.fcg（jsonp 接口）\n\n参数：\n  - qq  string  必填；5-11 位 QQ 号码（^\\d{5,11}$，11 位上限是为了避免上游字符串截断引起的号码错位）\n\n缓存：Redis 6 小时（昵称偶尔会改，6h 平衡新鲜度和上游压力）"
  },
  {
    "id": "riddle",
    "title": "谜语大全",
    "category": "查询与娱乐",
    "summary": "- action string 可选；'random'(默认) / 'list' / 'types' - type string 可选；仅 action=list 有效；谜语类型（小写字母 1~32 位） - page string 可选；仅 action=list 有效；分页正整数（默认 1）",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/riddle",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action  string  可选；'random'(默认) / 'list' / 'types'\n  - type    string  可选；仅 action=list 有效；谜语类型（小写字母 1~32 位）\n  - page    string  可选；仅 action=list 有效；分页正整数（默认 1）",
    "spec": {},
    "doc": "/api/riddle · 谜语大全\n\n参数：\n  - action  string  可选；'random'(默认) / 'list' / 'types'\n  - type    string  可选；仅 action=list 有效；谜语类型（小写字母 1~32 位）\n  - page    string  可选；仅 action=list 有效；分页正整数（默认 1）\n\n上游：\n  https://v3.alapi.cn/api/riddle/random  (POST JSON, token header)\n  https://v3.alapi.cn/api/riddle         (POST JSON, token header)\n  https://v3.alapi.cn/api/riddle/type    (POST JSON, token header)\n\n缓存：\n  - random: 不缓存\n  - types:  Redis 24h\n  - list:   Redis 1h（按 type+page）"
  },
  {
    "id": "risk-score",
    "title": "综合风控评分（反薅羊毛 / 注册风控）",
    "category": "域名与网络",
    "summary": "一次调用，从手机号 / IP / 邮箱三个维度综合评估风险，输出可直接用于 业务决策的风险分（0~100，越高越危险）+ 决策建议（放行 / 二次验证 / 拦截）。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/risk-score",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（POST / GET，至少传 1 个被检测项）：\n  - mobile  string  可选；手机号（11 位手机号或 13 位物联网卡号）\n  - ip      string  可选；IPv4 / IPv6；传 \"self\" 用调用者自身 IP\n  - email   string  可选；邮箱地址\n  - scene   string  可选；业务场景 register / login / order / coupon（影响阈值文案，默认 register）",
    "spec": {},
    "doc": "/api/risk-score · 综合风控评分（反薅羊毛 / 注册风控）\n\n一次调用，从手机号 / IP / 邮箱三个维度综合评估风险，输出可直接用于\n业务决策的风险分（0~100，越高越危险）+ 决策建议（放行 / 二次验证 / 拦截）。\n\n设计原则：\n  - 单文件自包含（与 ip-pro / email-check / image-nsfw 一致）\n  - 复用平台已有能力，最大化共享缓存、最小化上游成本：\n      · 手机号：内置公开号段规则（虚拟运营商 / 物联网卡识别），纯本地零成本\n      · 邮箱：复用 email-check 的 disposable-domains.txt 域名库 + 共享其结果缓存\n      · IP：复用 ip-pro 的上游（ip77 街道级风险源 + ip-api 备用）与代理池，\n            并共享 ip-pro 的缓存键 v1:ip-pro:<ip>（两接口互相预热，命中即零成本）\n\n参数（POST / GET，至少传 1 个被检测项）：\n  - mobile  string  可选；手机号（11 位手机号或 13 位物联网卡号）\n  - ip      string  可选；IPv4 / IPv6；传 \"self\" 用调用者自身 IP\n  - email   string  可选；邮箱地址\n  - scene   string  可选；业务场景 register / login / order / coupon（影响阈值文案，默认 register）\n\n返回 data：\n  - risk_score   int       0~100 综合风险分（越高越危险）\n  - risk_level   string    safe / low / medium / high / critical\n  - decision     string    pass(放行) / review(二次验证) / reject(拦截)\n  - checked      object     {mobile,ip,email} 各维度是否实际参与评估\n  - hit_rules[]  object     命中的风险规则 {code,weight,desc}\n  - signals      object     {mobile,ip,email} 各维度明细\n  - scene        string     回传场景\n\n缓存：整体结果缓存 10 分钟，key: v1:cache:risk-score:<md5(mobile|ip|email|scene)>"
  },
  {
    "id": "shici",
    "title": "随机诗词",
    "category": "查询与娱乐",
    "summary": "- type string 可选；诗词类型，10 选 1 shuqing/siji/shanshui/tianqi/renwu/shenghuo/jieri/dongwu/zhiwu/shiwu - action string 可选；'types' 返回支持的类型列表（本地枚举，不消耗上游调用）",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/shici",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - type    string  可选；诗词类型，10 选 1\n    shuqing/siji/shanshui/tianqi/renwu/shenghuo/jieri/dongwu/zhiwu/shiwu\n  - action  string  可选；'types' 返回支持的类型列表（本地枚举，不消耗上游调用）",
    "spec": {},
    "doc": "/api/shici · 随机诗词\n\n参数：\n  - type    string  可选；诗词类型，10 选 1\n    shuqing/siji/shanshui/tianqi/renwu/shenghuo/jieri/dongwu/zhiwu/shiwu\n  - action  string  可选；'types' 返回支持的类型列表（本地枚举，不消耗上游调用）\n\n上游：https://v3.alapi.cn/api/shici  (POST JSON, token header)\n缓存：不缓存（每次随机不同）"
  },
  {
    "id": "site-check",
    "title": "网站测速诊断",
    "category": "域名与网络",
    "summary": "测量目标网站的 DNS 解析、TCP 连接、SSL 握手、TTFB、总耗时，并跟踪重定向链。 提供 SSL 证书摘要、命中 IP/端口、页面体积。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/site-check",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - url  string  必填；目标 URL，自动补 https://（http/https 都支持）",
    "spec": {},
    "doc": "/api/site-check · 网站测速诊断\n\n测量目标网站的 DNS 解析、TCP 连接、SSL 握手、TTFB、总耗时，并跟踪重定向链。\n提供 SSL 证书摘要、命中 IP/端口、页面体积。\n\n参数：\n  - url  string  必填；目标 URL，自动补 https://（http/https 都支持）\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"url\": \"https://baidu.com\", \"final_url\": \"https://www.baidu.com/\",\n      \"http_code\": 200,\n      \"timing\": {\n        \"dns_ms\": 15.0, \"connect_ms\": 32.5, \"ssl_ms\": 78.4,\n        \"ttfb_ms\": 145.2, \"total_ms\": 156.7\n      },\n      \"content_type\": \"text/html; charset=utf-8\",\n      \"page_size\": 122311, \"page_size_human\": \"119.45 KB\",\n      \"primary_ip\": \"110.242.68.4\", \"primary_port\": 443,\n      \"redirect_count\": 1,\n      \"redirect_chain\": [{\"url\":\"https://baidu.com\",\"http_code\":301,\"redirect_to\":\"https://www.baidu.com/\"}],\n      \"ssl\": {\"subject\":\"www.baidu.com\",\"issuer\":\"GlobalSign RSA OV SSL CA\",\"expire\":\"...\"}\n    }\n  }\n\n缓存：5 分钟（测速值短期变化大；缓存防止反复打目标站）\n\n限流：登录 QPS=2/日免=50；匿名关闭（防止被滥用做压测工具）"
  },
  {
    "id": "site-security",
    "title": "网站安全综合评分",
    "category": "域名与网络",
    "summary": "五维加权评分： 1. SSL 证书检测（25%） - HTTPS 启用 + 证书有效期 + 颁发者 2. 域名安全（20%） - DNS 解析 + 私有 IP 检查 + 简易黑名单 3. ICP 备案（20%） - 大陆域名查询备案号；海外域名直接 80 分",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/site-security",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - domain  string  必填；纯域名，如 baidu.com（自动去掉 https:// 与路径）",
    "spec": {},
    "doc": "/api/site-security · 网站安全综合评分\n\n五维加权评分：\n  1. SSL 证书检测（25%）   - HTTPS 启用 + 证书有效期 + 颁发者\n  2. 域名安全（20%）        - DNS 解析 + 私有 IP 检查 + 简易黑名单\n  3. ICP 备案（20%）        - 大陆域名查询备案号；海外域名直接 80 分\n  4. 微信/QQ 拦截（15%）    - 国内主流 IM 平台访问可达性\n  5. 网站性能（20%）        - 响应时间 + HTTP 状态 + 压缩 + 服务端类型\n\n综合评分换算成等级：A(≥90) / B(≥80) / C(≥70) / D(≥60) / F(<60)\n\n参数：\n  - domain  string  必填；纯域名，如 baidu.com（自动去掉 https:// 与路径）\n\n缓存：30 分钟（综合检测耗时大，缓存避免反复打目标站）\n\n限流：登录 QPS=2/日免=30；匿名关闭（避免被滥用做扫描工具）"
  },
  {
    "id": "soul-soup",
    "title": "心灵毒鸡汤",
    "category": "查询与娱乐",
    "summary": "随机返回一句毒鸡汤文案，用于自嘲/解压/段子素材。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/soul-soup",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：无",
    "spec": {},
    "doc": "/api/soul-soup · 心灵毒鸡汤\n\n随机返回一句毒鸡汤文案，用于自嘲/解压/段子素材。\n\n参数：无\n\n上游：https://v3.alapi.cn/api/soul  (POST JSON, token header)\n缓存：不缓存（每次随机不同）"
  },
  {
    "id": "ssl",
    "title": "SSL 证书检测",
    "category": "域名与网络",
    "summary": "本机解析域名后连接 443，读取对端证书。 不经过第三方检测接口，避免上游 HTTP 403 把整次查询打成失败。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/ssl",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - domain  string  必填；域名，自动剥离 http(s):// 前缀和路径/端口",
    "spec": {},
    "doc": "/api/ssl · SSL 证书检测\n\n本机解析域名后连接 443，读取对端证书。\n不经过第三方检测接口，避免上游 HTTP 403 把整次查询打成失败。\n\n参数：\n  - domain  string  必填；域名，自动剥离 http(s):// 前缀和路径/端口\n\n缓存：Redis 6 小时（SSL 证书短期内不变；接近过期可手动清缓存）\n      没有证书的结果缓存 30 分钟"
  },
  {
    "id": "stock-trend",
    "title": "A股分时行情分析（实时行情 + 分时数据 + 技术分析）",
    "category": "天气与生活",
    "summary": "输入 6 位股票代码（默认 type=full）同样返回：交易时间 stock.update_time、昨收 quote.pre_close、 开高低 quote.open/high/low、最新价/收盘价 quote.price、涨幅 quote.change_percent、 换手率 quote.turnover_",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/stock-trend",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - code   string  单只查询必填；6 位股票代码（如 600519 / 000001 / 300750），可带 sh/sz/bj 前缀\n  - all    int     可选；传 1 时不需要 code，一次返回当日沪深京 A 股（含创业板、科创板、北交所）\n                    交易时间、昨收、开高低收、涨幅、换手率、成交量、成交额、总市值、流通市值、\n                    总股本、流通股本，以及量比 / 市盈率 / 市净率\n  - type   string  可选；full（默认，完整分析）/ simple（精简，仅核心行情）。all=1 时忽略\n  - limit  int     可选；分时点返回数量，0=全部（默认），最大 240，>0 时返回最近 N 个。all=1 时忽略",
    "spec": {},
    "doc": "/api/stock-trend · A股分时行情分析（实时行情 + 分时数据 + 技术分析）\n\n输入 6 位股票代码（默认 type=full）同样返回：交易时间 stock.update_time、昨收 quote.pre_close、\n开高低 quote.open/high/low、最新价/收盘价 quote.price、涨幅 quote.change_percent、\n换手率 quote.turnover_rate、成交量 quote.volume（手）、成交额 quote.amount（元）。\ntype=full 另含财联社补齐的涨停价、跌停价、3 日/5 日涨幅、委比、静态市盈率、总股本、流通股本、\n每股净资产，以及 order_book（五档，量单位手）和 fund_flow（资金流向，单位元）。\ntype=simple 只留最新价、昨收和涨跌幅。all=1 的列表字段与基础行情对应，不含财联社盘口和资金。\n\n参数：\n  - code   string  单只查询必填；6 位股票代码（如 600519 / 000001 / 300750），可带 sh/sz/bj 前缀\n  - all    int     可选；传 1 时不需要 code，一次返回当日沪深京 A 股（含创业板、科创板、北交所）\n                    交易时间、昨收、开高低收、涨幅、换手率、成交量、成交额、总市值、流通市值、\n                    总股本、流通股本，以及量比 / 市盈率 / 市净率\n  - type   string  可选；full（默认，完整分析）/ simple（精简，仅核心行情）。all=1 时忽略\n  - limit  int     可选；分时点返回数量，0=全部（默认），最大 240，>0 时返回最近 N 个。all=1 时忽略\n\n上游：腾讯 ifzq / qt、新浪、东财按序取分时和基础行情，并同时请求财联社个股。\n财联社多出来的字段写进同一份结果：涨停价、跌停价、3 日/5 日涨幅、委比、静态市盈率、\n总股本、流通股本、每股净资产、五档盘口、资金流向。前序源都失败时用财联社快照兜底（无分时）。\n首页电报、投资日历、题材稿不放进行情结果。all=1 仍走腾讯全市场，不逐只打财联社。\n\n东财 push2 在部分机房 TLS 握手后会被重置，不再作为主源。\n禁止使用 data.gtimg.cn/flashdata 历史分时（会返回过期数据）。\n\n缓存 30 秒。"
  },
  {
    "id": "tencent-weather",
    "title": "腾讯天气（实时 + 7天 + 24小时 + 空气 + 生活指数 + 日出日落 + 预警 + 限行）",
    "category": "天气与生活",
    "summary": "直接用中文省市名查询，无需经纬度、无需坐标转换，覆盖全国。数据源：腾讯天气。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tencent-weather",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - province  string  必填；省 / 直辖市（如 北京 / 广东 / 浙江）\n  - city      string  必填；市（如 北京 / 深圳 / 杭州）\n  - county    string  可选；区 / 县（如 南山 / 西湖），可提升定位精度与限行准确度",
    "spec": {},
    "doc": "/api/tencent-weather · 腾讯天气（实时 + 7天 + 24小时 + 空气 + 生活指数 + 日出日落 + 预警 + 限行）\n\n直接用中文省市名查询，无需经纬度、无需坐标转换，覆盖全国。数据源：腾讯天气。\n\n参数：\n  - province  string  必填；省 / 直辖市（如 北京 / 广东 / 浙江）\n  - city      string  必填；市（如 北京 / 深圳 / 杭州）\n  - county    string  可选；区 / 县（如 南山 / 西湖），可提升定位精度与限行准确度\n\n返回示例（截断）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"location\": {\"province\":\"广东\",\"city\":\"深圳\",\"county\":\"南山\"},\n      \"observe\": {\"weather\":\"多云\",\"temperature\":30,\"humidity\":77,\"wind_direction\":\"北风\",\"wind_power\":\"3-4\",\"update_time\":\"2026-07-01 10:15\"},\n      \"air\": {\"aqi\":13,\"level\":1,\"quality\":\"优\",\"pm25\":4,\"pm10\":12},\n      \"daily_forecast\": [{\"date\":\"...\",\"day\":{...},\"night\":{...},\"temperature\":{\"min\":26,\"max\":33}}],\n      \"hourly_forecast\": [{\"time\":\"07-01 10:00\",\"temperature\":30,\"weather\":\"多云\"}],\n      \"life_index\": [{\"key\":\"clothes\",\"name\":\"穿衣\",\"level\":\"炎热\",\"detail\":\"...\"}],\n      \"sunrise_sunset\": [{\"date\":\"2026-07-01\",\"sunrise\":\"05:43\",\"sunset\":\"19:12\"}],\n      \"alarm\": [], \"limit\": {\"tail_number\":\"3和8\",\"date\":\"2026-07-01\"}\n    }\n  }\n\n上游：腾讯天气 wis.qq.com/weather/common（免密钥公开接口）。图标等第三方 CDN 链接已剔除，仅保留结构化数据。\n缓存：15 分钟（Redis：v1:cache:tencent-weather:<md5(province|city|county)>）\n限流：登录 QPS=10 / 日免=1000；匿名 QPS=5 / 日免=500（完全免费）"
  },
  {
    "id": "tender-category",
    "title": "招中标14分类",
    "category": "企业与招投标",
    "summary": "招中标14分类",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-category",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：title、content\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "title",
        "content"
      ],
      "optional": [],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-category · 招中标14分类\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-classify",
    "title": "标讯类型判别",
    "category": "企业与招投标",
    "summary": "标讯类型判别",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-classify",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：title、content\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "title",
        "content"
      ],
      "optional": [],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-classify · 标讯类型判别\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-company",
    "title": "企业招中标搜索",
    "category": "企业与招投标",
    "summary": "企业招中标搜索",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-company",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：companyName\n默认：pageId=1，pageNumber=20\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "companyName"
      ],
      "optional": [],
      "defaults": {
        "pageId": "1",
        "pageNumber": "20"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-company · 企业招中标搜索\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-contract",
    "title": "合同信息搜索",
    "category": "企业与招投标",
    "summary": "合同信息搜索",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-contract",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：startDate、endDate\n可选：keyword、excludeKW、inCludeKW、searchMode、areaCode、industryCode、contractEndMin、contractEndMax、purchaseTypeID、partAName、partBName、agentName、companyName、projectMoneyMin、projectMoneyMax、fileFlag\n默认：pageId=1，pageNumber=20，searchType=1\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "startDate",
        "endDate"
      ],
      "optional": [
        "keyword",
        "excludeKW",
        "inCludeKW",
        "searchMode",
        "areaCode",
        "industryCode",
        "contractEndMin",
        "contractEndMax",
        "purchaseTypeID",
        "partAName",
        "partBName",
        "agentName",
        "companyName",
        "projectMoneyMin",
        "projectMoneyMax",
        "fileFlag"
      ],
      "defaults": {
        "pageId": "1",
        "pageNumber": "20",
        "searchType": "1"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-contract · 合同信息搜索\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-detail",
    "title": "招中标正文详情",
    "category": "企业与招投标",
    "summary": "招中标正文详情",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-detail",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：id、publishTime\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "id",
        "publishTime"
      ],
      "optional": [],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-detail · 招中标正文详情\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-detail-ai",
    "title": "AI 招中标正文",
    "category": "企业与招投标",
    "summary": "AI 招中标正文",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-detail-ai",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：id、publishTime\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "id",
        "publishTime"
      ],
      "optional": [],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-detail-ai · AI 招中标正文\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-extract",
    "title": "招中标结构化抽取",
    "category": "企业与招投标",
    "summary": "招中标结构化抽取",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-extract",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：messages\n可选：max_tokens、temperature、top_p\n默认：max_tokens=2048，temperature=0，top_p=1\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "messages"
      ],
      "optional": [
        "max_tokens",
        "temperature",
        "top_p"
      ],
      "defaults": {
        "max_tokens": "2048",
        "temperature": "0",
        "top_p": "1"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-extract · 招中标结构化抽取\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-files",
    "title": "招中标附件列表",
    "category": "企业与招投标",
    "summary": "招中标附件列表",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-files",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：projectId、publishTime\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "projectId",
        "publishTime"
      ],
      "optional": [],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-files · 招中标附件列表\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-number",
    "title": "按编号查招中标",
    "category": "企业与招投标",
    "summary": "按编号查招中标",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-number",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：projectNumber\n可选：publishTime\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "projectNumber"
      ],
      "optional": [
        "publishTime"
      ],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-number · 按编号查招中标\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-rewrite",
    "title": "自然语言搜条件",
    "category": "企业与招投标",
    "summary": "自然语言搜条件",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-rewrite",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：userQuery\n可选：requestKey\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "userQuery"
      ],
      "optional": [
        "requestKey"
      ],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-rewrite · 自然语言搜条件\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-search",
    "title": "招中标信息搜索",
    "category": "企业与招投标",
    "summary": "招中标信息搜索",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-search",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：startDate、endDate\n可选：keyword、excludeKW、inCludeKW、projectClassID、searchMode、areaCode、industryCode、subMatterIndustryCode、contractEndMin、contractEndMax、purchaseTypeID、partAName、partBName、agentName、companyName、projectMoneyMin、projectMoneyMax、fileFlag、orderByType\n默认：pageId=1，pageNumber=20，searchType=3\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "startDate",
        "endDate"
      ],
      "optional": [
        "keyword",
        "excludeKW",
        "inCludeKW",
        "projectClassID",
        "searchMode",
        "areaCode",
        "industryCode",
        "subMatterIndustryCode",
        "contractEndMin",
        "contractEndMax",
        "purchaseTypeID",
        "partAName",
        "partBName",
        "agentName",
        "companyName",
        "projectMoneyMin",
        "projectMoneyMax",
        "fileFlag",
        "orderByType"
      ],
      "defaults": {
        "pageId": "1",
        "pageNumber": "20",
        "searchType": "3"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-search · 招中标信息搜索\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-search-ai",
    "title": "AI 招中标搜索",
    "category": "企业与招投标",
    "summary": "AI 招中标搜索",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-search-ai",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：startDate、endDate\n可选：keyword、excludeKW、inCludeKW、className、areaName、companyName、OrderByType\n默认：pageId=1，pageNumber=10\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "startDate",
        "endDate"
      ],
      "optional": [
        "keyword",
        "excludeKW",
        "inCludeKW",
        "className",
        "areaName",
        "companyName",
        "OrderByType"
      ],
      "defaults": {
        "pageId": "1",
        "pageNumber": "10"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-search-ai · AI 招中标搜索\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-site",
    "title": "按网站搜招中标",
    "category": "企业与招投标",
    "summary": "按网站搜招中标",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-site",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：startDate、endDate、collectURL\n可选：projectClassID、areaCode、projectMoneyMin、projectMoneyMax、companyName、orderByType\n默认：pageId=1，pageNumber=20\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "startDate",
        "endDate",
        "collectURL"
      ],
      "optional": [
        "projectClassID",
        "areaCode",
        "projectMoneyMin",
        "projectMoneyMax",
        "companyName",
        "orderByType"
      ],
      "defaults": {
        "pageId": "1",
        "pageNumber": "20"
      },
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-site · 按网站搜招中标\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-source",
    "title": "招中标原始网址",
    "category": "企业与招投标",
    "summary": "招中标原始网址",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-source",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：id、publishTime\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "id",
        "publishTime"
      ],
      "optional": [],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-source · 招中标原始网址\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "tender-structure",
    "title": "招中标结构化详情",
    "category": "企业与招投标",
    "summary": "招中标结构化详情",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tender-structure",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数（网关规格，文件头没写时以这里为准）：\n必填：id、publishTime\nstartDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss",
    "spec": {
      "required": [
        "id",
        "publishTime"
      ],
      "optional": [],
      "defaults": {},
      "date": "startDate / endDate / publishTime 用 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss"
    },
    "doc": "POST/GET /api/tender-structure · 招中标结构化详情\n\n必须带 API Key；无免费额度，按次 0.08 元。"
  },
  {
    "id": "text-censor",
    "title": "文本审核",
    "category": "大模型与文本",
    "summary": "检测文本是否包含违规内容（政治敏感、谩骂、色情、违规广告、暴恐等），",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/text-censor",
    "timeout_sec": 40,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - text  string  必填；待审核文本，1-5000 个字符（中英文均按 1 字符计）",
    "spec": {},
    "doc": "/api/text-censor · 文本审核\n\n检测文本是否包含违规内容（政治敏感、谩骂、色情、违规广告、暴恐等），\n返回审核结论 + 命中违规词详情列表。\n上游：alapi.cn /api/censor/text（与发票/OCR/SSL 共用 token）\n\n参数：\n  - text  string  必填；待审核文本，1-5000 个字符（中英文均按 1 字符计）\n\n缓存：Redis 1 小时（按 sha256 哈希；同文本短时间内重复审核很常见）"
  },
  {
    "id": "text-similarity",
    "title": "文本相似度比对（纯本地计算，无上游）",
    "category": "大模型与文本",
    "summary": "输入两段文本，输出 4 种相似度指标 + 加权综合评分 + 5 级评级： - cosine 余弦相似度（基于 2-gram 词频向量） - jaccard Jaccard 系数（2-gram 集合交并比） - edit_similarity 编辑距离归一化相似度（基于 mb_levenshtein 字符级别）",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/text-similarity",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - text1  string  必填；第一段文本，1-5000 字符\n  - text2  string  必填；第二段文本，1-5000 字符\n\n性能：5000×5000 字符 LCS 约 60-80ms（纯 PHP，无外部依赖）",
    "spec": {},
    "doc": "/api/text-similarity · 文本相似度比对（纯本地计算，无上游）\n\n输入两段文本，输出 4 种相似度指标 + 加权综合评分 + 5 级评级：\n  - cosine          余弦相似度（基于 2-gram 词频向量）\n  - jaccard         Jaccard 系数（2-gram 集合交并比）\n  - edit_similarity 编辑距离归一化相似度（基于 mb_levenshtein 字符级别）\n  - lcs_similarity  最长公共子序列比率\n\n综合评分权重：cosine 35% + jaccard 25% + edit 20% + lcs 20%\n\n参数：\n  - text1  string  必填；第一段文本，1-5000 字符\n  - text2  string  必填；第二段文本，1-5000 字符\n\n性能：5000×5000 字符 LCS 约 60-80ms（纯 PHP，无外部依赖）"
  },
  {
    "id": "traffic-weather-alert",
    "title": "限行尾号 + 恶劣天气联动预警",
    "category": "天气与生活",
    "summary": "输入城市拼音，返回当天的限行尾号；如遇暴雨/台风等恶劣天气，附加居家办公建议。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/traffic-weather-alert",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - city      string  必填；城市拼音（beijing/chengdu/hangzhou/...），兼容中文（北京/成都/...）\n  - action    string  可选；restriction（默认）/ cities（支持限行的城市列表）",
    "spec": {},
    "doc": "/api/traffic-weather-alert · 限行尾号 + 恶劣天气联动预警\n\n输入城市拼音，返回当天的限行尾号；如遇暴雨/台风等恶劣天气，附加居家办公建议。\n\n参数：\n  - city      string  必填；城市拼音（beijing/chengdu/hangzhou/...），兼容中文（北京/成都/...）\n  - action    string  可选；restriction（默认）/ cities（支持限行的城市列表）\n\n返回示例（restriction）：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"city\": \"beijing\", \"city_cn\": \"北京\",\n      \"date\": \"2026-09-21\", \"weekday\": \"周一\",\n      \"restricted_numbers\": \"1,6\", \"restriction_active\": true,\n      \"weather\": { \"weather\": \"晴\", \"temperature\": \"26°C\", \"is_severe\": false, \"severe_type\": null },\n      \"work_from_home_advisory\": null,\n      \"message\": \"今日北京（周一）限行尾号为 1,6\"\n    },\n    \"request_id\": \"...\"\n  }\n\n缓存：天气 30 分钟（key: v1:cache:traffic-weather:weather:<city>）"
  },
  {
    "id": "translate",
    "title": "文本翻译",
    "category": "大模型与文本",
    "summary": "支持中英文及主流语种互译；维吾尔语（ug）走专用上游（百度官方优先 / 必应兜底）。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/translate",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - q / text  string  必填；待翻译文本，1-5000 字符（兼容两种参数名）\n  - from       string  可选；源语言代码，默认 zh；不支持 auto（维吾尔语语向除外可 auto）\n  - to         string  可选；目标语言代码，默认 en\n\n支持语言代码（20种）：\n  zh=中文 cht=繁体中文 yue=粤语 wyw=文言文\n  en=英文 jp=日语 kor=韩语 fra=法语 spa=西班牙语\n  de=德语 ru=俄语 pt=葡萄牙语 it=意大利语 th=泰语\n  nl=荷兰语 pl=波兰语 cs=捷克语 hu=匈牙利语 el=希腊语\n  ug=维吾尔语（别名 uy / uig）\n  ⚠️ 注意：日语用 jp（非 ja），韩语用 kor（非 ko），法语用 fra（非 fr）",
    "spec": {},
    "doc": "/api/translate · 文本翻译\n\n支持中英文及主流语种互译；维吾尔语（ug）走专用上游（百度官方优先 / 必应兜底）。\n\n参数：\n  - q / text  string  必填；待翻译文本，1-5000 字符（兼容两种参数名）\n  - from       string  可选；源语言代码，默认 zh；不支持 auto（维吾尔语语向除外可 auto）\n  - to         string  可选；目标语言代码，默认 en\n\n支持语言代码（20种）：\n  zh=中文 cht=繁体中文 yue=粤语 wyw=文言文\n  en=英文 jp=日语 kor=韩语 fra=法语 spa=西班牙语\n  de=德语 ru=俄语 pt=葡萄牙语 it=意大利语 th=泰语\n  nl=荷兰语 pl=波兰语 cs=捷克语 hu=匈牙利语 el=希腊语\n  ug=维吾尔语（别名 uy / uig）\n  ⚠️ 注意：日语用 jp（非 ja），韩语用 kor（非 ko），法语用 fra（非 fr）\n\n返回：\n  source_text / target_text / from / to / from_name / to_name / char_count\n\n缓存：Redis 24 小时（按 sha256(text|from|to) 哈希）\n\n安全：上游 token 通过 .env 注入，代码不含密钥"
  },
  {
    "id": "tts",
    "title": "TTS 语音合成（Text To Speech）",
    "category": "大模型与文本",
    "summary": "输入文本，返回 base64 编码的 MP3 音频。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/tts",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - text        string  必填；待合成文本，1-500 字符\n  - voice_type  string  可选；音色，默认 female_zhubo\n\n不缓存：500 字音频 ≈ 1MB base64，重复合成概率低，存 Redis 内存代价过高",
    "spec": {},
    "doc": "/api/tts · TTS 语音合成（Text To Speech）\n\n输入文本，返回 base64 编码的 MP3 音频。\n上游：alapi.cn /api/tts/free（与发票/OCR/SSL/审核共用 token）\n\n参数：\n  - text        string  必填；待合成文本，1-500 字符\n  - voice_type  string  可选；音色，默认 female_zhubo\n\n不缓存：500 字音频 ≈ 1MB base64，重复合成概率低，存 Redis 内存代价过高"
  },
  {
    "id": "typhoon",
    "title": "台风实时路径",
    "category": "天气与生活",
    "summary": "西北太平洋 / 南海台风实时监测：活跃台风列表、单个台风详情与完整移动路径 （实况 + 官方预报点），并附带风云卫星云图时序图。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/typhoon",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action  string  可选；操作类型，默认 list\n      list    活跃台风列表（可加 status=all 查全部含停编）\n      detail  单个台风详情 + 完整路径（需 id）；兼容别名 info / track\n      images  风云卫星云图时序图列表\n      all     综合：活跃台风 + 最新云图\n  - id      string  台风 ID（detail 必填）\n  - status  string  list 用；active（默认，仅活跃）/ all（含停编）\n  - limit   int     images 用；云图数量，默认 10，最大 50",
    "spec": {},
    "doc": "/api/typhoon · 台风实时路径\n\n西北太平洋 / 南海台风实时监测：活跃台风列表、单个台风详情与完整移动路径\n（实况 + 官方预报点），并附带风云卫星云图时序图。\n\n参数：\n  - action  string  可选；操作类型，默认 list\n      list    活跃台风列表（可加 status=all 查全部含停编）\n      detail  单个台风详情 + 完整路径（需 id）；兼容别名 info / track\n      images  风云卫星云图时序图列表\n      all     综合：活跃台风 + 最新云图\n  - id      string  台风 ID（detail 必填）\n  - status  string  list 用；active（默认，仅活跃）/ all（含停编）\n  - limit   int     images 用；云图数量，默认 10，最大 50\n\n返回示例（detail）：\n  { \"code\":0, \"data\":{ \"id\":\"...\",\"tc_num\":\"2609\",\"name_cn\":\"巴威\",\"name_en\":\"BAVI\",\n      \"is_active\":true, \"current\":{...最新实况...}, \"points\":[{...}] } }\n\n上游：国家气象中心公开发布数据（台风数据解析后输出；卫星云图为官方图片直链）\n缓存：台风列表/详情 10min、云图 30min"
  },
  {
    "id": "unshort",
    "title": "短链还原（多跳追踪）",
    "category": "域名与网络",
    "summary": "跟踪一个短链的全部重定向跳转，返回每跳的 URL、状态码、跳转方式与耗时。 适用于钓鱼链接溯源、推广短链分析、QR 码内容核对等场景。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/unshort",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - url       string  必填；要展开的 URL（http/https）\n  - max_hops  number  可选；最大跳转次数，默认 10，范围 [1, 30]",
    "spec": {},
    "doc": "/api/unshort · 短链还原（多跳追踪）\n\n跟踪一个短链的全部重定向跳转，返回每跳的 URL、状态码、跳转方式与耗时。\n适用于钓鱼链接溯源、推广短链分析、QR 码内容核对等场景。\n\n参数：\n  - url       string  必填；要展开的 URL（http/https）\n  - max_hops  number  可选；最大跳转次数，默认 10，范围 [1, 30]\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"original_url\": \"https://t.cn/A6xxxx\",\n      \"final_url\":    \"https://example.com/landing?utm=share\",\n      \"hops\":         3,\n      \"total_time_ms\": 412,\n      \"chain\": [\n        {\"hop\":1,\"url\":\"https://t.cn/A6xxxx\",\"status\":302,\"method\":\"Location\",\"duration_ms\":120,\"next\":\"...\"},\n        ...\n      ],\n      \"is_redirect\": true\n    }\n  }\n\n缓存：5 分钟（短链一旦生成大概率不变；超时是为了让用户能验证链接生效）\n\n限流：登录 QPS=5/日免=200；匿名 QPS=1/日免=30"
  },
  {
    "id": "user-info",
    "title": "账户余额 / 剩余额度 / 套餐到期（只读）",
    "category": "账户",
    "summary": "鉴权：Authorization: Bearer <API Key>（也可用 X-Api-Key） 不计费、不改账户。预付费 Key 只看该 Key 额度，看不到卖家钱包。",
    "method": "GET",
    "url": "https://v1.apizero.cn/api/user-info",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "GET /api/user-info · 账户余额 / 剩余额度 / 套餐到期（只读）\n\n鉴权：Authorization: Bearer <API Key>（也可用 X-Api-Key）\n不计费、不改账户。预付费 Key 只看该 Key 额度，看不到卖家钱包。"
  },
  {
    "id": "video-parse",
    "title": "聚合短视频解析",
    "category": "视频与内容",
    "summary": "支持抖音、快手、小红书、B 站、微博、皮皮虾、西瓜、好看等国内平台 + TikTok / YouTube / Instagram / Twitter(X) / Facebook 等海外平台 + 豆包 / 千问 等 AIGC 内容分享（视频 / 图集）。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/video-parse",
    "timeout_sec": 70,
    "kyc": false,
    "media": true,
    "params": "参数：\n  - url    string  必填；视频链接（支持分享口令中的短链，如 v.douyin.com/xxx）\n  - cookie string|object 可选；仅国内平台。Cookie 字符串（a=1; b=2）或任意键名的对象。不传则公开解析。\n  - flat   int     可选；响应结构模式：\n            0（默认）= 双层 data，兼容旧版（data 内仍含 code/platform/type/data/stats...）\n            1        = 单层 data，推荐新接入使用（将内层字段提升到 data 顶层）",
    "spec": {},
    "doc": "/api/video-parse · 聚合短视频解析\n\n支持抖音、快手、小红书、B 站、微博、皮皮虾、西瓜、好看等国内平台 +\nTikTok / YouTube / Instagram / Twitter(X) / Facebook 等海外平台 +\n豆包 / 千问 等 AIGC 内容分享（视频 / 图集）。\n\n平台路由：\n  - 海外 5 站（TikTok / YouTube / Instagram / Twitter / Facebook）→ 海外上游\n  - 豆包 / 千问（doubao.com / qianwen.com）→ AIGC 综合解析上游（独立链路）\n  - 可灵 AI 分享（klingai-share.kuaishou.com）→ 可灵 creatives 接口（独立链路）\n  - 其他（抖音 / 快手 / 小红书 / B 站 / 微博 ...）→ 国内上游\n\n参数：\n  - url    string  必填；视频链接（支持分享口令中的短链，如 v.douyin.com/xxx）\n  - cookie string|object 可选；仅国内平台。Cookie 字符串（a=1; b=2）或任意键名的对象。不传则公开解析。\n  - flat   int     可选；响应结构模式：\n            0（默认）= 双层 data，兼容旧版（data 内仍含 code/platform/type/data/stats...）\n            1        = 单层 data，推荐新接入使用（将内层字段提升到 data 顶层）\n\n缓存：Redis 5 分钟（视频 URL 自带 CDN 过期时间戳，短缓存兼顾去重和鲜度）\n\n响应结构：完全透传上游 body 到 data 字段（不修改字段名/结构），\n         仅对上游错误消息中的内部代理凭证 / 内部 IP / extra 调试字段做脱敏。\n         flat=1 时从 data 中提升字段，结构见下方 video_parse_emit()。\n\n新增：\n  - 海外解析链路提取并转发用户来源 IP（X-Forwarded-For / X-Real-IP / client_ip）\n  - 海外媒体 URL 重写为本站受签名保护的代理 URL，避免浏览器直开 googlevideo/tiktokcdn 失败\n  - 代理播放请求在计费前短路，避免视频分片请求再次走 API 配额\n  - 豆包 / 千问内容解析（独立 AIGC 上游，按 url 自动识别视频 / 图集，结构兼容 flat）"
  },
  {
    "id": "visits-counter",
    "title": "访问计数",
    "category": "查询与娱乐",
    "summary": "按名字累计访问次数。给 AI 看结果时用 format=json，不要要 svg 或 png。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/visits-counter",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "可选 name、site、mode（daily / total）、format（json / svg / png）、label、length、step、no_increment、theme、scale。",
    "spec": {},
    "doc": ""
  },
  {
    "id": "wallpaper",
    "title": "随机壁纸",
    "category": "视频与内容",
    "summary": "传输失败（HTTP 0）时用该分类最近一次成功结果兜底，避免整次请求失败。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/wallpaper",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - category    string  可选；分类名（中文），默认「风景」\n  - resolution  string  可选；分辨率，默认 1920x1080\n  - count       int     可选；返回数量 1-20，默认 1",
    "spec": {},
    "doc": "/api/wallpaper · 随机壁纸\n\n上游：360 壁纸库公开接口。主节点 wallpaper.apc.360.cn，连不上再试 cdn.apc.360.cn。\n传输失败（HTTP 0）时用该分类最近一次成功结果兜底，避免整次请求失败。\n\n16 个分类，7 种分辨率（含 1920×1080 原图），单次返回 1-20 张随机壁纸\n\n参数：\n  - category    string  可选；分类名（中文），默认「风景」\n  - resolution  string  可选；分辨率，默认 1920x1080\n  - count       int     可选；返回数量 1-20，默认 1\n\n缓存：上游原响应按 (cid, start_bucket) 缓存 1h，shuffle 在本地做（保证随机）。\n另按分类保留 24h 最近成功结果，只在上游请求失败时使用。"
  },
  {
    "id": "weather",
    "title": "彩云天气",
    "category": "天气与生活",
    "summary": "基于彩云天气 v2.6 数据源，提供实时天气、分钟级降水、小时预报、天气预报、综合数据 + 预警。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/weather",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  type      可选  realtime / minutely / hourly / daily / weather（默认 weather 综合）\n  city      可选  城市名（如「北京」「上海」「朝阳区」）\n  location  可选  经纬度（如「116.3975,39.9085」），与 city 二选一\n  alert     可选  是否包含气象预警 true/false（默认 true，仅 realtime/weather 有效）\n  days      可选  天预报步长（默认 5），范围 1~15\n  hours     可选  小时预报步长（默认 24），范围 1~360",
    "spec": {},
    "doc": "/api/weather · 彩云天气\n\n基于彩云天气 v2.6 数据源，提供实时天气、分钟级降水、小时预报、天气预报、综合数据 + 预警。\n\n参数：\n  type      可选  realtime / minutely / hourly / daily / weather（默认 weather 综合）\n  city      可选  城市名（如「北京」「上海」「朝阳区」）\n  location  可选  经纬度（如「116.3975,39.9085」），与 city 二选一\n  alert     可选  是否包含气象预警 true/false（默认 true，仅 realtime/weather 有效）\n  days      可选  天预报步长（默认 5），范围 1~15\n  hours     可选  小时预报步长（默认 24），范围 1~360\n\n返回：\n  data.location  统一的位置信息（city/lon/lat/timezone）\n  data.summary   实时摘要。wind.speed_ms / level 为历史字段；对齐官网用 speed_si_ms / level_si\n  data.alerts    标准化的预警列表（含等级颜色）\n  data.realtime  实时（type=realtime/weather）\n  data.minutely  分钟级降水（type=minutely/weather）\n  data.hourly    小时预报（type=hourly/weather）\n  data.daily     天预报（type=daily/weather）\n  data.forecast_keypoint 一句话天气总结\n\n上游：\n  Geocoding：本地内置 ~140 个常用中国城市表 + Open-Meteo Geocoding 兜底\n\n缓存：5 分钟（天气分钟级更新）\n  key: v1:cache:weather:<md5(w3|type|location|alert|days|hours)>"
  },
  {
    "id": "webmeta",
    "title": "网页元数据提取（含 30+ 技术栈识别）",
    "category": "域名与网络",
    "summary": "提取目标网页的标题、描述、关键词、作者、OG/Twitter Card、favicon、 canonical、语言/字符集，并识别使用的 JS 框架、CMS、CDN、统计平台等技术栈。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/webmeta",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - url  string  必填；网页 URL，自动补 https://",
    "spec": {},
    "doc": "/api/webmeta · 网页元数据提取（含 30+ 技术栈识别）\n\n提取目标网页的标题、描述、关键词、作者、OG/Twitter Card、favicon、\ncanonical、语言/字符集，并识别使用的 JS 框架、CMS、CDN、统计平台等技术栈。\n\n参数：\n  - url  string  必填；网页 URL，自动补 https://\n\n返回示例：\n  {\n    \"code\": 0, \"msg\": \"成功\",\n    \"data\": {\n      \"url\": \"https://baidu.com\",\n      \"title\": \"百度一下，你就知道\",\n      \"description\": \"...\", \"keywords\": \"...\", \"author\": \"\",\n      \"language\": \"zh-CN\", \"charset\": \"UTF-8\",\n      \"canonical\": \"https://www.baidu.com/\", \"favicon\": \"...\",\n      \"og\": {...}, \"twitter\": {...},\n      \"tech_stack\": [\"jQuery\", \"Baidu Analytics\"],\n      \"http_code\": 200\n    }\n  }\n\n缓存：6 小时（页面元数据短期内不会大改）\n\n限流：登录 QPS=5/日免=100；匿名 QPS=1/日免=20"
  },
  {
    "id": "wechat-archive",
    "title": "公众号文章存档",
    "category": "视频与内容",
    "summary": "抓取一篇微信公众号文章的标题、作者和正文。url 必填。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/wechat-archive",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "必填 url。可选 format（默认 both）、timeout。",
    "spec": {},
    "doc": ""
  },
  {
    "id": "wechat-video",
    "title": "微信视频号解析",
    "category": "视频与内容",
    "summary": "输入视频号链接（sph 短链/sph ID/完整链接），返回视频元数据： 标题、作者、封面图、视频下载直链（含签名）、互动数据等。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/wechat-video",
    "timeout_sec": 25,
    "kyc": false,
    "media": true,
    "params": "参数：\n  - url  string  必填；视频号链接\n    支持格式：\n      https://weixin.qq.com/sph/AhuZrc6doH\n      https://channels.weixin.qq.com/finder-preview/pages/sph?id=AhuZrc6doH\n      AhuZrc6doH（纯 sph ID）",
    "spec": {},
    "doc": "/api/wechat-video · 微信视频号解析\n\n输入视频号链接（sph 短链/sph ID/完整链接），返回视频元数据：\n标题、作者、封面图、视频下载直链（含签名）、互动数据等。\n\n参数：\n  - url  string  必填；视频号链接\n    支持格式：\n      https://weixin.qq.com/sph/AhuZrc6doH\n      https://channels.weixin.qq.com/finder-preview/pages/sph?id=AhuZrc6doH\n      AhuZrc6doH（纯 sph ID）\n\n\n注意：\n  - video_url 中的 sign 签名约 2 小时过期，过期后需重新解析\n  - 封面图 URL 同样有时效性，建议业务层自行缓存"
  },
  {
    "id": "whois",
    "title": "Whois 域名信息查询",
    "category": "域名与网络",
    "summary": "查询域名注册信息、到期时间、注册商、DNS 服务器、注册主体等。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/whois",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - domain    string  必填；域名（自动剥离 http/https 前缀和路径，如 https://www.baidu.com/abc 会归一化为 baidu.com）\n                      注：whoiscx 上游会自动把子域名归一化为主域名（如 www.baidu.com → baidu.com）\n  - with_raw  bool    可选；是否返回 raw_whois 原始 whois 文本（约 3KB），默认 false",
    "spec": {},
    "doc": "/api/whois · Whois 域名信息查询\n\n查询域名注册信息、到期时间、注册商、DNS 服务器、注册主体等。\n上游：whoiscx.com\n\n参数：\n  - domain    string  必填；域名（自动剥离 http/https 前缀和路径，如 https://www.baidu.com/abc 会归一化为 baidu.com）\n                      注：whoiscx 上游会自动把子域名归一化为主域名（如 www.baidu.com → baidu.com）\n  - with_raw  bool    可选；是否返回 raw_whois 原始 whois 文本（约 3KB），默认 false\n\n缓存：Redis 24 小时（whois 数据年级变化，全天同一域名只查一次上游）"
  },
  {
    "id": "wzry",
    "title": "王者荣耀战力查询",
    "category": "查询与娱乐",
    "summary": "action=heroes → 返回 130+ 英雄列表（ename/name/title/avatar） action=query → 查询某英雄在某区服的全国战力分布",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/wzry",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - action    string   必填；heroes / query\n  - hero      string   action=query 时必填（与 hero_id 二选一）；英雄中文名，如 \"赵云\"\n  - hero_id   int      action=query 时必填（与 hero 二选一）；英雄 ename，如 107\n  - zone      string   action=query 必填；区服代码：\n                        · aqq = Android QQ\n                        · awx = Android 微信\n                        · iqq = iOS QQ\n                        · iwx = iOS 微信\n  - type      string   action=query 可选，默认 all：\n                        · all = 返回完整 heroList（按 level 混合排列）\n                        · min = 各 level（省/市/区）最低战力 + 相近排名\n                        · max = 各 level（省/市/区）最高战力 + 相近排名",
    "spec": {},
    "doc": "/api/wzry · 王者荣耀战力查询\n\naction=heroes  → 返回 130+ 英雄列表（ename/name/title/avatar）\naction=query   → 查询某英雄在某区服的全国战力分布\n\n参数：\n  - action    string   必填；heroes / query\n  - hero      string   action=query 时必填（与 hero_id 二选一）；英雄中文名，如 \"赵云\"\n  - hero_id   int      action=query 时必填（与 hero 二选一）；英雄 ename，如 107\n  - zone      string   action=query 必填；区服代码：\n                        · aqq = Android QQ\n                        · awx = Android 微信\n                        · iqq = iOS QQ\n                        · iwx = iOS 微信\n  - type      string   action=query 可选，默认 all：\n                        · all = 返回完整 heroList（按 level 混合排列）\n                        · min = 各 level（省/市/区）最低战力 + 相近排名\n                        · max = 各 level（省/市/区）最高战力 + 相近排名\n\n上游：\n  - 官方英雄列表：https://pvp.qq.com/web201605/js/herolist.json\n  - 降级英雄列表：https://yxsaoma.com/api/app/pvp/heroes\n  - 战力查询：https://yxsaoma.com/api/app/pvp/v2/area/score（MD5 签名）\n  - 日榜繁忙时：同签名的 /v2/area/score/history，取 3 天内最新一份完整榜\n  - 过期回源：https://www.sapi.run/hero/select.php（先直连，直连失败才走代理）\n\n缓存：英雄列表 24h；战力数据 1h。过期日榜不入库。"
  },
  {
    "id": "wzry-battle",
    "title": "王者荣耀战绩查询",
    "category": "查询与娱乐",
    "summary": "action=search → 搜索玩家（通过昵称关键词） action=roles → 查询角色列表（通过 userId） action=battles → 查询战报列表（通过 userId + roleId） action=battle_detail → 单场十人面板（gameSeq + gameSvr + rel",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/wzry-battle",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "",
    "spec": {},
    "doc": "/api/wzry-battle · 王者荣耀战绩查询\n\naction=search        → 搜索玩家（通过昵称关键词）\naction=roles         → 查询角色列表（通过 userId）\naction=battles       → 查询战报列表（通过 userId + roleId）\naction=battle_detail → 单场十人面板（gameSeq + gameSvr + relaySvr + battleType）\n\n登录态（必填，每次请求由调用方临时上传，服务端不落盘、不全站共用）：\n  - session       object|string  推荐；与 session.json 同结构的 JSON\n  - 或 multipart 文件字段 session / session_file\n  - 或扁平字段 ssoopenid + ssotoken（其余头可用默认值）\n\n业务参数：\n  action=search:\n    - keyword    string  必填；玩家昵称关键词\n\n  action=roles:\n    - user_id    string  必填；玩家 userId\n\n  action=battles:\n    - user_id    string  必填；玩家 userId\n    - role_id    string  可选；角色 roleId。查自己近况可空\n    - last_time  int     可选；翻页游标（Unix 时间戳），0 = 查最新，默认 0\n    - option     int     可选；0=全部 1=排位 2=巅峰 3=娱乐，默认 0\n    - pages      int     可选；每次拉取页数（1~3，每页约 30 条），默认 1\n\n上游：\n  TRPC  https://kohcamp.qq.com/<path>           Content-Type: application/json\n  PHP   https://ssl.kohsocialapp.qq.com:10001   Content-Type: application/x-www-form-urlencoded\n\n缓存：roles=5min（按登录态指纹 + userId）；search/battles=不缓存"
  },
  {
    "id": "yiyan",
    "title": "一言（简版纯文本随机语录）",
    "category": "查询与娱乐",
    "summary": "hitokoto 的简化版：纯文本随机一句，不带分类/出处。适合页面装饰、 小程序欢迎语、API 验证 echo。",
    "method": "POST",
    "url": "https://v1.apizero.cn/api/yiyan",
    "timeout_sec": 25,
    "kyc": false,
    "media": false,
    "params": "参数：\n  - format  string  可选；输出格式\n                     json（默认）→ JSON 包装 { content, length, total_pool }\n                     text         → 直接返回纯文本（不走 JSON 包装）",
    "spec": {},
    "doc": "/api/yiyan · 一言（简版纯文本随机语录）\n\nhitokoto 的简化版：纯文本随机一句，不带分类/出处。适合页面装饰、\n小程序欢迎语、API 验证 echo。\n\n参数：\n  - format  string  可选；输出格式\n                     json（默认）→ JSON 包装 { content, length, total_pool }\n                     text         → 直接返回纯文本（不走 JSON 包装）\n\n返回示例（json）：\n  { \"code\": 0, \"msg\": \"成功\", \"data\": { \"content\": \"...\", \"length\": 16, \"total_pool\": 370 } }\n\n返回示例（text）：\n  落霞与孤鹜齐飞，秋水共长天一色。\n\n特性：\n  - 零上游：本地数据集（370 行，已离线汇编自 hitokoto.cn）\n  - 不缓存：每次随机不同\n\n限流：登录 QPS=20/日免=500；匿名 QPS=5/日免=200"
  }
]