Developer documentation
Connect customer identity, entitlements, monetization and growth flows to your Web app.
Start building
Connect your app
Install, authenticate and read your first entitlement.
4 steps · Next.js + TypeScriptFollow the visual guide
Find the right screen and configure it with annotated screenshots.
Annotated console setup walkthroughsCode examples
Session integration files and recipes for checkout, credits and Funnels.
Copy-ready files · Host auth requiredOne customer. One verified identity.
Your backend maps your signed-in user to an Indiana customer. The browser receives a short-lived customer token and reads that customer’s access.
- 1Identify on your server
Use the verified user ID from your login session.
- 2Connect in the browser
A customer token carries only that customer’s identity.
- 3Present access and upgrades
Published plans and surfaces determine the experience.
import { createGrooveServer } from "@tinkerlandai/indiana-sdk/server"; const groove = createGrooveServer({ baseUrl: process.env.GROOVE_BASE_URL!, apiKey: process.env.GROOVE_SECRET_KEY!, scope: { projectId: process.env.GROOVE_PROJECT_ID!, environment: "sandbox", },});const { customer } = await groove.getOrCreateCustomer({ externalUserId: verifiedUser.id,});const session = await groove.createCustomerSession(customer.id);Server key stays on your backend. Replace the placeholder config and supply your own authenticated user.
Build by use case
Sell memberships
Published plans, checkout, changes and cancellations.
Meter feature usage
Balances, rates, atomic consumption and reservations.
Present the upgrade
Design and deliver popups, paywalls and onboarding.
Explore the HTTP API
Credentials, parameters, requests and response fields.
Check access and show a Paywall
Current-source guide: access checks, purchase and verified rechecks.
Track AI tokens
AI SDK, OpenRouter, durable quotes and settlement recovery.
Manage customer trials
Start, extend, end and recover trials through your backend.
Connect backend receipts
Declared events, signed external tasks and durable retries.