Invite someone to the workspace by email
Creates a pending invite at the requested role, queues the invitation email, and returns the invite together with its one-time token; re-inviting an address that already has a pending invite refreshes that invite and rotates its token instead of creating a second one. Requires `members:invite`, and only owners may invite owners. Fails when the email already belongs to a member, when the address or expiry is malformed, and when an editor-role invite would exceed the plan's seat allowance — viewer invites do not consume a seat.
apiKeyAuthorizationBearer <snoze_sk_…>Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
workspaceId*stringapplication/json- body
email*stringrole*string"owner""admin""builder""member""operator""viewer"expiresAt?string|nullSuccess
application/json- response
data*curl -X POST 'https://api.snoze.dev/v1/workspaces/string/invites' \ -H 'Content-Type: application/json' \ -d '{ "email": "string", "role": "owner"}'{ "data": { "id": "string", "workspaceId": "string", "email": "string", "role": "owner", "status": "pending", "token": "string", "expiresAt": "string", "createdAt": "string", "updatedAt": "string" }}List the workspace's invites
Returns every invite created for the workspace, newest first, including ones that have already been accepted, revoked, or expired. Requires `members:invite`, held by owners and admins.
List the caller's pending workspace invitations
Returns the pending invites addressed to the authenticated caller's email across all active workspaces, which is the invite inbox shown during onboarding. Account-scoped rather than workspace-scoped and requires a synced user profile; a caller whose identity carries no email gets an empty list.