StackServerApp is the main object for interacting with Stack Auth on the server. It provides methods for authentication, user management, and team management with full server permissions.
Note: Only use
StackServerAppin trusted server environments. It requires yourSECRET_SERVER_KEY.
Table of Contents
new(options): StackServerApp;
getUser([id], [options]): Promise<ServerUser|null>;
⤷ useUser([id], [options]): ServerUser;
listUsers([options]): Promise<ServerUser[]>;
⤷ useUsers([options]): ServerUser[];
createUser([options]): Promise<ServerUser>;
getTeam(id): Promise<ServerTeam|null>;
⤷ useTeam(id): ServerTeam;
listTeams(): Promise<ServerTeam[]>;
⤷ useTeams(): ServerTeam[];
createTeam([options]): Promise<ServerTeam>;
};
Constructor
Creates a new StackServerApp instance.
Parameters
tokenStore: The token store to use. Can be one of:"nextjs-cookie": Uses Next.js cookies (recommended for Next.js apps)"cookie": Uses browser cookies{ accessToken: string, refreshToken: string }: Uses provided tokensRequest: Uses the provided request object
secretServerKey: The secret server key for your app.baseUrl,projectId,publishableClientKey,urls,noAutomaticPrefetch: (see StackClientApp for details)
Signature
declare new(options: {
tokenStore: "nextjs-cookie" | "cookie" | { accessToken: string, refreshToken: string } | Request;
secretServerKey?: string;
baseUrl?: string;
projectId?: string;
publishableClientKey?: string;
urls: { signIn: string; signUp?: string; forgotPassword?: string; };
noAutomaticPrefetch?: boolean;
}): StackServerApp;Example
const stackServerApp = new StackServerApp({
tokenStore: 'nextjs-cookie',
secretServerKey: process.env.SECRET_SERVER_KEY,
urls: { signIn: '/my-custom-sign-in-page' },
});Methods
stackServerApp.getUser([id], [options])
Returns a ServerUser by ID, or the current user if no ID is provided.
Parameters
id(string, optional): The user ID.options(object, optional):{ or?: "return-null" | "redirect" | "throw" }
Returns
Promise<ServerUser | null>
Example
const user = await stackServerApp.getUser('user_id');stackServerApp.useUser([id], [options])
Functionally equivalent to getUser([id], [options]), but as a React hook.
Parameters
id(string, optional): The user ID.options(object, optional):{ or?: "return-null" | "redirect" | "throw" }
Returns
ServerUser
Example
const user = await stackServerApp.useUser('user_id');stackServerApp.listUsers([options])
Lists all users on the project.
Parameters
options(object, optional):cursor(string): The cursor to start from.limit(number): Max number of users to return.orderBy(string): Field to sort by ("signedUpAt").desc(boolean): Sort descending.query(string): Free-text search.
Returns
Promise<ServerUser[]> (with nextCursor property)
Example
const users = await stackServerApp.listUsers({ limit: 20 });stackServerApp.useUsers([options])
Functionally equivalent to listUsers([options]), but as a React hook.
Parameters
options(object, optional):cursor(string): The cursor to start from.limit(number): Max number of users to return.orderBy(string): Field to sort by ("signedUpAt").desc(boolean): Sort descending.query(string): Free-text search.
Returns
ServerUser[]
Example
const users = await stackServerApp.useUsers({ limit: 20 });stackServerApp.createUser([options])
Creates a new user from the server.
Parameters
options(object):primaryEmail(string)primaryEmailVerified(boolean)primaryEmailAuthEnabled(boolean)password(string)otpAuthEnabled(boolean)displayName(string)
Returns
Promise<ServerUser>
Example
const user = await stackServerApp.createUser({
primaryEmail: 'test@example.com',
primaryEmailAuthEnabled: true,
password: 'password123',
});stackServerApp.getTeam(id)
Gets a team by its ID.
Parameters
id(string): The team ID.
Returns
Promise<ServerTeam | null>
Example
const team = await stackServerApp.getTeam('team_id');stackServerApp.useTeam(id)
Functionally equivalent to getTeam(id), but as a React hook.
Parameters
id(string): The team ID.
Returns
ServerTeam
Example
const team = stackServerApp.useTeam('team_id');stackServerApp.listTeams()
Lists all teams on the current project.
Returns
Promise<ServerTeam[]>
Example
const teams = await stackServerApp.listTeams();stackServerApp.useTeams()
Functionally equivalent to listTeams(), but as a React hook.
Returns
ServerTeam[]
Example
const teams = stackServerApp.useTeams();stackServerApp.createTeam([options])
Creates a team.
Parameters
options(object):displayName(string): The display name for the team.profileImageUrl(string | null): The URL of the team's profile image, or null to remove.
Returns
Promise<ServerTeam>
Example
const team = await stackServerApp.createTeam({
displayName: 'New Team',
profileImageUrl: 'https://example.com/profile.jpg',
});