---
title: "Invite workspace member"
method: POST
path: "/api/workspace/invitations/invite"
---

# Invite workspace member

`POST /api/workspace/invitations/invite`

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

Invites someone to a workspace by email. The invitee gets an email with a link to join, and a notification in Base44 if they already have an account. The link works for 60 days.

`role` is the role they get when they accept. Set `group_id` to add them to a custom group when they accept.

You can't invite an existing member, or someone whose invitation is still pending. Send a pending invitation again with [Resend workspace invitation](/api-reference/resend-workspace-invitation). Inviting someone whose invitation expired sends a new one.

A `200` means the invitation was saved. It doesn't confirm the email was sent: if sending fails, the invitation still stands and you can send it again with Resend workspace invitation. The response body is `null`.

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

- InviteMemberRequest — An invitation to join a workspace.
  - `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`

The invitation was saved. The body is `null`.

- unknown

## Other responses

- `400` — The person is already a member or already has a pending invitation, or `group_id` is an identity-provider group.
- `401` — Missing or invalid credentials.
- `402` — `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` — `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-05** `8a09a50ea8c9` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/idealspot/apis/base44-app-management-api/changes/api/workspace/invitations/invite/post.md)

---

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