organization_invitations.create
Invite people to an organization
- Request
- POST
/api/v1/organizations/{organizationSlug}/invitations - Scope required
organization_members:write- Effect
- Changes data. Send an Idempotency-Key if you might retry it.
- Acts on
- Acts on an organization, and names it in the path.
- MCP tool
organization_invitations_create- Environment
- Live and sandbox alike.
- Request body
- JSON.
What it does
Invites a batch of up to 100 addresses at one role and answers with an accept link for each. Each `acceptUrl` carries a secret token that is never stored and can never be read again: treat it exactly as you would a password, send it only to the address it was issued for, and never write it to a log. An address that would produce nothing — somebody who is already a member, or who already has an invitation waiting — comes back under `skipped` rather than failing the batch, because a pasted list of students routinely contains both. Who may invite whom follows the role: any staff member may invite an applicant, owners and admins may invite staff, and only an owner may invite another owner. Applicant seats are checked once for the whole batch, so a batch that would overrun the allowance creates none of it and is refused. `cohortId` puts an applicant into that cohort the moment they accept. The invitations still waiting are listed by `organization_invitations.list`.
Parameters
| Name | Sent in | Requirement | Accepts |
|---|---|---|---|
| organizationSlug | path | Required | string |
Request body
- cohortId
- string, optional
- emails
- array of string, required
- message
- string, optional
- role
- one of: owner, admin, coach, applicant, required
Response
- created
- array of object, required
- acceptUrl
- string, required
- string, required
- expiresAt
- string, required
- id
- string, required
- role
- one of: owner, admin, coach, applicant, required
- skipped
- array of object, required
- string, required
- reason
- one of: already_a_member, already_invited, required
Examples
Invite two students into the spring intake
curl -s -X POST https://www.jobapplicationtracking.com/api/v1/organizations/northside-career-center/invitations \
-H "Authorization: Bearer $JAT_KEY" \
-H "Content-Type: application/json" \
-d '{
"emails": [
"student@northside.example",
"joined@northside.example"
],
"role": "applicant",
"cohortId": "coh_12"
}'{
"created": [
{
"id": "inv_9b1d4f30-6c2a-4c1e-8f7b-2d3e4f5a6b7c",
"email": "student@northside.example",
"role": "applicant",
"acceptUrl": "https://www.jobapplicationtracking.com/invitations/TQ8vJm3rN1pX6yZ0aB2cD4eF5gH7iK9lM0nO1pQ2rS3",
"expiresAt": "2026-02-25T17:05:00.000Z"
}
],
"skipped": [
{
"email": "joined@northside.example",
"reason": "already_a_member"
}
]
}