Skip to content
Select themeSelect language

PUT /api/me — update the user profile and return the refreshed profile.

PUT
/api/me
curl --request PUT \
--url https://example.com/api/me \
--header 'Content-Type: application/json' \
--data '{ "avatar_color": "example", "avatar_image_data": "example", "display_name": "example", "locale": "example" }'
Media typeapplication/json
object
avatar_color
string | null
avatar_image_data
string | null
display_name
string | null
locale
string | null
Examplegenerated
{
"avatar_color": "example",
"avatar_image_data": "example",
"display_name": "example",
"locale": "example"
}

The updated user profile

Media typeapplication/json

The current user’s profile + session-bootstrap flags — the body of both GET /api/me and PUT /api/me. Faithful to the JSON [me_response] builds.

object
active_org_role
required
One of:
null
active_workspace_role
required
One of:
null
approved
required
boolean
avatar_color
required
string | null
avatar_image_data
required
string | null
created_at
required
string format: date-time
default_verbosity
required

The user’s stored default live-feed verbosity (#583 / ADR 0049): the raw persisted label "reduced" | "chatty", or null when no default is set (the feed then falls back to the built-in reduced). The web CLI’s density command reads this to show / change the current setting.

string | null
display_name
required
string | null
email
required

The authenticated email; null for an identity without a stored email.

string | null
email_verified
required
boolean
id
required
string format: uuid
is_admin
required
boolean
locale
required
string
mfa_enabled
required
boolean
telegram_linked
required
boolean
Example
{
"active_org_role": "owner",
"active_workspace_role": "owner"
}

Structured client error

Media typeapplication/json

The canonical JSON body of every error response — the single source of truth the frontend binds to. Every AppError serializes as this exact shape, and the generated OpenAPI component ApiErrorBody (with its ErrorCode enum) is what the frontend error schema is generated from, so there is no hand-written error schema on either end.

object
code
required

Machine-readable, stable error code.

string
Allowed values: not_found unauthorized forbidden bad_request unprocessable precondition_failed conflict method_not_allowed rate_limited quota_exceeded database_error docker_error vault_error internal_error
details
One of:
null
error
required

Human-readable message (the server’s English text; the client may localize by code).

string
Example
{
"code": "not_found"
}

Authentication required

Media typeapplication/json

The canonical JSON body of every error response — the single source of truth the frontend binds to. Every AppError serializes as this exact shape, and the generated OpenAPI component ApiErrorBody (with its ErrorCode enum) is what the frontend error schema is generated from, so there is no hand-written error schema on either end.

object
code
required

Machine-readable, stable error code.

string
Allowed values: not_found unauthorized forbidden bad_request unprocessable precondition_failed conflict method_not_allowed rate_limited quota_exceeded database_error docker_error vault_error internal_error
details
One of:
null
error
required

Human-readable message (the server’s English text; the client may localize by code).

string
Example
{
"code": "not_found"
}

Structured server error

Media typeapplication/json

The canonical JSON body of every error response — the single source of truth the frontend binds to. Every AppError serializes as this exact shape, and the generated OpenAPI component ApiErrorBody (with its ErrorCode enum) is what the frontend error schema is generated from, so there is no hand-written error schema on either end.

object
code
required

Machine-readable, stable error code.

string
Allowed values: not_found unauthorized forbidden bad_request unprocessable precondition_failed conflict method_not_allowed rate_limited quota_exceeded database_error docker_error vault_error internal_error
details
One of:
null
error
required

Human-readable message (the server’s English text; the client may localize by code).

string
Example
{
"code": "not_found"
}