---
title: "Update an organization member"
method: PATCH
path: "/v1beta/organizations/{organization_id}/members/{user_id}"
tags: ["Members"]
---

# Update an organization member

`PATCH /v1beta/organizations/{organization_id}/members/{user_id}`

Update a member's role within an organization. Requires manage permission (owner or admin). The organization owner's role cannot be changed.

## Path parameters

- `organization_id` string, required — Organization the member belongs to. Pattern: org_[0-9a-hjkmnp-tv-z]{26}
- `user_id` string, required — User account ID of the member to update. Pattern: user_[0-9a-hjkmnp-tv-z]{26}

## Request body

- object — UpdateOrganizationMemberRequest identifies a member and the new role.
  - `role` 'owner' | 'admin' | 'member', required

## Response `200`

Success

- UpdateOrganizationMemberResponse — UpdateOrganizationMemberResponse contains the updated member.
  - `member` OrganizationMember, required — OrganizationMember represents a member of an organization.
    - `joined_at` string, date-time, required — When the member joined the organization.
    - `role` 'owner' | 'admin' | 'member', required
    - `user` User, required — User represents a human user account. Returned by GetUser (endpoint deferred).
      - `email` string, email, required
      - `family_name` string, nullable — Family name (last name) of the user.
      - `given_name` string, nullable — Given name (first name) of the user.
      - `id` string, required
      - `name` string, required — Display name of the user.
      - `profile_image_url` string, nullable — URL of the user's profile image.

## Other responses

- `400` — Invalid request parameters
- `401` — Authentication failed - missing or invalid API key
- `403` — Authorization failed - valid key but insufficient permissions
- `404` — Resource not found
- `429` — Too many requests
- `500` — Internal server error

## Changes

- **2026-03-19** `885f41a57639` — 5 info
  - api tag `Members` added
  - api tag `Organizations` removed
  - added the optional property `member/user/family_name` to the response with the `200` status
  - added the optional property `member/user/given_name` to the response with the `200` status
  - …1 more
- **2026-03-05** `a7e69986914e` — 2 breaking, 2 info
  - removed the required property `member/email` from the response with the `200` status
  - removed the required property `member/user/type` from the response with the `200` status
  - the `member/user/id` response's property pattern was changed from `^(user|svc)_[0-9a-hjkmnp-tv-z]{26}$` to `^user_[0-9a-hjkmnp-tv-z]{26}$` for the status `200`
  - added the required property `member/user/email` to the response with the `200` status

[Change history](https://skmtc.dev/factify-inc/apis/factify-api/changes/v1beta/organizations/:organization_id/members/:user_id/patch.md)

---

[API](https://skmtc.dev/factify-inc/apis/factify-api.md) · [All operations](https://skmtc.dev/factify-inc/apis/factify-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/factify-inc/factify-api/revisions/8baabdfb82bf/schema)
