Skip to main content
POST
cURL
Invites a list of people in one call. Every entry behaves exactly like a single Invite User request: an address with no outstanding invitation is invited, and one that already has an invitation gets it resent — with a role change if the role differs. This is the common integration case for onboarding a team from a list.
All-or-nothing. One bad entry undoes the whole batch: nothing is written and nobody is emailed. Applying some entries and reporting the rest would make a retry ambiguous, and re-sending the batch would mail everyone who already succeeded a second time.

Request body

Each entry in invitations accepts:
Each entry behaves exactly like a single Invite User request, so the same fields and validation rules apply.

Response

Returns 200 OK with a summary of what the batch did, split by what happened to each address.
invited and resent together always account for every entry you sent.

Example

Python example: onboard a team from a list

Resending

Sending the same batch again is safe and is how you chase people who have not accepted. Nobody is duplicated: addresses that already have an invitation come back under resent with a fresh expiry, and their existing groups and grants are untouched.
If an entry names a different role than the outstanding invitation has, the resend moves the person to it — on both the invitation and their pending membership. Moving an existing admin or owner requires an owner.

Authentication

This endpoint requires an API key in the x-api-key header. Only an owner or an admin can invite, and nobody can invite somebody to a role above their own. For an API key, that ceiling is read from the role of the user who created the key.

Errors

Every one of these rejects the whole batch.
Because one bad entry rejects everything, a long list built from an external source is worth filtering first — drop addresses that are already members, and de-duplicate. A rejected batch tells you what was wrong, but it writes nothing.

Authorizations

x-api-key
string
header
required

API Key authentication. Format: 'x-api-key: api_key'

Body

invitations
object[]
required

The people to invite.

Response

200 - application/json

What a bulk invite did, split by what happened to each address.

message
string
required

Human-readable summary of what the bulk invite did.

invited
string<email>[]
required

Addresses that had no outstanding invitation and now do.

resent
string<email>[]
required

Addresses whose outstanding invitation was re-sent.