Skip to main content
You can create a Universal Portal using the Auth0 CLI or the Dashboard.
  • The Auth0 CLI will provision and configure an application and a portal using a single command.
  • The Dashboard includes step by step instructions to build an application and a portal.
Using AI to build a Universal Portal? Add this Skill to Cursor, Windsurf, Copilot, Claude Code or your favorite AI-powered IDE to speed up development.

Auth0 Universal Portals — API reference

Beta: Universal Portals is currently in beta. Non-production tenants only.
Auth0 Universal Portals is a hosted identity experience platform. It lets you deploy pre-built, fully managed portals for profile management, organization settings, MFA enrollment, and more — without writing code, hosting infrastructure, or maintaining custom UI.

Use cases

  • Consumer portals (B2C) — give end-users self-service access to their account: profile, MFA enrollment, passkeys, password changes, and security settings. Replaces the “My Account” page every application builds from scratch.
  • Business portals (B2B) — give organization members self-service control over their organization’s configuration, domain verification, and team management. Replaces the “My Organization” page every B2B application builds from scratch.

How a portal works

Every portal is backed by a Regular Web App in your Auth0 tenant (client_id + client_secret). The portal server authenticates users via SSO, stores tokens server-side, and issues session cookies to the browser. Access tokens are scoped per-section and refreshed transparently using a multi-resource refresh token.

Prerequisites

  • Non-production tenant with Universal Portals enabled (contact Auth0 Support to request access)
  • A Regular Web App configured with the correct callback/logout URLs, grant types, and API access (My Account API, My Organization API, Management API)
The fastest way to provision everything is the Auth0 Beta CLI setup command:
This creates the resource servers, app, client grants, and a default portal in one step.

How to call the API

Regardless of how you call the API, the following Management API scopes must be pre-authorized on the application before requesting a token. With client_credentials, scopes are granted at the application level in the Auth0 Dashboard (Application → API Access → Auth0 Management API) — they are not requested at token request time.

Option 1: Management API directly

All endpoints live under the Auth0 Management API v2: https://auth0.com/docs/api/management/v2

Option 2: Auth0 CLI (auth0 api)

If the Auth0 CLI is already authenticated, use auth0 api to call the same endpoints without managing tokens manually. Docs: https://auth0.github.io/auth0-cli/auth0_api.html
Prefer the CLI when available — it reuses the active login session.

Endpoints

PortalSummary (returned by list): id, name, slug, created_at, updated_atPortal (returned by get/create/update): same as PortalSummary plus client (without client_secret), navigation, pages

POST /api/v2/portals — request body

Required: slug, name, client. Optional: navigation, pages.

slug

String with format portal-slug (URL-safe, kebab-case). Must be unique per tenant — duplicate returns 409 Conflict.

name

String, 1–150 chars.

client

Currently only client_secret_post is supported. All three fields are required:

pages (optional)

Both default and content are optional. A portal with no pages is valid.PortalPage:
title (1–150) and slug are required. components is optional.

PATCH /api/v2/portals/ — request body

All fields are optional (true PATCH semantics). Only include the fields you want to change.
  • Omitting navigation or pages leaves them unchanged.
  • Sending null for navigation or pages clears the field entirely.
icon accepts any icon name from the Lucide library (https://lucide.dev/icons/) in kebab-case, e.g. user, shield, file-text, building-2, lock-keyhole.

Page component types

Nesting rule

structure:section children accept any page component except another structure:section. Sections cannot be nested — max 1 level deep.

form_id

Must reference a pre-existing Auth0 Forms resource in the tenant. The form renders inline inside the section. Use Auth0 Forms to collect profile updates, policy acceptance, and marketing communication preferences.

rich_text HTML support

Supports headings, <b>, <i>, <u>, <a>, text alignment, and lists. Use <em> for italic in placeholder text.

Complete example

A realistic “My Account” consumer portal with four pages. Use this as a reference when composing a portal from scratch.

Prerequisites

  • A Development Auth0 tenant provisioned with Universal Portals beta access

Step 1: Install the Auth0 CLI Beta

Follow the installation instructions for your platform, then authenticate with your tenant:

Step 2: Run the setup command

You can also use the alias auth0-beta up setup. The command creates:
  • My Account API: resource server for user account operations
  • My Organization API: resource server for organization management operations
  • A Regular Web App: the application linked to your portal
  • Three client grants: scoped access for My Account, My Organization, and Management API operations
  • A portal: pre-configured with a default template so you can start testing immediately
When the command completes, it outputs your portal URL. Open it in the browser to test the portal.

Learn more

Universal Portals overview

Learn about Universal Portals, use cases, how it works, and key features.

Universal Components

Learn about Universal Components library used in portals.

Auth0 Forms

Learn about Forms to collect information from end-users, such as profile updates, policy acceptance, and marketing communication preferences in portals.