請求エラーと顧客の支出制限の処理
アプリケーションの支出制限とクレジット不足を区別し、アクター認識型のリカバリリンクを提示し、ストリーミングエラーを正しく処理します。
このページについて
ShareAIでログインを使用してアイデンティティを確認し、アカウント資金を使用するアクションには明示的な「Pay with ShareAI」認可を使用します。 openid 範囲だけでは支出を認可しません。AI推論には inference 承認済みで同意された surcharge グラントが必要です。; payments リクエストは個別に確認されたチェックアウトを必要とします。顧客はConsoleで月間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"
}
}2つの財務エラーは error.type = billing_error. management_url 顧客リカバリ先です。; help その互換性エイリアスです。 monthly_limit 正確なEUR小数文字列であり、 reset_at UTCです。これらは上限エラーで表示され、クレジット不足エラーでは表示されない場合があります。
正しい支払いアカウントを開く#
明示的な 請求管理 アクションを返されたURLを使用して提供します。不透明なコンテキストは15分後に期限切れとなり、元の支払いアカウントと接続を識別し、サインインリダイレクト後も保持されます。Consoleは、サインインした訪問者の所有者/管理者権限を確認してそのアカウントを選択します。これをアプリケーション所有者の請求ページに置き換えたり、アクターIDを作成したり、アクセストークンを追加したり、顧客を自動的にリダイレクトしたりしないでください。
Consoleのオリジンに対して許可リストを使用し、 rel="noopener noreferrer" 新しいタブを開く場合。リンクはナビゲーションであり、認可や資金追加の証明ではありません。これを永続的なブックマークや公開ログに保存しないでください。期限切れの場合、顧客は直接Billingを開くことができます。顧客が明示的に再試行を依頼した後、新しいリクエストが新しいリンクを返すことができます。
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は、受け入れ/バインディングの前に上限を確認し、決済時に実際のネットワークコストと追加料金を原子レベルで確認します。同時リクエストは同じ上限を共有します。入力の見積もりは余裕を確保しますが、出力の長さは事前にわかりません。残りの許容量を超える最終料金は、使用デビットやビルダー追加料金クレジットなしで拒否されます。
Chat Completions SSEの場合、 event: error 同じ error.code リカバリフィールドを使用して処理します。Responses SSEの場合、 response.failed を処理し、 response.error. を読み取ります。ストリームが開始されると、HTTPステータスはすでに200です。部分的なコンテンツは成功した完了を意味しません。結果を完了としてマークしたり、下流の有料アクションを実行したり、致命的なエラー後に自動的に再送信したりしないでください。非ストリーミングのChat、Responses、Embeddings、Imagesは、HTTP 402ルート error エンベロープとして請求エラーを公開します。
範囲とリセット#
カレンダー月はUTCで運用されます。この上限は支払いアカウントとアプリケーションごとに設定され、OAuthクライアント、付与された権限、更新されたトークン間で共有されます。クライアントサービスは、Productionキーのローテーション中も安定した作業IDを使用します。AIネットワークの確定コストと追加料金のみが計上されます。固定サブスクリプションや個別に確認された購入は、それぞれ独自のチェックアウト認証を持ち、このAI上限を消費しません。ゼロは追加のAI支出を停止し、nullは上限なしを意味します。上限が編集されたり接続が再認証された場合でも、過去の請求は保持されます。
これらはConsole内の顧客管理機能であり、予算を引き上げるための開発者エンドポイントではありません。付与されたスコープ、承認されたモデル、顧客プロバイダーの設定、および受け入れられた追加料金条件を引き続き適用してください。 顧客請求ガイド · チェックアウトAPI.
最終更新日 2026年9月18日