Interface SubscriptionEntitlementSnapshot

Current subscription entitlement snapshot returned by GET /v1/subscriptions/status.

When the user has no effective subscription, active is false and status is 'none'.

interface SubscriptionEntitlementSnapshot {
    active: boolean;
    cancelAtPeriodEnd?: boolean;
    capabilities?: Record<string, boolean>;
    currentPeriodEnd?: string;
    currentPeriodStart?: string;
    fairUse?: SubscriptionFairUseState;
    frontierDiscountBps?: number;
    paymentPending?: boolean;
    provider?: string;
    scheduledChangeAt?: string;
    scheduledTerm?: string;
    scheduledTier?: string;
    status: SubscriptionStatus;
    term?: string;
    tier?: string;
}

Properties

active: boolean

Whether the wallet currently has an effective entitlement.

cancelAtPeriodEnd?: boolean

When true, the subscription remains entitled until currentPeriodEnd.

capabilities?: Record<string, boolean>

Feature flags or capability names enabled by this subscription.

currentPeriodEnd?: string

ISO timestamp for the current or effective entitlement period end.

currentPeriodStart?: string

ISO timestamp for the current period start, when returned by the server.

Present only while the monthly Fast-network fair-use limits are active.

frontierDiscountBps?: number

Frontier vendor-model discount (basis points) this member currently receives on the artist-facing price of premium third-party vendor models (gpt-image-2, seedance-2-0, seedance-2-0-mini, seedance-2-0-fast, seedance-2-5, happyhorse-1.1-*). Present only when the entitlement is active (the discount applies); absent otherwise. The authoritative charge is enforced server-side; this drives UI display. For example 500 = 5% (Unlimited), 1000 = 10% (Unlimited Pro).

paymentPending?: boolean

True when a Google Play deferred payment (e.g. QRIS) is awaiting confirmation and there is no active entitlement yet. Display-only. Carried by the REST status snapshot; absent on older servers. Pairs with active: consumers should show a pending hint only while paymentPending && !active.

provider?: string

Payment provider, present when returned by the server. 'manual' denotes an administratively granted subscription.

scheduledChangeAt?: string

ISO timestamp when the scheduled plan/term change takes effect (the next renewal date). Absent when no change is pending.

scheduledTerm?: string

Billing term ('monthly' / 'annual') the subscription will switch to at the next renewal when a term change (e.g. annual → monthly) is scheduled. Absent when no change is pending.

scheduledTier?: string

Tier the subscription will switch to at the next renewal when a downgrade or plan change is scheduled. Absent when no change is pending; the current tier keeps its benefits until scheduledChangeAt.

Rich status string for display and entitlement state.

term?: string

Billing term ('monthly' / 'annual') for the effective entitlement, present when an entitlement exists. Provider-agnostic — returned for Stripe, Apple, and Google subscriptions alike.

tier?: string

Plan/tier identifier, present when an entitlement exists.