---
title: "CreateOrgInvitation"
description: "Invite someone to the organization"
canonical: "https://pgbeam.com/docs/go-sdk/account/createOrgInvitation"
last-updated: "2026-10-08T10:00:49.000Z"
---

# CreateOrgInvitation

> Invite someone to the organization

URL: https://pgbeam.com/docs/go-sdk/account/createOrgInvitation

Creates an invitation and emails it. Inviting an address that already has a pending invitation returns a conflict rather than a second invitation. `owner` cannot be invited: ownership transfer is a separate, higher-privilege flow.

## Usage

## Parameters

Parameter

Type

Required

Description

ctx

`context.Context`

Yes

Request context

orgID

`string`

Yes

Unique organization identifier.

req

`pgbeam.CreateOrgInvitationRequest`

Yes

Request body

req.Email

`string`

Yes

Address to invite.

req.Role

`*pgbeam.AssignableOrgRole`

No

A role that can be assigned through the member API. This is `OrgRole` without `owner`: ownership is transferred through a separate flow, so requesting it here is rejected with a 400.

## Response

`(*pgbeam.OrgInvitation, error)`: the invitation was created.

## Example

## Errors

Status

Description

400

The request was rejected. `code` is `INVALID_INPUT`, and `errors` names the offending fields when the failure was a validation one.

401

Missing or invalid authentication. `code` is `UNAUTHORIZED`.

403

The caller is authenticated but not allowed to perform this operation. `code` is `FORBIDDEN` when the caller's role is insufficient, and `PLAN_LIMIT_REACHED` when the organization's plan is what stands in the way. The two are answered differently, so branch on the code rather than the status.

404

The resource does not exist, or the caller is not entitled to know that it does. `code` is `NOT_FOUND`.

409

The request conflicts with the current state. `code` distinguishes the cases: `RESOURCE_EXISTS` for a name or value already in use, `INVALID_STATE` for a resource that is no longer in a state that allows the operation, and `IDEMPOTENCY_KEY_REUSED` for a retry whose body does not match the request the key was first used for.

429

Rate limited. `code` is `RATE_LIMITED`.