Skip to content

GET /auth/me

Returns the currently authenticated user. Requires a valid JWT in the Authorization header (obtained from login, OTP verify, or register).

GET /v1/public/projects/:projectSlug/auth/me
ParameterTypeRequiredDescription
projectSlugstringYour project’s unique slug
HeaderRequiredDescription
AuthorizationBearer <jwt-token> — token from login, register, or OTP verify
{
"id": "user-uuid-here",
"email": "user@example.com",
"name": "Jane Doe",
"email_verified_at": "2026-02-10T10:00:00Z",
"profile_extras": {
"company": "Example Inc",
"phone": "+1-555-1234"
}
}
FieldTypeDescription
idstringUser UUID
emailstringUser’s email (phone-only users have a placeholder email)
namestringDisplay name
email_verified_atstring | nullISO date when email was verified, or null
profile_extrasobjectCustom signup fields stored for this user
Status CodeError CodeDescription
401UNAUTHORIZEDMissing or invalid token
429RATE_LIMIT_EXCEEDEDToo many requests
500INTERNAL_SERVER_ERRORServer error

This endpoint is read-only. You can optionally attach a project event such as auth.me.read to track profile reads. Configure in Project → Hooks.

Paste a JWT from a previous login or register call to test.

GEThttps://api.aerostack.dev/v1/public/projects/your-project/auth/me
const token = localStorage.getItem('authToken');
const response = await fetch(
'https://api.aerostack.dev/v1/public/projects/your-project/auth/me',
{
headers: {
'Authorization': `Bearer ${token}`
}
}
);
if (!response.ok) {
if (response.status === 401) {
// Token expired or invalid — redirect to login
window.location.href = '/login';
}
throw new Error((await response.json()).message);
}
const user = await response.json();
console.log('Current user:', user);

Update the current user’s profile.

PATCH /v1/public/projects/:projectSlug/auth/me
FieldTypeDescription
namestringUpdate display name
avatar_image_idstringImportant: The ID from POST /storage/upload to set as avatar
profile_extrasobjectUpdate custom profile fields (merges with existing)
first_namestringUpdate first name (synced to customer record)
last_namestringUpdate last name (synced to customer record)
phonestringUpdate phone number

To remove a field, set it to null.

After uploading a file and getting an ID (e.g., 725365d7...), link it to the user:

{
"avatar_image_id": "725365d7-21fc-45eb-b6ec-8390f0a438d1"
}
{
"success": true
}

Remove the current user’s avatar image.

DELETE /v1/public/projects/:projectSlug/auth/me/avatar
{
"success": true,
"message": "Avatar removed"
}