Skip to main content
Accept Invite
Accepts an invitation. Note the path is not :id-scoped — it is addressed by the (non-secret) invitation id. Acceptance is identity-matched + verified-email, no token:
  • The caller must be the invite’s target (by userId or normalized email).
  • The caller must have a verified email — required to accept any invite (userId- or email-addressed). An unverified accept returns workspace/email-not-verified so your app can prompt verification.
  • Knowing the inviteId does not let a non-target accept.
On accept, the stored grant is applied and the WorkspaceMember is created transactionally; the invite is marked accepted. Fires both workspace.invite.accepted and workspace.member.added (invitation-lifecycle vs roster-sync — intentionally two streams). Idempotence: if the caller is already a member (or owner), accept is a no-op — the invite is marked accepted, no duplicate row is created, the existing grant is not overwritten, and no workspace.member.added fires.

Path Parameters

string
required
The (non-secret) invitation UUID.

Body Parameters

string
Service/master keys only — the accepting user (must be the invite’s target and verified).

Response

Error Responses

A caller who is not the invitation’s target receives the same 404 as a non-existent invitation — knowing an invite id must never confirm to a non-target that it exists.
See also: useAcceptWorkspaceInvite