Workspace Invitations API
Invite users to join a workspace via email. Invitations include a unique token and expiration.
TIP
For organization-level invitations, see the Organization Invitations API. Organization invitations are the recommended way to onboard new team members — they grant access to the organization and its workspaces.
List Invitations
Requires admin role.
http
GET /api/v1/workspaces/{workspace_id}/invitations
Authorization: Bearer <token>Response 200 OK
json
[
{
"id": "uuid",
"workspace_id": "uuid",
"email": "alice@example.com",
"role": "developer",
"status": "pending",
"inviter_name": "Bob",
"invite_url": "https://app.example.com/accept-invitation?token=...",
"expires_at": "2026-01-08T00:00:00Z",
"created_at": "2026-01-01T00:00:00Z"
}
]Send Invitation
Requires admin role. Sends an invitation email with a unique link.
http
POST /api/v1/workspaces/{workspace_id}/invitations
Authorization: Bearer <token>
Content-Type: application/json
{
"email": "alice@example.com",
"role": "developer",
"message": "Welcome to the team!"
}Resend Invitation
Resends the email and refreshes the expiration date.
http
POST /api/v1/workspaces/{workspace_id}/invitations/{invitation_id}/resend
Authorization: Bearer <token>Get Invitation Info (Public)
No authentication required. Used by the accept-invitation page to display invitation details.
http
GET /api/v1/invitations/info?token=<invitation_token>Response 200 OK
json
{
"workspace_name": "My Team",
"email": "alice@example.com",
"role": "developer",
"inviter_name": "Bob",
"status": "pending",
"expires_at": "2026-01-08T00:00:00Z"
}Accept Invitation
Authenticated user accepts the invitation and joins the workspace.
http
POST /api/v1/invitations/accept
Authorization: Bearer <token>
Content-Type: application/json
{ "token": "<invitation_token>" }Revoke Invitation
Cancel a pending invitation.
http
DELETE /api/v1/workspaces/{workspace_id}/invitations/{invitation_id}
Authorization: Bearer <token>