> ## Documentation Index
> Fetch the complete documentation index at: https://docs.snipp.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Profile

Update your profile fields. Send only the fields you want to change.

## Behavior

* `bio` is capped at 200 characters.
* `nickname` is capped at 15 characters.
* `username` must be 4-15 characters, letters, numbers, and underscores only.
* `email` must be a valid email and at most 50 characters.
* `socials` is an object keyed by `roblox`, `github`, `spotify`, `youtube`, `tiktok`, `X`, `bluesky`, `discord`. Each value must be a URL on the platform's domain.
* `avatar` and `banner` only accept URLs that point to your own `avatars/{userId}/` or `banners/{userId}/` prefix on the Snipp CDN. Use [`/profile/avatar`](/relay-reference/endpoint/avatar) or [`/profile/banner`](/relay-reference/endpoint/banner) to upload first.
* `customEmbed` is PLUS-only. Object fields:
  * `title` (string, max 60): embed title template. Supports variables: `%{post_title}%`, `%{post_description}%`, `%{username}%`, `%{nickname}%`.
  * `description` (string, max 200): embed description template. Same variables as `title`.
  * `themeColor` (hex string, e.g. `#F0B100`): embed accent color.
  * `smallText` (string, max 50): site name / small text shown in embed.

## Examples

```bash theme={null}
curl -X PATCH "https://relay.snipp.gg/profile" \
  -H "relay-key: YOUR_RELAY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"bio": "Building things at Snipp", "nickname": "Snipp"}'
```

## Responses

Only the fields you sent are echoed back alongside the confirmation message.

```json theme={null}
{
  "message": "Profile updated successfully!",
  "bio": "Building things at Snipp",
  "nickname": "Snipp"
}
```
