Projects are the organizational unit for applications and roles in ZITADEL. They group related applications together and define the roles that can be assigned to users for authorization.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/zitadel/zitadel/llms.txt
Use this file to discover all available pages before exploring further.
What is a Project?
A project is a container that:- Groups Applications: Web apps, mobile apps, APIs, and services that share a common purpose
- Defines Roles: Custom roles that users can be assigned for authorization
- Manages Access: Controls which organizations can access the project through project grants
- Configures Policies: Sets authentication and authorization requirements
Project Properties
Each project has the following configuration:Basic Settings
- Name: Human-readable name displayed to users during sign-in
- Organization ID: The organization that owns the project
- State: Active or inactive
Authorization Settings
Project Role Assertion
Project Role Assertion
When enabled, user roles are included in:
- ID tokens
- Access tokens
- Userinfo endpoint responses
Authorization Required
Authorization Required
Project Access Required
Project Access Required
When enabled, ZITADEL verifies that the user’s organization either:
- Owns the project, OR
- Has been granted access via a project grant
Private Labeling Setting
Controls which branding is applied during login:- Enforce Project Resource Owner Policy: Always use the project owner’s branding
- Allow Login User Resource Owner Policy: Use the logging-in user’s organization branding
Creating Projects
Create projects through the Console or API.Via Console
- Navigate to your Organization
- Go to Projects
- Click New Project
- Enter the project name
- Configure authorization settings
- Click Save
Via API
Project Roles
Roles define what users can do within your applications. They are custom-defined and specific to each project.Role Properties
- Role Key: Unique identifier used in authorization checks (e.g.,
"admin", "viewer", "editor") - Display Name: Human-readable name shown in the UI
- Group: Optional grouping for organizing roles in the UI
Creating Roles
Role Keys in Tokens
WhenprojectRoleAssertion is enabled, roles appear in tokens:
- Which roles the user has
- In which organizations they have those roles
Managing Roles
Update a role’s display name or group:Project Grants
Project grants enable multi-tenant access by allowing other organizations to use your project.How Project Grants Work
- Owner Organization creates a project with roles and applications
- Owner grants the project to another organization, specifying which roles are available
- Granted Organization can assign those roles to its own users
- Users from the granted organization can access applications in the project
Use Cases
SaaS Multi-Tenancy
You own a project with your SaaS application. Grant it to customer organizations so they can manage access for their users.
Partner Access
Grant your project to partner organizations, giving them specific roles like
partner_viewer or reseller_admin.Shared Services
IT department owns a project with internal tools. Grant it to other departments with appropriate roles.
Customer Self-Service
Grant your project to customer organizations so they can manage their own team’s access and permissions.
Creating Project Grants
28746028909593987 can be assigned the viewer or editor roles for this project.
Updating Project Grants
Change which roles are available:Removing a role from a project grant will remove all user grants for that role in the granted organization.
Deactivating Project Grants
Temporarily disable access for a granted organization:Deleting Project Grants
Project States
Active
- Applications can authenticate users
- Users can be assigned roles
- Normal operation
Inactive
Deactivate a project to temporarily disable all access:- Users cannot log in to any application in the project
- Existing tokens may still be valid until expiration
- Project configuration and roles are preserved
Listing and Searching Projects
Find projects across organizations:OWNED: Projects owned by the organizationGRANTED: Projects granted to the organizationOWNED_OR_GRANTED: Both owned and granted projects
Deleting Projects
Best Practices
Project Structure
Project Structure
- Create one project per product or service
- Group related applications within the same project
- Keep test and production applications in separate projects
- Use meaningful, descriptive project names
Role Design
Role Design
- Define granular roles based on actual permissions (not job titles)
- Use consistent naming across projects:
resource:action(e.g.,users:write,reports:read) - Document what each role can do
- Start with fewer roles and add more as needed
- Use the group field to organize related roles
Authorization Strategy
Authorization Strategy
Project Grants
Project Grants
- Grant only the roles that the organization needs
- Regularly review active grants
- Deactivate grants instead of deleting when temporarily removing access
- Document which organizations have access and why
- Audit project grant changes for security
Lifecycle Management
Lifecycle Management
- Deactivate projects instead of deleting when sunsetting features
- Use project states to manage deployments and maintenance
- Keep project configurations in version control
- Test authorization settings before enabling
authorizationRequired
Project vs Organization Roles
| Aspect | Project Roles | Organization Roles |
|---|---|---|
| Purpose | Control access to applications and resources | Control administrative access to the organization |
| Defined By | You create custom roles | ZITADEL provides predefined roles |
| Assigned By | Organization admins or project owners | Instance/organization admins |
| Scope | Specific to one project | Entire organization |
| Example | editor, viewer, admin | ORG_OWNER, ORG_USER_MANAGER |
Related Concepts
Users
Users are assigned project roles through user grants
Organizations
Projects are owned by organizations and granted to others
Roles
Detailed explanation of role assignment and authorization