---
title: "Update profile settings"
method: PATCH
path: "/v1/account/profile"
tags: ["profiles"]
---

# Update profile settings

`PATCH /v1/account/profile`

Update the authenticated user's profile settings.

Supports:
- **is_public**: Toggle profile visibility (public/private)
- **description**: Set profile bio (max 280 characters, empty string clears it)

The response includes:
- **is_profile_public**: Current visibility state after the update
- **description**: Current profile bio
- **profile_url**: Public profile URL (null if the account has no handle)

Authentication: `Authorization: Bearer <CLIENT_JWT>`

## Headers

- `authorization` string, nullable — Bearer JWT issued by Grove that identifies the account.

## Request body

- ProfileUpdateRequest — Request model for PATCH /v1/account/profile.
  - `is_public` boolean, nullable — Whether profile is publicly visible
  - `description` string, nullable — Profile bio (max 280 characters)
  - `theme` ProfileTheme — Theme customization for a public profile.
    - `accent_color` string, nullable — Hex accent color (e.g., '#4CAF50')
    - `preset` string, nullable — Theme preset name (e.g., 'dark', 'light', 'ocean')
  - `tip_to_talk_min` number, nullable — Minimum tip in USD to accept paid messages (Tip to Talk). 0 = accept any amount. >= 0.01 = require at least that amount. Use tip_to_talk_enabled=false to disable entirely.
  - `tip_to_talk_enabled` boolean, nullable — Set to false to disable paid messages (opt out). Set to true to (re-)enable.
  - `webhook_url` string, nullable — HTTPS URL for stream alert webhooks. Paid messages (tip-to-talk) will be POSTed to this endpoint in real time. Set to empty string to disable.
  - `tip_button_label` string, nullable — CTA label for the tip button on the profile page. Allowed values: buy_coffee, donate, fund, share_the_love, subscribe, support, tip. Feed/content contexts always show 'Tip' regardless of this setting.

## Response `200`

Successful Response

- ProfileUpdateResponse — Response model for PATCH /v1/account/profile.
  - `is_profile_public` boolean, required — Current profile visibility setting
  - `description` string, nullable — Profile bio (max 280 characters)
  - `theme` ProfileTheme — Theme customization for a public profile.
    - `accent_color` string, nullable — Hex accent color (e.g., '#4CAF50')
    - `preset` string, nullable — Theme preset name (e.g., 'dark', 'light', 'ocean')
  - `profile_url` string, nullable — Public profile URL if handle is set
  - `tip_to_talk_min` number, nullable — Minimum tip in USD for paid messages (Tip to Talk). NULL = disabled.
  - `webhook_configured` boolean — Whether a stream alert webhook is configured.
  - `streamlabs_connected` boolean — Whether a Streamlabs account is connected for stream alerts.
  - `tip_button_label` string — CTA label for the tip button on the profile page.

## Other responses

- `401` — Missing or invalid JWT
- `404` — Account not found
- `422` — Validation Error

---

[API](https://skmtc.net/grove/apis/grove-api.md) · [All operations](https://skmtc.net/grove/apis/grove-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/grove/grove-api/versions/f286b48a8105/schema)
