/api/auth/sessionQuem é esta requisição, quais espaços de trabalho ela alcança e se a instalação ainda espera o primeiro acesso.
Responde sempre 200, inclusive sem credencial nenhuma: “não há ninguém” é uma resposta, e não uma falha. É por ela que a interface decide entre desenhar o quadro, a tela de login ou a de primeiro acesso.
Requisição
curl -s http://localhost:3000/api/auth/sessionconst response = await fetch("http://localhost:3000/api/auth/session", {
credentials: "include",
});
const { user, setupRequired, publicMode } = await response.json();Resposta200
{
"user": {
"id": "cmt94cjx5000vql01imegem2r",
"name": "Ana",
"email": "[email protected]",
"role": "ADMIN",
"avatarUrl": null,
"jobTitle": null,
"timezone": "",
"notifyBackupReady": true,
"hasApiToken": true,
"apiTokenCreatedAt": "2026-08-25T20:37:29.998Z",
"apiTokenLast4": "mGQ",
"passwordPending": false,
"lastLoginAt": "2026-08-27T19:50:42.947Z",
"createdAt": "2026-08-25T20:29:57.593Z",
"tenants": [
{
"id": "cmsp4djx60002p801o7ybpkv7",
"name": "Pessoal",
"color": "amber",
"role": "ADMIN",
"membership": null
}
]
},
"setupRequired": false,
"publicMode": false
}Respostas de erro
publicMode: true significa que a instalação dispensa o login: a identidade é um visitante anônimo de papel ADMIN, sem registro no banco.