---
title: "Update your personal profile"
method: PATCH
path: "/me/profile"
tags: ["Profiles"]
---

# Update your personal profile

`PATCH /me/profile`

## Request

- Base URL: `https://app.gc.ai/api/external/v1`
- URL: `https://app.gc.ai/api/external/v1/me/profile`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/gc-ai/apis/gc-ai-external-api/docs/me/profile/patch.ts> (a function with typed inputs; its response is checked against the schema)

Partially update the calling user's personal profile. Omitted fields are left unchanged; nullable fields accept `null` to clear them. The profile is created on first write.

Display name and avatar are managed by your identity provider, not this API.

Requires a **user-scoped** key (`u:gcai_...`); org-scoped keys receive 403.

## Request body

- UpdatePersonalProfileRequest
  - `preferred_name` string, nullable: Preferred name to use in chats. Send null to clear.
  - `use_name_in_chats` boolean: Whether the AI should address the user by name
  - `role_title` string, nullable: Job title or role. Send null to clear.
  - `jurisdiction_focus` string, nullable: Primary jurisdiction. Send null to clear.
  - `practice_areas` string[], nullable: Practice areas (max 20). Send null or [] to clear.
  - `custom_instructions` string, nullable: Custom instructions for every chat. Send null to clear.
  - `privilege_marking_enabled` boolean: Whether AI responses include an attorney-client privilege disclaimer
  - `privilege_marking_text` string, nullable: Privilege disclaimer text. Send null to clear.
  - `enter_to_submit` boolean: Whether the chat composer submits on Enter instead of Cmd/Ctrl+Enter
  - `document_author_name` string, nullable: Name stamped on AI tracked changes. Send null to clear.
  - `enabled` boolean: Whether the personal profile is active

## Response `200`

The updated personal profile

- PersonalProfileResponse
  - `preferred_name` string, nullable, required: Preferred name to use in chats, or null if unset
  - `use_name_in_chats` boolean, required: Whether the AI should address the user by name
  - `role_title` string, nullable, required: Job title or role (e.g. "General Counsel"), or null
  - `jurisdiction_focus` string, nullable, required: Primary jurisdiction the user practices in, or null
  - `practice_areas` string[], required: Practice areas the user focuses on (may be empty)
  - `custom_instructions` string, nullable, required: Custom instructions injected into every chat, or null
  - `privilege_marking_enabled` boolean, required: Whether AI responses include an attorney-client privilege disclaimer
  - `privilege_marking_text` string, nullable, required: The privilege disclaimer text, or null if unset
  - `enter_to_submit` boolean, required: Whether the chat composer submits on Enter instead of Cmd/Ctrl+Enter
  - `document_author_name` string, nullable, required: Name stamped on tracked changes when AI edits are applied, or null
  - `enabled` boolean, required: Whether the personal profile is active and applied to chats
  - `created_at` string, nullable, required: ISO 8601 creation timestamp, or null if never saved
  - `updated_at` string, nullable, required: ISO 8601 last-update timestamp, or null if never saved

## Other responses

- `400`: No fields provided, or invalid request body
- `401`: Missing or malformed API key
- `403`: Key is not user-scoped, or the API key is invalid
- `429`: Rate limit exceeded. See [Rate Limits](https://docs.gc.ai/api-reference/concepts/rate-limits) for the tiers, limits, and how to back off.
- `500`: Internal server error
- `503`: Service temporarily unavailable

---

[API](https://skmtc.dev/gc-ai/apis/gc-ai-external-api.md) - [All operations](https://skmtc.dev/gc-ai/apis/gc-ai-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gc-ai/apis/gc-ai-external-api/revisions/2bbdfddf7107?raw)
