Skip to content

Create Invitation

POST/web/v1/workspaces/{workspaceBizId}/invitations JWT

Creates a new invitation to join the workspace. The invitee receives a notification and can accept or decline.

Required Headers

HeaderExample ValueDescription
Content-Typeapplication/jsonRequest content type
Acceptapplication/jsonExpected response type
X-Client-HashClient device fingerprint
Accept-Languageen, zh, zh-Hant, ja, viResponse language (default: en)
AuthorizationBearerJWT access token
X-Workspace-IdTarget workspace ID

Request Parameters

NameTypeRequiredInDescription
workspaceBizIdStringRequiredpathBusiness ID of the workspace

Request Body

json
{
  "inviteeEmail": "invitee@example.com",
  "message": "Welcome to our workspace",
  "expirationDays": 7
}

Request Example

json
{
  "inviteeEmail": "newuser@example.com",
  "message": "Welcome to our team",
  "expirationDays": 7
}

Success Response

Status: 201 Created

201 Created 201
{
  "version": "1.3.0",
  "timestamp": 1709337600000,
  "success": true,
  "code": "2001",
  "message": "CREATED",
  "data": {
    "bizId": "inv_abc123def456",
    "workspaceBizId": "WS_INVITE_TEST_001",
    "workspaceName": "Test Workspace",
    "inviterBizId": "ACC_OWNER_INVITE_001",
    "inviterName": "Owner User",
    "inviteeEmail": "invitee@example.com",
    "inviteeAccountBizId": "ACC_INVITEE_001",
    "inviteeAccountName": null,
    "invitationStatus": {
      "value": 10011001,
      "name": "PENDING",
      "code": "PENDING"
    },
    "message": "Welcome to our workspace",
    "expiresAt": "2026-03-29T10:30:00Z",
    "acceptedAt": null,
    "createdAt": "2026-03-22T10:30:00Z",
    "canAccept": true
  }
}

Response Fields

FieldTypeDescription
bizIdStringUnique invitation business ID
workspaceBizIdStringTarget workspace business ID
workspaceNameStringTarget workspace display name
inviterBizIdStringInviter's account business ID
inviterNameStringInviter's display name
inviteeEmailStringInvitee's email address
inviteeAccountBizIdStringInvitee's account ID (if registered)
inviteeAccountNameStringInvitee's display name (nullable)
invitationStatusObjectStatus enum: PENDING, ACCEPTED, CANCELLED, DECLINED, EXPIRED
messageStringInvitation message
expiresAtStringISO 8601 expiration timestamp
acceptedAtStringISO 8601 acceptance timestamp (nullable)
createdAtStringISO 8601 creation timestamp
canAcceptBooleanWhether the invitation can still be accepted

Error Responses

Unauthorized 401
{
  "success": false,
  "code": "4010",
  "message": "Invalid or expired token"
}
Conflict 409
{
  "success": false,
  "code": "WORKSPACE.DUPLICATE_PENDING_INVITATION",
  "message": "A pending invitation already exists for this email"
}

Notes

  • Returns HTTP 201 with response code "2001" on success.
  • expirationDays defaults to 7 if omitted.
  • Duplicate pending invitations for the same email return 409 WORKSPACE.DUPLICATE_PENDING_INVITATION.
  • Requires workspace:invitation:write permission.

SlaunchX Internal Documentation