Skip to main content
DocsAPI ReferenceSettings API
Back to docs

Settings API

Profile, notifications, language preferences

api
settings

Settings API

Base path: /api/settings

All settings endpoints require JWT authentication via the Authorization: Bearer <token> header.


GET /api/settings/profile

Get the current user's profile.

Auth: Required (JWT) Feature gate: None

Response:

{
  "success": true,
  "data": {
    "id": "user-uuid",
    "email": "teacher@example.com",
    "name": "Jane Doe",
    "language": "en",
    "plan": "pro",
    "createdAt": "2026-01-15T10:00:00.000Z"
  }
}
FieldTypeDescription
idstringUser UUID
emailstringUser email address
namestringDisplay name
language"en" | "tr" | "fr" | "es" | "ar"Preferred UI language
planstringCurrent subscription plan
createdAtstringISO 8601 account creation timestamp

Errors:

StatusBodyCondition
404{ "success": false, "error": "User not found" }No user matches the JWT subject
500{ "success": false, "error": "Failed to fetch profile" }Database error

PUT /api/settings/profile

Update the current user's display name.

Auth: Required (JWT) Feature gate: None

Request body:

{
  "name": "Jane Doe"
}
FieldTypeRequiredConstraints
namestringYesMin 1, max 255 characters

Response:

{
  "success": true,
  "message": "Profile updated"
}

Errors:

StatusBodyCondition
400{ "success": false, "error": "Validation error: ..." }Zod validation failure
500{ "success": false, "error": "Failed to update profile" }Database error or user not found

GET /api/settings/notifications

Get the current user's notification preferences.

Auth: Required (JWT) Feature gate: None

Response:

{
  "success": true,
  "data": {
    "emailDigest": true,
    "emailNewFeatures": true
  }
}
FieldTypeDescription
emailDigestbooleanWhether the user receives email digest notifications
emailNewFeaturesbooleanWhether the user receives new feature announcement emails

Errors:

StatusBodyCondition
404{ "success": false, "error": "User not found" }No user matches the JWT subject
500{ "success": false, "error": "Failed to fetch notification preferences" }Database error

PUT /api/settings/notifications

Update the current user's notification preferences.

Auth: Required (JWT) Feature gate: None

Request body:

{
  "emailDigest": true,
  "emailNewFeatures": false
}
FieldTypeRequiredConstraints
emailDigestbooleanYes-
emailNewFeaturesbooleanYes-

Response:

{
  "success": true,
  "message": "Notification preferences updated"
}

Errors:

StatusBodyCondition
400{ "success": false, "error": "Validation error: ..." }Zod validation failure
500{ "success": false, "error": "Failed to update notification preferences" }Database error or user not found

PUT /api/settings/language

Update the current user's preferred UI language.

Auth: Required (JWT) Feature gate: None

Request body:

{
  "language": "tr"
}
FieldTypeRequiredConstraints
languagestringYesOne of: en, tr, fr, es, ar

Response:

{
  "success": true,
  "message": "Language updated"
}

Errors:

StatusBodyCondition
400{ "success": false, "error": "Validation error: ..." }Invalid language value
500{ "success": false, "error": "Failed to update language" }Database error or user not found
Back to docsdocs/product/api/settings.md