---
title: "Invite a user to the organization"
method: POST
path: "/admin/invites"
tags: ["Invites"]
---

# Invite a user to the organization

`POST /admin/invites`

Invite a user to the organization by email and grant their initial role bindings.

## Headers

- `X-Pinecone-Api-Version` string, required

## Request body

- CreateInviteRequest
  - `email` string, email, required — The email address to invite.
  - `role_bindings` RoleBindingInput[], required — Role bindings for the invitee. Must include at least one `organization`-scoped binding that grants organization membership (`OrgOwner`, `OrgManager`, `OrgBillingAdmin`, or `OrgMember`); `project`-scoped bindings are optional. Not returned in the response.
    - `resource_type` string, required — The kind of resource scope a role binding applies to. Possible values: `organization`, `project`.
    - `resource_id` string — Project UUID. Required when `resource_type` is `project`; omit for `organization` scope.
    - `role` string, required — A role assigned to a principal at a resource scope.

## Response `200`

Invite created and email sent. The invite's role bindings are first-class; view or change them through the role-binding endpoints.

- Invite — An invitation to join the organization.
  - `id` string, uuid, required — The unique ID of the invite.
  - `email` string, email, required — The email address the invite was sent to.
  - `status` string, required — The lifecycle status of an invite. Possible values: `pending`, `expired`, `processed`. List endpoints return only `pending` and `expired` invites; `processed` is returned only when fetching a single invite by ID.
  - `expires_at` string, date-time, nullable — When the invite expires if not accepted. Default TTL is 7 days. Resending the invite extends this to now plus 7 days. `null` if the invite does not expire.
  - `processed_at` string, date-time, nullable — The date and time the invite was accepted. `null` or omitted while the invite is still pending or expired.
  - `created_at` string, date-time, required — The date and time the invite was created.

## Other responses

- `400` — Bad request. The request body included invalid request parameters.
- `401` — Unauthorized. Possible causes: Invalid API key.
- `403` — Forbidden
- `409` — Conflict. The request conflicts with the persisted state of the resource. Common causes include invariant violations (e.g., removing the last `OrgOwner`), lifecycle-state mismatches (e.g., resending an invite that is not pending), and constraint violations checked against persisted data.
- `500` — Internal server error.
- `4XX` — Unexpected error on request.

---

[API](https://skmtc.dev/pinecone/apis/pinecone-admin-api.md) · [All operations](https://skmtc.dev/pinecone/apis/pinecone-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/pinecone/pinecone-admin-api/revisions/8210e9d414c2/schema)
