---
title: "Set Member"
method: POST
path: "/accounts/tenants/{tenant_id}/members"
---

# Set Member

`POST /accounts/tenants/{tenant_id}/members`

## Request

- Base URL: `https://api-docs.session-exchange.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api-docs.session-exchange.com/accounts/tenants/{tenant_id}/members`
- Auth: none declared

Grant/change a user's role in a tenant. Caller must be owner/admin of the tenant
(or a global admin).

Body `{user_id, role}` changes an existing MEMBER's role (the id comes from the member list);
for someone who is not a member yet it is 409 `not_a_member` (RR01-SEC-B05) — except for a
global admin. Body `{email, role}` never grants on the spot (accounts:NF-10): it records a
pending invite and mails a single-use accept link to that address (#987 A, collector/invite_links.py),
and answers 202 with the same shape whether or not the email belongs to an account (no enumeration).

## Path parameters

- `tenant_id` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/session-exchange/apis/a4sx.md) · [All operations](https://skmtc.dev/session-exchange/apis/a4sx/llms.txt) · [OpenAPI document](https://skmtc.dev/session-exchange/apis/a4sx/revisions/abaefc33dfc7?raw)
