---
title: "Update my profile"
method: PATCH
path: "/users/me"
tags: ["Users"]
---

# Update my profile

`PATCH /users/me`

## Request

- Base URL: `https://tasg.app/api/v1`
- URL: `https://tasg.app/api/v1/users/me`
- Auth: HTTP bearer

Email, role and status cannot be changed here.

## Request body

- object
  - `full_name` string
  - `avatar_url` string, uri, nullable
  - `job_role` string, nullable: Free-text job role, e.g. `Commercial Director`. Trimmed; empty or null clears it.
  - `timezone` string

## Response `200`

Updated.

- object
  - `user` User, required
    - `id` string, uuid, required
    - `email` string, email, required
    - `full_name` string, required
    - `avatar_url` string, uri, nullable
    - `job_role` string, nullable: Free-text job role, e.g. `Commercial Director`.
    - `role` 'admin' | 'member' | 'guest', required: Instance-level role. `guest` users are restricted to projects they were invited to.
    - `status` 'active' | 'inactive', required
    - `timezone` string, required: IANA zone name, e.g. `Europe/London`.

## Other responses

- `400`: Validation failed: the body or query did not match the schema, or a business rule was violated. `error` says which.
- `401`: Missing, invalid, expired or revoked credentials.
- `403`: Authenticated, but not allowed: not a member, insufficient project role or the API token lacks the required scope.
- `429`: Rate limited. Back off and retry after the window in the `RateLimit-*` headers.

---

[API](https://skmtc.dev/tasg/apis/tasg-api.md) · [All operations](https://skmtc.dev/tasg/apis/tasg-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tasg/apis/tasg-api/revisions/cd2a1dbaf5cf?raw)
