Skip to content
Visit Kinde’s marketing website
Kinde
Docs
SDKs
APIs
Sign in
GitHub
Theme
Light
Dark
System
Search docs
Get started
Guides
First things first
Add Kinde to your codebase
Common setup tasks
Common errors and codes
Learn about Kinde
What does Kinde do?
Supported data regions
Kinde product security information
Supported browsers
Switch to Kinde
Migration overview
Auth0
FusionAuth
Clerk
Supabase
Firebase
AWS Cognito
Azure B2C
ASP.NET Identity
Bulk import
Create users with API
Drip-feed migration
Connect
Get app keys
Set callback and redirect URLs
Customize email sender
APIs and SDKs
About Kinde APIs
Team and account
Add team members
Team member roles in Kinde
Claim credits with Kinde perk code
Access Kinde via an enterprise connection
Add MFA for accessing Kinde
Get a referral code for sharing Kinde
Build on Kinde
Set up options
Kinde for different business models
Run multiple businesses
Configure attack protection
Set up and manage user access requests
Set global access policies
Manage your code in Kinde
Self-service portal
Customer self-service portal
Enable self-serve portal for orgs
Enable self-service portal for users
Environments
Manage environments
Go live checklist
Applications
Applications in Kinde
Add and manage applications
Rotate client secret
Authenticating single-page apps (SPAs) with Kinde
Set a default login route for an application
Organizations
About organizations
Kinde organizations for developers
Add and manage organizations
Import organizations
Manage user sign up to organizations
Allow organization creation on sign up
Set access policies for an organization
Give API access to an organization using M2M
Delete an organization
Customize email sender for an organization
Customize the self-serve portal for an organization
Tokens
Configure token and session expiry
Access tokens
ID tokens
Refresh tokens
Token customization
OAuth 2.0 access token validation and error codes
Using OAuth scopes
Verifying JSON Web Tokens
Decoding JSON Web Tokens
Env variables
Store environment variables in Kinde
Add and update environment variables
Domain management
Use your own custom domain
Add a custom domain for an organization
Org handles and dynamic callbacks for subdomains
SDKs and APIs
Overview
Kinde SDKs
Use Kinde without an SDK
Front end SDKs
JavaScript SDK
React SDK
Angular
Back end SDKs
Elixir SDK
Express.js SDK
.NET SDK
Go SDK
Java SDK
Next.js App Router SDK
Next.js Pages Router SDK
TanStack Start React SDK
Nuxt module
Remix SDK
SvelteKit SDK
Node.js SDK
TypeScript SDK
PHP SDK
Python SDK
Ruby SDK
Node/Apollo GraphQL
Node/Express GraphQL
Native app SDKs
Android SDK
iOS SDK
React Native SDK
Expo
Flutter SDK
Kinde Management API
Quickstart
Call the API - General Guide
Call the API - Postman
Call the API - JavaScript Backends
Guide - Advanced User Search
API Scopes
API Rate Limits
Troubleshooting
Account API
About Kinde's Account API
Special guides
Integrate Kinde with ASP.NET using Open ID Connect
Deploy a Kinde app on Vercel
Deploy a Kinde app on Netlify
Deploy a Kinde app on Cloudflare Workers
Kinde in Electron desktop app
Protect FastAPI routes with Kinde
Troubleshoot code sync errors
Kinde config as code
Use Kinde permissions in React and any backend
Terraform provider
Manage your APIs
Register and manage your APIs
Register and manage APIs
Get a M2M token to test your APIs
Get a user access token to test your APIs (Postman method)
Protect your API
Secure your API using scopes
Give others access to your API
Manage API scopes for M2M applications
Manage API scopes for users
Get a M2M access token to test your APIs (Postman method)
Integrate Kinde auth into .NET-based APIs
About API keys
API keys overview
API keys quick start
API key best practices
Using API keys for AI products
API best practice for AI apps
Organization-level API keys
User-level API keys
Add and manage API keys
Create an API key
Scopes for API keys
Self-serve API keys
Verify API keys in your API
Rotate API keys
Revoke API keys
Test and troubleshoot
Troubleshoot API key errors
MCP Servers
About MCP servers
Add a new MCP connection
Manage Kinde account with AI agents
Operations and Scopes for Kinde MCP server
Auth and access
About authentication
About Kinde authentication
Configure auth flows
Ways to authenticate
User identity and verification
Top questions about Kinde authentication
User communication in Kinde
Top questions about authentication
Authentication guides
Mixed auth set up for B2B and B2C
Pass parameters to identity providers
Guide to enterprise auth and user identities
Authentication methods
Set up auth methods
Email authentication
Password authentication
Passwordless authentication
Username authentication
Phone authentication
WhatsApp authentication
Passkeys
Use both password and passwordless auth
Email deliverability in Kinde
SMS deliverability in Kinde
Manage authentication
Authenticated sessions across multiple applications
Change authentication for an application
Set custom authentication per organization
Build a switch to navigate between organizations
Sign users in to last organization
Keep your product in sync with Kinde
Session management
Session management per organization
Custom configurations
Manage the authentication experience
Disable self-sign up
Use custom sign-up and sign-in screens with Kinde
Pre-populate user identity on sign in
Invited user sign-up experience
Manage organization-level auth features
Redirect users
Static IP
Custom OAuth 2.0 connections
Proxy your Kinde auth pages through Cloudflare
Enterprise connections
Manage enterprise connections
Provisioning users for enterprise connections
Enterprise connections for B2B
Home realm or IdP discovery
Mapping and syncing users for enterprise auth
Migrating users from email identity to enterprise identity
Microsoft Entra ID enterprise connection (OAuth 2.0, WS-Fed)
Microsoft Entra ID enterprise connection (SAML)
Cloudflare enterprise connection (SAML)
Google Workspace enterprise connection (SAML)
LastPass enterprise connection (SAML)
Okta enterprise connection (SAML)
Custom SAML enterprise connection
Advanced SAML configurations
IdP-initiated SAML SSO
Refresh SAML certificate
Self-serve SSO
Add SSO connection via self-serve portal
Manage SSO connections added by customers
Switch on SSO self-management per organization
Multi-factor auth
About multi-factor authentication
Enable multi-factor authentication
Set multi-factor authentication for an organization
Social connections
Add and manage social connections
Apple social sign in
Bitbucket social sign in
Clever social sign in
Discord social sign in
Facebook social sign in
GitHub social sign in
GitLab social sign in
Google social sign in
LinkedIn social sign in
Microsoft social sign in
Roblox social sign in
Slack social sign in
Twitch social sign in
X (formerly Twitter) social sign in
Xero social sign in
Device authorization flow
Quick start
About the device authorization flow
Call your API using device authorization flow
Troubleshooting device authorization
Workforce identity
About workforce identity
Add a SAML application
Testing
Overview
Setup test user and environment
Testing authentication flows
Testing passwordless flows
Testing authenticated features
Testing backend APIs
Test backend APIs with Jest
Cypress
Setup Cypress
Test authentication flows
Test passwordless flows
Test authenticated features
Test backend APIs
Playwright
Setup Playwright
Test authentication flows
Test passwordless flows
Test authenticated features
Test backend APIs
Billing
About billing
About billing
Billing FAQ
The Kinde billing model
Billing concepts
Top questions about Kinde billing
Get started
Setup overview
Step 1 Add billing role (B2B)
Step 2 Connect to Stripe and set policies
Step 3 Set default billing currency
Step 4 Build plans
Step 5 Publish plans
Step 6 Create pricing table (optional)
Step 7 Set up self-serve portal (optional)
Manage plans
About plans
Create plans
Plan upgrade and downgrade policies
Cancel a subscription
Add and manage plan groups
Payment management
Connect payment processor (Stripe)
Manage Stripe connection
Subscription management
Subscription upgrade and downgrade methods
Add metered usage for a customer via API
Respond to customer activity using webhooks
Pricing
Pricing models
Billing user experience
Build a pricing table
Customize the plan sign-up experience
Update code and URLs for billing
Pricing table display defaults
Offer a free trial
Design
Brand
Set global brand defaults
Set unique branding for orgs
Add a logo and make it clickable
Remove "Powered by Kinde" attribution
Page layout
Manage page layouts
Set up the request access page
Set up a subscription form
User consent for marketing on sign up
Content
How content is managed in Kinde
Update page content
Manage languages on user facing pages
Customize email content
Customize with code
Quick start guide
Customize designs with code
Connect your repo for custom pages
Working with the Kinde widget
Understand Kinde page customization
Add a connection switcher
Design inspection with DevTools
Manage assets
Styling with CSS
Style with style hooks
Libraries and packages for pages
Page rendering
Pages and the Kinde Management API
Manage custom code deployments
Review custom code logs
Preview custom code
Custom UI examples
Apply custom styling per application
Workflows
About workflows
About workflows
Getting started
Workflow quickstart guide
Project structure
Workflow files
Connect your workflows repo and branch
Infrastructure package
Workflow examples
Workflow tutorials
Tutorial - Customize tokens using workflows
Tutorial - Fetch third party data in workflows
Tutorial - Password validation check
Tutorial - Drip-feed user migration
Tutorial - M2M apps and token management
Tutorial - Check plan change eligibility
Tutorial - Check plan cancellation eligibility
Configuration
Bindings
Dependencies
Environment variables and secrets
kinde.json
Workflow settings
Bindings
Bindings overview
kinde.accessToken
kinde.auth
kinde.env
kinde.fetch
kinde.idToken
kinde.m2mToken
kinde.mfa
kinde.plan
kinde.secureFetch
url
Triggers
User pre-registration workflow
User post-authentication workflow
User token generation workflow
Plan cancellation request workflow
Plan selection workflow
New password provided workflow
M2M token generation workflow
Pre-MFA workflow
Existing password provided workflow
Manage workflows
Create a workflow
Manage code and deployments
Workflow encryption key
Deactivate or delete a workflow
Disconnect Git repo for workflows
Testing
Testing workflows
Preview workflows
Observability
Workflow build logs
Workflow logs
Workflow runtime logs
Workflow sync logs
Properties
About properties
Custom claims and data with properties
Add custom data for orgs
View and edit application properties
Work with properties
Add and manage custom data with properties
Customize tokens using properties
Add and manage property categories
Edit custom data for users via properties
Add marketing tags using properties
Machine-to-Machine (M2M)
Overview
M2M overview
M2M quick start
Authenticate with M2M applications
Token structure and claims
Top questions about M2M applications
M2M application setup
Create an M2M application
M2M application API scopes
Add metadata to an M2M app using properties
Assign feature flags for use in M2M tokens
Organization-scoped M2M apps
M2M apps scoped to organizations
Enforce org access in your API using M2M tokens
Using M2M apps for AI applications
M2M token customization
Customize the claims of an M2M token
Automation
Trigger workflows when an M2M token is generated
Troubleshooting
Troubleshoot M2M token errors
Manage users
Overview
About user management
Manage users across organizations
Add and edit
Manually add and edit users
Add and manage user identities
Import users via CSV or JSON
Import users in bulk from Auth0
Troubleshoot user import errors
Manage subscribers
Move users between Kinde environments and businesses
Send user invitations with webhooks
Access control
Delete or suspend users
Reset a user's password
Set temporary password
Reset multi-factor authentication for a user
Roles and permissions
Define user permissions
Manage user roles
Apply roles and permissions to users
Set default user roles