@whop/cli 0.16.0 → 0.16.1
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 +2 -2
- package/dist/index.js +1534 -412
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- 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
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: whop-ad-groups
|
|
3
|
-
description: Audience, placements, and schedule within a campaign. Run `whop ad-groups --help` for usage details.
|
|
4
|
-
requires_bin: whop
|
|
5
|
-
command: whop ad-groups
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
An Ad Group sits inside an [ad campaign](https://docs.whop.com/api-reference/beta/ad-campaigns/ad-campaign) and controls delivery for [ads](https://docs.whop.com/api-reference/beta/ads/ad). It sets the audience, placements, schedule, budget, and optimization goal for its ads.
|
|
9
|
-
|
|
10
|
-
Use the Ad Groups API to create ad groups in campaigns, list or retrieve targeting and delivery settings, update budgets or targeting, delete groups that should stop running, and pause or resume delivery. It can also search the ad platform's targeting taxonomy for options to target and estimate how many people a draft targeting spec can reach.
|
|
11
|
-
|
|
12
|
-
# whop ad-groups create
|
|
13
|
-
|
|
14
|
-
Create an Ad Group
|
|
15
|
-
|
|
16
|
-
## Options
|
|
17
|
-
|
|
18
|
-
| Flag | Type | Required | Default | Description |
|
|
19
|
-
|------|------|----------|---------|-------------|
|
|
20
|
-
| `--ad_campaign_id` | `string` | yes | | The ad campaign to create the ad group in, prefixed `adcamp_`. |
|
|
21
|
-
| `--audiences` | `object` | no | | Saved audiences to deliver to or exclude. Can't be combined with demographics.automatic. |
|
|
22
|
-
| `--bid_type` | `string` | no | | How delivery bids are set in the ad auction. Target-based strategies use `desired_cost_per_result`. |
|
|
23
|
-
| `--budget_amount` | `number` | no | | This ad group's budget, in the ad account's currency. Omit when the budget is set on the campaign instead. |
|
|
24
|
-
| `--budget_type` | `string` | no | | Whether budget_amount is spent per day (`daily`) or over the ad group's full run (`lifetime`). |
|
|
25
|
-
| `--conversion_event` | `unknown` | no | | The pixel event optimized for. A standard event, or any custom pixel event name. |
|
|
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
|
-
| `--demographics` | `object` | no | | Age, gender, and automatic-audience targeting. |
|
|
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. 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
|
-
| `--devices` | `object` | no | | Device platforms and operating systems to target. |
|
|
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
|
-
| `--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 on campaigns with the `awareness` objective. |
|
|
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 setting `conversion_location` to `messaging`, and rejected unless the ad group's conversion location is `messaging`. |
|
|
36
|
-
| `--minimum_daily_spend` | `number` | no | | Minimum the ad group tries to spend each day. |
|
|
37
|
-
| `--optimization_goal` | `string` | no | | The result the ad group's delivery is optimized to get the most of. |
|
|
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.
|
|
39
|
-
|
|
40
|
-
Valid positions per platform:
|
|
41
|
-
|
|
42
|
-
- `facebook`: `feed`, `right_hand_column`, `marketplace`, `search`, `profile_feed`, `notification`, `story`, `instream_video`, `facebook_reels`, `facebook_reels_overlay`, `biz_disco_feed`
|
|
43
|
-
- `instagram`: `stream`, `story`, `explore`, `explore_home`, `reels`, `profile_feed`, `profile_reels`, `ig_search`
|
|
44
|
-
- `messenger`: `story`
|
|
45
|
-
- `audience_network`: `classic`, `rewarded_video`
|
|
46
|
-
- `threads`: `threads_stream`
|
|
47
|
-
- `whatsapp`: `status` |
|
|
48
|
-
| `--regions` | `object` | no | | Locations to target and exclude. |
|
|
49
|
-
| `--starts_at` | `string` | no | | When the ad group starts delivering, as an ISO 8601 timestamp. Omit to start as soon as it's active. |
|
|
50
|
-
| `--status` | `string` | no | | Initial status (default: `active`). |
|
|
51
|
-
| `--title` | `string` | no | | The display name of the ad group. |
|
|
52
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
53
|
-
|
|
54
|
-
> Confirm with the user before executing this destructive command.
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
# whop ad-groups delete
|
|
59
|
-
|
|
60
|
-
Delete an Ad Group
|
|
61
|
-
|
|
62
|
-
## Arguments
|
|
63
|
-
|
|
64
|
-
| Name | Type | Required | Description |
|
|
65
|
-
|------|------|----------|-------------|
|
|
66
|
-
| `id` | `string` | yes | The ad group ID. |
|
|
67
|
-
|
|
68
|
-
> Confirm with the user before executing this destructive command.
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
# whop ad-groups duplicate
|
|
73
|
-
|
|
74
|
-
Duplicate an Ad Group
|
|
75
|
-
|
|
76
|
-
## Arguments
|
|
77
|
-
|
|
78
|
-
| Name | Type | Required | Description |
|
|
79
|
-
|------|------|----------|-------------|
|
|
80
|
-
| `id` | `string` | yes | The ad group ID. |
|
|
81
|
-
|
|
82
|
-
## Options
|
|
83
|
-
|
|
84
|
-
| Flag | Type | Required | Default | Description |
|
|
85
|
-
|------|------|----------|---------|-------------|
|
|
86
|
-
| `--count` | `number` | no | | Number of copies to create (1-10). Defaults to 1. |
|
|
87
|
-
| `--preserve_engagement` | `boolean` | no | | Whether the copied ads keep the original posts' engagement (likes, comments, shares). Defaults to false. |
|
|
88
|
-
| `--target_ad_campaign_id` | `string` | no | | Campaign to duplicate into. Defaults to the ad group's own campaign. |
|
|
89
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
90
|
-
|
|
91
|
-
> Confirm with the user before executing this destructive command.
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
# whop ad-groups estimate_reach
|
|
96
|
-
|
|
97
|
-
Estimate Ad Group Reach
|
|
98
|
-
|
|
99
|
-
## Options
|
|
100
|
-
|
|
101
|
-
| Flag | Type | Required | Default | Description |
|
|
102
|
-
|------|------|----------|---------|-------------|
|
|
103
|
-
| `--account_id` | `string` | no | | Account to estimate on behalf of. Defaults to the authenticated account. |
|
|
104
|
-
| `--audiences` | `object` | no | | Saved audiences to deliver to or exclude. Can't be combined with demographics.automatic. |
|
|
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. 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
|
-
| `--devices` | `object` | no | | Device platforms and operating systems to target. |
|
|
108
|
-
| `--languages` | `array` | no | | Languages to target, as ISO 639 codes such as `en` or `es`. Empty or omitted targets all languages. |
|
|
109
|
-
| `--platform` | `string` | yes | | The ad network the estimate runs on. |
|
|
110
|
-
| `--regions` | `object` | no | | Locations to target and exclude. |
|
|
111
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
112
|
-
|
|
113
|
-
> Confirm with the user before executing this destructive command.
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
# whop ad-groups get
|
|
118
|
-
|
|
119
|
-
Retrieve an Ad Group
|
|
120
|
-
|
|
121
|
-
## Arguments
|
|
122
|
-
|
|
123
|
-
| Name | Type | Required | Description |
|
|
124
|
-
|------|------|----------|-------------|
|
|
125
|
-
| `id` | `string` | yes | The ad group ID. |
|
|
126
|
-
|
|
127
|
-
## Options
|
|
128
|
-
|
|
129
|
-
| Flag | Type | Required | Default | Description |
|
|
130
|
-
|------|------|----------|---------|-------------|
|
|
131
|
-
| `--stats_from` | `string` | no | | Start of the stats window. |
|
|
132
|
-
| `--stats_to` | `string` | no | | End of the stats window. |
|
|
133
|
-
| `--time_zone` | `string` | no | | IANA timezone the stats window is interpreted in. Defaults to UTC. |
|
|
134
|
-
| `--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. |
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
# whop ad-groups list
|
|
139
|
-
|
|
140
|
-
List Ad Groups
|
|
141
|
-
|
|
142
|
-
## Options
|
|
143
|
-
|
|
144
|
-
| Flag | Type | Required | Default | Description |
|
|
145
|
-
|------|------|----------|---------|-------------|
|
|
146
|
-
| `--account_id` | `string` | no | | Account whose ad groups to list. Defaults to the authenticated account. |
|
|
147
|
-
| `--ad_campaign_id` | `string` | no | | Filter to ad groups in this campaign. |
|
|
148
|
-
| `--ad_campaign_ids` | `array` | no | | Filter to ad groups in these campaigns (max 100). Repeat the parameter for each id (ad_campaign_ids=a&ad_campaign_ids=b). |
|
|
149
|
-
| `--status` | `string` | no | | Filter to ad groups with this status. |
|
|
150
|
-
| `--query` | `string` | no | | Filter ad groups by a title or ID substring. |
|
|
151
|
-
| `--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. |
|
|
152
|
-
| `--direction` | `string` | no | | The sort direction. Defaults to desc. |
|
|
153
|
-
| `--created_before` | `string` | no | | Only return ad groups created before this timestamp. |
|
|
154
|
-
| `--created_after` | `string` | no | | Only return ad groups created after this timestamp. |
|
|
155
|
-
| `--stats_from` | `string` | no | | Start of the stats window. Defaults to all-time. |
|
|
156
|
-
| `--stats_to` | `string` | no | | End of the stats window. Defaults to now. |
|
|
157
|
-
| `--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. |
|
|
158
|
-
| `--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. |
|
|
159
|
-
| `--first` | `number` | no | `20` | The number of ad groups to return. |
|
|
160
|
-
| `--after` | `string` | no | | Cursor to fetch the page after (from page_info.end_cursor). |
|
|
161
|
-
| `--last` | `number` | no | | The number of ad groups to return from the end of the range. |
|
|
162
|
-
| `--before` | `string` | no | | Cursor to fetch the page before (from page_info.start_cursor). |
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
# whop ad-groups pause
|
|
167
|
-
|
|
168
|
-
Pause an Ad Group
|
|
169
|
-
|
|
170
|
-
## Arguments
|
|
171
|
-
|
|
172
|
-
| Name | Type | Required | Description |
|
|
173
|
-
|------|------|----------|-------------|
|
|
174
|
-
| `id` | `string` | yes | The ad group ID. |
|
|
175
|
-
|
|
176
|
-
## Options
|
|
177
|
-
|
|
178
|
-
| Flag | Type | Required | Default | Description |
|
|
179
|
-
|------|------|----------|---------|-------------|
|
|
180
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
181
|
-
|
|
182
|
-
> Confirm with the user before executing this destructive command.
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
# whop ad-groups targeting_options
|
|
187
|
-
|
|
188
|
-
Search Targeting Options
|
|
189
|
-
|
|
190
|
-
## Options
|
|
191
|
-
|
|
192
|
-
| Flag | Type | Required | Default | Description |
|
|
193
|
-
|------|------|----------|---------|-------------|
|
|
194
|
-
| `--account_id` | `string` | no | | Account to search on behalf of. Defaults to the authenticated account. |
|
|
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, work employers, job titles, schools, majors, and locations return nothing without one. |
|
|
197
|
-
| `--types` | `array` | no | | Kinds of targeting options to search. Defaults to all of them. |
|
|
198
|
-
| `--location_types` | `array` | no | | Narrow location results to these kinds of places. Only applies when `types` includes `locations`. |
|
|
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`. |
|
|
200
|
-
| `--limit` | `number` | no | `25` | Maximum number of results per requested type. |
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
# whop ad-groups unpause
|
|
205
|
-
|
|
206
|
-
Unpause an Ad Group
|
|
207
|
-
|
|
208
|
-
## Arguments
|
|
209
|
-
|
|
210
|
-
| Name | Type | Required | Description |
|
|
211
|
-
|------|------|----------|-------------|
|
|
212
|
-
| `id` | `string` | yes | The ad group ID. |
|
|
213
|
-
|
|
214
|
-
## Options
|
|
215
|
-
|
|
216
|
-
| Flag | Type | Required | Default | Description |
|
|
217
|
-
|------|------|----------|---------|-------------|
|
|
218
|
-
| `--idempotency-key` | `string` | no | | A unique key that makes this request safe to retry. See [Idempotent requests](https://docs.whop.com/developer/api/idempotency). |
|
|
219
|
-
|
|
220
|
-
> Confirm with the user before executing this destructive command.
|
|
221
|
-
|
|
222
|
-
---
|
|
223
|
-
|
|
224
|
-
# whop ad-groups update
|
|
225
|
-
|
|
226
|
-
Update an Ad Group
|
|
227
|
-
|
|
228
|
-
## Arguments
|
|
229
|
-
|
|
230
|
-
| Name | Type | Required | Description |
|
|
231
|
-
|------|------|----------|-------------|
|
|
232
|
-
| `id` | `string` | yes | The ad group ID. |
|
|
233
|
-
|
|
234
|
-
## Options
|
|
235
|
-
|
|
236
|
-
| Flag | Type | Required | Default | Description |
|
|
237
|
-
|------|------|----------|---------|-------------|
|
|
238
|
-
| `--audiences` | `object` | no | | Saved audiences to deliver to or exclude. Can't be combined with demographics.automatic. |
|
|
239
|
-
| `--bid_type` | `string` | no | | How delivery bids are set in the ad auction. Target-based strategies use `desired_cost_per_result`. |
|
|
240
|
-
| `--budget_amount` | `number` | no | | This ad group's budget, in the ad account's currency. Omit when the budget is set on the campaign instead. |
|
|
241
|
-
| `--budget_type` | `string` | no | | Whether budget_amount is spent per day (`daily`) or over the ad group's full run (`lifetime`). |
|
|
242
|
-
| `--conversion_event` | `unknown` | no | | The pixel event optimized for. A standard event, or any custom pixel event name. |
|
|
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
|
-
| `--demographics` | `object` | no | | Age, gender, and automatic-audience targeting. |
|
|
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. 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
|
-
| `--devices` | `object` | no | | Device platforms and operating systems to target. |
|
|
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 on campaigns with the `awareness` objective. |
|
|
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 setting `conversion_location` to `messaging`, and rejected unless the ad group's conversion location is `messaging`. |
|
|
252
|
-
| `--minimum_daily_spend` | `number` | no | | Minimum the ad group tries to spend each day. |
|
|
253
|
-
| `--optimization_goal` | `string` | no | | The result the ad group's delivery is optimized to get the most of. |
|
|
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.
|
|
255
|
-
|
|
256
|
-
Valid positions per platform:
|
|
257
|
-
|
|
258
|
-
- `facebook`: `feed`, `right_hand_column`, `marketplace`, `search`, `profile_feed`, `notification`, `story`, `instream_video`, `facebook_reels`, `facebook_reels_overlay`, `biz_disco_feed`
|
|
259
|
-
- `instagram`: `stream`, `story`, `explore`, `explore_home`, `reels`, `profile_feed`, `profile_reels`, `ig_search`
|
|
260
|
-
- `messenger`: `story`
|
|
261
|
-
- `audience_network`: `classic`, `rewarded_video`
|
|
262
|
-
- `threads`: `threads_stream`
|
|
263
|
-
- `whatsapp`: `status` |
|
|
264
|
-
| `--regions` | `object` | no | | Locations to target and exclude. |
|
|
265
|
-
| `--starts_at` | `string` | no | | When the ad group starts delivering, as an ISO 8601 timestamp. Omit to start as soon as it's active. |
|
|
266
|
-
| `--status` | `string` | no | | Initial status (default: `active`). |
|
|
267
|
-
| `--title` | `string` | no | | The display name of the ad group. |
|
|
268
|
-
|
|
269
|
-
> Confirm with the user before executing this destructive command.
|
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.
|