---
title: "Invite app users"
method: POST
path: "/api/apps/{app_id}/users/invite-users"
---

# Invite app users

`POST /api/apps/{app_id}/users/invite-users`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Invites people to the app by email. Each address gets an invitation email with a link to the app.

Set `role` to the role they get in the app, `user` unless you say otherwise. Set `collaborator_role` to `editor` to also let them edit the app in Base44. An editor invitation only goes to members of the app's workspace unless you also set `add_as_guest`, which adds anyone else to the workspace as a guest. Only workspace editors and admins can add guests.

An invitation that fails doesn't fail the call. You get a 200 with one entry per address in `results`, so check `success` on each. Invited people appear in [List app users](/api-reference/list-app-users) once they sign in to the app.

Every address counts toward the app's daily invitation allowance, which depends on your plan, including addresses whose invitation then fails. A call that would go over it is refused with a 429 and sends nothing.

<Note>This endpoint accepts a personal API key belonging to a user with editor access to the app. A read-only key is refused, and workspace API keys are not accepted.</Note>

## Path parameters

- `app_id` string, required — ID of the app to invite the users to.

## Request body

- object
  - `user_emails` string[], required — Email addresses to invite, up to 50 per call.
  - `role` string — Role the invited people get in the app, such as `user` or `admin`. It isn't checked against the roles the app defines.
  - `collaborator_role` 'editor' — Set to `editor` to also let them edit the app in Base44.
  - `add_as_guest` boolean — With `collaborator_role` set to `editor`, adds anyone outside the app's workspace to it as a guest instead of failing their invitation.

## Response `200`

The outcome of each invitation.

- InviteUsersResponse — The outcome of each invitation, in the order you sent them.
  - `results` InviteUserResult[], required — One entry per address you sent.
    - `email` string, required — The address, as you sent it.
    - `success` boolean, required — Whether the invitation was sent.
    - `error` string, nullable — Why the invitation wasn't sent. Only present when `success` is `false`.
    - `error_code` string, nullable — `not_workspace_member` when an editor invitation went to someone outside the app's workspace. Send it again with `add_as_guest` set to add them. Absent for every other failure.
    - `has_pending_invitation` boolean, nullable — Whether that person already has an invitation to the workspace waiting. Only present with `not_workspace_member`.

## Other responses

- `401` — Missing or invalid credentials.
- `403` — You don't have editor access to this app, the app is blocked, your API key is read-only, or you're a workspace viewer inviting an admin or an editor.
- `404` — App not found.
- `422` — `user_emails` is missing or has more than 50 addresses, or `collaborator_role` isn't `editor`.
- `429` — Too many invitations. The base limit is 6 requests per minute. A personal API key shares it with every invitation call made with keys in the same workspace, across all its apps. The app's daily invitation allowance also applies. See [Rate limits](/developers/references/apps-api/get-started/rate-limits) for the multiplier your plan gets.

## Changes

- **2026-09-27** `5e69adeb8667` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/base44/apis/base44-app-management-api/changes/api/apps/:app_id/users/invite-users/post.md)

---

[API](https://skmtc.dev/base44/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/base44/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/base44/apis/base44-app-management-api/revisions/5e69adeb8667?raw)
