---
title: "Bulk create and send organization invitations"
method: POST
path: "/organizations/{organization_id}/invitations/bulk"
tags: ["Organization Invitations"]
---

# Bulk create and send organization invitations

`POST /organizations/{organization_id}/invitations/bulk`

Creates new organization invitations in bulk and sends out emails to the provided email addresses with a link to accept the invitation and join the organization.

This endpoint is limited to a maximum of 10 invitations per API call. If you need to send more invitations, please make multiple requests.

You can specify a different `role` for each invited organization member.
New organization invitations get a "pending" status until they are revoked by an organization administrator or accepted by the invitee.
The request body supports passing an optional `redirect_url` parameter for each invitation.
When the invited user clicks the link to accept the invitation, they will be redirected to the provided URL.
Use this parameter to implement a custom invitation acceptance flow.
You can specify the ID of the user that will send the invitation with the `inviter_user_id` parameter. Each invitation
can have a different inviter user.
Inviter users must be members with administrator privileges in the organization.
Only "admin" members can create organization invitations.
You can optionally provide public and private metadata for each organization invitation. The public metadata are visible
by both the Frontend and the Backend, whereas the private metadata are only visible by the Backend.
When the organization invitation is accepted, the metadata will be transferred to the newly created organization membership.

## Path parameters

- `organization_id` string, required

## Request body

- object[]
  - `email_address` string, required — The email address of the new member that is going to be invited to the organization
  - `inviter_user_id` string, nullable — The ID of the user that invites the new member to the organization. Must be an administrator in the organization.
  - `role` string, required — The role of the new member in the organization
  - `public_metadata` object, nullable — Metadata saved on the organization invitation, read-only from the Frontend API and fully accessible (read/write) from the Backend API. When the organization invitation is accepted, the metadata will be transferred to the newly created organization membership.
  - `private_metadata` object, nullable — Metadata saved on the organization invitation, fully accessible (read/write) from the Backend API but not visible from the Frontend API. When the organization invitation is accepted, the metadata will be transferred to the newly created organization membership.
  - `redirect_url` string, nullable — Optional URL that the invitee will be redirected to once they accept the invitation by clicking the join link in the invitation email.
  - `expires_in_days` integer, nullable — The number of days the invitation will be valid for. By default, the invitation has a 30 days expire.
  - `notify` boolean, nullable — Optional flag which denotes whether an email invitation should be sent to the given email address. Defaults to `true`.

## Response `200`

A list of organization invitations

- OrganizationInvitations
  - `data` OrganizationInvitation[], required
    - `object` 'organization_invitation', required — String representing the object's type. Objects of the same type share the same value.
    - `id` string, required
    - `email_address` string, required
    - `role` string, required
    - `role_name` string, required
    - `organization_id` string
    - `inviter_id` string, nullable, required
    - `public_inviter_data` OrganizationInvitationPublicUserData, nullable, required — An organization inviter's public user data
      - `user_id` string, required
      - `first_name` string, nullable, required
      - `last_name` string, nullable, required
      - `image_url` string, required
      - `has_image` boolean, required
      - `identifier` string, required
    - `status` string
    - `public_metadata` object, required
    - `private_metadata` object
    - `url` string, nullable, required
    - `expires_at` integer, nullable, required — Unix timestamp of expiration.
    - `created_at` integer, required — Unix timestamp of creation.
    - `updated_at` integer, required — Unix timestamp of last update.
  - `total_count` integer, required — Total number of organization invitations

## Other responses

- `400` — Request was not successful
- `403` — Authorization invalid
- `404` — Resource not found
- `422` — Invalid request parameters

---

[API](https://skmtc.net/clerk/apis/clerk-backend-api.md) · [All operations](https://skmtc.net/clerk/apis/clerk-backend-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/clerk/clerk-backend-api/revisions/75df3a43fcb2/schema)
