# Change your display name

> The users.profile.update operation: PATCH /api/v1/users/me/profile in the REST API and the users_profile_update tool in the MCP server.

Changes the name the people in your organizations see for you: in the members list, in audit logs and next to
your photo. 1–200 characters; line breaks and control characters are refused. Sending the name you already
have changes nothing.

A name you set yourself stays: signing in with Google or Microsoft later no longer replaces it with the name of
that account (`nameSetByUser`). Your organizations get `user.updated`, which says what changed but carries no
name.

**Who can call it:** the signed-in user, for their own account, in the console.

## At a glance

- **REST:** `PATCH /api/v1/users/me/profile`
- **MCP tool:** `users_profile_update`
- **Operation ID:** `users.profile.update`
- **Scope:** Platform
- **Permission:** `account:write`
- **Risk tier:** `write`
- **Dry run:** Supported (send `Ownrecord-Dry-Run: true`)
- **Idempotency:** `Idempotency-Key` optional
- **Modes:** Test and live
- **Authentication:** API key with the `account:write` scope
- **Since:** M13

## Request

### Body

A JSON object (`Content-Type: application/json`):

| Field  | Type   | Required | Description                                                                                                                       |
| ------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `name` | string | Yes      | Your name as the people in your organizations see it, 1–200 characters. Signing in with Google or Microsoft no longer changes it. |

## Response

`200 OK` with a JSON object:

| Field           | Type             | Description                                                                                                     |
| --------------- | ---------------- | --------------------------------------------------------------------------------------------------------------- |
| `object`        | `"user_profile"` |                                                                                                                 |
| `id`            | `usr_…` ID       |                                                                                                                 |
| `email`         | string           | Your account's address (changed with `users.email_change.start`).                                               |
| `name`          | string or null   | Your display name, or null when there is none yet.                                                              |
| `nameSetByUser` | boolean          | Whether you set the name yourself. Until you do, a Google or Microsoft sign-in may update it from that account. |
| `avatar`        | object or null   | Your uploaded photo (private: shown to you, to the people in your organizations and to staff), or null.         |
| `updatedAt`     | date-time        |                                                                                                                 |

## Examples

### Use my full name

```http
PATCH /api/v1/users/me/profile
Authorization: Bearer or_test_…
Content-Type: application/json

{
  "name": "Ana Novak"
}
```

Response (`200`):

```json
{
  "object": "user_profile",
  "id": "usr_01m4tx5nj8emwbyf7y9vcf47xa",
  "email": "ana@acme.example",
  "name": "Ana Novak",
  "nameSetByUser": true,
  "avatar": null,
  "updatedAt": "2026-11-05T09:00:00.000Z"
}
```

## Errors

| Code                                                                                   | HTTP status | When                                                                      | What to do                                                                      |
| -------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [`validation_failed`](https://ownrecord.io/docs/reference/errors.md#validation_failed) | 400         | The name is empty, longer than 200 characters or has a control character. | Fix the fields listed in `details.issues` and send the request again.           |
| [`version_conflict`](https://ownrecord.io/docs/reference/errors.md#version_conflict)   | 409         | Your account changed at the same time; retry.                             | Fetch the object again and retry the change.                                    |
| [`permission_denied`](https://ownrecord.io/docs/reference/errors.md#permission_denied) | 403         | The caller isn't a person signed in to the console.                       | Ask an organization owner or admin for a role or scope that allows this action. |

It can also return these [common errors](https://ownrecord.io/docs/reference.md#common-errors): [`api_version_unsupported`](https://ownrecord.io/docs/reference/errors.md#api_version_unsupported), [`invalid_json`](https://ownrecord.io/docs/reference/errors.md#invalid_json), [`unsupported_media_type`](https://ownrecord.io/docs/reference/errors.md#unsupported_media_type), [`authentication_required`](https://ownrecord.io/docs/reference/errors.md#authentication_required), [`api_key_invalid`](https://ownrecord.io/docs/reference/errors.md#api_key_invalid), [`resource_not_found`](https://ownrecord.io/docs/reference/errors.md#resource_not_found), [`idempotency_key_reused`](https://ownrecord.io/docs/reference/errors.md#idempotency_key_reused), [`idempotency_in_progress`](https://ownrecord.io/docs/reference/errors.md#idempotency_in_progress), [`rate_limited`](https://ownrecord.io/docs/reference/errors.md#rate_limited), [`internal_error`](https://ownrecord.io/docs/reference/errors.md#internal_error).
