Gestionează erorile de facturare și limitele de cheltuieli ale clienților
Distinge între credite insuficiente și o limită de cheltuieli a aplicației, prezintă un link de recuperare conștient de actor și gestionează corect eșecurile de streaming.
Pe această pagină
Folosește Log-in with ShareAI pentru identitate și autorizare explicită Pay with ShareAI pentru acțiuni finanțate din cont. openid Domeniul singur nu autorizează cheltuielile. Inferența AI necesită inference sau un grant aprobat, consimțit surcharge ; payments solicitări confirmate separat la checkout. Clientul controlează o limită lunară AI în Console. Aplicația ta nu o poate modifica.
Gestiona erorile după cod#
HTTP 402 · insufficient_credits: contul de plată nu are suficiente credite neexpirate eligibile pentru acest provider/model și solicitare. Cere clientului să-și gestioneze creditele. Unele credite au restricții de provider sau model.
HTTP 402 · application_spending_limit_exceeded: limita lunară a fost atinsă, solicitările rezervate folosesc alocația disponibilă sau taxa acestei solicitări ar depăși-o. Nu trata acest lucru ca o limitare de rată și nu încerca automat din nou. Cere clientului să modifice limita sau să aștepte până reset_at.
HTTP 429 · oauth_rate_limit: o limită temporară de solicitări/concurență. Urmează Retry-After și backoff limitat. HTTP 401 · consent_required: consimțământul a expirat, a fost revocat sau nu mai este valid; obține o nouă autorizare în loc să ceri o reîncărcare.
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"
}
}Cele două erori financiare folosesc error.type = billing_error. management_url este destinația de recuperare a clientului; help este aliasul său de compatibilitate. monthly_limit este un șir exact de tip zecimal EUR și reset_at este UTC. Acestea sunt prezente în cazul erorilor de limită și pot lipsi în cazul erorilor de credit insuficient.
Deschide contul de plată corect#
Oferă o acțiune vizibilă Gestionează facturarea folosind URL-ul returnat. Contextul opac expiră după 15 minute, identifică contul de plată și conexiunea originală și supraviețuiește redirecționării de autentificare. Console verifică permisiunile de proprietar/admin ale vizitatorului autentificat înainte de a selecta acel cont. Nu îl înlocui cu pagina de facturare a proprietarului aplicației, nu inventa un ID de actor, nu adăuga un token de acces și nu redirecționa automat clientul.
Folosește o listă de permisiuni pentru originea Console și rel="noopener noreferrer" dacă deschizi un nou tab. Linkul este pentru navigare, nu pentru autorizare sau dovada că fondurile au fost adăugate. Nu îl stoca ca marcaj permanent sau în jurnale publice. La expirare, clientul poate deschide direct Billing. O solicitare nouă poate returna un link nou după ce clientul cere explicit să încerce din nou.
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);Streaming și decontare finală#
ShareAI verifică limita înainte de admitere/legare și verifică costul real al rețelei plus suprataxa atomic la decontare. Solicitările simultane împart aceeași limită. Estimările de intrare rezervă spațiu suplimentar; lungimea ieșirii nu este cunoscută în avans. O taxă finală care ar depăși alocația rămasă este respinsă fără un debit de utilizare sau un credit de suprataxă pentru Builder.
Pentru Chat Completions SSE, gestionează event: error cu aceleași error.code și câmpuri de recuperare. Pentru Responses SSE, gestionează response.failed și citește response.error. Odată ce fluxul începe, statusul HTTP este deja 200; conținutul parțial nu înseamnă finalizare cu succes. Nu marca rezultatul ca finalizat, nu efectua acțiuni plătite în aval și nu retrimite automat după o eroare terminală. Chat-ul non-streaming, Responses, Embeddings și Images expun eroarea de facturare ca un HTTP 402 root error plic.
Domeniu și resetări#
Luna calendaristică este în UTC. Limita este per cont plătitor și aplicație, partajată între clienții OAuth, granturi și tokenuri reîmprospătate; un serviciu client folosește ID-ul său de lucru stabil pe durata rotațiilor cheilor de producție. Doar costul rețelei AI stabilit plus suprataxa contează. Abonamentele fixe și achizițiile confirmate separat au propria autorizare de checkout și nu consumă această limită AI. Zero oprește cheltuielile suplimentare pentru AI; null înseamnă fără limită. Taxele anterioare sunt păstrate atunci când limita este editată sau conexiunea este reautorizată.
Acestea sunt controale pentru clienți în Consolă, nu un endpoint pentru dezvoltatori destinat creșterii bugetelor. Continuă să aplici domeniile grantului, modelele aprobate, preferințele furnizorului client și termenii acceptați ai suprataxei. Ghid de facturare pentru clienți · API de checkout.
Ultima actualizare septembrie 18, 2026