# Update the profile

Source: https://workroad.app/docs/api/update-profile

`PATCH https://workroad.app/api/v1/settings/profile`

Changes the name, username, bio, status, location or what the public profile shows. The sign-in email address can't be changed here.

- MCP tool: `updateProfile` on `https://workroad.app/api/mcp`
- Required scopes: settings:update
- Test mode: `PATCH https://workroad.app/api/test/v1/settings/profile` checks the request and returns the example response without changing anything.

## Request body

JSON.

- `name`: string, 2-100 characters. 2 to 100 characters.
- `username`: string, 3-30 characters, matches `^[a-zA-Z0-9_.]+$`. 3 to 30 letters, digits, `_` or `.`, stored in lower case. Fails with 409 when another account has it.
- `description`: string, 0-512 characters. Up to 512 characters. Send an empty string to clear it.
- `status`: string, 0-256 characters. Up to 256 characters. Send an empty string to clear it.
- `location`: string, 0-256 characters. Up to 256 characters. Send an empty string to clear it.
- `showLastLogin`: boolean
- `showCreated`: boolean
- `showTimezone`: boolean
- `showMembership`: boolean

## Response

`200` OK

- `data`: object, required
  - `name`: string, required. The display name.
  - `username`: string, required. Lower case letters, digits, `_` and `.`. The public profile lives at `/{username}`.
  - `description`: string, required. The profile bio.
  - `status`: string, required. A short status line shown on the profile.
  - `location`: string or null, required. Free text, or null.
  - `showLastLogin`: boolean, required. The profile shows when they were last on.
  - `showCreated`: boolean, required. The profile shows when they joined.
  - `showTimezone`: boolean, required. The profile shows their time zone.
  - `showMembership`: boolean, required. The profile shows their plan.

### Example

```json
{
  "data": {
    "name": "Ada Lovelace",
    "username": "ada",
    "description": "Maths and computing, mostly.",
    "status": "Revising for finals",
    "location": "London",
    "showLastLogin": true,
    "showCreated": true,
    "showTimezone": false,
    "showMembership": true
  }
}
```

## Errors

Every error has the body `{ "error": { "code", "message", "details" } }`.

- `400`: Invalid body or no field to update.
- `401`: Missing, invalid, disabled or expired API key
- `403`: The API key lacks the required scope
- `404`: No endpoint exists at this path.
- `405`: Method not allowed. Use a method from the Allow header.
- `409`: Another account already has that username.
- `429`: Rate limit exceeded. Wait for Retry-After before retrying. The rate-limit headers are absent when the key's own limiter rejected the request before the per-endpoint bucket check ran.
- `500`: Internal server error
