---
title: "Add Member"
method: POST
path: "/groups/{id}/members"
tags: ["groups"]
---

# Add Member

`POST /groups/{id}/members`

## Request

- Base URL: `https://api.instruxi.dev/api/v1/enforcer`
- URL: `https://api.instruxi.dev/api/v1/enforcer/groups/{id}/members`
- Auth: one of:
  - API key in header `Authorization`
  - API key in header `X-API-Key`

Adds one account to a group by account_id (ResourceAuth write on the group), optionally in a role (member, the default, or manager); an existing member keeps their role and joined_at — PATCH the membership to change the role. 400 invalid_role on any other role. 403 cross_tenant_member if the target account is not in the group's tenant — group membership never spans tenants. 403 group_type_reserved on a group of a RESERVED type unless the caller holds the tenant_manage grant. 409 group_archived on an archived group.

## Path parameters

- `id` string, required

## Request body

- InternalDeliveryHttpHandlerMemberRequest
  - `account_id` string
  - `role` 'member' | 'manager': Role is the capacity the member joins in: member (default) or manager. Ignored for an account that is already a member — use PATCH to change it.

## Response `201`

Created

- InternalDeliveryHttpHandlerOKResponse
  - `success` boolean

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `409`: Conflict

---

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