Get billing state
The organization's plan, its limits, and how much of each limit is already spent — enough for an integration to know a write will be rejected before attempting it.
This endpoint is read-only by construction. No API key of any kind can change a subscription, an add-on quantity, or a payment method; there is no billing write endpoint and no billing write scope. Stripe identifiers, invoices, and payment methods are never returned.
Deployments without billing answer 200 with billingEnabled: false, a null plan, and null limits, so callers need no special case.
BearerAuthAuthorizationBearer <token>An organization key (signal_…) created under Organization Settings → API Keys.
organizationId*stringGet billing state
application/json- response
Read-only view of an organization's subscription, limits, and usage. The API has no way to change any of it: there is no billing write endpoint and no billing write scope. Stripe identifiers, payment methods, and invoices are deliberately not exposed — those live in the Stripe customer portal.
organizationId*stringbillingEnabled*booleanFalse on self-hosted deployments, where nothing is metered.
plan*|Null when the organization has no subscription, or when billing is disabled.
limits*|nullusage*curl -X GET 'https://app.signal.metricshive.com/api/v1/organizations/string/billing'{
"organizationId": "string",
"billingEnabled": true,
"plan": {
"key": "string",
"name": "string",
"standing": "active",
"interval": "monthly",
"periodEnd": "2019-08-24T14:15:22Z",
"cancelAtPeriodEnd": true,
"trackingActive": true
},
"limits": {
"maxBrands": 0,
"maxPrompts": 0,
"modelPicks": 0,
"modelMenu": [
"string"
],
"standardRunsPerDay": 0,
"premiumPool": 0,
"premiumRunsPerDay": 0
},
"usage": {
"brands": 0,
"enabledPrompts": 0,
"premiumPairingsAssigned": 0
}
}