Skip to main content

List Organization Invites

GET /organizations/me/invites

Returns a paginated list of pending invites for the currently active organization.

Authentication

Requires organization admin or owner privileges.

Query Parameters

limit
integer
default:"50"
Number of invites to return per page
offset
integer
default:"0"
Number of invites to skip for pagination

Response

Returns a paginated response containing pending organization invites.
items
array
required
Array of organization invite objects
total
integer
required
Total number of pending invites
limit
integer
required
Number of items per page
offset
integer
required
Current pagination offset

Invite Object Fields

id
string (UUID)
required
Unique identifier for the invite
organization_id
string (UUID)
required
ID of the organization
invited_email
string
required
Email address of the invited user (normalized to lowercase)
role
string
required
Role that will be assigned: owner, admin, or member
all_boards_read
boolean
required
Whether invitee will have read access to all boards
all_boards_write
boolean
required
Whether invitee will have write access to all boards
token
string
required
Unique token used to accept the invite (24 URL-safe characters)
created_by_user_id
string (UUID)
ID of the user who created the invite
accepted_by_user_id
string (UUID)
ID of the user who accepted the invite (null if pending)
accepted_at
string (datetime)
ISO 8601 timestamp when invite was accepted (null if pending)
created_at
string (datetime)
required
ISO 8601 timestamp when invite was created
updated_at
string (datetime)
required
ISO 8601 timestamp when invite was last updated

Example Request

curl -X GET "https://api.openclaw.com/organizations/me/invites?limit=20&offset=0" \
  -H "Authorization: Bearer YOUR_TOKEN"

Example Response

{
  "items": [
    {
      "id": "aa0e8400-e29b-41d4-a716-446655440000",
      "organization_id": "550e8400-e29b-41d4-a716-446655440000",
      "invited_email": "[email protected]",
      "role": "member",
      "all_boards_read": true,
      "all_boards_write": false,
      "token": "xYz123AbC456DeF789GhI012",
      "created_by_user_id": "880e8400-e29b-41d4-a716-446655440000",
      "accepted_by_user_id": null,
      "accepted_at": null,
      "created_at": "2026-03-05T12:00:00.000Z",
      "updated_at": "2026-03-05T12:00:00.000Z"
    }
  ],
  "total": 1,
  "limit": 20,
  "offset": 0
}

Notes

  • Only returns invites that have not been accepted (accepted_at is null)
  • Results are ordered by creation date (newest first)

Create Organization Invite

POST /organizations/me/invites

Create a new invitation to join the organization.

Authentication

Requires organization admin or owner privileges.

Request Body

invited_email
string
required
Email address of the person to invite (will be normalized to lowercase)
role
string
default:"member"
Role to assign: owner, admin, or member
all_boards_read
boolean
default:"false"
Grant read access to all boards
all_boards_write
boolean
default:"false"
Grant write access to all boards
board_access
array
default:"[]"
Array of board-specific access permissions

Board Access Specification

board_access[].board_id
string (UUID)
required
ID of the board
board_access[].can_read
boolean
default:"true"
Read permission for this specific board
board_access[].can_write
boolean
default:"false"
Write permission for this specific board

Response

Returns the created invite object with a unique token.

Example Request

curl -X POST "https://api.openclaw.com/organizations/me/invites" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "invited_email": "[email protected]",
    "role": "member",
    "all_boards_read": true,
    "all_boards_write": false,
    "board_access": [
      {
        "board_id": "990e8400-e29b-41d4-a716-446655440000",
        "can_read": true,
        "can_write": true
      }
    ]
  }'

Example Response

{
  "id": "aa0e8400-e29b-41d4-a716-446655440000",
  "organization_id": "550e8400-e29b-41d4-a716-446655440000",
  "invited_email": "[email protected]",
  "role": "member",
  "all_boards_read": true,
  "all_boards_write": false,
  "token": "xYz123AbC456DeF789GhI012",
  "created_by_user_id": "880e8400-e29b-41d4-a716-446655440000",
  "accepted_by_user_id": null,
  "accepted_at": null,
  "created_at": "2026-03-05T12:00:00.000Z",
  "updated_at": "2026-03-05T12:00:00.000Z"
}

Error Responses

409 Conflict
User with this email is already a member of the organization
422 Unprocessable Content
  • Email is empty or invalid
  • One or more board IDs do not belong to the organization

Notes

  • Email addresses are normalized to lowercase before checking for existing members
  • A secure random token is automatically generated for the invite
  • The token should be sent to the invitee (this endpoint does not send emails automatically)
  • If the invited email already has a user account and is a member, the request fails with 409

Revoke Organization Invite

DELETE /organizations/me/invites/

Revoke a pending invitation.

Authentication

Requires organization admin or owner privileges.

Path Parameters

invite_id
string (UUID)
required
ID of the invite to revoke

Response

Returns the revoked invite object.

Example Request

curl -X DELETE "https://api.openclaw.com/organizations/me/invites/aa0e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_TOKEN"

Error Responses

404 Not Found
Invite not found or does not belong to the organization

Notes

  • Deletes the invite and all associated board access records
  • Once revoked, the invite token can no longer be used

Accept Organization Invite

POST /organizations/invites/accept

Accept an organization invitation using a token. This endpoint is publicly accessible (not scoped to /me).

Authentication

Requires authentication. The authenticated user’s email must match the invited email.

Request Body

token
string
required
The unique invite token received from the organization

Response

Returns the created or updated membership record.
id
string (UUID)
required
ID of the membership record
organization_id
string (UUID)
required
ID of the organization joined
user_id
string (UUID)
required
ID of the user who accepted
role
string
required
Assigned role from the invite
all_boards_read
boolean
required
Read access to all boards
all_boards_write
boolean
required
Write access to all boards
created_at
string (datetime)
required
When the membership was created
updated_at
string (datetime)
required
When the membership was last updated
user
object
Embedded user information
board_access
array
Array of board-specific access permissions

Example Request

curl -X POST "https://api.openclaw.com/organizations/invites/accept" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "token": "xYz123AbC456DeF789GhI012"
  }'

Example Response

{
  "id": "bb0e8400-e29b-41d4-a716-446655440000",
  "organization_id": "550e8400-e29b-41d4-a716-446655440000",
  "user_id": "cc0e8400-e29b-41d4-a716-446655440000",
  "role": "member",
  "all_boards_read": true,
  "all_boards_write": false,
  "created_at": "2026-03-05T13:00:00.000Z",
  "updated_at": "2026-03-05T13:00:00.000Z",
  "user": {
    "id": "cc0e8400-e29b-41d4-a716-446655440000",
    "email": "[email protected]",
    "name": "New User",
    "preferred_name": null
  },
  "board_access": []
}

Error Responses

403 Forbidden
Authenticated user’s email does not match the invited email
404 Not Found
  • Invalid token
  • Invite has already been accepted

Notes

  • Email matching is case-insensitive
  • If the user is already a member, the invite permissions are merged with existing membership
  • The invite is marked as accepted with accepted_by_user_id and accepted_at fields
  • Invites can only be accepted once
  • The user must be authenticated, and their email must match the invite’s invited_email

Build docs developers (and LLMs) love