---
title: "Invite Project Members"
method: POST
path: "/members/invite"
tags: ["Project"]
---

# Invite Project Members

`POST /members/invite`

## Request

- Base URL: `https://api.peec.ai/customer/v1`
- URL: `https://api.peec.ai/customer/v1/members/invite`
- Auth: one of:
  - API key in header `X-API-Key`
  - API key in query parameter `api_key`
  - HTTP bearer

Invite people to the project by email, as a viewer or an owner. Each person gets the same invitation email as an invite from the app. An email that already has a Peec account gets access right away; anyone else gets access once they sign up from the email. An email that already has access or an open invitation lands in `skipped`, and the request never fails as a whole because of one item. Returns 403 when the company has turned off email invitations.

## Request body

- object
  - `project_id` string: Required if using a company api key
  - `members` object[], required: Up to 50 people to invite.
    - `email` string, email, required: Email address to send the invitation to.
    - `role` 'OWNER' | 'VIEWER': Role in the project. Defaults to `VIEWER`.

## Response `200`

Per-item results, `index` naming the position in the request.

- object: Per-item results, `index` naming the position in the request.
  - `invited` object[], required
    - `index` number, required
    - `email` string, required
    - `role` 'OWNER' | 'VIEWER', required: `VIEWER` can see the project's data. `OWNER` can also change the project and manage its members.
    - `access` 'granted' | 'pending', required: `granted` when the email already has a Peec account and can open the project now. `pending` until the invitee signs up from the invitation email.
  - `skipped` object[], required
    - `index` number, required
    - `email` string, required
    - `reason` 'already_member' | 'already_invited' | 'duplicate', required: `already_member` has access to the project, `already_invited` has an open invitation to it, and `duplicate` repeats an earlier email in the same request.
  - `rejected` object[], required
    - `index` number, required
    - `email` string, required
    - `message` string, required

## Other responses

- `403`: Response for status 403

## Changes

- **2026-11-03** `9fdffdff48a5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/peec/apis/peec-ai-customer-api/changes/members/invite/post.md)

---

[API](https://skmtc.dev/peec/apis/peec-ai-customer-api.md) - [All operations](https://skmtc.dev/peec/apis/peec-ai-customer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/peec/apis/peec-ai-customer-api/revisions/9d774600c8eb?raw)
