Runtime API: /v1
Use these endpoints from your backend during normal product operation.
The /v1 runtime API is the surface your application backend uses while the product is operating. It covers checkout creation, access checks, entitlement reads, usage consumption, and operational webhook delivery controls.
Use these routes from server-side code with a Licenzy API key. Do not expose that key to the browser.
/v1/checkout/sessionCreate a checkout attempt and receive the Stripe checkout URL.
/v1/access/checkReturn a boolean access decision for a subject.
/v1/customer/access/:subject_refReturn access status plus entitlement summary for a subject.
/v1/entitlements/:subject_refInspect entitlement state directly.
/v1/usage/consumeAtomically consume usage-pack units.
/v1/webhooks/stripe/tenantInbound Stripe webhook endpoint called by Stripe, not by your app.
/v1/webhooks/stripe/billingInbound Stripe billing webhook endpoint called by Stripe, not by your app.
/v1/webhooks/endpointConfigure outbound webhook delivery.
/v1/webhooks/outboundInspect outbound webhook deliveries.
/v1/webhooks/outbound/:id/requeueRequeue one outbound delivery.
/v1/webhooks/outbound/:id/resendResend one outbound delivery.
/v1/webhooks/outbound/requeue-deadRequeue dead outbound webhook deliveries.
- Use runtime endpoints from your backend during checkout, access and usage flows.
- Stripe webhook routes are operational endpoints for Stripe to call, not routes your app should call directly.
Portal API: /portal (dashboard and internal setup)
Use these routes only for dashboard setup, workspace configuration, and operator workflows, not for product runtime integrations.
The /portal API is for workspace setup and dashboard operations. It manages the configuration that runtime calls depend on, including Stripe connection details, API keys, and product mappings.
Your product integration should not call portal routes when a customer buys, checks access, or consumes usage. Configure through the portal surface first, then use /v1 from your backend at runtime.
/portal/meReturn workspace, account and session context.
/portal/account/subscriptionReturn plan, access state and account subscription details.
/portal/stripe/connectionRead stored Stripe connection status for test and live modes.
/portal/stripe/connectionSave Stripe credentials and webhook secret for a mode.
/portal/api-keysList API keys for the current workspace.
/portal/api-keysCreate a new API key.
/portal/api-keys/:id/revokeRevoke an existing API key.
/portal/products?mode=test|liveList products for the selected mode.
/portal/productsCreate a product mapping.
/portal/products/:product_codeReplace or restore a product by product code.
/portal/products/:idPartially update a product by ID.
/portal/products/:idDelete a product by ID.
- Use portal routes for setup and operator workflows, not for backend runtime execution.
/portal/stripe/connection,/portal/api-keysand/portal/productsconfigure the system your runtime API depends on.
/v1 are the product-facing integration surface.Common integration sequence
Most product integrations use the APIs in this order:
- Configure Stripe credentials and product mappings through the portal setup surface.
- Start checkout from your backend with
POST /v1/checkout/session. - Redirect the user to the returned Stripe Checkout URL.
- Let Stripe call Licenzy webhook endpoints. Your app should not call those inbound Stripe webhook routes directly.
- Read access with
POST /v1/access/checkor inspect entitlements after webhook processing. - For usage packs, consume units with
POST /v1/usage/consumefrom your backend.
The full integration example shows the same sequence as an end-to-end implementation.
Key guides
- Stripe setup for connecting credentials, products, and modes before runtime calls.
- Access after Stripe payment for the post-checkout verification path.
- Webhooks for inbound Stripe delivery and outbound Licenzy events.
- Usage-based billing with Stripe for credit and usage-pack flows.