Skip to main content
POST
Accept a product invite.

Authorizations

Authorization
string
header
required

Supabase JWT token in Authorization: Bearer header

Body

application/json
token
string
required

The opaque pinv_… invite token from the accept link.

Response

Invite accepted (or already accepted). Product access is granted; the response reports whether the starter grant fired or was deferred. Never carries the grant amount.

accepted
boolean
required

True once the invite is in the accepted state.

account_type
enum<string>
required

The account type the product access landed on.

Available options:
user,
org
account_id
string
required

The user or org id the product access landed on.

products
string[]
required

The products the invite granted access to.

onboarding_v2
boolean
required

Whether the inviting org has the org_onboarding_v2 flag on, so the website can pick the onboarding route. Only an org invite has an inviting org; a user invite (including an open QR invite) is always false. Fails closed: false when the flag cannot be read.

already_accepted
boolean

Present and true when the invite was already accepted (idempotent re-accept); the grant is not re-fired.

grant
enum<string>

Whether the starter grant was settled (fired: forwarded to billing, or nothing owed because the products entitle no µ or the account already holds the entitlement), deferred for a later retry/backfill (deferred), or still running after this reply (pending: a fresh accept answers before the grant is forwarded; an unfinished grant is retried like a deferred one).

Available options:
fired,
deferred,
pending
open_invite
boolean

Present and true when the invite is an open (email-less QR) invite, on a fresh accept and on a re-accept. A fresh accept of one binds it to the caller and emails the usual invite (with the CLI/MCP steps) to the caller's account email.

workspace
object

Present only for an open invite minted with create_workspace (MNE-9738): the caller's OWN org, of which they are the owner. Always a new org created for this invite, never an existing one. A re-accept reports the same org with created: false (finishing it first if an earlier create was interrupted); if that org was tombstoned or is no longer owned by the caller, a NEW org is created instead (created: true).

next_path
string

Present only with workspace: the website path to send the caller to next (/welcome).