---
title: "✨ Update organization member/role"
method: PATCH
path: "/api/organizations/{id}/memberships"
tags: ["Organizations"]
---

# ✨ Update organization member/role

`PATCH /api/organizations/{id}/memberships`

<Card href="https://humansignal.com/goenterprise">
        <img style="pointer-events: none; margin-left: 0px; margin-right: 0px;" src="https://docs.humansignal.com/images/badge.svg" alt="Label Studio Enterprise badge"/>
        <p style="margin-top: 10px; font-size: 14px;">
            This endpoint is not available in Label Studio Community Edition. [Learn more about Label Studio Enterprise](https://humansignal.com/goenterprise)
        </p>
    </Card>
Update organization membership or role for a specific user ID.

**User Rotation Best Practices for API Usage**

To maintain compliance with our licensing terms and ensure optimal performance of HumanSignal's APIs, please consider the following guidelines when managing user assignments:

* **Maintain the Minimum Assignment duration**: Once a licensed seat is assigned to a user, maintain that assignment for at least the minimum consecutive days before rotating the user. This duration can be found in your enterprise contract language.

* **Automate, Monitor, and Log Rotations**: Implement automated scheduling and logging mechanisms to track the timing of user rotations. This helps ensure that rotations adhere to the aforementioned minimum period.

* **Adhere to API Update Frequency and Wait Periods**: When updating user assignments via our APIs, follow the recommended frequency and wait period guidelines provided in the HumanSignal API documentation. Avoid sending rapid, successive requests that might overload the endpoint. Instead, incorporate appropriate delays between calls as specified in the documentation.

* **Avoid Overloading the API Endpoint**: Design your integration to batch or schedule updates where possible, and implement backoff strategies if the API indicates rate limiting. This helps prevent service disruptions and ensures a smooth operation.

## Path parameters

- `id` integer, required

## Request body

- PatchedOrganizationMemberCreateUpdateRequest
  - `role` 'OW' | 'AD' | 'MA' | 'RE' | 'AN' | 'DI' | 'NO' — * `OW` - Owner * `AD` - Administrator * `MA` - Manager * `RE` - Reviewer * `AN` - Annotator * `DI` - Deactivated * `NO` - Not Activated
  - `user_id` integer — Member
  - `user_type` 'standard' — * `standard` - Standard

## Response `200`

- LseOrganizationMemberList — A serializer mixin that takes an additional `fields` argument that controls which fields should be displayed.
  - `concurrency` object, nullable, required
  - `contributed_to_projects` object[], nullable, required
    - `id` integer, required
    - `title` string, required
  - `created_projects` object[], nullable, required
    - `id` integer, required
    - `title` string, required
  - `flex` object, nullable, required — Per-member Flex claim/window state for Members UI (FIT-2339).
  - `id` integer, required
  - `organization` integer, required — Organization ID
  - `role` string, required
  - `role_source` string, required
  - `tags` SimpleOrganizationMemberTag[], required
    - `id` integer, required
    - `label` string, required
  - `user` LseUserOrganizationMemberList, required — A ModelSerializer that takes additional arguments for "fields", "omit" and "expand" in order to control which fields are displayed, and whether to replace simple values with complex, nested serializations
    - `active_organization` integer, nullable
    - `allow_newsletters` boolean, nullable — Allow sending newsletters to user
    - `avatar` string, nullable, required
    - `contributed_to_projects` object[], nullable, required
      - `id` integer, required
      - `title` string, required
    - `created_projects` object[], nullable, required
      - `id` integer, required
      - `title` string, required
    - `custom_hotkeys` unknown
    - `date_joined` string, date-time
    - `email` string, email
    - `first_name` string
    - `id` integer, required
    - `initials` string, required
    - `last_activity` string, date-time, required
    - `last_name` string
    - `lse_fields` LseFields, required
      - `email_notification_settings` object, required — Get email notification settings with organization-level filtering. Use the model's getter method to ensure all notification types are included with proper defaults for any missing types. Transform the output to include both value and label for each notification type. Filter notifications based on organization's allowed notifications if user belongs to exactly one organization. Role-based filtering: not_activated_user_login is only available to users who are admins or owners in at least one organization.
      - `invite_activated` boolean, nullable
      - `invite_expired` boolean, nullable, required
      - `invite_expired_at` string, date-time, nullable, required
      - `invited_at` string, date-time, nullable
      - `invited_by` integer, nullable
      - `onboarding_state` 'not_started' | 'signup' | 'trial_signup' | 'first_tutorial' | 'in_app_guidance' | 'complete' — * `not_started` - Not Started * `signup` - Signup * `trial_signup` - Trial Signup * `first_tutorial` - First Tutorial * `in_app_guidance` - In App Guidance * `complete` - Complete
      - `social_auth_finished` boolean, nullable — Is user finished social authentication
      - `trial_company` string, nullable
      - `trial_experience_labeling` string, nullable
      - `trial_license_enterprise` boolean, nullable
      - `trial_models_in_production` string, nullable
      - `trial_role` 'annotator' | 'annotator_team_manager' | 'business_analyst' | 'business_or_data_team_leadership' | 'data_engineer_platform_engineer' | 'data_scientist' | 'other' — * `annotator` - Annotator * `annotator_team_manager` - Annotator Team Manager * `business_analyst` - Business Analyst * `business_or_data_team_leadership` - Business Or Data Team Leadership * `data_engineer_platform_engineer` - Data Engineer Platform Engineer * `data_scientist` - Data Scientist * `other` - Other
    - `pause` object, nullable, required
    - `phone` string
    - `username` string, required
  - `user_type` string, nullable, required

---

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