---
title: "Change a member's role or brand list"
method: PATCH
path: "/api/team/members/{id}"
---

# Change a member's role or brand list

`PATCH /api/team/members/{id}`

## Request

- Base URL: `https://postwire.io`
- URL: `https://postwire.io/api/team/members/{id}`
- Auth: HTTP bearer

Owner or admin; never the owner (ownership moves with POST /api/team/transfer). Only a person signed in to the dashboard (its session key plus X-PostWire-Source: dashboard): an API key or an AI connector gets 403 team_requires_human, even an admin's. brand_ids applies to editor, contributor, approver and viewer; [] = every brand.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `role` 'admin' | 'editor' | 'contributor' | 'approver' | 'viewer': admin: everything except billing and ownership. editor: write, schedule, publish within approval rules. contributor: drafts and schedules, every post waits for approval. approver: only the approvals inbox. viewer: read-only.
  - `brand_ids` string[]: Only these brands of the workspace (editor, contributor, approver, viewer). Empty or omitted = every brand.

## Response `200`

{ ok, member: { account_id, role, brand_ids } }

## Other responses

- `409`: owner

---

[API](https://skmtc.dev/postwire/apis/postwire-api.md) · [All operations](https://skmtc.dev/postwire/apis/postwire-api/llms.txt) · [OpenAPI document](https://skmtc.dev/postwire/apis/postwire-api/revisions/513a409ab8f7?raw)
