处理账单错误和客户消费限额
区分余额不足与应用消费限额,呈现基于角色的恢复链接,并正确处理流式失败。
本页面内容
使用 ShareAI 登录进行身份验证,并通过明确的 ShareAI 支付授权执行账户资金操作。 openid 范围本身并不授权支出。AI 推理需要 inference 或经批准并同意的 surcharge 授权; payments 请求需单独确认结账。客户可在控制台中设置每月 AI 限额。您的应用程序无法更改此限额。
按代码处理错误#
HTTP 402 · insufficient_credits:支付账户缺乏足够的未过期积分,无法满足此提供商/模型和请求的要求。请客户管理其积分。一些积分有提供商或模型限制。
HTTP 402 · application_spending_limit_exceeded:已达到每月上限,保留的请求使用可用额度,或者此请求的费用将超出上限。不要将其视为速率限制或自动重试。请客户更改限额或等待直到 reset_at.
HTTP 429 · oauth_rate_limit:临时请求/并发限制。遵循 Retry-After 和有界退避策略。 HTTP 401 · consent_required:授权已过期、被撤销或不再有效;请获取新的授权,而不是要求充值。
JSON
{
"error": {
"type": "billing_error",
"code": "application_spending_limit_exceeded",
"message": "This application's monthly AI spending limit has been reached or this request would exceed it. Manage the limit or wait for the next month.",
"management_url": "https://console.shareai.now/?shareai_billing_context=OPAQUE_SHORT_LIVED_VALUE",
"help": "https://console.shareai.now/?shareai_billing_context=OPAQUE_SHORT_LIVED_VALUE",
"monthly_limit": "50",
"reset_at": "2026-10-01T00:00:00Z"
}
}两种财务错误使用 error.type = billing_error. management_url 是客户恢复的目标; help 是其兼容别名。 monthly_limit 是精确的欧元小数字符串, reset_at 是 UTC 时间。这些信息会出现在上限错误中,但可能在积分不足错误中缺失。
打开正确的支付账户#
提供一个可见的 管理账单 操作,使用返回的 URL。该不透明上下文在 15 分钟后过期,标识原始支付账户和连接,并在登录重定向后仍然有效。控制台会在选择账户前检查登录访问者的所有者/管理员权限。不要将其替换为应用程序所有者的账单页面、虚构一个参与者 ID、附加访问令牌或自动重定向客户。
对控制台来源使用允许列表, rel="noopener noreferrer" 如果打开新标签页。该链接是导航用途,而非授权或资金已添加的证明。不要将其存储为永久书签或公开日志中的记录。过期后,客户可以直接打开账单页面。客户明确要求重试后,新请求可以返回一个新链接。
JavaScript
const response = await fetch("https://api.shareai.now/api/v1/chat/completions", options);
const body = await response.json();
const error = body.error;
if (response.status === 402 && error?.type === "billing_error") {
const message = error.code === "application_spending_limit_exceeded"
? "Your monthly limit for this app has been reached."
: "Your ShareAI account needs eligible credits.";
showBillingMessage(message);
if (error.management_url) {
const target = new URL(error.management_url);
if (target.origin === "https://console.shareai.now") {
// Render a user-activated link; never silently open it or retry spending.
showManageBillingLink(target.href);
}
}
return;
}
if (!response.ok || error) throw new Error(error?.message || "Request failed");
renderAnswer(body);流式传输和最终结算#
ShareAI 在接纳/绑定前检查上限,并在结算时以原子方式检查实际网络成本加附加费。并发请求共享相同的上限。输入估算保留余量;输出长度无法提前得知。若最终费用超出剩余额度,将被拒绝且不会扣除使用费用或为 Builder 提供附加费信用。
对于 Chat Completions SSE,处理 event: error 使用相同的 error.code 和恢复字段。对于 Responses SSE,处理 response.failed 并读取 response.error。一旦流开始,其 HTTP 状态已为 200;部分内容并不意味着成功完成。不要将结果标记为完成、执行下游付费操作或在终端错误后自动重新提交。非流式的 Chat、Responses、Embeddings 和 Images 会将账单错误暴露为 HTTP 402 根 error 信封。
范围和重置#
日历月份以UTC运行。上限是针对付费账户和应用程序的,跨OAuth客户端、授权和刷新令牌共享;客户端服务在生产密钥轮换期间使用其稳定的工作ID。只有结算的AI网络成本加附加费才计入。固定订阅和单独确认的购买有自己的结账授权,不会消耗此AI上限。零暂停额外的AI支出;null表示没有上限。编辑限制或重新授权连接时,过去的费用会被保留。
这些是控制台中的客户控制,而不是用于提高预算的开发者端点。继续执行授权的范围、批准的模型、客户提供者偏好和接受的附加费条款。 客户计费指南 · 结账API.
最后更新日期 2026 年 9 月 18 日