API Key Authentication
All authenticated requests require a Bearer token in theAuthorization header:
- Extracts the key from the
Authorizationheader - Validates the key prefix matches the expected environment (
podium_test_orpodium_live_) - SHA-256 hashes the key and looks it up in the database
- Returns the associated organization context (ID, settings, subscription tier)
- Caches the result with a jittered TTL (60–150 seconds)
Getting Your API Key
API keys are self-service through the Podium Developer Portal:- Sign up with email, Google, or a crypto wallet
- Create an organization during onboarding
- Choose a subscription tier (see pricing below)
- Generate your first key — the onboarding flow creates one automatically
Key Management
From the API Keys dashboard, you can:
Key changes propagate immediately. Cached keys expire within 15–150 seconds. Immediate invalidation is triggered via an
api-key-changed event that purges the cache.
Environments
The TypeScript SDK auto-detects the environment from the key prefix and routes to the correct base URL.
Subscription Tiers
Each organization has a subscription tier that controls rate limits, request quotas, and endpoint access. Manage your subscription from Dashboard > Settings > Subscription.
Growth and Pro tiers support overage billing for requests beyond the monthly quota.
Rate Limiting
Rate limits are enforced per-organization using a sliding window. When exceeded, the API returns:Retry-After header indicates seconds until the next allowed request.
Access Control
The access control middleware checks each endpoint against the organization’s tier. If an endpoint is blocked for the current tier:x402 Payment Configuration
To accept USDC payments via the x402 protocol, configure your receiving wallet from Dashboard > Settings > x402 Payments:- Enable x402 payments for your organization
- Set your USDC receiving address (on Base)
Public Endpoints
Some endpoints are accessible without authentication for specific use cases:Role-Based Access
Within an organization, users and creators can have roles that gate specific operations:User Roles
Creator Roles
Roles are checked by
ensureUserHasRole() and ensureCreatorHasRole() guards within route handlers.

