介绍

常见问题

这里收录了一些使用 UapiPro 过程中最常见的问题。

新手必看

可以。无需登录或填写邮箱即可直接调用,这类用户在文档中统称为"访客"。

访客每月拥有 1500 积分 的免费额度。大多数基础接口单次调用消耗 1 积分,因此这份额度大约相当于每月 1500 次调用。

每月 1 号 0 点 自动重置,无需任何操作。

访客额度按 IP 地址(网络出口) 计算。因此,同一局域网下的多个设备会共享这 1500 积分的额度;切换网络后可能会获得一份新的额度,但这是非稳定行为,不建议在应用中依赖。登录账号之后,额度改为按账号计算,不再受 IP 影响。

当月额度用尽后,后续请求会被拒绝。访客月额度耗尽时通常返回 HTTP 429,并带有错误码 VISITOR_MONTHLY_QUOTA_EXHAUSTED,响应中会提示下一次可用时间;登录用户在免费额度、资源包和账户余额都不足时通常返回 HTTP 402,并带有错误码 INSUFFICIENT_CREDITS。如果希望立刻继续调用,可以登录账号将每月免费额度提升至 3500 积分,或前往 价格页 购买资源包(最低 ¥4.9,一次购买永久有效)。

积分与价格

接口等级积分
查询快递物流信息高级服务40 积分
AI智能翻译AI 服务4 积分
图片敏感检测AI 服务4 积分
通用 OCR 文字识别AI 服务4 积分
查询域名ICP备案信息AI 服务4 积分
智能搜索AI 服务4 积分
分析敏感词AI 服务4 积分
敏感词分析 (GET)AI 服务4 积分
查询 B站投稿AI 服务4 积分
查询 B站直播间AI 服务4 积分
查询 B站评论AI 服务4 积分
查询 B站用户AI 服务4 积分
查询 B站视频AI 服务4 积分
查询 QQ 群信息AI 服务4 积分
查询 QQ 信息AI 服务4 积分
流式翻译(中英互译)AI 服务4 积分
翻译AI 服务4 积分
网页转 MarkdownAI 服务4 积分
获取Gravatar头像数据查询2 积分
查询 Steam 用户数据查询2 积分
查询 GitHub 仓库数据查询2 积分
查询 GitHub 用户信息数据查询2 积分
无损压缩图片数据查询2 积分
解码并缩放图片数据查询2 积分
通过Base64编码上传图片数据查询2 积分
生成摸摸头GIF (QQ号)数据查询2 积分
生成摸摸头GIF数据查询2 积分
生成你们怎么不说话了表情包数据查询2 积分
图片转 Base64数据查询2 积分
Adcode 国内外行政区域查询数据查询2 积分
查询手机归属地数据查询2 积分
获取支持的快递公司列表数据查询2 积分
识别快递公司数据查询2 积分
查询天气数据查询2 积分
执行DNS解析查询数据查询2 积分
查询 IP数据查询2 积分
查询我的 IP数据查询2 积分
查询域名的WHOIS注册信息数据查询2 积分
Markdown 转 PDF数据查询2 积分
提取网页图片数据查询2 积分
每日新闻图基础工具1 积分
Epic 免费游戏基础工具1 积分
查询 MC 曾用名基础工具1 积分
查询 MC 服务器基础工具1 积分
查询 MC 玩家基础工具1 积分
SVG转图片基础工具1 积分
查询节假日与万年历基础工具1 积分
查询热榜基础工具1 积分
查询电影票房基础工具1 积分
Ping 主机基础工具1 积分
Ping 我的 IP基础工具1 积分
端口扫描基础工具1 积分
检查URL的可访问性状态基础工具1 积分
检查域名在微信中的访问状态基础工具1 积分
AES高级解密基础工具1 积分
AES高级加密基础工具1 积分
文本分析基础工具1 积分
格式转换基础工具1 积分
Markdown 转 HTML基础工具1 积分
敏感词检测(快速)基础工具1 积分
提取网页元数据基础工具1 积分
AI翻译配置免费0 积分
答案之书免费0 积分
答案之书 (POST)免费0 积分
JSON 格式化免费0 积分
时间戳转换免费0 积分
程序员历史事件免费0 积分
程序员历史上的今天免费0 积分
获取必应每日壁纸免费0 积分
查询必应壁纸历史免费0 积分
生成二维码免费0 积分
计算两个日期之间的时间差值免费0 积分
查询农历时间免费0 积分
随机数生成免费0 积分
转换时间戳 (旧版,推荐使用/convert/unixtime)免费0 积分
查询世界时间免费0 积分
随机图片免费0 积分
随机字符串免费0 积分
一言免费0 积分
搜索引擎配置免费0 积分
限流状态免费0 积分
获取API端点使用统计免费0 积分
AES 解密免费0 积分
AES 加密免费0 积分
Base64 解码免费0 积分
Base64 编码免费0 积分
MD5 哈希免费0 积分
MD5 哈希 (POST)免费0 积分
MD5 校验免费0 积分
转换任务状态免费0 积分

登录之后,每月免费积分会从 1500 提升至 3500,默认调用速率也会从 4 QPS 提升至 7 QPS。同时可以在控制台查看详细的调用记录,并对 API Key 进行管理。

前往 价格页 即可购买。资源包一次购买永久有效,不会过期也不会按月清零,直至积分扣完为止。

会。命中缓存的请求按半价计费并向下取整,因此原价 1 积分的接口命中缓存后实际扣 0 积分,原价 2 积分的接口命中缓存后实际扣 1 积分,其它档位以此类推。某次请求是否走了半价,可以在响应头中确认。

缓存相关

支持缓存的接口及默认缓存时间如下。缓存时间可能因上游稳定性、数据更新频率或服务压力调整;如果接口没有出现在表中,应按不提供服务端缓存处理。GET /api/v1/misc/weather 的缓存会按请求 IP 区分,同一个城市参数在不同出口 IP 下可能不是同一份缓存。

分类接口默认缓存时间
网络GET /api/v1/network/ipinfo24 小时
网络GET /api/v1/network/whois6 小时
网络GET /api/v1/network/icp24 小时
网络GET /api/v1/network/wxdomain / GET /api/v1/network/wxdomaincheck1 小时
网络GET /api/v1/network/dns / GET /api/v1/network/dnsresolve5 分钟
网络GET /api/v1/network/ping30 秒
图像GET /api/v1/image/random/:category/:type1 分钟
图像GET /api/v1/image/bing-daily / GET /api/v1/image/bing-daily/history12 小时
图像GET /api/v1/image/qrcode24 小时
图像GET /api/v1/image/motou1 分钟
图像GET /api/v1/image/tobase641 小时
头像GET /api/v1/avatar/gravatar6 小时
游戏GET /api/v1/game/labymod/userprofile / GET /api/v1/game/minecraft/userinfo / GET /api/v1/game/steam/summary10 分钟
游戏GET /api/v1/game/minecraft/serverstatus30 秒
游戏GET /api/v1/game/minecraft/historyid24 小时
游戏GET /api/v1/game/epic-free1 小时
历史GET /api/v1/history/programmer/today6 小时
历史GET /api/v1/history/programmer24 小时
日更GET /api/v1/daily/news-image1 小时
社交GET /api/v1/social/bilibili/userinfo / GET /api/v1/social/bilibili/videoinfo / GET /api/v1/social/bilibili/archives15 分钟
社交GET /api/v1/social/bilibili/replies5 分钟
社交GET /api/v1/social/bilibili/liveroom2 分钟
社交GET /api/v1/social/qq/userinfo / GET /api/v1/social/qq/groupinfo15 分钟
杂项GET /api/v1/misc/phoneinfo24 小时
杂项GET /api/v1/misc/hotboard / GET /api/v1/misc/weather5 分钟
杂项GET /api/v1/misc/holiday-calendar12 小时
杂项GET /api/v1/misc/timestamp1 小时
杂项GET /api/v1/misc/tracking/detect / GET /api/v1/misc/tracking/carriers24 小时
杂项GET /api/v1/misc/tracking/query10 分钟
杂项GET /api/v1/misc/district6 小时
翻译POST /api/v1/translate/text30 天
AI 翻译POST /api/v1/ai/translate30 天
AI 翻译GET /api/v1/ai/translate/languages24 小时
转换POST /api/v1/convert/json5 分钟
转换GET /api/v1/convert/unixtime1 小时
网页解析GET /api/v1/webparse/extractimages / GET /api/v1/webparse/metadata1 小时
答案之书GET /api/v1/answerbook/ask100 毫秒
搜索POST /api/v1/search/aggregate6 小时
搜索GET /api/v1/search/engines24 小时
GitHubGET /api/v1/github/repo / GET /api/v1/github/user2 分钟
敏感词POST /api/v1/sensitive-word/analyze / GET /api/v1/sensitive-word/analyze-query1 小时

查看响应头中的 X-Cache-StatusEO-Cache-Status。常见值包括 HIT(命中缓存)、MISS(未命中缓存,已重新请求上游)、STALE(返回过期缓存并在后台刷新)和 SKIP_UNCACHED(该请求未进入服务端缓存)。命中缓存并按半价计费时,响应头还会出现 UAPI-Credits-Pricing: cache-hit-half-price,实际扣费以 UAPI-Credits-Charged 为准。

TypeScript SDK 支持在请求参数中传入 disableCache: true。其它语言 SDK 的参数命名以对应 SDK 生成结果为准,使用前请查看该语言当前版本的接口示例;不要直接把 TypeScript 的驼峰字段照搬到所有语言噢。

TS

不使用 SDK 时,推荐在查询参数中追加一个每次不同的时间戳,例如 _t=Date.now()。服务端缓存键会包含查询参数,因此这种方式比只加 Cache-Control: no-cache 更可靠。

TS

限流相关

QPS(Query Per Second)即每秒请求数上限。不同身份对应的默认 QPS 如下:

身份每秒最多
访客4 次
登录用户(免费额度)7 次
入门包10 次
标准包20 次
专业包30 次

429 主要对应两种情况,需要结合响应中的 message / error 字段判断。

瞬时速率超限。 典型提示为 Visitor rate limit exceededRate limit exceededToo many requests。此时响应头中会携带 Retry-After,客户端应按该值等待后再重试。推荐采用指数退避策略,例如依次等待 0.5s、1s、2s、4s 后重试。

当月免费额度已用尽。 典型提示为 VISITOR_MONTHLY_QUOTA_EXHAUSTED。本月额度需等到下月 1 号自动重置;如果希望立即继续调用,可以登录账号(每月 3500 积分)或购买资源包(¥4.9 起,永久有效)。

建议控制请求节奏,例如平均每分钟不超过 40 次;在重试逻辑中使用指数退避,避免无间隔循环重试;对于可以缓存的数据,在本端做一层缓存以减少调用。合理设计的应用通常不会触发限流,如果被限流,往往说明请求频率确实偏高。

402 表示账户的积分与余额均已扣完,仅登录用户可能触发。访客额度耗尽时返回的是 429 加 VISITOR_MONTHLY_QUOTA_EXHAUSTED,因此访客不会遇到 402。登录用户在收到 402 后,需要购买资源包或等待月初免费额度重置。

  • 401:表示 API Key 无效、已过期、格式错误或已被删除。请检查 Key 是否完整,以及是否在控制台被删除。
  • 403 CORS_FORBIDDEN:浏览器跨域调用接口时未携带 Key,处理方式参见 Q22。
  • 403 IP not allowed / API path not allowed:当前请求不符合 Key 配置的 IP 白名单或接口白名单,请前往控制台调整 Key 的配置。

Key 与鉴权

标准做法是在请求头中加入:

Authorization: Bearer 你的key

curl 示例:

BASH

Node.js:

JS

Python:

PYTHON

请前往控制台的 API Keys 页面。在该页面可以新建或删除 Key、为 Key 配置 IP 白名单、限定 Key 可调用的接口范围、设置独立的速率上限,以及查看每个 Key 的使用情况。

打开任意接口文档页即可看到 Playground。其认证方式位于参数区上方的下拉菜单,共有三个选项:

  • 选择"不使用"时不携带 Key,按访客额度调用。
  • 选择"当前账号"(登录后显示头像与用户名)时,自动使用当前账号的额度,无需手动粘贴 Key。
  • 选择"自定义 Key"时,需粘贴自定义 API Key,该 Key 会保存在浏览器本地存储(localStorage)中,下次打开仍然可用,且可以随时清除。

请立即前往 API Keys 页面 删除该 Key 并新建一个。删除完成后,使用旧 Key 发起的调用会立即返回 401。

浏览器 / 跨域(CORS)

这是按策略设计的行为,而非异常。具体规则如下:

  • 同站调用(例如 uapis.cn 官方页面中发起的调用)直接放行
  • 跨域调用 /api/v1/*必须携带 Key,否则会返回 403 CORS_FORBIDDEN
  • /api/v1/* 的开放资源按默认策略放行

推荐通过自有后端转发:浏览器只调用自己的后端,由后端携带 Key 再调用 UAPI。这种方式的好处是 Key 不会暴露在前端代码中,同时可以在后端自行做缓存和二次限流。

若仅用于临时 Demo,也可以在前端 fetch 中直接加入 Authorization: Bearer 你的key 调用。但需要注意,任何访问者都能通过浏览器开发者工具获取到该 Key,存在被滥用的风险,不建议用于正式环境。

请参考 Q21 立即删除并重建 Key。后续建议严格采用自有后端转发的接入方式,避免在前端 JS 中硬编码 Key。

查看剩余额度 / 余额

控制台内各项信息的入口如下:

想查看的内容前往
剩余积分 / 免费额度用量页
账户余额账单页
整体概览控制台首页
购买资源包价格页

页面会以进度条的形式展示"已用 XX%",额度不足时也会给出提示。

每次请求的响应头中都会返回相关信息,重点关注两个响应头:RateLimit-Policy 表示当前生效的上限,RateLimit 表示剩余量与恢复时间。响应头中包含多个“桶”(bucket),常见的桶名及其含义如下:

桶名含义
billing-quota资源包剩余积分
billing-balance账户余额,单位为,非元
visitor-quota访客本月剩余积分
visitor-rate访客当前秒速率
billing-key-rate当前 Key 的速率规则
billing-ip-rate当前 Key 在单个 IP 上的速率规则

例如,响应中取得:

RateLimit: "billing-quota";r=2800;uapi-unit="credits";t=86400,"billing-balance";r=860;uapi-unit="cents";t=45

即表示资源包剩余 2800 积分,账户余额为 860 分,即 8.6 元。

可以直接用 curl 查看响应头:

BASH

对比输出中的 RateLimitRateLimit-Policy,即可获得剩余额度的信息。

扣费细节

不会。只有 2xx 成功响应才会计费,4xx 与 5xx 响应(业务性 404 除外)均不计费。

可以通过以下响应头确认:

响应头说明
UAPI-Credits-Requested本次接口原本应扣减的积分
UAPI-Credits-Charged实际扣减的积分
UAPI-Credits-Pricing特殊计价标记,例如 cache-hit-half-price
UAPI-Debit-Status本次扣费的最终状态,取值见下表

其中 UAPI-Debit-Status 的可能取值如下:

含义
applied扣费完成
free_endpoint免费接口,未扣费
exempt豁免路径,未扣费
skipped_non_2xx响应为非 2xx(且非业务 404),未扣费
failed扣费过程出错,未扣费
quota_exhausted额度已用尽(访客)
rate_limited被速率限制拦截

并非多扣。通常是 Charged < Requested,表示命中缓存后按半价计费。例如原价 1 积分的接口命中缓存时,Requested=1Charged=0;原价 2 积分的接口命中缓存时,Requested=2Charged=1

错误处理与错误码

当前的错误响应并非单一格式,不同接口存在一定差异,客户端需要做兼容处理。常见的结构主要有以下几种。

1. 标准错误结构(最常见)

JSON

2. 简化错误结构,没有 code,只有 error

JSON

3. 积分不足或访客月额度耗尽,会携带跳转链接:

JSON

4. 限流类错误,其中 code 为数字:

{ "code": 429, "message": "Rate limit exceeded", "limit": 10 }

推荐的读取顺序是:优先读取字符串形式的 code,若不存在则读取 error 字段;message 原样保留展示,不要覆写;同时建议保留响应头 X-Request-ID,以便后续排查。

以下是常见错误码及其含义与处理建议:

错误码HTTP含义处理建议
INVALID_PARAMETER / INVALID_PARAMS400参数错误、缺失或格式不正确message 修正参数,不要重试
UNAUTHORIZED401Key 无效、过期、已删除或未携带检查 Key,不要重试
INSUFFICIENT_CREDITS402账户积分与余额均已扣完(仅登录用户)前往 价格页 购买积分
CORS_FORBIDDEN403浏览器跨域调用 /api/v1/* 未携带 Key参见 Q22、Q23,建议走自有后端
NOT_FOUND404路径或资源不存在核对 URL 或业务 ID
AVATAR_NOT_FOUND404头像接口未找到目标更换目标 ID
NO_TRACKING_DATA404物流暂无轨迹订单可能尚未揽收,稍后再查
NO_MATCH / RECOGNITION_FAILED404无匹配结果或识别失败更换输入后重试
UNSUPPORTED_CARRIER404承运商不在支持范围核对承运商标识
UNSUPPORTED_FORMAT400文件或文本格式不受支持更换格式
FILE_REQUIRED400缺少必需的文件参数补充文件
CONVERSION_FAILED400文本或格式转换失败检查输入内容
REQUEST_ENTITY_TOO_LARGE413请求体超出大小限制压缩或拆分后重试
SERVICE_BUSY / RATE_LIMIT_EXCEEDED429触发速率限制Retry-After 等待后重试
VISITOR_MONTHLY_QUOTA_EXHAUSTED429访客本月 1500 次免费额度已用尽登录账号、购买资源包或等待下月重置
INTERNAL_SERVER_ERROR500服务端内部错误稍后重试,如持续出现请提供 X-Request-ID
API_ERROR500 / 502上游或内部错误稍后重试
SERVICE_UNAVAILABLE503服务暂不可用指数退避后重试
UPSTREAM_TIMEOUT / UPSTREAM_ERROR500 / 502上游超时或错误稍后重试
AUTHENTICATION_REQUIRED401接口要求登录或需要 Key携带 Key 后重试
ACCESS_DENIED403无权限访问该资源不要重试,确认业务权限
LEGACY_ENDPOINT_REPLACED4xx旧接口已被新接口替代根据 message 中的新路径替换

总体上,400 / 401 / 403 / 404 属于客户端错误,应修正请求后再发起,不要直接重试;500 / 502 / 503 / 504 以及 429 属于服务端或限流错误,可以在退避后重试。

以下为常见状态码的对应处理方式:

HTTP 状态处理建议
200成功,正常解析响应
204成功,无响应体
400参数错误,按 message 修正后再发,不要直接重试
401Key 不正确、已过期或已删除,检查 Key 后再发
402仅登录用户:积分与余额均已扣完,需充值后再发
403常见原因包括 CORS(跨域未带 Key)、IP 白名单不匹配、接口白名单不匹配,需检查配置
404路径或资源不存在,核对 URL 与业务 ID
405请求方法错误,例如 GET 接口使用了 POST
408请求超时,可重试
409资源冲突,例如重复创建同一对象
413请求体过大,压缩或拆分后重试
414URL 过长,改用 POST 放入请求体
429速率超限或额度耗尽,按 Retry-After 等待后重试
500服务端异常,指数退避后重试 1–3 次
502上游异常,指数退避后重试
503服务暂不可用,指数退避后重试
504网关超时,指数退避后重试

这类错误在尚未取得 HTTP 状态码前就已经失败,通常属于客户端或网络层的问题。常见情况如下:

错误 / code含义处理建议
ERR_NETWORK请求未发出检查网络、代理、VPN 或浏览器插件;浏览器环境下还需确认是否为 CORS 问题
ECONNABORTED / ETIMEDOUT请求超时调整超时时间、更换网络或重试
ECONNREFUSED连接被拒绝检查 URL 是否拼写错误
ENOTFOUND域名解析失败检查 DNS 与域名拼写
ERR_SSL_PROTOCOL_ERRORSSL/TLS 握手失败检查系统时间是否准确,以及公司代理是否拦截 HTTPS
INVALID_JSON_BODY请求体不是合法 JSON修正序列化逻辑

临时性问题通常可以重试,包括 429(按 Retry-After 等待后重试)、408、500、502、503、504,以及网络层超时类错误(如 ECONNABORTEDETIMEDOUT)。而 400、401、402、403、404、413 属于客户端自身的问题,重试也不会成功,应当在修正后再发起。

推荐的指数退避实现如下:

JS

最关键的是响应头中的 X-Request-ID,每次请求都会返回。除此之外,还建议提供出问题请求的 URL 与请求方法(请勿包含 Key)、HTTP 状态码与返回的 JSON,以及大致的时间点(建议精确到分钟)。如果没有 X-Request-ID 也能排查,但效率会明显下降。

可以。SDK 会自动完成 HTTP 状态映射、错误对象解析、基础重试等工作,支持的语言列表见 错误处理指南,按语言安装对应包即可使用。如果使用 curlfetchrequests 直接调用,则需自行按 Q31–Q35 完成字段兼容与重试逻辑。

使用边界

可以长期使用。免费部分会保持免费:访客每月 1500 积分、登录用户每月 3500 积分,均在每月 1 号自动发放。资源包仅在用户主动购买时收费,不存在自动扣款,且资源包一次购买永久有效、扣完即止,没有订阅机制。

不建议。1500 积分每月的额度容易耗尽,4 QPS 的速率在并发略高时即会触发 429;访客没有账号归属,出现问题时难以定位;访客按 IP 计算,服务器 IP 变更会导致用量断档。因此生产环境至少应使用登录账号,对稳定性有要求时建议购买资源包(¥4.9 起)。

可以。在 API Keys 页面 中,可以为每个 Key 配置两类限制:速率限制(每秒、分、时或天内最多调用的次数),以及单 IP 速率限制(每个调用方 IP 在每秒、分、时或天内最多调用的次数)。

为便于统一表达,对外按"次 / 窗口"换算。例如 10 次/秒 即 10 QPS,120 次/分 相当于平均 2 QPS,86400 次/天 相当于平均 1 QPS。

还是没解决?

如果以上内容仍未解决问题,请前往 帮助中心 提交工单,并附上响应头中的 X-Request-ID,这样会更容易定位问题。