The billing page in one call
const url = 'https://api.sloose.com/billing/summary';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.sloose.com/billing/summary \ --header 'Authorization: Bearer <token>'Subscription, plan, limits, balance, usage, open notices and the purchasable credit packs.
A sandbox reports the production org’s subscription, notices and top-up settings — the ones that actually govern it — alongside its own usage and warnings.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”The org’s billing state.
Everything the billing page renders, in one call.
object
False on a deployment without Stripe keys; the UI hides purchase paths.
Whose subscription this describes — itself, or the production org for a sandbox.
object
object
object
CRM users allowed to use the widget; null = unlimited.
Production connectors the org may have; null = unlimited. CSV uploads do not count.
Import runs that write at least one row, per period; null = unlimited (fair use). Dry runs never count.
The most rows one import set may declare. Checked before anything is written.
Server-side runs only. Browser runs are never refused on it.
USD per 1,000 rows beyond rows_per_month, server-side runs only; null = not offered.
Null = unlimited.
object
A plan change that takes effect at the next renewal.
object
object
Whether the plan offers overage at all.
object
Top up when the available balance falls below this.
Never spend more than this in a calendar month.
Why automatic top-up stopped — a failed charge, or the monthly cap. Saving settings clears it.
AI credits. Included credits reset each period; purchased ones do not.
object
Included + purchased − reserved
object
object
object
False until the pack has a Stripe price attached.
Example
{ "kind": "production", "subscription": { "status": "free" }, "plan": { "key": "free" }, "scheduledPlan": { "key": "free" }, "warnings": [ "LIMIT_ROWS" ]}No bearer, or one that is expired, revoked or no longer resolves to a member.
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}The bearer’s role is too low, or it was issued for a different org.
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}