invite(body: MemberInvite, options?: RequestScope): Promise<InviteResource>Creates a pending invite and emails it. This does not create a member, so the resolved value is an InviteResource, not a MemberResource: the person becomes a member only when they accept, and until then they live in the invites namespace. Invites expire 3 days after they are sent.
roleId must be a role id from the roles namespace, the id field of a role and not its name. The owner role can never be handed out this way. The email is sent synchronously and the invite is rolled back if delivery fails, so a resolved promise means the provider accepted the message.
Seats are plan limited and pending invites count against the limit. Free and Dev workspaces allow 1 member in total, Team seats 15 and Enterprise has no seat limit, so on Free and Dev every invite fails with member.seat_limit until the workspace upgrades.
Example
const roles = await envless.roles.listAll()
const viewer = roles.find((role) => role.systemKey === 'viewer')
if (viewer) {
const invite = await envless.members.invite({ email: 'dev@example.com', roleId: viewer.id })
console.log(invite.id, invite.status, invite.expiresAt)
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
body.email | string | Yes | Address to invite, normalised to lowercase by the API. |
body.roleId | string | Yes | Role id from the roles namespace to grant on acceptance. |
options.signal | AbortSignal | No | Cancels the request. |
Returns
InviteResource with the invite id, email, status, role and expiresAt.
Worth knowing
- Inviting the key owner themselves is rejected outright (
member.self_invite). - A second invite to the same address fails with
invite.already_pending, and an address that already belongs to a member fails withmember.already_exists. - An unknown
roleIdcomes back asrole.not_found, and the owner role asrole.owner_not_assignable.
Required scopes
members:write
Underlying endpoint
POST /members
Request and response schema, every error code, and a live playground.
In Python
envless.members.invite()
The same method in envless-sdk, the Python SDK, with the same request, retries and errors.
In Ruby
Envless.members.invite
The same method in envless-sdk, the Ruby gem, with the same request, retries and errors.
In PHP
$envless->members->invite()
The same method in envless/sdk, the PHP SDK, with the same request, retries and errors.