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

# Members

> Manage team members in your organization

# Members

Members are the admin users in your organization who can create assessments, invite candidates, and review scores. Members have one of three roles: **owner**, **admin**, or **reviewer**.

| Role         | Permissions                                                                     |
| ------------ | ------------------------------------------------------------------------------- |
| **Owner**    | Full access. Can manage members, billing, and all settings.                     |
| **Admin**    | Can create/edit assessments, invite candidates, review scores, manage API keys. |
| **Reviewer** | Read-only access to assessments, sessions, and scores.                          |

## List Members

```
GET /api/members
```

<Info>Requires admin role (owner or admin).</Info>

<Accordion title="Response">
  ```json theme={null}
  {
    "members": [
      {
        "id": "uuid",
        "email": "alice@company.com",
        "name": "Alice Chen",
        "role": "owner",
        "createdAt": "2025-01-10T09:00:00Z"
      }
    ]
  }
  ```
</Accordion>

***

## Invite Member

```
POST /api/members
```

Invites a new member to your organization. They'll receive an email with a magic link to join.

<ParamField body="email" type="string" required>
  Email address of the person to invite
</ParamField>

<ParamField body="role" type="string" default="reviewer">
  Role to assign: `owner`, `admin`, or `reviewer`
</ParamField>

<ParamField body="sendEmail" type="boolean" default="true">
  When `false`, the member is created but Gradient does not send the magic-link invitation email — deliver your own using the member's email. The response's `inviteEmailSent` reflects what actually happened.
</ParamField>

<Accordion title="Response - 201 Created">
  `name` defaults to the email's local part (before the `@`) until the member sets their own; `inviteEmailSent` reports whether the invitation email was sent.

  ```json theme={null}
  {
    "member": {
      "id": "uuid",
      "email": "bob@company.com",
      "name": "bob",
      "role": "admin",
      "createdAt": "2025-01-15T10:00:00Z"
    },
    "inviteEmailSent": true
  }
  ```
</Accordion>

***

## Update Member Role

```
PATCH /api/members/:id
```

<ParamField body="role" type="string" required>
  New role: `owner`, `admin`, or `reviewer`
</ParamField>

<Accordion title="Response">
  ```json theme={null}
  {
    "member": {
      "id": "uuid",
      "email": "bob@company.com",
      "role": "admin"
    }
  }
  ```
</Accordion>

***

## Resend Member Invite

```
POST /api/members/:id/resend
```

Resends the invitation email to a member who hasn't yet accepted.

<Accordion title="Response">
  ```json theme={null}
  {
    "ok": true
  }
  ```
</Accordion>

***

## Remove Member

```
DELETE /api/members/:id
```

Removes a member from your organization. You cannot remove yourself.

<Warning>An organization must always have at least one owner.</Warning>

<Accordion title="Response">
  ```json theme={null}
  {
    "ok": true
  }
  ```
</Accordion>
