powered by

Manage app users and team members

List, find, invite, edit and delete the users who sign in to your app, add them to groups, and see how they differ from your project's team members.

Last updated

Two kinds of people use an Anythink project, and they are managed in different places. App users are the people who sign in to the app you build. Team members are the people who build it in the Anythink dashboard. This page covers both, then shows how to run your app's users: list and find them, invite them, fix a stuck account, change a role, add them to groups, edit their profile and remove them.

Every task is shown in the Anythink dashboard, with the CLI and with an AI assistant. Signing in, registration and passwords are on Sign in users. What a user may do is set by roles and permissions.

App users and team members

App users Team members
Who they are The people who use your app The people who build the project in the Anythink dashboard
How they join They register, or you create or invite them under Settings › Users You invite them from the project's Team Access in My Anythink
How they sign in Email and password, or social sign-in, in your app Their My Anythink account
Where you manage them Settings › Users, the CLI and the /users endpoints My Anythink. In the project they are read-only
Their role One of your project's roles The role chosen when they were invited

Both appear in the project's user list. The API marks a team member with "is_central_user": true. In the dashboard, team members are listed under MyAnythink Users and app users under Project Users.

Administrators are team members. The users API refuses to create an app user on an administrator role.

Add a team member

Team members are invited from the project's page in My Anythink, where you also choose their role and give them a dashboard seat. See Account, billing and projects for the steps.

In the Anythink dashboard

  1. In My Anythink, open the project and find Team Access.
  2. Select Invite User, enter their email address and choose a Role.
  3. Select Send Invitation. Once they accept, they appear under MyAnythink Users on Settings › Users.

With the CLI

Note: Team invitations are sent from My Anythink. Use the steps above. The CLI's user commands manage app users inside the project.

With an AI assistant (MCP)

Note: Team invitations are sent from My Anythink. Your assistant can walk you through the steps above.

List and find users

In the Anythink dashboard

  1. Open Settings › Users.
  2. Project Users lists your app users with their name, email, role, sign-in method, status, last login and dates. Select a name to open the user.
  3. Type in Search name or email to narrow the list.
  4. Use the quick filters Has subscriptions, Native sign-in, Password sign-in, Pending invites and New this week, and sort by Newest, Recently active or A–Z. Select Clear to reset them.

The status is Active once the user has set up their account, and Invite Sent until they have. You need anythink_users:read to see the page.

With the CLI

bash
anythink users list
anythink users get 42

users list prints every user's id, name, email and role. Find one by email with your shell:

bash
anythink users list | grep alice@example.com

For the full record, including status and sign-in details, call the API:

bash
anythink fetch /users/42
json
{
  "id": 42,
  "gid": "368f7b33-940e-4aad-a3d8-5a28215935bd",
  "is_central_user": false,
  "first_name": "Alice",
  "last_name": "Smith",
  "email": "alice@example.com",
  "is_active": true,
  "confirmed_at": "2026-10-04T13:31:50.114391Z",
  "invite_accepted_at": "2026-10-04T13:31:50.114391Z",
  "role_id": 104,
  "role_name": "Standard User",
  "auth_provider": null,
  "last_login_at": "2026-10-04T13:31:50.307407Z"
}

The response carries more fields than shown, including the role's permissions. is_active is false until an invited user accepts, or a user who must confirm their email does so.

With an AI assistant (MCP)

text
Find alice@example.com and tell me her role, whether she has signed in, and how she signs in.

The assistant runs users list to find her id, then fetch /users/42 for the details.

How a user signs in

The Auth column on Settings › Users, and Authentication on the user's page, show Password or the provider the user last signed in with: Apple, Google, GitHub or LinkedIn. The API returns the same value as auth_provider, which is null for email and password. See Social sign-in with Apple, Google, GitHub and LinkedIn.

Create or invite a user

Create a user without a password and Anythink emails them an invitation. The link lasts 7 days. They open it, enter their name and a password, and can then sign in. Until they do, they show Invite Sent. To let people register themselves instead, see Sign in users.

In the Anythink dashboard

  1. Open Settings › Users and select Create Project User.
  2. Enter the First Name, Last Name and Email, and choose a Role. The list holds your active roles, without administrator roles.
  3. Select Create User. Anythink sends the invitation.

With the CLI

Find the role's id, then create the user:

bash
anythink roles list
anythink fetch /users --method POST --body '{
  "first_name": "Alice",
  "last_name": "Smith",
  "email": "alice@example.com",
  "role_id": 104
}'
json
{
  "id": 42,
  "gid": "368f7b33-940e-4aad-a3d8-5a28215935bd",
  "first_name": "Alice",
  "last_name": "Smith",
  "email": "alice@example.com"
}

first_name and last_name are required and up to 50 characters. email is required, valid and up to 255 characters. role_id is the id of an existing role. The invitation goes out as part of the call.

With an AI assistant (MCP)

text
Invite alice@example.com, Alice Smith, as a Standard User.

The assistant runs roles list to find the role's id, then creates the user with fetch /users.

Status Message Cause
201 The new user's id, gid, names and email The user was created and the invitation sent.
400 Admin users cannot be created The role is an administrator role.
400 Role does not exist role_id isn't a role in this project.
400 A message that the user already exists A user with that email is already in the project.
400 A message that the Monthly Active User quota is reached Your plan's allowance is used up. See Limits and quotas.
400 validation errors A field broke a rule above.

Creating a user fires the UserInvited event, so a workflow can send a welcome message or set up their records. See Triggers and scheduling.

Resend an invitation or confirm an email address

A user can be waiting on one of two emails. An invitation is sent when you create them without a password, and lasts 7 days. A confirmation is sent when your project requires new users to confirm their email address, and lasts 24 hours. The email comes from your project's templates: see Email templates.

In the Anythink dashboard

Open the user from Settings › Users. The buttons depend on where they are:

The user The page offers
Hasn't accepted an invitation Resend Invitation Email, and an Invite Status card with the expiry and Copy Invite Link
Hasn't confirmed their email Resend Confirmation Email and Mark as Confirmed
Is set up Send Password Reset

Mark as Confirmed makes the user active without waiting for the email. Copy Invite Link is also in a pending user's row menu on the list. Use it when the email doesn't arrive: send the link to the person yourself.

With the CLI

bash
anythink fetch /users/42/send-invitation-email --method POST
anythink fetch /users/42/send-confirmation-email --method POST
anythink fetch /users/42/mark-as-confirmed --method POST

Each returns 204 No Content. Use the first for a user who hasn't accepted their invitation yet, and the second for one who hasn't confirmed. A user who has already accepted gets 400 User already accepted invite, and one who has already confirmed gets 400 User is already confirmed.

With an AI assistant (MCP)

text
Resend the invitation to user 42, or mark user 43 as confirmed.

The assistant calls POST /users/42/send-invitation-email or POST /users/43/mark-as-confirmed through fetch.

Edit a user and change their role

You can change a user's name and role. The email address stays as it was.

In the Anythink dashboard

  1. Open Settings › Users and select the user.
  2. Under Edit User, change the First Name, Last Name or Role.
  3. Select Update User.

The role list holds your active roles, without administrator roles. The change applies to the user's next request, so they don't need to sign in again. See Roles and permissions.

With the CLI

There's no users update command, so call the API. It saves all three values, so send the user's current names with the new role:

bash
anythink roles list
anythink fetch /users/42 --method PUT --body '{
  "first_name": "Alice",
  "last_name": "Smith",
  "role_id": 133
}'

It returns 200. first_name, last_name and role_id are all required, and a role_id that isn't a role in the project returns 400 Role does not exist.

With an AI assistant (MCP)

text
Move user 42 to the editor role.

The assistant looks up the role's id with roles list, reads the user's current name with users get 42, then sends the update through fetch.

Team members aren't edited here. Their name and role are managed in My Anythink.

Add a user to a group

A group is a set of users you grant records to once, for example a team or a class. The user's page shows their Group memberships, a list of the groups they are in. You add them from the group.

In the Anythink dashboard

  1. Open Settings › Groups and select the group.
  2. Under Members, select Add member.
  3. Choose the User and a Role, then select Add member.

With the CLI

bash
anythink fetch /groups/5/members --method POST --body '{"user_id":42,"role_id":104}'
anythink fetch /groups/by-user/42

The second command lists the groups user 42 is in.

With an AI assistant (MCP)

text
Add user 42 to the group called Team North, with the Standard User role.

The assistant finds the group and the role with fetch /groups and roles list, then adds the member.

Group grants only count once Enable group-level row access is on under Settings › Organisation Settings. The groups API needs the anythink_groups permissions, which administrators have and no other role gets by default. Groups and row-level security covers all of it.

User profiles

Each app user has a profile that holds who they are in your app: a preferred name, an avatar, a timezone and a locale, and whether they agreed to marketing. Anythink creates it when the user is created, and fills in how they found you if the app sent signup_context at registration.

Field What it holds
preferred_name The name to show, up to 512 characters.
avatar_file_id The id of an image in your project's files, or null.
timezone, locale Free text, such as Europe/London and en-GB.
marketing_consent true, false or null for not asked. marketing_consent_at records when it last changed.
utm_source, utm_medium, utm_campaign, utm_term, utm_content, referrer, signup_country, signup_ip Where the user came from. Set at registration and read-only.

In the Anythink dashboard

  1. Open Settings › Users and select the user.
  2. Open the Profile panel and select Edit.
  3. Change the Preferred name, Timezone, Locale or Marketing consent (Not asked, Given or Declined). Use Pick image to choose an avatar.
  4. Select Save.

The panel also shows the attribution and signup details, which can't be edited.

With the CLI

bash
anythink fetch /user-profiles/by-user/42
anythink fetch /user-profiles/by-user/42 --method PUT --body '{
  "preferred_name": "Alice",
  "avatar_file_id": null,
  "timezone": "Europe/London",
  "locale": "en-GB",
  "marketing_consent": true
}'

The update replaces the profile, so send all five fields. Leave one out and the call returns 400 and changes nothing. Read the profile first and send back the values you aren't changing. To page through every profile, call GET /user-profiles?page=1&page_size=25.

With an AI assistant (MCP)

text
Set Alice's timezone to Europe/London and her locale to en-GB. Keep everything else on her profile as it is.

The assistant reads her profile with fetch /user-profiles/by-user/42, then sends the update with all five fields.

Profiles are visible to administrators. To let your app's users read and edit their own, give their role anythink_user_profiles:read and anythink_user_profiles:update. A user with those permissions can then reach only their own profile: another user's profile and the full list return 403.

Delete a user

Deleting removes the user from the project, along with their group memberships and record grants. There's no per-user deactivate switch. A user is inactive only until they accept an invitation or confirm their email, so deleting is how you end someone's access. You can invite the same address again later.

In the Anythink dashboard

  1. Open Settings › Users.
  2. Open the menu at the end of the user's row and choose Delete, then confirm.

To remove several, tick their rows and select Delete with the count shown in the bar above the list. You can't delete yourself, and team members have no delete action.

With the CLI

bash
anythink users delete 42 --yes
text
✓ User 42 deleted.

Without --yes the CLI asks you to confirm.

With an AI assistant (MCP)

text
Delete user 42.

The assistant runs users delete 42 --yes, or calls DELETE /users/42 through fetch.

Permissions

To Permission
See users anythink_users:read
Create and invite users anythink_users:create
Edit users, resend emails and mark as confirmed anythink_users:update
Delete users anythink_users:delete
Read and edit profiles anythink_user_profiles:read and :update
Manage groups and their members anythink_groups

Project administrators have all of these. The user permissions aren't on Standard User, so a role for your app's own users shouldn't hold them. See Permissions reference.

Limits

Limit Detail
Administrators They are team members. An app user can't be created on an administrator role.
Names and email 50 characters for each name, 255 for the email. One user per email address in a project.
Invitation Valid for 7 days. Resending sends a fresh link.
Confirmation Valid for 24 hours.
Monthly active users Set by your plan. Creating a user over the allowance returns 400.
Deactivating Not available. Delete the user instead.
User list Returns every user in one response, so the dashboard searches and sorts what it loaded.
Editing Name and role only. The email address can't be changed.
Team members Read-only in the project. Manage them in My Anythink.
Profiles One per user. An update replaces all five editable fields.

Next steps