---
title: "Update a group member"
method: POST
path: "/groups.update_user"
tags: ["Groups"]
---

# Update a group member

`POST /groups.update_user`

## Request

- Base URL: `https://app.getoutline.com/api`
- URL: `https://app.getoutline.com/api/groups.update_user`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://app.getoutline.com/oauth/authorize`
    - Token URL: `https://app.getoutline.com/oauth/token` scopes: `read`, `write`

Update the role of an existing member of a group, for example to promote them to a group admin or demote them back to a regular member.

## Request body

- object
  - `id` string, uuid, required: Identifier for the group
  - `userId` string, uuid, required: Identifier for the user whose membership should be updated
  - `permission` 'member' | 'admin', required: The permission the user should have within the group

## Response `200`

OK

- object
  - `data` object
    - `users` User[]
      - `id` string, uuid: Unique identifier for the object.
      - `name` string: The name of this user, it is migrated from Slack or Google Workspace when the SSO connection is made but can be changed if necessary.
      - `avatarUrl` string, uri: The URL for the image associated with this user, it will be displayed in the application UI and email notifications.
      - `color` string: A color representing the user, used in the UI for avatars without an image.
      - `email` string, email: The email associated with this user, it is migrated from Slack or Google Workspace when the SSO connection is made but can be changed if necessary.
      - `role` 'admin' | 'member' | 'viewer' | 'guest'
      - `isSuspended` boolean: Whether this user has been suspended.
      - `lastActiveAt` string, date-time, nullable: The last time this user made an API request, this value is updated at most every 5 minutes.
      - `timezone` string, nullable: The timezone this user has registered.
      - `createdAt` string, date-time: The date and time that this user first signed in or was invited as a guest.
      - `updatedAt` string, date-time: The date and time that this user was last updated.
      - `deletedAt` string, date-time, nullable: The date and time that this user was deleted, if applicable.
      - `invitedBy` User (recursive)
    - `groups` Group[]
      - `id` string, uuid: Unique identifier for the object.
      - `name` string: The name of this group.
      - `description` string, nullable: A short description of this group.
      - `icon` string, nullable: An icon or emoji to use as the group icon.
      - `color` string, nullable: The color of the group icon in hex format.
      - `externalId` string, nullable: An identifier for this group in an external system, if linked.
      - `disableMentions` boolean: Whether mentioning this group is disabled.
      - `externalGroup` object, nullable: Details of the linked external group, if any.
      - `memberCount` number: The number of users that are members of the group
      - `createdAt` string, date-time: The date and time that this object was created
      - `updatedAt` string, date-time: The date and time that this object was last changed
    - `groupMemberships` GroupMembership[]
      - `id` string: Unique identifier for the object.
      - `groupId` string, uuid: Identifier for the associated group.
      - `documentId` string, uuid, nullable: Identifier for the associated document, if any.
      - `collectionId` string, uuid, nullable: Identifier for the associated collection, if any.
      - `permission` 'read' | 'read_write'
      - `createdById` string, uuid, nullable: Identifier for the user who created this membership.
      - `createdBy` User
        - `id` string, uuid: Unique identifier for the object.
        - `name` string: The name of this user, it is migrated from Slack or Google Workspace when the SSO connection is made but can be changed if necessary.
        - `avatarUrl` string, uri: The URL for the image associated with this user, it will be displayed in the application UI and email notifications.
        - `color` string: A color representing the user, used in the UI for avatars without an image.
        - `email` string, email: The email associated with this user, it is migrated from Slack or Google Workspace when the SSO connection is made but can be changed if necessary.
        - `role` 'admin' | 'member' | 'viewer' | 'guest'
        - `isSuspended` boolean: Whether this user has been suspended.
        - `lastActiveAt` string, date-time, nullable: The last time this user made an API request, this value is updated at most every 5 minutes.
        - `timezone` string, nullable: The timezone this user has registered.
        - `createdAt` string, date-time: The date and time that this user first signed in or was invited as a guest.
        - `updatedAt` string, date-time: The date and time that this user was last updated.
        - `deletedAt` string, date-time, nullable: The date and time that this user was deleted, if applicable.
        - `invitedBy` User (recursive)
      - `createdAt` string, date-time: The date and time that this membership was created.
      - `sourceId` string, uuid, nullable: Identifier for the membership this one was inherited from, if any.

## Other responses

- `400`: The request failed one or more validations.
- `401`: The API key is missing or otherwise invalid.
- `403`: The current API key is not authorized to perform this action.
- `404`: The specified resource was not found.
- `429`: The request was rate limited.

## Changes

- **2026-10-16** `c09b7940e788`: 1 info
  - added the optional property `data/groupMemberships/items/createdBy` to the response with the `200` status
- **2026-10-13** `527f5b8079a2`: 2 info
  - added the optional property `data/groups/items/color` to the response with the `200` status
  - added the optional property `data/groups/items/icon` to the response with the `200` status
- **2026-10-10** `f1f0340cb0d7`: 2 info
  - added the optional property `data/groupMemberships/items/createdAt` to the response with the `200` status
  - added the optional property `data/groupMemberships/items/createdById` to the response with the `200` status
- **2026-09-05** `6287bce7caad`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/defaulr/apis/outline-api/changes/groups.update_user/post.md)

---

[API](https://skmtc.dev/defaulr/apis/outline-api.md) - [All operations](https://skmtc.dev/defaulr/apis/outline-api/llms.txt) - [OpenAPI document](https://skmtc.dev/defaulr/apis/outline-api/revisions/5ddf01ffba84?raw)
