Get the authenticated user's tier state (plan card / CTA / usage surface).
const url = 'https://api.tradr.cloud/api/billing/tier';const options = {method: 'GET'};
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.tradr.cloud/api/billing/tierAuthed, DELIBERATELY UNTHROTTLED read (plan-tiers Component 6’s pinned posture — the 2 s confirming poll alone is 30/min and the tier cache key is invalidated after every committed turn; sharing the spend budget would 429 the confirming banner and lock out legitimate checkout clicks). Returns the TierState shape: gatingEnabled, exempt, tier, purchasable, subscription (derived from the LOCAL mirror only via the qualifying-first display-row rule — renders with Stripe unconfigured, REQ-11.1; carried even when gating is off, the REQ-11.7 carve-out), limits (the free/pro lever catalog), and usage (populated only when gating is on and the user is non-exempt). Booleans and state only — no server credentials, no price ids.
Responses
Section titled “Responses”TierState — see packages/shared/src/schemas/tier.ts.