---
title: "Add a member to a team"
method: POST
path: "/api/v1/teams/{teamId}/members"
tags: ["TeamMembers"]
---

# Add a member to a team

`POST /api/v1/teams/{teamId}/members`

## Request

- Base URL: `https://charm.ing`
- URL: `https://charm.ing/api/v1/teams/{teamId}/members`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `__Secure-better-auth.session_token`

User-gated (`chrm_user_*` or session); caller must be a team owner/admin, and only an owner may grant the `owner` role. The grantee (handle or email) must already hold a Charming account.

## Path parameters

- `teamId` string, required

## Request body

- object
  - `grantee` string, required: Handle or email of the new member.
  - `role` 'owner' | 'admin' | 'member'

## Response `201`

Member added.

- TeamMemberAddResponse
  - `ok` true, required
  - `userId` string, required
  - `role` 'owner' | 'admin' | 'member', required

## Other responses

- `400`: Invalid body or role.
- `401`: Sign-in required.
- `403`: Caller may not add members (or may not grant owner).
- `404`: No Charming account for the grantee.
- `409`: Already a member.

---

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