---
title: "Invite workspace members in bulk"
method: POST
path: "/api/workspace/invitations/bulk-invite"
---

# Invite workspace members in bulk

`POST /api/workspace/invitations/bulk-invite`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/workspace/invitations/bulk-invite`
- Auth: HTTP bearer

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

Invites up to 50 people to a workspace at once, the same way as [Invite workspace member](/api-reference/invite-workspace-member).

The whole request is refused when a `role` or `group_id` isn't allowed. Otherwise each invitation succeeds or fails on its own, so a `200` doesn't mean every invitation went out. Check `failed`, which lists existing members, people with a pending invitation, and invitations that couldn't be saved or emailed.

Retrying is safe: invitations that went out the first time come back in `failed` as already pending.

Inviting is limited to 6 requests per minute, shared by [Invite workspace member](/api-reference/invite-workspace-member), [Invite workspace members in bulk](/api-reference/invite-workspace-members-in-bulk), [Resend workspace invitation](/api-reference/resend-workspace-invitation), and [Resend workspace invitations in bulk](/api-reference/resend-workspace-invitations-in-bulk). A signed-in session has its own limit, and every personal access token for the workspace shares one. Some workspaces have a different limit.

<Note>Call this as an owner or admin of the workspace, with a personal access token for that workspace sent as a Bearer token, or from a signed-in session. A read-only token is refused, and workspace API keys aren't accepted.</Note>

## Query parameters

- `workspaceId` string, required: ID of the workspace. With a personal access token, use the token's workspace. Get it from `organization_id` in [Get app](/api-reference/get-app).

## Request body

- BulkInviteRequest: Invitations to send in one request.
  - `invitations` BulkInvitationItem[], required: The people to invite, 1 to 50. Each email can appear once.
    - `approve_external_recipient` boolean: Explicit school owner/admin approval for this recipient outside verified FERPA school domains.
    - `email` string, required: Email of the person to invite.
    - `role` 'admin' | 'editor' | 'viewer': Role the invitee gets when they accept. Defaults to `viewer`. `admin` needs the Business plan or higher.
    - `group_id` string, nullable: ID of a custom group to add the invitee to when they accept. Get it from [List workspace groups](/api-reference/list-workspace-groups). Needs a plan that includes groups.

## Response `200`

Which invitations went out.

- BulkInvitationResult: Which invitations went out.
  - `total_sent` integer, required: Number of invitations sent, the length of `successful`.
  - `successful` string[], required: Emails an invitation was sent to.
  - `failed` FailedInvitation[], required: Invitations that weren't sent, with the reason. Empty when every invitation went out.
    - `email` string, required: Email the invitation was for.
    - `error` string, required: Why it wasn't sent. Its wording can change, so don't parse it.
    - `requires_resend` boolean: True when the invitation is saved but its email was not sent. Use the resend endpoint instead of creating it again.

## Other responses

- `400`: A `group_id` is an identity-provider group.
- `401`: Missing or invalid credentials.
- `402`: A `group_id` is set and the workspace's plan doesn't include groups.
- `403`: You aren't an owner or admin of the workspace, your token is for a different workspace or is read-only, your credential can't be used on this endpoint, or `role` is `admin` and the workspace's plan doesn't allow admins.
- `404`: A `group_id` isn't a group in this workspace.
- `409`: Your workspace requires an unlocked SSO session.
- `422`: Validation Error
- `429`: Rate limit exceeded.

## Changes

- **2026-10-15** `5026ff473275`: 2 info
  - added the new optional request property `invitations/items/approve_external_recipient`
  - added the optional property `failed/items/requires_resend` to the response with the `200` status
- **2026-10-11** `80287813ab84`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-05** `8a09a50ea8c9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/base44/apis/base44-app-management-api/changes/api/workspace/invitations/bulk-invite/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/c534f09cf314?raw)
