Create Team Member
Adds a member to an account’s team with a system role. Identify them by exactly one of user_id or email. If the person has not yet accepted — or the email does not belong to a Whop account yet — an invitation is sent instead and the response is 202 with { "object": "team_member_invite", "invitation_sent": true }. If they already have a pending invite, the request fails with a 400. Custom roles cannot be granted via the API. Granting the workforce role is also allowed with the bounty:create scope.
Authorizations
An Account API key, account-scoped JWT, App API key, or user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************.
Headers
A unique key that makes this request safe to retry. See Idempotent requests.
255"d9105228-4a08-46b1-8b91-42fed586d383"
Pins the request to a dated API version.
"2026-08-21"
Body
Account ID, prefixed biz_.
"biz_xxxxxxxxxxxxxx"
The system role to grant.
owner, admin, sales_manager, moderator, advertiser, workforce "sales_manager"
Email address to invite. Mutually exclusive with user_id. If the email already belongs to a Whop account it is treated the same as passing that account's user_id; otherwise a pending invite is created for the email.
"marcus@shinetime.example"
The user to add to the team, prefixed user_. Mutually exclusive with email.
"user_xxxxxxxxxxxxxx"
Response
Team member created.
The account this membership belongs to, prefixed biz_.
"biz_xxxxxxxxxxxxxx"
Custom role assigned to this member, or null when the member has a system role.
When the member joined or the invite was sent, as an ISO 8601 timestamp.
"2026-01-01T12:00:00.000Z"
The member's email address. For accepted members, null unless the caller holds the email read scope; for invites, the invited address.
"marcus@shinetime.example"
Team member ID — ausr_ for accepted members, ausri_ for pending invites.
"ausr_xxxxxxxxxxxxxx"
Whether this member is an agent (app-controlled account) rather than a human team member. Always false for invites.
false
The member's role on the account. custom means a bespoke dashboard-managed role; the API can read but not grant it.
owner, admin, sales_manager, moderator, advertiser, app_manager, support, manager, workforce, custom "moderator"
joined for accepted members, pending while the invite is pending.
joined, pending "joined"
When the membership was last updated, as an ISO 8601 timestamp.
"2026-01-01T12:00:00.000Z"
The user behind this team membership. null for an invite sent to an email with no Whop account yet.

