For the complete documentation index, see llms.txt. This page is also available as Markdown.

Invites

API for inviting teammates into an organization and managing invites that have not been accepted yet. Every invite is addressed by the email it was sent to. Creating or resending an invite sends an email to that address.

List invites

get

Returns every invite for the organization, newest first, including invites that were already accepted or revoked. Check status to find the pending ones.

Path parameters
org_idstring · uuidRequired
Query parameters
pageinteger · min: 1OptionalDefault: 1
page_sizeinteger · min: 1 · max: 1000OptionalDefault: 500
Responses
200

OK

application/json
get/v1/org/{org_id}/invites
GET /v1/org/{org_id}/invites HTTP/1.1
Accept: */*
[
  {
    "org_id": "text",
    "email": "text",
    "role": "user",
    "status": "invited",
    "invited_by": null,
    "created_at": "2026-01-01T00:00:00.000Z"
  }
]

Invite a teammate

post

Sends an invitation email to the address. Returns 201 with the new invite. If the address already has an invite in this organization, no second invite is created: the existing one is resent and returned with 200, keeping its original role. A revoked or rejected invite is reinstated as pending. An address that already accepted its invite is a member, so this returns 409.

Path parameters
org_idstring · uuidRequired
Body
emailstring · email · max: 255Required

Address to send the invitation email to

rolestring · enumOptional

Role to grant on acceptance. Defaults to the organization's default role. Ignored when the address already has an invite.

Possible values:
Responses
200

OK

application/json
org_idstringRequired

Organization the invite belongs to

Pattern: [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\Z
emailstringRequired

Address the invite was sent to, and its identifier in this API

rolestring · enumRequired

Role the invitee holds in the organization

Possible values:
statusstring · enumRequired

'invited' is pending; 'accepted', 'rejected' and 'revoked' are final

Possible values:
invited_bystring · nullableRequired

Email of the user who sent the invite

created_atstring · date-timeRequired

When the invite was first created

post/v1/org/{org_id}/invites
POST /v1/org/{org_id}/invites HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 40

{
  "email": "name@gmail.com",
  "role": "user"
}
{
  "org_id": "text",
  "email": "text",
  "role": "user",
  "status": "invited",
  "invited_by": null,
  "created_at": "2026-01-01T00:00:00.000Z"
}

Revoke a pending invite

delete

Revokes a pending invite and removes the access it granted. The invite link stops working. Only a pending invite can be revoked. Unlike most deletes in this API this returns 200 and the invite, because the invite is not deleted: it stays on the list with status 'revoked', and the response is how the caller sees that.

Path parameters
org_idstring · uuidRequired
emailstring · min: 1Required
Responses
200

OK

application/json
org_idstringRequired

Organization the invite belongs to

Pattern: [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\Z
emailstringRequired

Address the invite was sent to, and its identifier in this API

rolestring · enumRequired

Role the invitee holds in the organization

Possible values:
statusstring · enumRequired

'invited' is pending; 'accepted', 'rejected' and 'revoked' are final

Possible values:
invited_bystring · nullableRequired

Email of the user who sent the invite

created_atstring · date-timeRequired

When the invite was first created

delete/v1/org/{org_id}/invites/{email}
DELETE /v1/org/{org_id}/invites/{email} HTTP/1.1
Accept: */*
{
  "org_id": "text",
  "email": "text",
  "role": "user",
  "status": "invited",
  "invited_by": null,
  "created_at": "2026-01-01T00:00:00.000Z"
}

Change a pending invite's role

patch

Changes the role the invitee will hold. Only a pending invite can be changed; use the organization's member management to change the role of someone who has already accepted.

Path parameters
org_idstring · uuidRequired
emailstring · min: 1Required
Body
rolestring · enumRequired

New role for the pending invite

Possible values:
Responses
200

OK

application/json
org_idstringRequired

Organization the invite belongs to

Pattern: [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\Z
emailstringRequired

Address the invite was sent to, and its identifier in this API

rolestring · enumRequired

Role the invitee holds in the organization

Possible values:
statusstring · enumRequired

'invited' is pending; 'accepted', 'rejected' and 'revoked' are final

Possible values:
invited_bystring · nullableRequired

Email of the user who sent the invite

created_atstring · date-timeRequired

When the invite was first created

patch/v1/org/{org_id}/invites/{email}
PATCH /v1/org/{org_id}/invites/{email} HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "role": "user"
}
{
  "org_id": "text",
  "email": "text",
  "role": "user",
  "status": "invited",
  "invited_by": null,
  "created_at": "2026-01-01T00:00:00.000Z"
}

Resend a pending invite

post

Sends the invitation email again, to the same address, with the same invite link. A revoked, rejected or accepted invite cannot be resent.

Path parameters
org_idstring · uuidRequired
emailstring · min: 1Required
Responses
200

OK

application/json
org_idstringRequired

Organization the invite belongs to

Pattern: [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\Z
emailstringRequired

Address the invite was sent to, and its identifier in this API

rolestring · enumRequired

Role the invitee holds in the organization

Possible values:
statusstring · enumRequired

'invited' is pending; 'accepted', 'rejected' and 'revoked' are final

Possible values:
invited_bystring · nullableRequired

Email of the user who sent the invite

created_atstring · date-timeRequired

When the invite was first created

post/v1/org/{org_id}/invites/{email}/resend
POST /v1/org/{org_id}/invites/{email}/resend HTTP/1.1
Accept: */*
{
  "org_id": "text",
  "email": "text",
  "role": "user",
  "status": "invited",
  "invited_by": null,
  "created_at": "2026-01-01T00:00:00.000Z"
}

Last updated

Was this helpful?