---
sidebar_position: 2
---

# Profile API

The profile API reads and updates the current user's local profile details.

## Required Capabilities

| Method | Capability |
| --- | --- |
| `profile.getCurrent()` | `profile.read` |
| `profile.update(profile)` | `profile.write` |
| `profile.updateAvatar(avatar)` | `profile.write` |

## Read Current Profile

```js
export function activate(context) {
  const user = context.api.profile.getCurrent();

  context.api.logger.info('Current profile', {
    id: user?.id,
    displayName: user?.displayName,
    username: user?.username
  });
}
```

Example result:

```json
{
  "id": "user-alice-01",
  "username": "alice",
  "displayName": "Alice",
  "description": "Raids on Fridays",
  "avatarUrl": "/avatars/alice.webp"
}
```

## Update Display Profile

```js
export function activate(context) {
  context.api.profile.update({
    displayName: 'Alice - Support Lead',
    description: 'Available for onboarding and support questions.'
  });
}
```

## Update Avatar

```js
export function activate(context) {
  context.api.profile.updateAvatar({
    avatarUrl: 'https://cdn.example.com/metoyou/avatars/alice-support.png',
    avatarMime: 'image/png',
    avatarHash: 'sha256:9df5d5e4b0d8f41f3a3cf5d1f5a2c1f4'
  });
}
```

Use `profile.write` carefully. A plugin that changes a user's identity should explain why in its readme and UI.