Inviting Users
Close a project to new sign-ups, then create accounts yourself. The person gets an email, chooses a password, and signs in with the role you gave them. For staff apps, invite-only betas, and anything where you decide who gets in.
Closing sign-ups
In the dashboard, open your project's auth settings and switch off Allow new sign-ups. Or through the API:
PATCH /v1/projects/{project_id}/auth-settings
Authorization: Bearer <dashboard session>
{ "allow_signups": false }With sign-ups closed, no one can create an account on their own — through any method: email and password, Google, Apple, or phone number. Each refuses with 403 and code signups_disabled. People who already have an account sign in exactly as before.
One switch per project
Inviting someone
In the dashboard, open Users and click Invite user. Or through the API:
POST /v1/projects/{project_id}/users/invite
Authorization: Bearer <dashboard session>
{
"email": "[email protected]",
"full_name": "Ama Mensah",
"claims": { "role": "officer", "region_id": "r3" }
}full_name and claims are optional. An invite works whether sign-ups are open or closed — an administrator creating an account is not a sign-up. It needs project admin access, the same as editing a user's claims.
Claims come from you
Claims sent with the invite are applied before the person can sign in, and they are validated with the same rules as editing a user's claims in the dashboard. The person invited can't choose or change their own role. If the claims are invalid, nothing is created; the invite is refused and no email is sent.
What the person receives
An email saying they've been invited to your project, with a link to choose a password. It uses your project's email branding, and the link lasts 7 days.
The link opens the same page as a password reset: your own, if you've set one up (see Password Reset), or a page Koolbase hosts. Choosing a password there also marks their email as verified — clicking a link sent to an inbox proves they own it — so they can sign in straight away, even if your project requires verified contacts.
From then on they're an ordinary user and sign in however you've built sign-in.
Sending it again
Emails get lost, filtered, or expire before they're opened. Invite the same address again and, as long as the account has never been used, a fresh link is sent. Once any link is used to choose a password, every other link for that account stops working, so an older email can't be used afterwards.
An invite is refused with 409 — an account with this email already exists — when the account has been activated, has ever signed in, or has been disabled. A disabled account stays disabled; inviting it again won't bring it back.
Responses
201— the account exists and the email is on its way (or a fresh link was sent)400— the email address or the claims are invalid; nothing was created403— you don't have admin access to this project409— an activated or disabled account already uses this email
A 201 means sent, not delivered