---
title: "Update a member"
method: PATCH
path: "/api/space/members/{id}"
tags: ["Space Members"]
---

# Update a member

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

Changes a member's name, role, or job title. `PUT` is accepted on the same path with
identical semantics.

The owner's role cannot be changed (`cannot_change_the_owners_role`), and `owner`
cannot be assigned to anyone else.

#### Permissions

Authenticate with a [Personal access token](/docs/apis/authorization#personal-access-tokens) whose holder is an owner or admin of the space. A project API token is not accepted on this endpoint, and a Personal access token has no scopes: the holder's role in the space is the whole authorization decision.

## Path parameters

- `id` string, uuid, required — Universal Unique Identifier.

## Request body

- SpaceUpdateMemberRequest — Request body for updating a member.
  - `name` string, required — The member's name.
  - `role` 'admin' | 'employee' — The roles that may be assigned through the API. `owner` cannot be assigned, and the owner's role cannot be changed.
  - `job_title` 'entrepreneur' | 'product_manager' | 'developer' | 'other' — A member's job title.

## Response `200`

The request has succeeded.

- SpaceMember — A membership in the space.
  - `type` 'member', required — The object type. Always `member`.
  - `id` string, uuid, required — Universal Unique Identifier.
  - `email` string, required — The member's email address.
  - `name` string, nullable, required — The member's name, or `null` when none was given.
  - `role` 'owner' | 'admin' | 'employee' | 'guest', required — A member's role in the space.
  - `job_title` 'entrepreneur' | 'product_manager' | 'developer' | 'other', required — A member's job title.
  - `activated` boolean, required — Whether the member has accepted the invitation. `false` until the invitation is accepted.
  - `last_logged_in` string, date-time, nullable, required — The date and time the member last signed in, or `null` if they never have.
  - `created_at` string, date-time, required — The date and time when the membership was created.
  - `updated_at` string, date-time, required — The date and time when the membership was last updated.

## Other responses

- `400` — The request body is not valid JSON.
- `401` — The credential is missing, unknown, or revoked; its holder is not a member of the space in the subdomain; or the member is not an owner or admin. The body is the plain text `Unauthorized`. An unverified space instead receives the JSON body `{"message": "Please validate a phone number to access your account."}` on every endpoint under `/api/space`.
- `404` — The member, project, or payment method does not exist in this space. The body is the plain text `Not Found`.
- `422` — The `role` is not `admin` or `employee` (`invalid_role`), the `job_title` is not one of the allowed values (`invalid_job_title`), or the update tried to change the space owner's role (`cannot_change_the_owners_role`).
- `500` — An internal server error occurred.

## Changes

> 161 revisions in range; 3 could not be searched.

- **2026-09-15** `45bac4fd93ab` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/signalwire/apis/signalwire-rest-api/changes/api/space/members/:id/patch.md)

---

[API](https://skmtc.dev/signalwire/apis/signalwire-rest-api.md) · [All operations](https://skmtc.dev/signalwire/apis/signalwire-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signalwire/apis/signalwire-rest-api/revisions/20ee0f568ece?raw)
