Skip to main content
POST
Invite admin / merchant-team or coaching users

Authorizations

Authorization
string
header
required

Supabase JWT — Authorization: Bearer <token>.

Body

application/json
users
object[]
required

List of users to invite.

force_invite
boolean | null

When true, re-sends the invite email for still-pending (invited) profiles that did not otherwise produce a result.

Example:

false

merchant_id
string<uuid> | null

Target merchant id. Required with a service-role key; for admins / sub-merchant users it overrides the token's merchant.

Example:

"28106cba-1c27-4e53-b149-32113e5e8e31"

mojito_language_code
enum<string> | null

Language code applied to created profiles (one of the listed codes). Defaults to 'en' when omitted.

Available options:
ar,
bg,
zh,
hr,
cs,
da,
nl,
en,
fil,
fi,
fr,
de,
el,
hi,
hu,
id,
it,
ja,
ko,
ms,
no,
pl,
pt,
br,
ro,
ru,
sk,
es,
sv,
ta,
th,
tr,
uk,
vi
Example:

"en"

message_from_recruiter
string | null

Optional custom message included in the invitation email.

send_invitation
boolean | null

Candidates only. false = add the candidates as prospects (no invitation e-mail, no credit used, interview_id not needed). Honoured only while the company's prospects feature is on; otherwise candidates are always invited.

Example:

true

source_note
string | null

With send_invitation false: where the prospects come from (stored as the campaign of their first-touch source).

Maximum string length: 200
Example:

"Job fair"

Response

The users array with per-item invitation results.

email
string
required
name
string | null
type
string | null
interview_id
string | null
result
string

Outcome, e.g. 'Invited', 'Activated', 'SubMerchantAdded' (administrative access to another merchant), 'CoachingAccessAdded' (learner access to another merchant's portal), 'ProspectAdded' (send_invitation false), 'Submitted' (a company on a shared candidate pool with send_invitation false: added to the parent's position without an e-mail), 'Skipped' (nothing done: the person already has this access, or see reason), or 'Error: '.

reason
enum<string>

Why a row was skipped, when known: 'duplicate' = a company on a shared candidate pool, the candidate is already in the process through another channel; 'exists' = send_invitation false, the candidate already exists in the company (no prospect added).

Available options:
duplicate,
exists
profile_id
string | null

The account (profile.id) invited or updated: team members, coaching users, and candidates who already have an account. Null otherwise.

profile_interview_id
string | null

The candidate (profile_interview.id) for candidate rows. Null for team members and coaching users.

{key}
unknown