Skip to main content
PATCH
JavaScript

Authorizations

Authorization
string
header
required

A company API key, company scoped JWT, app API key, or user OAuth token. You must prepend your key/token with the word 'Bearer', which will look like Bearer ***************************

Headers

Api-Version-Date
string

Pins the request to a dated API version.

Example:

"2026-07-18"

Path Parameters

id
string
required

The ad group ID.

Body

application/json
audiences
object

Saved audiences to deliver to or exclude. Can't be combined with demographics.automatic.

bid_type
enum<string>

How delivery bids in the ad auction: minimum_cost gets the most results for the budget, average_target keeps the average cost per result near desired_cost_per_result, and maximum_target never bids above it.

Available options:
minimum_cost,
average_target,
maximum_target
budget_amount
number

This ad group's budget, in the ad account's currency. Omit when the budget is set on the campaign instead.

budget_type
enum<string>

Whether budget_amount is spent per day (daily) or over the ad group's full run (lifetime).

Available options:
daily,
lifetime
conversion_event

The pixel event optimized for. A standard event, or any custom pixel event name.

Available options:
purchase,
add_to_cart,
initiated_checkout,
add_payment_info,
complete_registration,
lead,
content_view,
search,
contact,
customize_product,
donate,
find_location,
schedule,
start_trial,
submit_application,
subscribe
conversion_location
enum<string>

Where the result you're optimizing for happens: website (your site), profile (your social media profile), messaging (a direct-message conversation), on_ad (engagement with the ad itself), or a lead form (instant_forms, instant_forms_and_messenger, website_and_instant_forms). The lead form itself is set on the ad.

Available options:
website,
profile,
messaging,
on_ad,
instant_forms,
instant_forms_and_messenger,
website_and_instant_forms
demographics
object

Age, gender, and automatic-audience targeting.

desired_cost_per_result
number

Cost per result to aim for (average_target) or never exceed (maximum_target).

detailed_targeting
object

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. Send the complete intended state — a section you omit is cleared.

devices
object

Device platforms and operating systems to target.

ends_at
string

When the ad group stops delivering, as an ISO 8601 timestamp. Omit to run until paused.

frequency_cap
object

Cap on how often one person sees ads from this ad group. Only available with reach optimization.

languages
string[]

Languages to target, as ISO 639 codes such as en or es. Empty or omitted targets all languages.

message_apps
enum<string>[]

Apps the conversation opens in. Required when conversion_location is messaging.

Available options:
messenger,
instagram,
whatsapp
minimum_daily_spend
number

Minimum the ad group tries to spend each day.

optimization_goal
enum<string>

The result the ad group's delivery is optimized to get the most of.

Available options:
conversions,
link_clicks,
landing_page_views,
reach,
impressions,
engagement,
conversations,
video_views,
thruplay,
two_second_views,
page_likes,
social_profile,
ad_recall_lift,
event_responses,
reminders_set,
lead_generation,
quality_lead,
value,
profile_and_page_engagement
placements

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.

Valid positions per platform:

  • facebook: feed, right_hand_column, marketplace, search, profile_feed, notification, story, instream_video, facebook_reels, facebook_reels_overlay, biz_disco_feed
  • instagram: stream, story, explore, explore_home, reels, profile_feed, profile_reels, ig_search
  • messenger: story
  • audience_network: classic, rewarded_video
  • threads: threads_stream
  • whatsapp: status
Available options:
automatic
regions
object

Locations to target and exclude.

starts_at
string

When the ad group starts delivering, as an ISO 8601 timestamp. Omit to start as soon as it's active.

status
enum<string>

Initial status (default: active).

Available options:
active,
paused
title
string

The display name of the ad group.

Response

200 - application/json

ad group updated

ad_campaign
object
required

The ad campaign this ad group belongs to.

added_to_cart_value
number
required

USD value attributed to add-to-cart events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.

added_to_carts
number
required

Whop pixel-attributed add-to-cart events, last-click.

audiences
object
required

Saved audiences this ad group delivers to or excludes.

bid_type
enum<string> | null
required

How delivery bids in the ad auction: minimum_cost gets the most results for the budget, average_target keeps the average cost per result near desired_cost_per_result, and maximum_target never bids above it.

Available options:
minimum_cost,
average_target,
maximum_target,
null
Example:

"minimum_cost"

budget_amount
number | null
required

This ad group's budget, in the ad account's currency. null when the budget is set on the campaign instead.

budget_type
enum<string> | null
required

Whether budget_amount is spent per day (daily) or over the ad group's full run (lifetime).

Available options:
daily,
lifetime,
null
Example:

"daily"

click_through_rate
number
required

Clicks divided by impressions, between 0 and 1.

clicks
number
required

The number of clicks.

completed_registration_value
number
required

USD value attributed to complete-registration events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.

completed_registrations
number
required

Whop pixel-attributed complete-registration events, last-click.

contact_value
number
required

USD value attributed to contact events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.

contacts
number
required

Whop pixel-attributed contact events, last-click.

conversion_event
required

The pixel event optimized for. A standard event, or any custom pixel event name.

Available options:
purchase,
add_to_cart,
initiated_checkout,
add_payment_info,
complete_registration,
lead,
content_view,
search,
contact,
customize_product,
donate,
find_location,
schedule,
start_trial,
submit_application,
subscribe
conversion_location
enum<string> | null
required

Where the result you're optimizing for happens: website (your site), profile (your social media profile), messaging (a direct-message conversation), on_ad (engagement with the ad itself), or a lead form (instant_forms, instant_forms_and_messenger, website_and_instant_forms).

Available options:
website,
profile,
messaging,
on_ad,
instant_forms,
instant_forms_and_messenger,
website_and_instant_forms,
null
Example:

"website"

cost_per_added_to_cart
number | null
required

Spend divided by attributed add-to-cart events; null when they are not the goal and none are attributed.

cost_per_click
number
required

Spend divided by clicks; 0 when there are no clicks.

cost_per_completed_registration
number | null
required

Spend divided by attributed complete-registration events; null when they are not the goal and none are attributed.

cost_per_contact
number | null
required

Spend divided by attributed contact events; null when contacts are not the goal and none are attributed.

cost_per_lead
number | null
required

Spend divided by attributed leads; null when leads are not a goal and none are attributed.

cost_per_mille
number
required

Spend per 1,000 impressions; 0 when there are no impressions.

cost_per_purchase
number | null
required

Spend divided by attributed purchases; null when purchases are not a goal and none are attributed.

cost_per_result
number | null
required

Spend divided by Whop pixel-attributed results; null when nothing Whop-attributable is being optimized for.

cost_per_schedule
number | null
required

Spend divided by attributed schedule events; null when schedules are not the goal and none are attributed.

cost_per_submitted_application
number | null
required

Spend divided by attributed submit-application events; null when they are not the goal and none are attributed.

cost_per_viewed_content
number | null
required

Spend divided by attributed view-content events; null when they are not the goal and none are attributed.

created_at
string
required

When the ad group was created, as an ISO 8601 timestamp.

custom_conversions
number
required

Whop pixel-attributed custom (merchant-defined) conversion events, last-click, across all custom event names.

custom_event_counts
object
required

Whop pixel-attributed custom conversions, keyed by your event name with its last-click count as the value. Empty when no named custom events are attributed. Custom events fired without a name are counted in custom_conversions but omitted here, so these values sum to at most custom_conversions.

custom_event_values
object
required

Conversion value attributed to each custom event, keyed by event name like custom_event_counts. Sums the value passed to whop.track, normalized to USD; events fired without a value contribute 0.

delivery_status
enum<string>
required

Whether ads in this ad group are delivering right now, and if not, why. When several states apply at once, the highest-precedence one is returned.

Available options:
all_ads_rejected,
rejected,
draft,
no_ads,
campaign_paused,
paused,
processing,
issues,
scheduled,
completed,
ads_off,
learning_limited,
learning,
active
Example:

"all_ads_rejected"

demographics
object
required

Age, gender, and automatic-audience targeting.

desired_cost_per_result
number | null
required

Cost per result to aim for (average_target) or never exceed (maximum_target). null for minimum_cost bidding.

detailed_targeting
object
required

Interest, behavior, and demographic targeting, using categories from the ad platform's targeting taxonomy. Can't be combined with automatic audience targeting, and unavailable to campaigns with special_ad_categories.

devices
object
required

Device platforms and operating systems targeted.

dynamic_creative
boolean
required

Whether the ad platform automatically mixes and matches this ad group's creatives and copy to find the best-performing combinations.

ends_at
string | null
required

When the ad group stops delivering, as an ISO 8601 timestamp. null when it runs until paused.

frequency
number | null
required

Platform-reported impressions divided by reach.

frequency_cap
object | null
required

Cap on how often one person sees ads from this ad group. Only available with reach optimization; null when uncapped.

id
string
required

Unique identifier for the ad group, prefixed adgrp_.

impressions
number
required

The number of impressions.

issues
object[]
required
languages
string[]
required

Languages targeted, as ISO 639 codes such as en or es. A region-specific locale with no ISO code appears as its numeric platform locale key. Empty targets all languages.

lead_value
number
required

USD value attributed to lead events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.

leads
number
required

Whop pixel-attributed leads, last-click.

message_apps
enum<string>[]
required

Apps the conversation opens in when conversion_location is messaging. Empty for other conversion locations.

Available options:
messenger,
instagram,
whatsapp
minimum_daily_spend
number | null
required

Minimum the ad group tries to spend each day. null when no floor is set.

optimization_goal
enum<string> | null
required

The result the ad group's delivery is optimized to get the most of.

Available options:
conversions,
link_clicks,
landing_page_views,
reach,
impressions,
engagement,
conversations,
video_views,
two_second_views,
page_likes,
social_profile,
ad_recall_lift,
event_responses,
reminders_set,
lead_generation,
quality_lead,
value,
profile_and_page_engagement,
null
Example:

"conversions"

placements
object[]
required
purchase_value
number
required

USD value of pixel-attributed purchases.

purchases
number
required

Whop pixel-attributed purchases, last-click.

reach
number
required

The number of unique people who saw this.

regions
object
required

Locations targeted and excluded.

result_event
enum<string> | null
required

The Whop pixel conversion event whose attributed count represents results — the optimization goal, or the highest-volume attributed event for campaigns that budget per ad group. Null when the goal isn't a Whop-attributed event.

Available options:
purchase,
lead,
schedule,
submit_application,
contact,
complete_registration,
view_content,
add_to_cart,
custom,
null
Example:

"purchase"

result_event_name
string | null
required

The merchant-defined event name when result_event is custom; null for the standard events.

results
number | null
required

The Whop pixel-attributed count behind result_event. When a campaign's ad groups optimize different goals there is no single result_event (it is null), and this is instead the sum of each ad group's own attributed results. Null when nothing Whop-attributable is being optimized for.

return_on_ad_spend
number
required

Purchase value divided by spend, both in USD (a currency-neutral ratio); 0 when there is no spend.

schedule_value
number
required

USD value attributed to schedule events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.

schedules
number
required

Whop pixel-attributed schedule events, last-click.

spend
number
required

The amount charged, in spend_currency.

spend_currency
string | null
required

The ISO 4217 currency code of all monetary metrics.

starts_at
string | null
required

When the ad group starts delivering, as an ISO 8601 timestamp. null when it starts as soon as it's active.

status
enum<string>
required

Whether the ad group is enabled. active and paused are set by you; rejected means it failed ad review.

Available options:
active,
paused,
rejected
Example:

"active"

submitted_application_value
number
required

USD value attributed to submit-application events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.

submitted_applications
number
required

Whop pixel-attributed submit-application events, last-click.

title
string | null
required

Display name of the ad group.

unique_click_through_rate
number | null
required

Unique clicks divided by impressions, between 0 and 1.

unique_clicks
number
required

The number of unique clicks.

updated_at
string
required

When the ad group was last updated, as an ISO 8601 timestamp.

viewed_content_value
number
required

USD value attributed to view-content events. Sums the value sent with each event, normalized to USD; events without a value contribute 0.

viewed_contents
number
required

Whop pixel-attributed view-content events, last-click.