---
title: 'flexkit members'
description: 'List project members, invite people by email, change roles, remove members and cancel pending invitations from the terminal.'
---

# `flexkit members`

Manages the people in a project: the same members and invitations as **Members** in the Dashboard (see [members and permissions](/docs/dashboard/members) for what each role can do). Use it to onboard a team from a script, hand over ownership, or clean up invitations nobody accepted.

## Synopsis

```bash
flexkit members <subcommand> [arguments] [options]
```

Running `flexkit members` without a subcommand runs `flexkit members ls`. Wherever a command takes `<member>`, you can pass the member's user id or their email address.

Project roles are `owner`, `developer`, `contributor`, `editor` and `viewer`.

## `members ls`

List the members of the project with their roles, owners first. People who were invited but haven't accepted yet are listed by `members invitations`. Alias: `list`.

```bash
flexkit members ls [--role <list>] [--json]
```

### Examples

```bash
# List members
flexkit members ls

# Only owners and developers
flexkit members ls --role owner,developer

# Every member's email
flexkit members ls --json | jq -r '.members[].email'
```

## `members invite`

Invite one or more people by email with a role (default `viewer`). Someone without a Flexkit account gets an invitation email; someone with an account is added right away. Inviting a person who is already a member with another role changes their role. Each new member takes a seat: when the plan's member limit is reached, the remaining emails are reported as not invited. Alias: `add`.

```bash
flexkit members invite <email...> [--role <role>] [--json]
```

Emails can be separate arguments or separated by commas. Up to 50 people per command.

### Examples

```bash
# Invite a viewer
flexkit members invite ana@acme.com

# Invite two developers
flexkit members invite ana@acme.com ben@acme.com --role developer

# Invite everyone listed in a file, one email per line
flexkit members invite $(cat team.txt) --role editor
```

If some emails were added and others were not (already members, no seats left), the command prints the added members and a warning naming the others, and still exits with code 0. It exits with code 1 when nobody could be added.

## `members role`

Change a member's role.

```bash
flexkit members role <member> <role> [--json]
```

### Examples

```bash
# Make a member a developer
flexkit members role ana@acme.com developer

# Hand over ownership, then step down
flexkit members role ben@acme.com owner
flexkit members role me@acme.com developer

# By user id
flexkit members role 3f9c2a1e-8d4b-4c7a-9e2f-5b6a7c8d9e0f viewer
```

## `members rm`

Remove a member from the project. The command asks for confirmation; pass `--yes` in scripts. Removing yourself leaves the project. Alias: `remove`.

```bash
flexkit members rm <member> [--yes] [--json]
```

### Examples

```bash
# Remove a member
flexkit members rm ana@acme.com

# Remove without a prompt
flexkit members rm 3f9c2a1e-8d4b-4c7a-9e2f-5b6a7c8d9e0f --yes
```

## `members invitations`

List pending invitations: people invited by email who haven't accepted yet, with the role they will get and who invited them. Alias: `invites`.

```bash
flexkit members invitations [--json]
flexkit members invitations cancel <id|email> [--yes] [--json]
```

`invitations cancel` withdraws an invitation by its id or the invited email, after a confirmation (skip it with `--yes`). The person will not join this project. Their pending account is deleted, unless they also belong to another project; then only the invitation to this project is withdrawn.

### Examples

```bash
# List pending invitations
flexkit members invitations

# Cancel an invitation by email
flexkit members invitations cancel ana@acme.com

# Cancel every pending invitation, in a script
flexkit members invitations --json | jq -r '.invitations[].id' | xargs -n1 flexkit members invitations cancel --yes
```

## Options

| Option                 | Subcommands                | Description                                                                                |
| ---------------------- | -------------------------- | ------------------------------------------------------------------------------------------ |
| `--role <list>`        | `ls`                       | Only these roles, comma separated, for example `owner,developer`.                          |
| `--role <role>`, `-r`  | `invite`                   | Role to give: `owner`, `developer`, `contributor`, `editor` or `viewer`. Default `viewer`. |
| `--yes`, `-y`          | `rm`, `invitations cancel` | Skip the confirmation prompt.                                                              |
| `--json`               | all                        | Print JSON on stdout.                                                                      |
| `--project <ID>`, `-p` | all                        | Project to use. Default: the [linked](/docs/cli/link) project.                             |

See also the [global options](/docs/cli/global-options).

## Permissions

- **Needs a signed-in user.** Run [`flexkit login`](/docs/cli/login); project API tokens (`FLEXKIT_TOKEN`, `--token`) can't list or manage members, even with the Owner role.
- `ls` and `invitations` (listing) work for every member.
- `invite`, `role` and `invitations cancel` need the **Owner** or **Developer** role.
- `rm` works for every member on themselves; removing someone else needs the **Owner** or **Developer** role.
- You can't give more than you have: only an **Owner** can invite owners, make someone an owner, or change or remove another owner.
- A project always keeps at least one owner: the last owner can't be removed or given another role. Make someone else an owner first.


---

[View full sitemap](/docs/sitemap.md)
