Overview
Podium provides a built-in subscription system for companion agents, enabling developers to monetize their AI experiences with freemium gating, usage tracking, and Stripe-powered billing. The system handles the full lifecycle: free users hit configurable limits, see upgrade prompts, check out via Stripe, and immediately unlock premium capabilities. All subscription state is managed server-side — your agent just checks the gate.Subscription Tiers
Every companion user starts onFREE and moves through a standard billing lifecycle:
Usage Gating
Free-tier users have configurable monthly limits. These defaults can be adjusted per organization:Gate Check
Before processing a user action, call the status endpoint and evaluate the gate result:allowed is true, the action proceeds normally. Use nearLimit to show soft upgrade prompts before the user hits the wall. When allowed is false, reason tells you which limit was hit so you can show the appropriate upgrade CTA.
Subscribers (
ACTIVE and TRIALING tiers) bypass all usage gates. The gate check always returns allowed: true for paying users.Memory Gating
Memory extraction runs for all users regardless of tier. Free users still have their behavioral patterns, preferences, and conversation history analyzed and stored. The difference is in how that intelligence is used:- Free users — receive standard recommendations based on their intent profile and interactions
- Subscribers — receive personalized, memory-aware recommendations where the agent’s accumulated understanding of the user is loaded into every conversation turn
This design creates a powerful conversion mechanic: the longer a free user engages, the more valuable upgrading becomes, because the agent has been building their memory the entire time.
API Endpoints
All subscription endpoints are prefixed with/api/v1/companion/subscription.
Create Checkout Session
url to complete payment. On success, Stripe sends a webhook that automatically upgrades the user’s tier to ACTIVE.
Customer Portal
Subscription Status
Webhook
Endpoint Summary
Integration Example
Here’s a typical flow for gating a message behind the subscription check:Best Practices
- Check status before every gated action — don’t cache subscription state client-side for longer than a single session
- Use soft nudges before hard gates — the
nearLimitflag and milestone notifications reduce churn by warning users before they hit the wall - Surface the value of upgrading — when a free user hits a gate, remind them that their accumulated intelligence is waiting: “Sage has been learning your preferences — upgrade to unlock personalized recommendations”
- Handle
PAST_DUEgracefully — consider a short grace period before downgrading the experience, as many payment failures resolve automatically

