@whop/cli 0.16.0 → 0.16.2
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.
- package/README.md +17 -3
- package/dist/index.js +6647 -15750
- package/dist/index.js.map +1 -1
- package/dist/vite-devtools-stub.d.ts +22 -0
- package/dist/vite-devtools-stub.js +19 -0
- package/dist/vite-devtools-stub.js.map +1 -0
- package/dist/vite.d.ts +17 -2
- package/dist/vite.js +30 -5
- package/dist/vite.js.map +1 -1
- package/package.json +8 -7
- package/skills/whop/SKILL.md +48 -0
- package/skills/whop/references/ads.md +43 -0
- package/skills/whop/references/formation.md +40 -0
- package/skills/whop/references/websites.md +59 -0
- package/skills/whop-accounts/SKILL.md +0 -228
- package/skills/whop-ad-campaigns/SKILL.md +0 -204
- package/skills/whop-ad-groups/SKILL.md +0 -269
- package/skills/whop-ads/SKILL.md +0 -277
- package/skills/whop-api-keys/SKILL.md +0 -126
- package/skills/whop-app-builds/SKILL.md +0 -81
- package/skills/whop-apps/SKILL.md +0 -161
- package/skills/whop-audiences/SKILL.md +0 -105
- package/skills/whop-bounties/SKILL.md +0 -145
- package/skills/whop-bounty-submissions/SKILL.md +0 -95
- package/skills/whop-cards/SKILL.md +0 -133
- package/skills/whop-checkout-configurations/SKILL.md +0 -77
- package/skills/whop-deposits/SKILL.md +0 -26
- package/skills/whop-dispute-alerts/SKILL.md +0 -42
- package/skills/whop-disputes/SKILL.md +0 -99
- package/skills/whop-events/SKILL.md +0 -105
- package/skills/whop-exports/SKILL.md +0 -379
- package/skills/whop-ledgers/SKILL.md +0 -52
- package/skills/whop-media/SKILL.md +0 -44
- package/skills/whop-members/SKILL.md +0 -64
- package/skills/whop-memberships/SKILL.md +0 -165
- package/skills/whop-notifications/SKILL.md +0 -104
- package/skills/whop-partners/SKILL.md +0 -113
- package/skills/whop-payment-method-domains/SKILL.md +0 -93
- package/skills/whop-payments/SKILL.md +0 -40
- package/skills/whop-payouts/SKILL.md +0 -167
- package/skills/whop-people/SKILL.md +0 -63
- package/skills/whop-permissions/SKILL.md +0 -21
- package/skills/whop-plans/SKILL.md +0 -165
- package/skills/whop-products/SKILL.md +0 -153
- package/skills/whop-recommended-actions/SKILL.md +0 -59
- package/skills/whop-resolution-center-cases/SKILL.md +0 -233
- package/skills/whop-setup-intents/SKILL.md +0 -40
- package/skills/whop-shipments/SKILL.md +0 -79
- package/skills/whop-social-accounts/SKILL.md +0 -128
- package/skills/whop-stats/SKILL.md +0 -65
- package/skills/whop-swaps/SKILL.md +0 -77
- package/skills/whop-team-members/SKILL.md +0 -93
- package/skills/whop-transfers/SKILL.md +0 -80
- package/skills/whop-users/SKILL.md +0 -309
- package/skills/whop-verifications/SKILL.md +0 -67
package/skills/whop-ads/SKILL.md
DELETED
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: whop-ads
|
|
3
|
-
description: "The creative: copy, assets, and destination URL. Run `whop ads --help` for usage details."
|
|
4
|
-
requires_bin: whop
|
|
5
|
-
command: whop ads
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
An Ad is the individual creative unit delivered by an [ad group](https://docs.whop.com/api-reference/beta/ad-groups/ad-group). It holds the copy, creative assets, and destination URL for one ad.
|
|
9
|
-
|
|
10
|
-
Use the Ads API to list ads for an account, create ads inside ad groups, retrieve or update creative details, delete ads that should stop running, and pause or resume delivery.
|
|
11
|
-
|
|
12
|
-
# whop ads create
|
|
13
|
-
|
|
14
|
-
Create an Ad
|
|
15
|
-
|
|
16
|
-
## Options
|
|
17
|
-
|
|
18
|
-
| Flag | Type | Required | Default | Description |
|
|
19
|
-
|------|------|----------|---------|-------------|
|
|
20
|
-
| `--ad_group` | `object` | no | | An inline ad group to create (same shape as POST /ad_groups, including ad_campaign_id). Creates the ad group and the ad together. Provide this OR ad_group_id. |
|
|
21
|
-
| `--ad_group_id` | `string` | no | | The existing ad group to create the ad in. Provide this OR ad_group, not both. |
|
|
22
|
-
| `--call_to_action` | `string` | no | | The call-to-action button shown on the ad. |
|
|
23
|
-
| `--creatives` | `array` | no | | The ad's creative assets. Each entry is an uploaded file id with an optional format; omit format for the original asset. Two or more entries with no format become a carousel (2-10 attachments), in order, sharing the ad's copy. |
|
|
24
|
-
| `--descriptions` | `array` | no | | The description variants shown on the ad. |
|
|
25
|
-
| `--headlines` | `array` | no | | The headline variants shown on the ad. |
|
|
26
|
-
| `--lead_form` | `object` | no | | Instant lead form for the ad. Only allowed when the ad group's conversion_location is an instant-form destination (instant_forms, instant_forms_and_messenger, website_and_instant_forms). Mutually exclusive with lead_form_id. |
|
|
27
|
-
| `--lead_form_id` | `string` | no | | Use an existing instant form instead of creating one — the form's platform ID, from a form already on the ad's Facebook page. Only allowed when the ad group's conversion_location is an instant-form destination. Mutually exclusive with lead_form. |
|
|
28
|
-
| `--messaging_config` | `object` | no | | Click-to-message welcome copy: the greeting (message) and the ice-breaker prompt (keyword). |
|
|
29
|
-
| `--multi_advertiser_ads` | `boolean` | no | | Whether the ad can appear alongside other advertisers' ads in the same unit. Defaults to true. |
|
|
30
|
-
| `--post_id` | `string` | no | | Promote an existing post instead of uploading creatives — a Facebook post or Instagram media id. Mutually exclusive with creatives. Pair with post_source. |
|
|
31
|
-
| `--post_source` | `string` | no | | Identifies the network that owns `post_id`. The source is inferred from the ID shape when omitted. |
|
|
32
|
-
| `--primary_texts` | `array` | no | | The primary text variants shown in the ad body. |
|
|
33
|
-
| `--social_accounts` | `array` | no | | The social accounts the ad runs under — a connected Facebook page and, optionally, an Instagram profile. |
|
|
34
|
-
| `--title` | `string` | no | | The display name of the ad. |
|
|
35
|
-
| `--url` | `string` | no | | The URL the ad links to. |
|
|
36
|
-
| `--url_parameters` | `object` | no | | Query parameters appended to the destination URL, keyed by parameter name. |
|
|
37
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
38
|
-
|
|
39
|
-
> Confirm with the user before executing this destructive command.
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
# whop ads delete
|
|
44
|
-
|
|
45
|
-
Delete an Ad
|
|
46
|
-
|
|
47
|
-
## Arguments
|
|
48
|
-
|
|
49
|
-
| Name | Type | Required | Description |
|
|
50
|
-
|------|------|----------|-------------|
|
|
51
|
-
| `id` | `string` | yes | The ad ID. |
|
|
52
|
-
|
|
53
|
-
> Confirm with the user before executing this destructive command.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
# whop ads duplicate
|
|
58
|
-
|
|
59
|
-
Duplicate an Ad
|
|
60
|
-
|
|
61
|
-
## Arguments
|
|
62
|
-
|
|
63
|
-
| Name | Type | Required | Description |
|
|
64
|
-
|------|------|----------|-------------|
|
|
65
|
-
| `id` | `string` | yes | The ad ID. |
|
|
66
|
-
|
|
67
|
-
## Options
|
|
68
|
-
|
|
69
|
-
| Flag | Type | Required | Default | Description |
|
|
70
|
-
|------|------|----------|---------|-------------|
|
|
71
|
-
| `--count` | `number` | no | | Number of copies to create (1-10). Defaults to 1. |
|
|
72
|
-
| `--preserve_engagement` | `boolean` | no | | Whether the copies keep the original post's engagement (likes, comments, shares). Defaults to false. |
|
|
73
|
-
| `--target_ad_group_id` | `string` | no | | Ad group to duplicate into. Defaults to the ad's own ad group. |
|
|
74
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
75
|
-
|
|
76
|
-
> Confirm with the user before executing this destructive command.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
# whop ads get
|
|
81
|
-
|
|
82
|
-
Retrieve an Ad
|
|
83
|
-
|
|
84
|
-
## Arguments
|
|
85
|
-
|
|
86
|
-
| Name | Type | Required | Description |
|
|
87
|
-
|------|------|----------|-------------|
|
|
88
|
-
| `id` | `string` | yes | The ad ID. |
|
|
89
|
-
|
|
90
|
-
## Options
|
|
91
|
-
|
|
92
|
-
| Flag | Type | Required | Default | Description |
|
|
93
|
-
|------|------|----------|---------|-------------|
|
|
94
|
-
| `--stats_from` | `string` | no | | Start of the stats window. |
|
|
95
|
-
| `--stats_to` | `string` | no | | End of the stats window. |
|
|
96
|
-
| `--time_zone` | `string` | no | | IANA timezone the stats window is interpreted in. Defaults to UTC. |
|
|
97
|
-
| `--attribution_model` | `string` | no | | Attribution model the conversion stats count under (defaults to last_touch). Under both models a journey with any whop ad touch attributes to whop; the model picks which whop touch credits the entity and which non-whop source wins otherwise. |
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
# whop ads list
|
|
102
|
-
|
|
103
|
-
List Ads
|
|
104
|
-
|
|
105
|
-
## Options
|
|
106
|
-
|
|
107
|
-
| Flag | Type | Required | Default | Description |
|
|
108
|
-
|------|------|----------|---------|-------------|
|
|
109
|
-
| `--account_id` | `string` | no | | The account the ads belong to. Defaults to the account-scoped key's own account. |
|
|
110
|
-
| `--ad_campaign_id` | `string` | no | | Only return ads in this ad campaign. |
|
|
111
|
-
| `--ad_campaign_ids` | `array` | no | | Only return ads in these ad campaigns (max 100). Repeat the parameter for each id (ad_campaign_ids=a&ad_campaign_ids=b). |
|
|
112
|
-
| `--ad_group_id` | `string` | no | | Only return ads in this ad group. |
|
|
113
|
-
| `--ad_group_ids` | `array` | no | | Only return ads in these ad groups (max 100). Repeat the parameter for each id (ad_group_ids=a&ad_group_ids=b). |
|
|
114
|
-
| `--status` | `string` | no | | Only return ads with this status. |
|
|
115
|
-
| `--query` | `string` | no | | Filter ads by a title or ID substring. |
|
|
116
|
-
| `--order` | `string` | no | | The field to sort by. Defaults to created_at. Stat columns (spend, impressions, …) rank over the stats_from/stats_to window across the whole list, not just the current page. results, cost_per_result and return_on_ad_spend rank by the same Whop pixel-attributed values the response reports. |
|
|
117
|
-
| `--direction` | `string` | no | | The sort direction. Defaults to desc. |
|
|
118
|
-
| `--created_before` | `string` | no | | Only return ads created before this timestamp. |
|
|
119
|
-
| `--created_after` | `string` | no | | Only return ads created after this timestamp. |
|
|
120
|
-
| `--stats_from` | `string` | no | | Start of the stats window. Defaults to all-time. |
|
|
121
|
-
| `--stats_to` | `string` | no | | End of the stats window. Defaults to now. |
|
|
122
|
-
| `--time_zone` | `string` | no | | IANA timezone (e.g. America/New_York) the stats window is interpreted in. Bare stats_from/stats_to dates resolve to day boundaries on this clock. Defaults to UTC. |
|
|
123
|
-
| `--attribution_model` | `string` | no | | Attribution model the conversion stats count under (defaults to last_touch). Under both models a journey with any whop ad touch attributes to whop; the model picks which whop touch credits the entity and which non-whop source wins otherwise. |
|
|
124
|
-
| `--first` | `number` | no | `20` | The number of ads to return. |
|
|
125
|
-
| `--after` | `string` | no | | Cursor to fetch the page after (from page_info.end_cursor). |
|
|
126
|
-
| `--last` | `number` | no | | The number of ads to return from the end of the range. |
|
|
127
|
-
| `--before` | `string` | no | | Cursor to fetch the page before (from page_info.start_cursor). |
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
# whop ads pause
|
|
132
|
-
|
|
133
|
-
Pause an Ad
|
|
134
|
-
|
|
135
|
-
## Arguments
|
|
136
|
-
|
|
137
|
-
| Name | Type | Required | Description |
|
|
138
|
-
|------|------|----------|-------------|
|
|
139
|
-
| `id` | `string` | yes | The ad ID. |
|
|
140
|
-
|
|
141
|
-
## Options
|
|
142
|
-
|
|
143
|
-
| Flag | Type | Required | Default | Description |
|
|
144
|
-
|------|------|----------|---------|-------------|
|
|
145
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
146
|
-
|
|
147
|
-
> Confirm with the user before executing this destructive command.
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
# whop ads unpause
|
|
152
|
-
|
|
153
|
-
Unpause an Ad
|
|
154
|
-
|
|
155
|
-
## Arguments
|
|
156
|
-
|
|
157
|
-
| Name | Type | Required | Description |
|
|
158
|
-
|------|------|----------|-------------|
|
|
159
|
-
| `id` | `string` | yes | The ad ID. |
|
|
160
|
-
|
|
161
|
-
## Options
|
|
162
|
-
|
|
163
|
-
| Flag | Type | Required | Default | Description |
|
|
164
|
-
|------|------|----------|---------|-------------|
|
|
165
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
166
|
-
|
|
167
|
-
> Confirm with the user before executing this destructive command.
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
# whop ads update
|
|
172
|
-
|
|
173
|
-
Update an Ad
|
|
174
|
-
|
|
175
|
-
## Arguments
|
|
176
|
-
|
|
177
|
-
| Name | Type | Required | Description |
|
|
178
|
-
|------|------|----------|-------------|
|
|
179
|
-
| `id` | `string` | yes | The ad ID. |
|
|
180
|
-
|
|
181
|
-
## Options
|
|
182
|
-
|
|
183
|
-
| Flag | Type | Required | Default | Description |
|
|
184
|
-
|------|------|----------|---------|-------------|
|
|
185
|
-
| `--call_to_action` | `string` | no | | The call-to-action button shown on the ad. |
|
|
186
|
-
| `--creatives` | `array` | no | | The ad's creative assets. Each entry is an uploaded file id with an optional format; omit format for the original asset. Replaces a live ad's creative on the platform. Two or more entries with no format replace it with a carousel (2-10 attachments), in order, sharing the ad's copy. |
|
|
187
|
-
| `--descriptions` | `array` | no | | The description variants shown on the ad. |
|
|
188
|
-
| `--headlines` | `array` | no | | The headline variants shown on the ad. |
|
|
189
|
-
| `--lead_form` | `object` | no | | Instant lead form for the ad. Only allowed when the ad group's conversion_location is an instant-form destination (instant_forms, instant_forms_and_messenger, website_and_instant_forms). Mutually exclusive with lead_form_id. |
|
|
190
|
-
| `--lead_form_id` | `string` | no | | Use an existing instant form instead of creating one — the form's platform ID, from a form already on the ad's Facebook page. Only allowed when the ad group's conversion_location is an instant-form destination. Mutually exclusive with lead_form. Replaces a stored lead_form. |
|
|
191
|
-
| `--messaging_config` | `object` | no | | Click-to-message welcome copy: the greeting (message) and the ice-breaker prompt (keyword). |
|
|
192
|
-
| `--multi_advertiser_ads` | `boolean` | no | | Whether the ad can appear alongside other advertisers' ads in the same unit. Defaults to true. |
|
|
193
|
-
| `--post_id` | `string` | no | | Promote an existing post instead of uploading creatives — a Facebook post or Instagram media id. Mutually exclusive with creatives. Pair with post_source. |
|
|
194
|
-
| `--post_source` | `string` | no | | Identifies the network that owns `post_id`. The source is inferred from the ID shape when omitted. |
|
|
195
|
-
| `--primary_texts` | `array` | no | | The primary text variants shown in the ad body. |
|
|
196
|
-
| `--social_accounts` | `array` | no | | The social accounts the ad runs under — a connected Facebook page and, optionally, an Instagram profile. |
|
|
197
|
-
| `--title` | `string` | no | | The display name of the ad. |
|
|
198
|
-
| `--url` | `string` | no | | The URL the ad links to. |
|
|
199
|
-
| `--url_parameters` | `object` | no | | Query parameters appended to the destination URL, keyed by parameter name. |
|
|
200
|
-
|
|
201
|
-
> Confirm with the user before executing this destructive command.
|
|
202
|
-
|
|
203
|
-
## Launch playbook — from nothing to a live ad
|
|
204
|
-
|
|
205
|
-
Three commands take you from nothing to a launchable ad: generate a creative, create the campaign + ad group + ad in one request, then flip the campaign to active. Structured flags (`--ad_group`, `--creatives`, `--ads_payment_methods`) take JSON strings.
|
|
206
|
-
|
|
207
|
-
### One-time setup
|
|
208
|
-
|
|
209
|
-
1. **Auth** — `whop login` (OAuth). First-time billing setup requires a user login; an API key can only reorder already-configured payment methods. If a command fails with a scope error saying your login predates the scope, run `whop login` again.
|
|
210
|
-
2. **Facebook page** — `whop social-accounts list` must show a `"platform": "facebook"` entry. Three ways to get one:
|
|
211
|
-
- **Already connected** — use its `sacc_` id as-is.
|
|
212
|
-
- **Link a Meta Business account** — `whop social-accounts connect --platform meta_business --scopes '["advertise"]' --redirect_url <url>`, then send the user to the returned `authorize_url`.
|
|
213
|
-
- **No page at all** — have Whop create one for the account: `whop social-accounts create --platform facebook`.
|
|
214
|
-
3. **Ads payment method** — check with `whop accounts preferences --account_id <account_id>` (your `biz_` ID, from `whop accounts me`). If `ads_payment_methods` is null, configure balance billing:
|
|
215
|
-
|
|
216
|
-
```sh
|
|
217
|
-
whop accounts update-preferences --account_id <account_id> --ads_payment_methods '{"primary": {"type": "platform_balance"}}'
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
Only launching needs this — drafts work without. Fund the balance with `whop deposits create --amount 50` (returns a hosted deposit page URL).
|
|
221
|
-
|
|
222
|
-
### 1. Generate a creative
|
|
223
|
-
|
|
224
|
-
```sh
|
|
225
|
-
whop media generate --type image --prompt "A running club jogging across a bridge at sunrise, warm light" --wait
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
`--wait` blocks until the asset is terminal and returns `file.id` — use that as the creative. Billed from the balance (`amount_charged`); a failed generation auto-refunds, so adjust the prompt and retry. Video: `--type video` plus optional `--duration_seconds` (5/10/15), `--resolution` (480p–4k), and up to 4 `--reference_media` file IDs (first one seeds the opening frame).
|
|
229
|
-
|
|
230
|
-
### 2. Create the whole tree as a draft — one request
|
|
231
|
-
|
|
232
|
-
```sh
|
|
233
|
-
whop ads create \
|
|
234
|
-
--title "Run club launch ad" \
|
|
235
|
-
--primary_texts "Join 10,000 runners chasing their next PR together." \
|
|
236
|
-
--headlines "Find your stride" \
|
|
237
|
-
--call_to_action sign_up \
|
|
238
|
-
--url "https://whop.com/your-store-page" \
|
|
239
|
-
--creatives '[{"id": "file_XXXXXXXX"}]' \
|
|
240
|
-
--social_accounts '[{"id": "sacc_XXXXXXXX"}]' \
|
|
241
|
-
--ad_group '{
|
|
242
|
-
"title": "US broad",
|
|
243
|
-
"conversion_location": "website",
|
|
244
|
-
"regions": {"include": {"countries": ["US"]}},
|
|
245
|
-
"ad_campaign": {"title": "Run club growth", "platform": "meta", "objective": "sales", "status": "draft", "budget_amount": 25, "budget_optimization": "ad_campaign"}
|
|
246
|
-
}'
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
Field rules:
|
|
250
|
-
|
|
251
|
-
| Field | Rule |
|
|
252
|
-
|-------|------|
|
|
253
|
-
| `creatives` | One entry with no `format` is required (the base asset). `square`/`vertical`/`horizontal` are optional crops on top. |
|
|
254
|
-
| `url` | Required for website ads. A whop.com store page works as-is; an external page needs the Whop pixel installed. |
|
|
255
|
-
| Budget | Default to CBO: `budget_amount` on the campaign with `budget_optimization: "ad_campaign"` (the network shifts spend to the best ad group). Per-ad-group `budget_amount` (ABO) is the manual alternative. One level owns it — never both. |
|
|
256
|
-
| Targeting | Omit `demographics`/`placements`/`devices` for automatic optimization. `regions` uses ISO 3166 (`"US"`, `"US-CA"`). |
|
|
257
|
-
| `lead_form` | Only with an instant-form `conversion_location`. |
|
|
258
|
-
|
|
259
|
-
Reuse existing containers by passing `--ad_group_id adgrp_x` instead of `--ad_group`, or `"ad_campaign_id": "adcamp_x"` inside `--ad_group` instead of the inline `ad_campaign`.
|
|
260
|
-
|
|
261
|
-
### 3. Launch
|
|
262
|
-
|
|
263
|
-
`"status": "draft"` above kept money out of it. Review, then launch — this is when spend starts and the payment method is enforced:
|
|
264
|
-
|
|
265
|
-
```sh
|
|
266
|
-
whop ad-campaigns update adcamp_XXXXXXXX --status active
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
(Ready to spend immediately? Omit `"status": "draft"` and the one-shot create launches directly.)
|
|
270
|
-
|
|
271
|
-
### 4. Monitor
|
|
272
|
-
|
|
273
|
-
```sh
|
|
274
|
-
whop ads get ad_XXXXXXXX
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
`delivery_status` is the live state (a brief `in_review` for moderation is normal); `issues[]` carries a human-readable `message` for anything the network rejected asynchronously. Control delivery with `pause`/`unpause` on ads, ad groups, or campaigns. Edit copy or creatives with `whop ads update` — sending `creatives` replaces the whole set, so include the base entry.
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: whop-api-keys
|
|
3
|
-
description: Programmatic credentials for an account or app. Run `whop api-keys --help` for usage details.
|
|
4
|
-
requires_bin: whop
|
|
5
|
-
command: whop api-keys
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
An API Key is a programmatic credential owned by an account or app. Each key carries its own permissions policy — explicit permission statements or an inherited system role — and can be restricted with an expiration date and an IP allowlist.
|
|
9
|
-
|
|
10
|
-
Use the API Keys API to list an account or app's keys, create a key (the full secret is returned once, on creation), inspect a key's effective grants, update its name or restrictions, rotate its secret, and revoke it. These endpoints require a user session — they cannot be called with an API key.
|
|
11
|
-
|
|
12
|
-
# whop api-keys create
|
|
13
|
-
|
|
14
|
-
Create API Key
|
|
15
|
-
|
|
16
|
-
## Options
|
|
17
|
-
|
|
18
|
-
| Flag | Type | Required | Default | Description |
|
|
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. |
|
|
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. |
|
|
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. |
|
|
23
|
-
| `--name` | `string` | yes | | A human-readable name for the API key, such as 'Production API Key'. |
|
|
24
|
-
| `--permissions` | `object` | yes | | The permissions policy for the API key: explicit permission statements, or a system role to inherit from. Statements without a `resources` array default to the owning account (Account API keys) or every key-addressable resource (App API keys). |
|
|
25
|
-
| `--resource_id` | `string` | yes | | The account (`biz_`) or app (`app_`) tag to create the API key for. |
|
|
26
|
-
| `--resource_type` | `string` | yes | | The type of resource that will own this API key. |
|
|
27
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
28
|
-
|
|
29
|
-
> Confirm with the user before executing this destructive command.
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
# whop api-keys delete
|
|
34
|
-
|
|
35
|
-
Delete API Key
|
|
36
|
-
|
|
37
|
-
## Arguments
|
|
38
|
-
|
|
39
|
-
| Name | Type | Required | Description |
|
|
40
|
-
|------|------|----------|-------------|
|
|
41
|
-
| `id` | `string` | yes | API key ID, prefixed `apik_`. |
|
|
42
|
-
|
|
43
|
-
> Confirm with the user before executing this destructive command.
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
# whop api-keys get
|
|
48
|
-
|
|
49
|
-
Retrieve API Key
|
|
50
|
-
|
|
51
|
-
## Arguments
|
|
52
|
-
|
|
53
|
-
| Name | Type | Required | Description |
|
|
54
|
-
|------|------|----------|-------------|
|
|
55
|
-
| `id` | `string` | yes | API key ID, prefixed `apik_`. |
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
# whop api-keys list
|
|
60
|
-
|
|
61
|
-
List API Keys
|
|
62
|
-
|
|
63
|
-
## Options
|
|
64
|
-
|
|
65
|
-
| Flag | Type | Required | Default | Description |
|
|
66
|
-
|------|------|----------|---------|-------------|
|
|
67
|
-
| `--resource_id` | `string` | yes | | The account (`biz_`) or app (`app_`) tag to list API keys for. |
|
|
68
|
-
| `--resource_type` | `string` | yes | | The type of resource that owns the API keys. |
|
|
69
|
-
| `--created_before` | `number` | no | | Only return API keys created before this ISO 8601 timestamp. |
|
|
70
|
-
| `--created_after` | `number` | no | | Only return API keys created after this ISO 8601 timestamp. |
|
|
71
|
-
| `--first` | `number` | no | | The number of API keys to return (default 20, max 100). |
|
|
72
|
-
| `--after` | `string` | no | | A cursor; returns API keys after this position. |
|
|
73
|
-
| `--last` | `number` | no | | The number of API keys to return from the end of the range. |
|
|
74
|
-
| `--before` | `string` | no | | A cursor; returns API keys before this position. |
|
|
75
|
-
| `--order` | `string` | no | | The field to sort API keys by. |
|
|
76
|
-
| `--direction` | `string` | no | | Sort direction. |
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
# whop api-keys permissions
|
|
81
|
-
|
|
82
|
-
List the Permission Catalog
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
# whop api-keys rotate
|
|
87
|
-
|
|
88
|
-
Rotate API Key
|
|
89
|
-
|
|
90
|
-
## Arguments
|
|
91
|
-
|
|
92
|
-
| Name | Type | Required | Description |
|
|
93
|
-
|------|------|----------|-------------|
|
|
94
|
-
| `id` | `string` | yes | API key ID, prefixed `apik_`. |
|
|
95
|
-
|
|
96
|
-
## Options
|
|
97
|
-
|
|
98
|
-
| Flag | Type | Required | Default | Description |
|
|
99
|
-
|------|------|----------|---------|-------------|
|
|
100
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
101
|
-
|
|
102
|
-
> Confirm with the user before executing this destructive command.
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
# whop api-keys update
|
|
107
|
-
|
|
108
|
-
Update API Key
|
|
109
|
-
|
|
110
|
-
## Arguments
|
|
111
|
-
|
|
112
|
-
| Name | Type | Required | Description |
|
|
113
|
-
|------|------|----------|-------------|
|
|
114
|
-
| `id` | `string` | yes | API key ID, prefixed `apik_`. |
|
|
115
|
-
|
|
116
|
-
## Options
|
|
117
|
-
|
|
118
|
-
| Flag | Type | Required | Default | Description |
|
|
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. |
|
|
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. |
|
|
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. |
|
|
123
|
-
| `--name` | `unknown` | no | | A new human-readable name for the API key. |
|
|
124
|
-
| `--permissions` | `object` | no | | The permissions policy for the API key: explicit permission statements, or a system role to inherit from. Statements without a `resources` array default to the owning account (Account API keys) or every key-addressable resource (App API keys). |
|
|
125
|
-
|
|
126
|
-
> Confirm with the user before executing this destructive command.
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: whop-app-builds
|
|
3
|
-
description: Versioned build artifacts deployed to an app's platforms. Run `whop app-builds --help` for usage details.
|
|
4
|
-
requires_bin: whop
|
|
5
|
-
command: whop app-builds
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
An App Build is a versioned artifact uploaded for an app — a hosted web archive, or an iOS/Android bundle. Builds start as drafts, go through review, and one approved build per platform is served to users as the production build.
|
|
9
|
-
|
|
10
|
-
Use the App Builds API to upload a build for an app, list an app's builds with platform and status filters, retrieve a build, and promote a draft or approved build to production.
|
|
11
|
-
|
|
12
|
-
# whop app-builds create
|
|
13
|
-
|
|
14
|
-
Create App Build
|
|
15
|
-
|
|
16
|
-
## Options
|
|
17
|
-
|
|
18
|
-
| Flag | Type | Required | Default | Description |
|
|
19
|
-
|------|------|----------|---------|-------------|
|
|
20
|
-
| `--ai_prompt_id` | `string` | no | | The AI prompt that generated this build, if applicable. |
|
|
21
|
-
| `--app_id` | `string` | no | | The app to create the build for, prefixed `app_`. Defaults to the app behind the presented credential. |
|
|
22
|
-
| `--attachment` | `object` | yes | | The uploaded build file: `{ id }` for an existing file or `{ direct_upload_id }` for a completed direct upload. |
|
|
23
|
-
| `--checksum` | `string` | yes | | A client-generated checksum of the build file, used to verify file integrity when unpacked. |
|
|
24
|
-
| `--platform` | `string` | yes | | The target platform for the build. |
|
|
25
|
-
| `--source_attachment` | `object` | no | | An optional compressed archive (.zip or .gz) of the source code that produced this build, stored alongside the build so it can be downloaded later. Referenced like `attachment`, and must be a different file. |
|
|
26
|
-
| `--supported_app_view_types` | `array` | no | | The view types this build supports. Only list the ones its code implements. |
|
|
27
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
28
|
-
|
|
29
|
-
> Confirm with the user before executing this destructive command.
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
# whop app-builds get
|
|
34
|
-
|
|
35
|
-
Retrieve App Build
|
|
36
|
-
|
|
37
|
-
## Arguments
|
|
38
|
-
|
|
39
|
-
| Name | Type | Required | Description |
|
|
40
|
-
|------|------|----------|-------------|
|
|
41
|
-
| `id` | `string` | yes | App build ID, prefixed `abld_`. |
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
# whop app-builds list
|
|
46
|
-
|
|
47
|
-
List App Builds
|
|
48
|
-
|
|
49
|
-
## Options
|
|
50
|
-
|
|
51
|
-
| Flag | Type | Required | Default | Description |
|
|
52
|
-
|------|------|----------|---------|-------------|
|
|
53
|
-
| `--app_id` | `string` | yes | | The app to list builds for, prefixed `app_`. |
|
|
54
|
-
| `--platform` | `string` | no | | Filter builds by target platform. |
|
|
55
|
-
| `--status` | `string` | no | | Filter builds by review status. |
|
|
56
|
-
| `--created_before` | `number` | no | | Only return builds created before this ISO 8601 timestamp. |
|
|
57
|
-
| `--created_after` | `number` | no | | Only return builds created after this ISO 8601 timestamp. |
|
|
58
|
-
| `--first` | `number` | no | | The number of builds to return (default 20, max 100). |
|
|
59
|
-
| `--after` | `string` | no | | A cursor; returns builds after this position. |
|
|
60
|
-
| `--last` | `number` | no | | The number of builds to return from the end of the range. |
|
|
61
|
-
| `--before` | `string` | no | | A cursor; returns builds before this position. |
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
# whop app-builds promote
|
|
66
|
-
|
|
67
|
-
Promote App Build
|
|
68
|
-
|
|
69
|
-
## Arguments
|
|
70
|
-
|
|
71
|
-
| Name | Type | Required | Description |
|
|
72
|
-
|------|------|----------|-------------|
|
|
73
|
-
| `id` | `string` | yes | App build ID, prefixed `abld_`. |
|
|
74
|
-
|
|
75
|
-
## Options
|
|
76
|
-
|
|
77
|
-
| Flag | Type | Required | Default | Description |
|
|
78
|
-
|------|------|----------|---------|-------------|
|
|
79
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
80
|
-
|
|
81
|
-
> Confirm with the user before executing this destructive command.
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: whop-apps
|
|
3
|
-
description: "Apps you build on Whop: metadata, hosted builds, runtime logs. Run `whop apps --help` for usage details."
|
|
4
|
-
requires_bin: whop
|
|
5
|
-
command: whop apps
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
An App is software you build on Whop. It can be a hosted web app served at `<route>.whop.app` or an API integration installed as an experience, and it belongs to the account that owns its credentials, settings, builds, and runtime logs.
|
|
9
|
-
|
|
10
|
-
Use the Apps API to manage app configuration and, for hosted apps, read server runtime logs for console output, uncaught exceptions, and failed requests. Logs are retained for 7 days and can be filtered by build, level, time window, and message text.
|
|
11
|
-
|
|
12
|
-
# whop apps create
|
|
13
|
-
|
|
14
|
-
Create App
|
|
15
|
-
|
|
16
|
-
## Options
|
|
17
|
-
|
|
18
|
-
| Flag | Type | Required | Default | Description |
|
|
19
|
-
|------|------|----------|---------|-------------|
|
|
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`. |
|
|
22
|
-
| `--base_url` | `unknown` | no | | The base production URL where the app is hosted, such as `https://myapp.example.com`. |
|
|
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. |
|
|
24
|
-
| `--name` | `string` | yes | | The display name for the app, shown to users on the app store and product pages. |
|
|
25
|
-
| `--redirect_uris` | `array` | no | | The whitelisted OAuth callback URLs that users are redirected to after authorizing the app. |
|
|
26
|
-
| `--route` | `unknown` | no | | The subdomain route where the app's hosted web builds are served, such as `myapp` for myapp.whop.app. |
|
|
27
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
28
|
-
|
|
29
|
-
> Confirm with the user before executing this destructive command.
|
|
30
|
-
|
|
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
|
-
|
|
47
|
-
# whop apps get
|
|
48
|
-
|
|
49
|
-
Retrieve App
|
|
50
|
-
|
|
51
|
-
## Arguments
|
|
52
|
-
|
|
53
|
-
| Name | Type | Required | Description |
|
|
54
|
-
|------|------|----------|-------------|
|
|
55
|
-
| `id` | `string` | yes | App ID (prefixed `app_`), the app's claimed route, or its proxy domain id. |
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
# whop apps list
|
|
60
|
-
|
|
61
|
-
List Apps
|
|
62
|
-
|
|
63
|
-
## Options
|
|
64
|
-
|
|
65
|
-
| Flag | Type | Required | Default | Description |
|
|
66
|
-
|------|------|----------|---------|-------------|
|
|
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. |
|
|
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. |
|
|
69
|
-
| `--view_type` | `string` | no | | Only return apps supporting this view type, such as `dashboard` or `hub`. |
|
|
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. |
|
|
71
|
-
| `--query` | `string` | no | | A search string matched against app names. |
|
|
72
|
-
| `--order` | `string` | no | | The field to sort apps by. Defaults to discoverable_at, showing the most recently published apps first. |
|
|
73
|
-
| `--direction` | `string` | no | | Sort direction. |
|
|
74
|
-
| `--first` | `number` | no | | The number of apps to return (default 20, max 100). |
|
|
75
|
-
| `--after` | `string` | no | | A cursor; returns apps after this position. |
|
|
76
|
-
| `--last` | `number` | no | | The number of apps to return from the end of the range. |
|
|
77
|
-
| `--before` | `string` | no | | A cursor; returns apps before this position. |
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
# whop apps logs
|
|
82
|
-
|
|
83
|
-
List App Logs
|
|
84
|
-
|
|
85
|
-
## Arguments
|
|
86
|
-
|
|
87
|
-
| Name | Type | Required | Description |
|
|
88
|
-
|------|------|----------|-------------|
|
|
89
|
-
| `id` | `string` | yes | The ID of the app, which will look like app_*************. |
|
|
90
|
-
|
|
91
|
-
## Options
|
|
92
|
-
|
|
93
|
-
| Flag | Type | Required | Default | Description |
|
|
94
|
-
|------|------|----------|---------|-------------|
|
|
95
|
-
| `--app_build_id` | `string` | no | | Only return logs from this build. |
|
|
96
|
-
| `--level` | `string` | no | | Only return console lines of this level. |
|
|
97
|
-
| `--query` | `string` | no | | Only return logs whose message contains this text (case-insensitive). |
|
|
98
|
-
| `--created_after` | `string` | no | | Start of the time window as an ISO 8601 timestamp. Defaults to 7 days before created_before. |
|
|
99
|
-
| `--created_before` | `string` | no | | End of the time window as an ISO 8601 timestamp. Defaults to now. |
|
|
100
|
-
| `--first` | `number` | no | | The number of log lines to return (max 500). |
|
|
101
|
-
| `--after` | `string` | no | | A cursor for fetching logs after a previous page. |
|
|
102
|
-
| `--before` | `string` | no | | A cursor for fetching logs before a later page. |
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
# whop apps permissions
|
|
107
|
-
|
|
108
|
-
Update App Permissions
|
|
109
|
-
|
|
110
|
-
## Arguments
|
|
111
|
-
|
|
112
|
-
| Name | Type | Required | Description |
|
|
113
|
-
|------|------|----------|-------------|
|
|
114
|
-
| `id` | `string` | yes | App ID, prefixed `app_`. |
|
|
115
|
-
|
|
116
|
-
## Options
|
|
117
|
-
|
|
118
|
-
| Flag | Type | Required | Default | Description |
|
|
119
|
-
|------|------|----------|---------|-------------|
|
|
120
|
-
| `--requested_permissions` | `array` | yes | | The full set of permissions the app requests on install; permissions not listed are removed. |
|
|
121
|
-
|
|
122
|
-
> Confirm with the user before executing this destructive command.
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
# whop apps update
|
|
127
|
-
|
|
128
|
-
Update App
|
|
129
|
-
|
|
130
|
-
## Arguments
|
|
131
|
-
|
|
132
|
-
| Name | Type | Required | Description |
|
|
133
|
-
|------|------|----------|-------------|
|
|
134
|
-
| `id` | `string` | yes | App ID (prefixed `app_`), the app's claimed route, or its proxy domain id. |
|
|
135
|
-
|
|
136
|
-
## Options
|
|
137
|
-
|
|
138
|
-
| Flag | Type | Required | Default | Description |
|
|
139
|
-
|------|------|----------|---------|-------------|
|
|
140
|
-
| `--app_store_description` | `string` | no | | The detailed description shown on the app store's in-depth app view page. |
|
|
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. |
|
|
143
|
-
| `--dashboard_path` | `unknown` | no | | The URL path for the account dashboard view. |
|
|
144
|
-
| `--description` | `string` | no | | A short description of the app shown in listings and search results. |
|
|
145
|
-
| `--discover_path` | `unknown` | no | | The URL path for the discover view. |
|
|
146
|
-
| `--experience_path` | `unknown` | no | | The URL path for the member-facing hub view, such as `/experiences/[experienceId]`. |
|
|
147
|
-
| `--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. |
|
|
148
|
-
| `--name` | `string` | no | | The display name for the app, shown to users on the app store and product pages. |
|
|
149
|
-
| `--oauth_client_type` | `string` | no | | How the app authenticates at the OAuth token endpoint. |
|
|
150
|
-
| `--openapi_path` | `unknown` | no | | The URL path to the app's OpenAPI spec file (requires the ai_chat capability). |
|
|
151
|
-
| `--production_android_build_id` | `unknown` | no | | The app build (`abld_` tag) to serve as the Android production build, or `null` to unassign it. Same rules as `production_web_build_id`. |
|
|
152
|
-
| `--production_ios_build_id` | `unknown` | no | | The app build (`abld_` tag) to serve as the iOS production build, or `null` to unassign it. Same rules as `production_web_build_id`. |
|
|
153
|
-
| `--production_web_build_id` | `unknown` | no | | The app build (`abld_` tag) to serve as the web production build, or `null` to unassign it. The build must belong to this app, target web, and be in the draft or approved status; a draft build is queued for approval and takes over once approved. Requires the `developer:manage_builds` scope. |
|
|
154
|
-
| `--redirect_uris` | `array` | no | | The whitelisted OAuth callback URLs users are redirected to after authorizing the app. |
|
|
155
|
-
| `--required_scopes` | `array` | no | | The OAuth scopes the app requests from users when they install it. |
|
|
156
|
-
| `--route` | `string` | no | | The subdomain route where the app's hosted web builds are served. |
|
|
157
|
-
| `--secrets` | `object` | no | | Secrets to add or overwrite on the app, as an object of string values. Keys not included are left untouched; pass null or an empty string as the value to delete a secret. Encrypted at rest and injected into the app's hosted server runtime. |
|
|
158
|
-
| `--skills_path` | `unknown` | no | | The URL path to the app's skills directory (requires the ai_chat capability). |
|
|
159
|
-
| `--status` | `string` | no | | Controls whether the app is published on Whop discovery or accessible only through its direct link. Publishing requires a name, icon, and description. |
|
|
160
|
-
|
|
161
|
-
> Confirm with the user before executing this destructive command.
|