@whop/cli 0.14.3 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +2 -2
  2. package/dist/index.js +33549 -21195
  3. package/dist/index.js.map +1 -1
  4. package/dist/vite.d.ts +1 -1
  5. package/dist/vite.js +37 -1
  6. package/dist/vite.js.map +1 -1
  7. package/package.json +1 -1
  8. package/skills/whop-accounts/SKILL.md +38 -16
  9. package/skills/whop-ad-groups/SKILL.md +8 -8
  10. package/skills/whop-api-keys/SKILL.md +2 -0
  11. package/skills/whop-apps/SKILL.md +19 -4
  12. package/skills/whop-audiences/SKILL.md +3 -3
  13. package/skills/whop-bounties/SKILL.md +28 -0
  14. package/skills/whop-bounty-submissions/SKILL.md +3 -3
  15. package/skills/whop-cards/SKILL.md +2 -2
  16. package/skills/whop-dispute-alerts/SKILL.md +42 -0
  17. package/skills/whop-disputes/SKILL.md +2 -2
  18. package/skills/whop-events/SKILL.md +1 -1
  19. package/skills/whop-exports/SKILL.md +38 -3
  20. package/skills/whop-ledgers/SKILL.md +1 -0
  21. package/skills/whop-memberships/SKILL.md +18 -1
  22. package/skills/whop-notifications/SKILL.md +1 -1
  23. package/skills/whop-payment-method-domains/SKILL.md +93 -0
  24. package/skills/whop-payments/SKILL.md +1 -1
  25. package/skills/whop-payouts/SKILL.md +36 -11
  26. package/skills/whop-people/SKILL.md +1 -1
  27. package/skills/whop-plans/SKILL.md +2 -0
  28. package/skills/whop-products/SKILL.md +1 -0
  29. package/skills/whop-recommended-actions/SKILL.md +59 -0
  30. package/skills/whop-setup-intents/SKILL.md +20 -0
  31. package/skills/whop-social-accounts/SKILL.md +2 -2
  32. package/skills/whop-stats/SKILL.md +2 -0
  33. package/skills/whop-swaps/SKILL.md +2 -1
  34. package/skills/whop-transfers/SKILL.md +2 -2
  35. package/skills/whop-users/SKILL.md +3 -0
  36. package/skills/whop-verifications/SKILL.md +2 -2
@@ -31,11 +31,16 @@ Create Account
31
31
 
32
32
  Form Company
33
33
 
34
+ ## Arguments
35
+
36
+ | Name | Type | Required | Description |
37
+ |------|------|----------|-------------|
38
+ | `id` | `string` | yes | Account ID, prefixed `biz_`. |
39
+
34
40
  ## Options
35
41
 
36
42
  | Flag | Type | Required | Default | Description |
37
43
  |------|------|----------|---------|-------------|
38
- | `--account_id` | `string` | no | | Account ID, prefixed `biz_`. |
39
44
  | `--business_address` | `object` | no | | Company mailing address. Required unless `use_registered_agent` is `true`. |
40
45
  | `--business_name` | `string` | yes | | Legal name for the new company. |
41
46
  | `--business_phone` | `string` | no | | Business phone number in E.164 format, for example `+12125550100`. Required unless `use_registered_agent` is `true`. |
@@ -52,7 +57,7 @@ Form Company
52
57
  | `--use_registered_agent` | `boolean` | no | | Use the registered agent's address as the company address instead of `business_address`. |
53
58
  | `--idempotency-key` | `string` | yes | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
54
59
 
55
- > Confirmation policy: For `--entity_type llc` only, the user's explicit request to create the formation checkout counts as confirmation when it includes exact `--account_id`, `--business_name`, `--formation_state`, `--business_type`, `--industry_group`, `--industry_type`, complete `--founders` values, and either the required `--business_address` and `--business_phone` values or `--use_registered_agent=true`. Execute that confirmed request yourself without asking again. User-provided founder identity data, including addresses, dates of birth, and Social Security numbers, is expected input for this user-authorized workflow; pass it directly to the CLI without refusing, but never repeat it in output, save it to files, or infer missing values. Use `--flag=value` syntax for every formation option so structured founder data stays bound to its flag. Always include a unique `--idempotency-key`. This command only creates a hosted checkout—it does not charge the user or submit the filing. Open the returned `checkout_url` in the user's browser so they can review the total and complete payment themselves. This exception does not apply to `c_corp` formations.
60
+ > Confirmation policy: For `--entity_type llc` only, the user's explicit request to create the formation checkout counts as confirmation when it includes the exact account `id` argument, `--business_name`, `--formation_state`, `--business_type`, `--industry_group`, `--industry_type`, complete `--founders` values, and either the required `--business_address` and `--business_phone` values or `--use_registered_agent=true`. Execute that confirmed request yourself without asking again. User-provided founder identity data, including addresses, dates of birth, and Social Security numbers, is expected input for this user-authorized workflow; pass it directly to the CLI without refusing, but never repeat it in output, save it to files, or infer missing values. Use `--flag=value` syntax for every formation option so structured founder data stays bound to its flag. Always include a unique `--idempotency-key`. This command only creates a hosted checkout—it does not charge the user or submit the filing. Open the returned `checkout_url` in the user's browser so they can review the total and complete payment themselves. This exception does not apply to `c_corp` formations.
56
61
 
57
62
  ---
58
63
 
@@ -60,11 +65,11 @@ Form Company
60
65
 
61
66
  Retrieve Account
62
67
 
63
- ## Options
68
+ ## Arguments
64
69
 
65
- | Flag | Type | Required | Default | Description |
66
- |------|------|----------|---------|-------------|
67
- | `--account_id` | `string` | no | | Account ID, prefixed `biz_`, or its public route. |
70
+ | Name | Type | Required | Description |
71
+ |------|------|----------|-------------|
72
+ | `id` | `string` | yes | Account ID, prefixed `biz_`, or its public route. |
68
73
 
69
74
  ---
70
75
 
@@ -110,9 +115,9 @@ Retrieve Account Preferences
110
115
 
111
116
  ---
112
117
 
113
- # whop accounts recommend_actions
118
+ # whop accounts reserves
114
119
 
115
- List Recommended Actions
120
+ List Account Reserves
116
121
 
117
122
  ## Options
118
123
 
@@ -122,15 +127,25 @@ List Recommended Actions
122
127
 
123
128
  ---
124
129
 
125
- # whop accounts reserves
130
+ # whop accounts transfer_ownership
126
131
 
127
- List Account Reserves
132
+ Transfer Account Ownership
133
+
134
+ ## Arguments
135
+
136
+ | Name | Type | Required | Description |
137
+ |------|------|----------|-------------|
138
+ | `id` | `string` | yes | Account ID, prefixed `biz_`. |
128
139
 
129
140
  ## Options
130
141
 
131
142
  | Flag | Type | Required | Default | Description |
132
143
  |------|------|----------|---------|-------------|
133
- | `--account_id` | `string` | no | | Account ID, prefixed `biz_`. |
144
+ | `--as_partner` | `boolean` | no | | If true, the current owner is credited as the account's Whop partner, earning partner commission on its sales. Requires the current owner to already be an enrolled Whop partner. Skipped if the account already has an active partner. |
145
+ | `--identifier` | `string` | yes | | The user to transfer ownership to: a user ID (`user_*`) or an email address. An email address with no Whop account yet is sent an invite to create one. |
146
+ | `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
147
+
148
+ > Confirm with the user before executing this destructive command.
134
149
 
135
150
  ---
136
151
 
@@ -138,28 +153,34 @@ List Account Reserves
138
153
 
139
154
  Update Account
140
155
 
156
+ ## Arguments
157
+
158
+ | Name | Type | Required | Description |
159
+ |------|------|----------|-------------|
160
+ | `id` | `string` | yes | Account ID, prefixed `biz_`. |
161
+
141
162
  ## Options
142
163
 
143
164
  | Flag | Type | Required | Default | Description |
144
165
  |------|------|----------|---------|-------------|
145
- | `--account_id` | `string` | no | | Account ID, prefixed `biz_`. |
146
166
  | `--affiliate_application_required` | `boolean` | no | | Whether prospective affiliates must submit an application before promoting this account. |
147
167
  | `--affiliate_instructions` | `unknown` | no | | Guidelines shown to affiliates promoting this account. |
148
- | `--banner_image` | `unknown` | no | | Attachment input for the account banner image. |
168
+ | `--banner_image` | `unknown` | no | | Account banner image, used as the cover photo when creating a Whop-managed Facebook page. Image files up to 10 MB, except `image/gif`. Pass a JSON object containing an `id` from [Create File](/api-reference/files/create-file). |
149
169
  | `--business_address` | `object` | no | | Account business address used to calculate tax. A complete address in a supported country is required when `tax_remitted_by` is `self`. |
170
+ | `--business_name` | `unknown` | no | | The legal business name used with the account's tax address. |
150
171
  | `--business_type` | `unknown` | no | | High-level business category for the account. See the [business types and industries glossary](/api-reference/beta/accounts/account#business-types-and-industries-glossary) for valid values. |
151
172
  | `--collect_vat_id` | `boolean` | no | | Whether checkout shows a VAT/tax ID field for buyers to optionally enter. Does not require a VAT ID to purchase. |
152
173
  | `--country` | `unknown` | no | | Country where the account is located. |
153
- | `--description` | `unknown` | no | | Account promotional description. |
174
+ | `--description` | `unknown` | no | | Account promotional description. When creating a Whop-managed Facebook page, it is truncated to 155 characters and used as the About text. |
154
175
  | `--featured_affiliate_product_id` | `unknown` | no | | The ID of the product to feature for affiliates. Pass `null` to clear. |
155
176
  | `--home_preferences` | `array` | no | | Public account home page preferences. |
156
177
  | `--industry_group` | `unknown` | no | | Account industry group. See the [business types and industries glossary](/api-reference/beta/accounts/account#business-types-and-industries-glossary) for valid values. |
157
178
  | `--industry_type` | `unknown` | no | | Specific industry vertical for the account. See the [business types and industries glossary](/api-reference/beta/accounts/account#business-types-and-industries-glossary) for valid values. |
158
179
  | `--invoice_prefix` | `unknown` | no | | Prefix used for account invoices. |
159
- | `--logo` | `unknown` | no | | Attachment input for the account logo. |
180
+ | `--logo` | `unknown` | no | | Account logo, used as the profile picture when creating a Whop-managed Facebook page. Image files up to 5 MB. Pass a JSON object containing an `id` from [Create File](/api-reference/files/create-file). |
160
181
  | `--metadata` | `object` | no | | Arbitrary key/value metadata to store on the account. |
161
182
  | `--onboarding_type` | `unknown` | no | | The type of onboarding the account has completed. |
162
- | `--opengraph_image` | `unknown` | no | | Attachment input for the account Open Graph image. |
183
+ | `--opengraph_image` | `unknown` | no | | Open Graph preview media used when the account is shared. Image and video files up to 5 MB. Pass a JSON object containing an `id` from [Create File](/api-reference/files/create-file). |
163
184
  | `--opengraph_image_variant` | `unknown` | no | | The account Open Graph image variant. |
164
185
  | `--other_business_description` | `unknown` | no | | The description of the business type when business_type is other. |
165
186
  | `--other_industry_description` | `unknown` | no | | The description of the industry type when industry_type is other. |
@@ -177,6 +198,7 @@ Update Account
177
198
  | `--tax_identifiers` | `array` | no | | Account tax/VAT registrations to add or update. When `tax_remitted_by` is `self`, tax is calculated and collected only in the countries where the account holds a registration. |
178
199
  | `--tax_remitted_by` | `string` | no | | Determines whether Whop or the account calculates and remits tax. The account must provide a supported-country business address when it self-remits. |
179
200
  | `--tax_type` | `string` | no | | Determines whether tax is included in the listed price or added at checkout. |
201
+ | `--three_ds_level` | `string` | no | | Account-level 3D Secure behavior. Set `mandate_challenge` to require cardholder verification on supported card payments, or `null` to use the standard checkout flow. |
180
202
  | `--title` | `unknown` | no | | The display name of the account. |
181
203
  | `--use_logo_as_opengraph_image_fallback` | `boolean` | no | | Whether the account uses its logo as the fallback Open Graph image. |
182
204
 
@@ -26,13 +26,13 @@ Create an Ad Group
26
26
  | `--conversion_location` | `string` | no | | Where the outcome being optimized for occurs, such as a website visit, social-profile visit, messaging conversation, ad interaction, or lead-form submission. The lead form itself is set on the ad. |
27
27
  | `--demographics` | `object` | no | | Age, gender, and automatic-audience targeting. |
28
28
  | `--desired_cost_per_result` | `number` | no | | Cost per result to aim for (`average_target`) or never exceed (`maximum_target`). |
29
- | `--detailed_targeting` | `object` | no | | Interest, behavior, and demographic targeting, using categories from the ad platform's targeting taxonomy. At most 100 entries per section. Can't be combined with demographics.automatic, and unavailable to campaigns with special_ad_categories. |
29
+ | `--detailed_targeting` | `object` | no | | Interest, behavior, and demographic targeting, using categories from the ad platform's targeting taxonomy. Entries across interests, behaviors, and demographics are OR'd together (anyone matching any entry is reached), matching Ads Manager's detailed-targeting box. At most 100 entries per section. Can't be combined with demographics.automatic, and unavailable to campaigns with special_ad_categories. |
30
30
  | `--devices` | `object` | no | | Device platforms and operating systems to target. |
31
31
  | `--dynamic_creative` | `boolean` | no | | Let the ad platform automatically mix and match this ad group's creatives and copy to find the best-performing combinations. Set at creation; can't be changed afterward. |
32
32
  | `--ends_at` | `string` | no | | When the ad group stops delivering, as an ISO 8601 timestamp. Omit to run until paused. |
33
- | `--frequency_cap` | `object` | no | | Cap on how often one person sees ads from this ad group. Only available with `reach` optimization. |
33
+ | `--frequency_cap` | `object` | no | | Cap on how often one person sees ads from this ad group. Only available on campaigns with the `awareness` objective. |
34
34
  | `--languages` | `array` | no | | Languages to target, as ISO 639 codes such as `en` or `es`. Empty or omitted targets all languages. |
35
- | `--message_apps` | `array` | no | | Apps the conversation opens in. Required when conversion_location is `messaging`. |
35
+ | `--message_apps` | `array` | no | | Apps the conversation opens in. Required when setting `conversion_location` to `messaging`, and rejected unless the ad group's conversion location is `messaging`. |
36
36
  | `--minimum_daily_spend` | `number` | no | | Minimum the ad group tries to spend each day. |
37
37
  | `--optimization_goal` | `string` | no | | The result the ad group's delivery is optimized to get the most of. |
38
38
  | `--placements` | `unknown` | no | | `automatic` to let the ad platform choose placements, or the list of platforms and positions to target. Omit a platform's positions to target all of them.
@@ -103,7 +103,7 @@ Estimate Ad Group Reach
103
103
  | `--account_id` | `string` | no | | Account to estimate on behalf of. Defaults to the authenticated account. |
104
104
  | `--audiences` | `object` | no | | Saved audiences to deliver to or exclude. Can't be combined with demographics.automatic. |
105
105
  | `--demographics` | `object` | no | | Age, gender, and automatic-audience targeting. |
106
- | `--detailed_targeting` | `object` | no | | Interest, behavior, and demographic targeting, using categories from the ad platform's targeting taxonomy. At most 100 entries per section. Can't be combined with demographics.automatic, and unavailable to campaigns with special_ad_categories. |
106
+ | `--detailed_targeting` | `object` | no | | Interest, behavior, and demographic targeting, using categories from the ad platform's targeting taxonomy. Entries across interests, behaviors, and demographics are OR'd together (anyone matching any entry is reached), matching Ads Manager's detailed-targeting box. At most 100 entries per section. Can't be combined with demographics.automatic, and unavailable to campaigns with special_ad_categories. |
107
107
  | `--devices` | `object` | no | | Device platforms and operating systems to target. |
108
108
  | `--languages` | `array` | no | | Languages to target, as ISO 639 codes such as `en` or `es`. Empty or omitted targets all languages. |
109
109
  | `--platform` | `string` | yes | | The ad network the estimate runs on. |
@@ -193,7 +193,7 @@ Search Targeting Options
193
193
  |------|------|----------|---------|-------------|
194
194
  | `--account_id` | `string` | no | | Account to search on behalf of. Defaults to the authenticated account. |
195
195
  | `--platform` | `string` | yes | | The ad network whose targeting taxonomy to search. |
196
- | `--query` | `string` | no | | The search term. Blank browses the fixed lists; interests and locations return nothing without one. |
196
+ | `--query` | `string` | no | | The search term. Blank browses the fixed lists; interests, work employers, job titles, schools, majors, and locations return nothing without one. |
197
197
  | `--types` | `array` | no | | Kinds of targeting options to search. Defaults to all of them. |
198
198
  | `--location_types` | `array` | no | | Narrow location results to these kinds of places. Only applies when `types` includes `locations`. |
199
199
  | `--country` | `string` | no | | Narrow location results to one country, as an ISO 3166-1 code such as `US`. Only applies when `types` includes `locations`. |
@@ -243,12 +243,12 @@ Update an Ad Group
243
243
  | `--conversion_location` | `string` | no | | Where the outcome being optimized for occurs, such as a website visit, social-profile visit, messaging conversation, ad interaction, or lead-form submission. The lead form itself is set on the ad. |
244
244
  | `--demographics` | `object` | no | | Age, gender, and automatic-audience targeting. |
245
245
  | `--desired_cost_per_result` | `number` | no | | Cost per result to aim for (`average_target`) or never exceed (`maximum_target`). |
246
- | `--detailed_targeting` | `object` | no | | Interest, behavior, and demographic targeting, using categories from the ad platform's targeting taxonomy. At most 100 entries per section. Can't be combined with demographics.automatic, and unavailable to campaigns with special_ad_categories. |
246
+ | `--detailed_targeting` | `object` | no | | Interest, behavior, and demographic targeting, using categories from the ad platform's targeting taxonomy. Entries across interests, behaviors, and demographics are OR'd together (anyone matching any entry is reached), matching Ads Manager's detailed-targeting box. At most 100 entries per section. Can't be combined with demographics.automatic, and unavailable to campaigns with special_ad_categories. |
247
247
  | `--devices` | `object` | no | | Device platforms and operating systems to target. |
248
248
  | `--ends_at` | `string` | no | | When the ad group stops delivering, as an ISO 8601 timestamp. Omit to run until paused. |
249
- | `--frequency_cap` | `object` | no | | Cap on how often one person sees ads from this ad group. Only available with `reach` optimization. |
249
+ | `--frequency_cap` | `object` | no | | Cap on how often one person sees ads from this ad group. Only available on campaigns with the `awareness` objective. |
250
250
  | `--languages` | `array` | no | | Languages to target, as ISO 639 codes such as `en` or `es`. Empty or omitted targets all languages. |
251
- | `--message_apps` | `array` | no | | Apps the conversation opens in. Required when conversion_location is `messaging`. |
251
+ | `--message_apps` | `array` | no | | Apps the conversation opens in. Required when setting `conversion_location` to `messaging`, and rejected unless the ad group's conversion location is `messaging`. |
252
252
  | `--minimum_daily_spend` | `number` | no | | Minimum the ad group tries to spend each day. |
253
253
  | `--optimization_goal` | `string` | no | | The result the ad group's delivery is optimized to get the most of. |
254
254
  | `--placements` | `unknown` | no | | `automatic` to let the ad platform choose placements, or the list of platforms and positions to target. Omit a platform's positions to target all of them.
@@ -17,6 +17,7 @@ Create API Key
17
17
 
18
18
  | Flag | Type | Required | Default | Description |
19
19
  |------|------|----------|---------|-------------|
20
+ | `--api_version_date` | `string` | no | | Dated API version used when requests authenticated with this key omit the `Api-Version-Date` header. New keys default to the latest version. |
20
21
  | `--expires_at` | `unknown` | no | | When the API key should stop working, as an ISO 8601 timestamp. Omit (or pass `null` on update) for a key that never expires. |
21
22
  | `--ip_allowlist` | `unknown` | no | | IPv4/IPv6 CIDR ranges allowed to use this key, for example `["203.0.113.0/24"]`. Empty or `null` allows any IP. |
22
23
  | `--name` | `string` | yes | | A human-readable name for the API key, such as 'Production API Key'. |
@@ -116,6 +117,7 @@ Update API Key
116
117
 
117
118
  | Flag | Type | Required | Default | Description |
118
119
  |------|------|----------|---------|-------------|
120
+ | `--api_version_date` | `string` | no | | Dated API version used when requests authenticated with this key omit the `Api-Version-Date` header. New keys default to the latest version. |
119
121
  | `--expires_at` | `unknown` | no | | When the API key should stop working, as an ISO 8601 timestamp. Omit (or pass `null` on update) for a key that never expires. |
120
122
  | `--ip_allowlist` | `unknown` | no | | IPv4/IPv6 CIDR ranges allowed to use this key, for example `["203.0.113.0/24"]`. Empty or `null` allows any IP. |
121
123
  | `--name` | `unknown` | no | | A new human-readable name for the API key. |
@@ -18,6 +18,7 @@ Create App
18
18
  | Flag | Type | Required | Default | Description |
19
19
  |------|------|----------|---------|-------------|
20
20
  | `--account_id` | `string` | no | | The account to create the app for (`biz_` tag). Defaults to the account behind the presented credential. |
21
+ | `--app_type` | `string` | no | | The type of app to create. Defaults to `b2c_app`. |
21
22
  | `--base_url` | `unknown` | no | | The base production URL where the app is hosted, such as `https://myapp.example.com`. |
22
23
  | `--icon` | `object` | no | | The icon image for the app in PNG, JPEG, or GIF format, referencing an uploaded file: `{ id }` for an existing attachment or `{ direct_upload_id }` for a new direct upload. |
23
24
  | `--name` | `string` | yes | | The display name for the app, shown to users on the app store and product pages. |
@@ -29,6 +30,20 @@ Create App
29
30
 
30
31
  ---
31
32
 
33
+ # whop apps delete
34
+
35
+ Delete App
36
+
37
+ ## Arguments
38
+
39
+ | Name | Type | Required | Description |
40
+ |------|------|----------|-------------|
41
+ | `id` | `string` | yes | App ID (prefixed `app_`), the app's claimed route, or its proxy domain id. |
42
+
43
+ > Confirm with the user before executing this destructive command.
44
+
45
+ ---
46
+
32
47
  # whop apps get
33
48
 
34
49
  Retrieve App
@@ -50,9 +65,9 @@ List Apps
50
65
  | Flag | Type | Required | Default | Description |
51
66
  |------|------|----------|---------|-------------|
52
67
  | `--account_id` | `string` | no | | Only return apps created by this account (`biz_` tag). With developer access to the account this includes its unlisted and hidden apps. |
53
- | `--app_type` | `string` | no | | Filter apps by the type of end-user they are built for. |
68
+ | `--app_type` | `string` | no | | Filter apps by the type of end-user they are built for. Apps of type `website` are left out unless you ask for them by name. |
54
69
  | `--view_type` | `string` | no | | Only return apps supporting this view type, such as `dashboard` or `hub`. |
55
- | `--verified_apps_only` | `boolean` | no | | Whether to only return apps verified by Whop. |
70
+ | `--verified_apps_only` | `boolean` | no | | Whether to only return apps verified by Whop. Verified website templates — websites with a published web build — are included, even though websites are otherwise left out of app lists. |
56
71
  | `--query` | `string` | no | | A search string matched against app names. |
57
72
  | `--order` | `string` | no | | The field to sort apps by. Defaults to discoverable_at, showing the most recently published apps first. |
58
73
  | `--direction` | `string` | no | | Sort direction. |
@@ -123,8 +138,8 @@ Update App
123
138
  | Flag | Type | Required | Default | Description |
124
139
  |------|------|----------|---------|-------------|
125
140
  | `--app_store_description` | `string` | no | | The detailed description shown on the app store's in-depth app view page. |
126
- | `--app_type` | `string` | no | | The type of end-user the app is built for. |
127
- | `--base_url` | `string` | no | | The base production URL where the app is hosted. |
141
+ | `--app_type` | `string` | no | | The type of end-user the app is built for. Cannot be changed on an app whose type is already `website`. |
142
+ | `--base_url` | `unknown` | no | | The base production URL where the app is hosted. Set to `null` to take the app proxy offline. |
128
143
  | `--dashboard_path` | `unknown` | no | | The URL path for the account dashboard view. |
129
144
  | `--description` | `string` | no | | A short description of the app shown in listings and search results. |
130
145
  | `--discover_path` | `unknown` | no | | The URL path for the discover view. |
@@ -17,7 +17,7 @@ Add People
17
17
 
18
18
  | Name | Type | Required | Description |
19
19
  |------|------|----------|-------------|
20
- | `audience_id` | `string` | yes | Audience ID, prefixed `adaud_`. |
20
+ | `id` | `string` | yes | Audience ID, prefixed `adaud_`. |
21
21
 
22
22
  ## Options
23
23
 
@@ -62,7 +62,7 @@ Delete Audience
62
62
 
63
63
  | Name | Type | Required | Description |
64
64
  |------|------|----------|-------------|
65
- | `audience_id` | `string` | yes | Audience ID, prefixed `adaud_`. |
65
+ | `id` | `string` | yes | Audience ID, prefixed `adaud_`. |
66
66
 
67
67
  > Confirm with the user before executing this destructive command.
68
68
 
@@ -93,7 +93,7 @@ Update Audience
93
93
 
94
94
  | Name | Type | Required | Description |
95
95
  |------|------|----------|-------------|
96
- | `audience_id` | `string` | yes | Audience ID, prefixed `adaud_`. |
96
+ | `id` | `string` | yes | Audience ID, prefixed `adaud_`. |
97
97
 
98
98
  ## Options
99
99
 
@@ -38,6 +38,7 @@ Create Bounty
38
38
  | Flag | Type | Required | Default | Description |
39
39
  |------|------|----------|---------|-------------|
40
40
  | `--accepted_submissions_limit` | `number` | no | | Number of submissions that can be accepted (winner slots). Defaults to 1. The escrowed total is `gross_reward_amount` times this limit and must be at least $5. |
41
+ | `--accepted_submissions_per_user_limit` | `number` | no | | How many winner slots one worker can win. Defaults to `1`. Wins plus proofs awaiting review never exceed this number, and a worker runs one attempt at a time. Cannot exceed `accepted_submissions_limit`. |
41
42
  | `--account_id` | `unknown` | no | | Account whose balance funds the bounty pool (`biz_` tag). Defaults to the caller's personal balance. Requires permission to move the account's funds. |
42
43
  | `--allowed_country_codes` | `unknown` | no | | Countries whose residents can work the bounty, as ISO 3166 alpha-2 codes. Empty means worldwide. |
43
44
  | `--business_goal_type` | `string` | no | | What the poster wants the work to achieve, declared once here. |
@@ -90,6 +91,32 @@ List Bounties
90
91
 
91
92
  ---
92
93
 
94
+ # whop bounties submissions
95
+
96
+ List Public Submissions
97
+
98
+ ## Arguments
99
+
100
+ | Name | Type | Required | Description |
101
+ |------|------|----------|-------------|
102
+ | `bounty_id` | `string` | yes | The bounty whose public submissions to list (`bnty_` tag). |
103
+
104
+ ## Options
105
+
106
+ | Flag | Type | Required | Default | Description |
107
+ |------|------|----------|---------|-------------|
108
+ | `--status` | `string` | no | | Filter by lifecycle state. |
109
+ | `--created_after` | `string` | no | | Only submissions created after this ISO 8601 timestamp. |
110
+ | `--created_before` | `string` | no | | Only submissions created before this ISO 8601 timestamp. |
111
+ | `--order` | `string` | no | | Sort field. |
112
+ | `--direction` | `string` | no | | Sort direction. |
113
+ | `--first` | `number` | no | `20` | Number of submissions to return from the start of the window. |
114
+ | `--after` | `string` | no | | Cursor to paginate forwards from. |
115
+ | `--last` | `number` | no | | Number of submissions to return from the end of the window. |
116
+ | `--before` | `string` | no | | Cursor to paginate backwards from. |
117
+
118
+ ---
119
+
93
120
  # whop bounties update
94
121
 
95
122
  Update Bounty
@@ -105,6 +132,7 @@ Update Bounty
105
132
  | Flag | Type | Required | Default | Description |
106
133
  |------|------|----------|---------|-------------|
107
134
  | `--accepted_submissions_limit` | `number` | no | | Scheduled drafts only. Number of submissions that can be accepted (winner slots). |
135
+ | `--accepted_submissions_per_user_limit` | `number` | no | | How many winner slots one worker can win. Defaults to `1`. Wins plus proofs awaiting review never exceed this number, and a worker runs one attempt at a time. Cannot exceed `accepted_submissions_limit`. Editable while the bounty is still open with nothing under review. |
108
136
  | `--allowed_country_codes` | `unknown` | no | | Replace the countries whose residents can work the bounty, as ISO 3166 alpha-2 codes. Empty means worldwide. |
109
137
  | `--business_goal_type` | `string` | no | | What the poster wants the work to achieve, declared once here. |
110
138
  | `--description` | `string` | no | | New full task instructions. |
@@ -35,7 +35,7 @@ Cancel Bounty Submission
35
35
 
36
36
  | Name | Type | Required | Description |
37
37
  |------|------|----------|-------------|
38
- | `bounty_submission_id` | `string` | yes | The bounty submission to act on (`btys_` tag). |
38
+ | `id` | `string` | yes | The bounty submission to act on (`btys_` tag). |
39
39
 
40
40
  > Confirm with the user before executing this destructive command.
41
41
 
@@ -49,7 +49,7 @@ Retrieve Bounty Submission
49
49
 
50
50
  | Name | Type | Required | Description |
51
51
  |------|------|----------|-------------|
52
- | `bounty_submission_id` | `string` | yes | The bounty submission to act on (`btys_` tag). |
52
+ | `id` | `string` | yes | The bounty submission to act on (`btys_` tag). |
53
53
 
54
54
  ---
55
55
 
@@ -83,7 +83,7 @@ Submit Bounty Submission
83
83
 
84
84
  | Name | Type | Required | Description |
85
85
  |------|------|----------|-------------|
86
- | `bounty_submission_id` | `string` | yes | The claimed attempt to submit for review (`btys_` tag). |
86
+ | `id` | `string` | yes | The claimed attempt to submit for review (`btys_` tag). |
87
87
 
88
88
  ## Options
89
89
 
@@ -38,7 +38,7 @@ Retrieve Card
38
38
 
39
39
  | Name | Type | Required | Description |
40
40
  |------|------|----------|-------------|
41
- | `card_id` | `string` | yes | Card ID to retrieve, prefixed `icrd_`. |
41
+ | `id` | `string` | yes | Card ID to retrieve, prefixed `icrd_`. |
42
42
 
43
43
  ## Options
44
44
 
@@ -112,7 +112,7 @@ Update Card
112
112
 
113
113
  | Name | Type | Required | Description |
114
114
  |------|------|----------|-------------|
115
- | `card_id` | `string` | yes | Card ID to retrieve, prefixed `icrd_`. |
115
+ | `id` | `string` | yes | Card ID to retrieve, prefixed `icrd_`. |
116
116
 
117
117
  ## Options
118
118
 
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: whop-dispute-alerts
3
+ description: Issuer warnings that arrive before a chargeback does. Run `whop dispute-alerts --help` for usage details.
4
+ requires_bin: whop
5
+ command: whop dispute-alerts
6
+ ---
7
+
8
+ A Dispute alert is an early warning from a card issuer that a settled payment is being questioned, ahead of any chargeback. `type` separates fraud reports (`early_fraud_warning`), pre-dispute notices (`dispute_alert`), and Visa RDR cases the network already closed by refunding (`rapid_dispute_resolution`).
9
+
10
+ Use the Dispute alerts API to list alerts for an account, filter them by type or payment, and read `actionable` to see whether refunding can still avoid the chargeback.
11
+
12
+ # whop dispute-alerts get
13
+
14
+ Retrieve Dispute Alert
15
+
16
+ ## Arguments
17
+
18
+ | Name | Type | Required | Description |
19
+ |------|------|----------|-------------|
20
+ | `id` | `string` | yes | The dispute alert ID, prefixed `dspa_`. |
21
+
22
+ ---
23
+
24
+ # whop dispute-alerts list
25
+
26
+ List Dispute Alerts
27
+
28
+ ## Options
29
+
30
+ | Flag | Type | Required | Default | Description |
31
+ |------|------|----------|---------|-------------|
32
+ | `--account_id` | `string` | no | | Only alerts on this account's payments (`biz_` tag). Omit it to cover every account you can read. |
33
+ | `--payment_id` | `string` | no | | Only alerts on this payment (`pay_` tag). A payment can carry several. |
34
+ | `--type` | `string` | no | | Only alerts of this kind. `early_fraud_warning` for issuer fraud reports, `dispute_alert` for pre-dispute notices, `rapid_dispute_resolution` for Visa RDR cases the network already closed. |
35
+ | `--first` | `number` | no | | The number of alerts to return (default 20, max 100). |
36
+ | `--after` | `string` | no | | A cursor; returns alerts after this position. |
37
+ | `--last` | `number` | no | | The number of alerts to return from the end of the range. |
38
+ | `--before` | `string` | no | | A cursor; returns alerts before this position. |
39
+ | `--order` | `string` | no | | The field to sort alerts by. |
40
+ | `--direction` | `string` | no | | Sort direction. |
41
+ | `--created_before` | `string` | no | | Only alerts Whop received before this ISO 8601 timestamp. |
42
+ | `--created_after` | `string` | no | | Only alerts Whop received after this ISO 8601 timestamp. |
@@ -5,9 +5,9 @@ requires_bin: whop
5
5
  command: whop disputes
6
6
  ---
7
7
 
8
- A Dispute is a chargeback a customer files against a payment through their bank, or a pre-dispute inquiry that may become one. It carries the disputed payment, a deadline to respond, the evidence packet you send to the payment processor, and the outcome once the processor rules.
8
+ A Dispute is a chargeback a customer files against a payment through their bank, or an inquiry that may become one. It carries the disputed payment, a deadline to respond, your evidence, and the outcome once the processor rules.
9
9
 
10
- Disputes are opened by the customer's bank, never through the API, so you can read them but not create or delete them. Use the Disputes API to list and filter disputes, summarize them by status and currency for a queue view, edit the evidence packet while the dispute is still contestable, and submit that evidence for review.
10
+ Use the Disputes API to list disputes, edit the evidence packet while a dispute is still contestable, and submit it for review.
11
11
 
12
12
  # whop disputes get
13
13
 
@@ -83,7 +83,7 @@ Retrieve the pulse feed
83
83
 
84
84
  | Flag | Type | Required | Default | Description |
85
85
  |------|------|----------|---------|-------------|
86
- | `--event` | `string` | no | | Filter to one or more types, comma separated — for example `withdrawal,card_spend`. These are the item's `type`, not its `event_name`: several types share the `ledger_line.created` event name. Omit for every type in the feed. Values outside the feed's own set are rejected. |
86
+ | `--event` | `string` | no | | Filter to one or more types, comma separated — for example `purchase,card_spend`. These are the item's `type`, not its `event_name`: several types share the `ledger_line.created` event name. Omit for every type in the feed. Values outside the feed's own set are rejected. |
87
87
  | `--first` | `number` | no | | The number of events to return. |
88
88
  | `--after` | `string` | no | | A cursor for fetching events after a previous page. |
89
89
  | `--before` | `string` | no | | A cursor for fetching events before a later page. |
@@ -22,7 +22,7 @@ Create Export
22
22
  | `--filters` | `object` | no | | Resource-specific filters. For native REST resources (`payouts`, `transfers`, `memberships`) these are the resource's own list query params; for dashboard tables they mirror the dashboard table filters.
23
23
 
24
24
  <details>
25
- <summary>Filters by resource (22)</summary>
25
+ <summary>Filters by resource (25)</summary>
26
26
 
27
27
  <details>
28
28
  <summary>ad_campaigns (4)</summary>
@@ -62,6 +62,17 @@ Mirrors the filtering query params of `GET /api/v1/ads`.
62
62
  - `query` `string` — Filter ads by a title or ID substring.
63
63
  - `status` `string` — Only return ads with this status. One of `active`, `paused`, `in_review`, `rejected`.
64
64
 
65
+ </details>
66
+ <details>
67
+ <summary>apps (4)</summary>
68
+
69
+ Mirrors the filtering query params of `GET /api/v1/apps`.
70
+
71
+ - `app_type` `string` — Filter apps by the type of end-user they are built for. Apps of type `website` are left out unless you ask for them by name. One of `b2b_app`, `b2c_app`, `company_app`, `component`, `website`.
72
+ - `query` `string` — A search string matched against app names.
73
+ - `verified_apps_only` `boolean` — Whether to only return apps verified by Whop. Verified website templates — websites with a published web build — are included, even though websites are otherwise left out of app lists.
74
+ - `view_type` `string` — Only return apps supporting this view type, such as `dashboard` or `hub`. One of `hub`, `discover`, `dash`, `dashboard`, `analytics`, `skills`, `openapi`.
75
+
65
76
  </details>
66
77
  <details>
67
78
  <summary>audiences (3)</summary>
@@ -95,6 +106,29 @@ Mirrors the filtering query params of `GET /api/v1/bounty_submissions`.
95
106
  - `created_before` `string` — Only submissions created before this ISO 8601 timestamp.
96
107
  - `status` `string` — Filter by lifecycle state. One of `in_progress`, `submitted`, `approved`, `denied`.
97
108
 
109
+ </details>
110
+ <details>
111
+ <summary>card_transactions (6)</summary>
112
+
113
+ Mirrors the filtering query params of `GET /api/v1/card_transactions`.
114
+
115
+ - `card_id` `string[]` — Return only transactions charged to these cards, each prefixed `icrd_`.
116
+ - `cardholder_id` `string[]` — Return only transactions on cards assigned to these users, each prefixed `user_`.
117
+ - `created_after` `string` — Return only transactions authorized at or after this ISO 8601 timestamp.
118
+ - `created_before` `string` — Return only transactions authorized at or before this ISO 8601 timestamp.
119
+ - `status` `string` — Return only transactions with this status. One of `pending`, `completed`, `reversed`, `declined`.
120
+ - `transaction_ids` `string[]` — Return only these card transactions, each prefixed `citx_`. Repeat the parameter, or pass one comma-separated value.
121
+
122
+ </details>
123
+ <details>
124
+ <summary>checkout_configurations (3)</summary>
125
+
126
+ Mirrors the filtering query params of `GET /api/v1/checkout_configurations`.
127
+
128
+ - `created_after` `string` — Only return checkout configurations created after this ISO 8601 timestamp.
129
+ - `created_before` `string` — Only return checkout configurations created before this ISO 8601 timestamp.
130
+ - `plan_id` `string` — Only return checkout configurations for this plan ID, prefixed `plan_`.
131
+
98
132
  </details>
99
133
  <details>
100
134
  <summary>disputes (4)</summary>
@@ -129,7 +163,7 @@ Mirrors the filtering query params of `GET /api/v1/events`.
129
163
 
130
164
  </details>
131
165
  <details>
132
- <summary>financial-activity (8)</summary>
166
+ <summary>financial-activity (9)</summary>
133
167
 
134
168
  Mirrors the filtering query params of `GET /api/v1/financial-activity`.
135
169
 
@@ -137,6 +171,7 @@ Mirrors the filtering query params of `GET /api/v1/financial-activity`.
137
171
  - `available_before` `string` — Only include rows whose funds became withdrawable on or before this `YYYY-MM-DD` settlement date (UTC). Set equal to available_after for a single day. Requires currency.
138
172
  - `currency` `string` — Optional currency code filter, for example `usd`.
139
173
  - `include_owned_accounts` `boolean` — When true, aggregates the authenticated user's personal ledger with the businesses they own (owner role with balance read) into one feed. Requires user_id to be the authenticated user; cannot be combined with account_id or the settlement-date filters. Each returned row includes the owning `account`.
174
+ - `include_resource` `boolean` — Whether to include the `resource` field in the response or not. Consider passing `false` if you need a fast response without as many rich details.
140
175
  - `line_types` `string[]` — Optional ledger line categories to include. Some categories (for example `onchain_deposit`, which covers inbound crypto deposits such as MoonPay onramps) are only returned when explicitly requested here.
141
176
  - `posted_after` `string` — Only include rows posted after this ISO 8601 timestamp.
142
177
  - `posted_before` `string` — Only include rows posted before this ISO 8601 timestamp.
@@ -280,7 +315,7 @@ Mirrors the filtering query params of `GET /api/v1/team_members`.
280
315
 
281
316
  - `created_after` `string` — Only return members added after this ISO 8601 timestamp.
282
317
  - `created_before` `string` — Only return members added before this ISO 8601 timestamp.
283
- - `role` `string` — Only return members with this role. `custom` matches members on a dashboard-managed custom role. One of `owner`, `admin`, `sales_manager`, `moderator`, `advertiser`, `app_manager`, `support`, `manager`, `custom`.
318
+ - `role` `string` — Only return members with this role. `custom` matches members on a dashboard-managed custom role. One of `owner`, `admin`, `sales_manager`, `moderator`, `advertiser`, `app_manager`, `support`, `manager`, `workforce`, `custom`.
284
319
  - `status` `string` — Only return members with this status: `joined` (accepted members) or `pending` (pending invites). Both are returned by default. One of `joined`, `pending`.
285
320
  - `user_id` `string` — Only return the membership for this user ID, prefixed `user_`.
286
321
 
@@ -20,6 +20,7 @@ List Financial Activity
20
20
  | `--account_id` | `string` | no | | The owning account ID (a biz_ identifier). Provide this or user_id. |
21
21
  | `--user_id` | `string` | no | | The owning user ID (a user_ identifier). Provide this or account_id. |
22
22
  | `--include_owned_accounts` | `boolean` | no | | When true, aggregates the authenticated user's personal ledger with the businesses they own (owner role with balance read) into one feed. Requires user_id to be the authenticated user; cannot be combined with account_id or the settlement-date filters. Each returned row includes the owning `account`. |
23
+ | `--include_resource` | `boolean` | no | `true` | Whether to include the `resource` field in the response or not. Consider passing `false` if you need a fast response without as many rich details. |
23
24
  | `--line_types` | `array` | no | | Optional ledger line categories to include. Some categories (for example `onchain_deposit`, which covers inbound crypto deposits such as MoonPay onramps) are only returned when explicitly requested here. |
24
25
  | `--currency` | `string` | no | | Optional currency code filter, for example `usd`. |
25
26
  | `--posted_after` | `string` | no | | Only include rows posted after this ISO 8601 timestamp. |
@@ -7,7 +7,7 @@ command: whop memberships
7
7
 
8
8
  A Membership is a customer's purchase of a plan: the subscription or one-time grant that gives them access to a product. It tracks billing state (`active`, `trialing`, `past_due`, and so on), the current period, pending cancellations, custom metadata, and the software license key when the product includes licensing.
9
9
 
10
- Use the Memberships API to list an account's memberships or the caller's own, retrieve one by ID or license key, and manage the lifecycle: cancel immediately or at period end, reverse a scheduled period-end cancellation, pause and resume payment collection, extend with free days, and update metadata.
10
+ Use the Memberships API to list an account's memberships or the caller's own, retrieve one by ID or license key, invite a recipient to join through a free plan, and manage the lifecycle: cancel immediately or at period end, reverse a scheduled period-end cancellation, pause and resume payment collection, extend with free days, and update metadata.
11
11
 
12
12
  # whop memberships cancel
13
13
 
@@ -63,6 +63,23 @@ Retrieve Membership
63
63
 
64
64
  ---
65
65
 
66
+ # whop memberships invite
67
+
68
+ Invite to a Membership
69
+
70
+ ## Options
71
+
72
+ | Flag | Type | Required | Default | Description |
73
+ |------|------|----------|---------|-------------|
74
+ | `--email` | `string` | no | | Recipient email address. Mutually exclusive with `user_id`. |
75
+ | `--plan_id` | `string` | yes | | Free plan whose membership the recipient is invited to, prefixed `plan_`. |
76
+ | `--user_id` | `string` | no | | Recipient user ID, prefixed `user_`. Mutually exclusive with `email`. |
77
+ | `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
78
+
79
+ > Confirm with the user before executing this destructive command.
80
+
81
+ ---
82
+
66
83
  # whop memberships list
67
84
 
68
85
  List Memberships
@@ -54,7 +54,7 @@ Retrieve Notification
54
54
 
55
55
  | Name | Type | Required | Description |
56
56
  |------|------|----------|-------------|
57
- | `notification_id` | `string` | yes | A notification `id` from List Notifications, or the id delivered with a push/websocket event. |
57
+ | `id` | `string` | yes | A notification `id` from List Notifications, or the id delivered with a push/websocket event. |
58
58
 
59
59
  ---
60
60