Accept Invite
Workspace — Invitations
Accept Invite
Accept an invitation — identity-matched + verified-email, no token
Accept Invite
Accepts an invitation. Note the path is not
See also: useAcceptWorkspaceInvite
: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
userIdor normalizedemail). - The caller must have a verified email — required to accept any invite (userId- or email-addressed). An unverified accept returns
workspace/email-not-verifiedso your app can prompt verification. - Knowing the
inviteIddoes not let a non-target accept.
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
Email Not Verified — 403
Email Not Verified — 403
Not the Target — 404
Not the Target — 404
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.Invite Expired — 409
Invite Expired — 409
Invite Not Found — 404
Invite Not Found — 404

