> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Add Team Members

> Adds one or more new members to a team by email address.

# Add Team Members

Adds one or more members to a team by providing their full names and email addresses. Each new member is assigned the specified membership plan with the given start date. A maximum of 25 members can be added in a single request.

## Authentication

Requires a valid customer bearer token. The customer must be a team administrator of the specified team.

## Path Parameters

<ParamField path="teamId" type="number" required>
  Numeric identifier of the team. Returned as `Id` from [`GET /api/public/teams/my`](/api/endpoints/teams/list-teams).
</ParamField>

## Request Body

<ParamField body="TariffId" type="number" required>
  ID of the membership plan to assign to the new members. Obtain available plans from the team's default tariff or from the plans list.
</ParamField>

<ParamField body="FullNames" type="string[]" required>
  Array of full names for each new member. Must have the same number of entries as `Emails`.
</ParamField>

<ParamField body="Emails" type="string[]" required>
  Array of email addresses for each new member. Must have the same number of entries as `FullNames`. Each entry must be a valid email address.
</ParamField>

<ParamField body="StartDate" type="string" required>
  ISO 8601 date for when the new members' plans should begin.
</ParamField>

## Response

Returns HTTP `200 OK` with an empty body on success.

## Examples

### Add two members to a team

```http theme={null}
POST /api/public/teams/55/members
Authorization: Bearer {token}
Content-Type: application/json
```

```json theme={null}
{
  "TariffId": 301,
  "FullNames": ["Alice Johnson", "Carlos Rivera"],
  "Emails": ["alice@example.com", "carlos@example.com"],
  "StartDate": "2025-02-01T00:00:00.000Z"
}
```

```
Status: 200 OK
Body: (empty)
```

## TypeScript Integration

```typescript theme={null}
import { endpoints } from '@/api/endpoints'

await httpClient.post(endpoints.teams.addMembers(teamId), {
  TariffId: 301,
  FullNames: ['Alice Johnson'],
  Emails: ['alice@example.com'],
  StartDate: new Date().toISOString(),
})
```

## Usage in Portal

| Context                                     | Source file                                                     |
| ------------------------------------------- | --------------------------------------------------------------- |
| Add member modal (`/team/members/{teamId}`) | `src/views/user/team/members/components/TeamMemberAddModal.tsx` |

## Error Responses

<ResponseField name="401 Unauthorized" type="error">
  The customer is not authenticated or the session has expired.
</ResponseField>

<ResponseField name="403 Forbidden" type="error">
  The customer is not an administrator of the specified team.
</ResponseField>

<ResponseField name="400 Bad Request" type="error">
  Validation error — for example, mismatched array lengths for `FullNames` and `Emails`, more than 25 members, or invalid email format.
</ResponseField>

<ResponseField name="404 Not Found" type="error">
  Team with the specified ID does not exist.
</ResponseField>

## Related Endpoints

| Method   | Endpoint                                            | Description                 |
| -------- | --------------------------------------------------- | --------------------------- |
| `DELETE` | `/api/public/teams/{teamId}/members/{coworkerId}`   | Remove a member from a team |
| `GET`    | `/api/public/teams/my`                              | List the customer's teams   |
| `GET`    | `/api/public/teams/{teamId}/profile`                | Full team profile           |
| `PUT`    | `/api/public/teams/{teamId}/permissions/{memberId}` | Update member permissions   |
