---
title: "Create Invitations Batch"
method: POST
path: "/v1/orgs/{org_id}/invitations/batch"
tags: ["invitations"]
---

# Create Invitations Batch

`POST /v1/orgs/{org_id}/invitations/batch`

## Request

- Base URL: `https://api.sonenta.dev`
- URL: `https://api.sonenta.dev/v1/orgs/{org_id}/invitations/batch`
- Auth: none declared

Invite up to 100 emails at once with a common org role + common per-project
roles (task #2089). Best-effort against the seat cap: emails are invited in
order until the cap is hit, the rest returned `skipped: seat_limit`. Reuses
the single-invite logic; results are reported per email. No tokens in the
response — accept links go by email.

Fail-fast (whole request): a bad org/project role → 403/422 before anything
is created. Non-fatal per email: already a member / already invited / a
duplicate in the payload → skipped.

## Path parameters

- `org_id` string, required

## Request body

- BatchInvitationCreateIn: Invite many emails at once with ONE common org role + ONE common set of per-project roles (task #2089). At most `BATCH_INVITATION_MAX` emails.
  - `emails` string[], required
  - `role` 'owner' | 'admin' | 'member'
  - `message` string, nullable
  - `projects` InvitationProjectRoleIn[]
    - `project_uuid` string, required
    - `role` 'owner' | 'admin' | 'developer' | 'translator' | 'qa' | 'reviewer' | 'viewer', required
    - `languages_scope` string[], nullable

## Response `201`

Successful Response

- BatchInvitationOut
  - `results` BatchInvitationResult[], required
    - `email` string, required
    - `status` 'invited' | 'skipped' | 'failed', required
    - `reason` string, nullable
    - `invitation_uuid` string, nullable
  - `invited` integer, required
  - `skipped` integer, required
  - `failed` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/sonenta/apis/sonenta-api.md) · [All operations](https://skmtc.dev/sonenta/apis/sonenta-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sonenta/apis/sonenta-api/revisions/f853ea49fb05?raw)
