> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Duplicate an Ad Group

> Creates copies of the ad group in `duplicating` status and returns them — into its own campaign, or into target_ad_campaign_id (which must belong to the same account and be compatible with the ad group's targeting and goals); each copy transitions to its final status (matching the source's active/paused state) once duplication completes. Poll each returned ad group until it leaves `duplicating` — a copy that could not be completed is deleted and returns 404.



## OpenAPI

````yaml /openapi/api-v1-native.json post /ad_groups/{id}/duplicate
openapi: 3.1.0
info:
  description: >-
    The Whop REST API. Please see
    https://docs.whop.com/developer/api/getting-started for more details.
  termsOfService: https://whop.com/tos-developer-api/
  title: Whop API
  version: 1.0.0
  x-api-version-date: '2026-07-22'
servers:
  - description: Production Whop API
    url: https://api.whop.com/api/v1
  - description: Sandbox Whop API
    url: https://sandbox-api.whop.com/api/v1
security: []
tags:
  - description: >
      An Account represents a person or business on Whop that can have its own
      profile, wallet, and account-scoped settings. Use accounts for customers,
      creators, merchants, sellers, or connected businesses your integration
      supports.


      Use the Accounts API to create accounts, list accounts visible to your
      credentials, retrieve or update an account, and retrieve the account
      associated with the current API key.
    name: Accounts
    x-whop-summary: 'A business on Whop: profile, wallet, capabilities, settings.'
  - description: >
      A User represents a person on Whop. Users have a public profile and can
      buy products, join accounts, and access experiences.


      Use the Users API to search for users, retrieve or update profiles, and
      check whether a user has access to an account, product, or experience.
    name: Users
    x-whop-summary: 'A person on Whop: profile and connected identities.'
  - description: >
      A Team Member is a member of an account's team: the link between a user
      and an account, carrying the role that controls what they can do. Roles
      are either system roles (like `admin` or `moderator`) or `custom` roles
      managed from the dashboard.


      Use the Team Members API to list an account's team, add a user to the team
      with a system role, change a member's role, and remove members. Adding a
      user who has not yet accepted sends an invitation instead.
    name: Team Members
    x-whop-summary: An account's team members and the roles that scope their access.
  - name: Webhooks
    x-whop-summary: Event notifications pushed to your server as things happen.
  - description: >
      Stats represent aggregated activity for an account over time. They help
      you understand revenue, transactions, disputes, members, referrals, and
      advertising performance across reporting periods like days, weeks, or
      months.


      Use the Stats API to list available metrics and their filterable
      properties, then retrieve time-series values for a date range.
    name: Stats
    x-whop-summary: Aggregated financial, audience, and traffic reporting.
  - description: >
      A Verification represents a legal identity for a person or business.
      Accounts and users complete verification when Whop needs to confirm who
      they are before enabling payouts or compliance-sensitive workflows.


      Use the Verifications API to start or resume a hosted verification
      session, check review status, and submit requested details or documents.
      If `requested_information` contains items, submit answers with [Update
      Verification](/api-reference/beta/verifications/update-verification).
    name: Verifications
    x-whop-summary: Legal identity required before payouts and card issuing.
  - description: >
      A Ledger Activity row is a single financial event on an account's ledger —
      a payment, withdrawal, refund, transfer, on-chain deposit, swap, or card
      transaction. Each row is derived from the underlying ledger lines and
      carries a typed `resource` and `source` so you can present and link the
      event without extra lookups.


      Use Ledger Activity to build a statement or transaction feed for an
      account or user. Reconcile against your own records with `amount` (signed,
      in the currency's smallest precision units) and `posted_at`, and use
      `available_at` to know when inflows became withdrawable.
    name: Ledgers
    x-whop-summary: The activity feed behind an account or user's balance.
  - description: >
      Payouts represent money sent from an account or user balance to an
      external destination, such as a bank account, wallet, or other saved
      payout method.


      Use the Payouts API to create payouts from stablecoin accounts, list
      payout history for accounts or users, monitor payout statuses, and show
      expected arrival details for funds leaving Whop.
    name: Payouts
    x-whop-summary: Send money from a balance to a bank or wallet.
  - description: >
      Cards represent Whop-issued virtual payment cards that spend from an
      account or user balance. Cards can be assigned to cardholders and
      configured with spending limits for controlled spending.


      Use the Cards API to issue cards, list cards for an account or user, and
      retrieve active card details such as the card number and CVC.
    name: Cards
    x-whop-summary: Issue cards that spend from a balance.
  - description: >
      Transfers move value between identities on Whop. They are used for
      account-to-account money movement, user payouts inside Whop, crypto
      transfers, and claim links depending on the destination type.


      Use the Transfers API to create a transfer, list previous transfers, and
      retrieve a transfer by ID when reconciling money movement between accounts
      or users.
    name: Transfers
    x-whop-summary: Move funds between Whop accounts and users.
  - description: >
      Deposits describe ways to add funds to an account balance, including
      hosted deposit pages, bank deposit instructions, and supported crypto
      wallet addresses.


      Use the Deposits API to create deposit instructions for an account.
    name: Deposits
    x-whop-summary: Add funds to a balance.
  - description: >
      Swaps convert value between supported tokens, chains, or wallet
      destinations for an account. A swap quote describes the expected output,
      fees, and approval requirements before you create the swap.


      Use the Swaps API to quote a conversion, create the swap, list recent
      swaps, and retrieve status until the transaction completes.
    name: Swaps
    x-whop-summary: Convert a balance between currencies.
  - description: >
      A Product is a digital good or service sold on Whop. Products may contain
      plans for pricing and/or experiences for content delivery.


      Use the Products API to create products, list products visible to your
      credentials, retrieve product details, update product metadata or
      merchandising fields, and delete products that should no longer be sold.
    name: Products
    x-whop-summary: The things you sell. Each owns plans and a store page.
  - description: >
      A Plan defines how customers buy a product. It controls pricing, billing
      cadence, availability, tax behavior, checkout fields, and purchase
      visibility.


      Use the Plans API to create plans for products, list existing plans,
      retrieve or update plan configuration, calculate tax for checkout, and
      delete plans that should no longer be offered.
    name: Plans
    x-whop-summary: 'Pricing for a product: one-time, recurring, trials, stock.'
  - description: >
      A Checkout Configuration is a reusable checkout link owned by an account.
      In `payment` mode it sells a specific plan; in `setup` mode it collects
      and saves payment details without charging. Each configuration can also
      override which payment methods are accepted and how 3D Secure is enforced
      for that checkout.


      Use the Checkout Configurations API to create checkout links for an
      existing or inline plan, list configurations for an account, retrieve the
      configuration behind a checkout URL, and delete links that should no
      longer be used.
    name: Checkout Configurations
    x-whop-summary: Turn a plan into a shareable, prefilled checkout link.
  - description: >
      The Partners API covers your Whop partner activity: the users you referred
      onto Whop, the businesses you referred and the earnings generated from
      their processing volume, and the partner leaderboard.


      Use it to enroll as a Whop partner, list the users you referred, list your
      referred businesses and review their earnings, and see the partner
      leaderboard.
    name: Partners
    x-whop-summary: >-
      The users and businesses you referred to Whop, and what you earn from
      them.
  - description: >
      A Bounty is a paid task posted by an account or user. The reward is held
      in escrow when the bounty publishes, workers submit proof of completed
      work, and each accepted submission is paid out until every winner slot
      fills.


      Use the Bounties API to create and publish a bounty, list an account's
      bounties for reporting or dashboards, list the bounties a user can work or
      has participated in, and retrieve a single bounty by ID.
    name: Bounties
    x-whop-summary: Paid tasks with reviewed submissions and escrowed rewards.
  - description: >
      A Bounty Submission is one worker's attempt on a bounty. It starts as an
      in-progress attempt, enters the review queue when proof is submitted, and
      ends approved (paid from the bounty's escrowed pool) or denied.


      Use the Bounty Submissions API to submit proof of completed work to a
      bounty, list the submissions you authored, and review the submissions on
      your bounties — across every bounty or narrowed to one.
    name: Bounty Submissions
    x-whop-summary: Work submitted to a bounty, from attempt to payout.
  - description: >
      A Person represents a visitor or customer of an account, assembled from
      [pixel events](/api-reference/beta/events/event) and purchase activity —
      ad clicks, storefront visits, and checkouts.


      Use the People API to list the people of an account and retrieve a single
      person.
    name: People
    x-whop-summary: Visitors and customers of an account, aggregated from pixel events.
  - description: >
      An Event records conversion or engagement activity for an account, such as
      page views, purchases, or leads. Each event ties the action to the
      [person](/api-reference/beta/people/person) who took it, so activity can
      be attributed to the ads and links that drove it.


      Use the Events API to send new tracking events, list recent
      identity-linked events for an account, and inspect the events recorded for
      a person.
    name: Events
    x-whop-summary: Conversion and engagement events tracked for attribution.
  - description: >
      An Ad is the individual creative unit delivered by an [ad
      group](/api-reference/beta/ad-groups/ad-group). It holds the copy,
      creative assets, and destination URL for one ad.


      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.
    name: Ads
    x-whop-summary: 'The creative: copy, assets, and destination URL.'
  - description: >
      An Ad Campaign is the top-level container for paid ads on an ad network.
      It sets the platform, objective, and budget strategy shared by its [ad
      groups](/api-reference/beta/ad-groups/ad-group) and ads.


      Use the Ad Campaigns API to create campaigns, list campaigns for an
      account, retrieve or update campaign settings, and pause or resume
      campaign delivery.
    name: Ad Campaigns
    x-whop-summary: Platform, objective, and budget for a set of ads.
  - description: >
      An Ad Group sits inside an [ad
      campaign](/api-reference/beta/ad-campaigns/ad-campaign) and controls
      delivery for [ads](/api-reference/beta/ads/ad). It sets the audience,
      placements, schedule, budget, and optimization goal for its ads.


      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.
    name: Ad Groups
    x-whop-summary: Audience, placements, and schedule within a campaign.
  - description: >
      An Audience represents a customer list uploaded to Whop for ad targeting.
      Audiences belong to an account and sync to supported ad platforms as
      custom audiences.


      Use the Audiences API to create audiences from CSV uploads, monitor
      processing status, and list or delete audiences for an account. Created
      audiences are usable for targeting after processing reaches `ready` or
      `partial`.
    name: Audiences
    x-whop-summary: Reusable targeting lists for ad groups.
  - description: >
      A Media Asset is an AI-generated image or video created from a prompt and
      billed from an account balance. When generation finishes, the asset
      includes a file that can be attached anywhere Whop accepts files.


      Use the Media API to start a generation job and retrieve the asset while
      it processes or after it is ready.
    name: Media
    x-whop-summary: >-
      AI-generated assets, billed from a balance, attachable wherever files are
      accepted.
  - description: >
      A Social Account represents an external profile connected to a Whop
      account or user, such as a Facebook page or Instagram account. Connecting
      a social account lets Whop run [ads](/api-reference/beta/ads/ad) under
      that profile's identity and promote its existing posts.


      Use the Social Accounts API to list connected accounts, create a
      Whop-managed Facebook page, start an OAuth connection, disconnect a social
      account, and list a connected profile's posts or a Facebook page's lead
      forms.
    name: Social Accounts
    x-whop-summary: Connected Facebook and Instagram accounts that run ads.
  - description: >
      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.


      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.
    name: Apps
    x-whop-summary: 'Apps you build on Whop: metadata, hosted builds, runtime logs.'
  - description: >
      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.


      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.
    name: App Builds
    x-whop-summary: Versioned build artifacts deployed to an app's platforms.
  - description: >
      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.


      Use the API Keys API to list a company 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.
    name: API Keys
    x-whop-summary: Programmatic credentials for an account or app.
paths:
  /ad_groups/{id}/duplicate:
    parameters:
      - $ref: '#/components/parameters/ApiVersionDate'
      - description: The ad group ID.
        in: path
        name: id
        required: true
        schema:
          type: string
    post:
      tags:
        - Ad Groups
      summary: Duplicate an Ad Group
      description: >-
        Creates copies of the ad group in `duplicating` status and returns them
        — into its own campaign, or into target_ad_campaign_id (which must
        belong to the same account and be compatible with the ad group's
        targeting and goals); each copy transitions to its final status
        (matching the source's active/paused state) once duplication completes.
        Poll each returned ad group until it leaves `duplicating` — a copy that
        could not be completed is deleted and returns 404.
      operationId: duplicateAdGroup
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        content:
          application/json:
            schema:
              properties:
                count:
                  description: Number of copies to create (1-10). Defaults to 1.
                  type: integer
                preserve_engagement:
                  description: >-
                    Whether the copied ads keep the original posts' engagement
                    (likes, comments, shares). Defaults to false.
                  type: boolean
                target_ad_campaign_id:
                  description: >-
                    Campaign to duplicate into. Defaults to the ad group's own
                    campaign.
                  type: string
              type: object
      responses:
        '201':
          content:
            application/json:
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/AdGroup'
                    type: array
                required:
                  - data
                type: object
          description: ad group duplication started
        '400':
          $ref: '#/components/responses/InvalidParameters'
          description: a duplication is already running for this ad group
        '404':
          $ref: '#/components/responses/NotFound'
          description: ad group not found
      security:
        - bearerAuth:
            - ad_campaign:create
      x-codeSamples:
        - lang: JavaScript
          source: |-
            import Whop from '@whop/sdk';

            const client = new Whop({
              apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
            });

            const response = await client.adGroups.duplicate('id');

            console.log(response.data);
components:
  parameters:
    ApiVersionDate:
      description: Pins the request to a dated API version.
      in: header
      name: Api-Version-Date
      required: false
      schema:
        example: '2026-07-22'
        type: string
    IdempotencyKey:
      description: >-
        A unique key that makes this request safe to retry. See [Idempotent
        requests](https://docs.whop.com/developer/api/idempotency).
      in: header
      name: Idempotency-Key
      required: false
      schema:
        example: d9105228-4a08-46b1-8b91-42fed586d383
        maxLength: 255
        type: string
  schemas:
    AdGroup:
      properties:
        ad_campaign:
          $ref: '#/components/schemas/AdEntityReference'
          description: The ad campaign this ad group belongs to.
        added_to_cart_value:
          description: >-
            USD value attributed to add-to-cart events. Sums the value sent with
            each event, normalized to USD; events without a value contribute 0.
          type: number
        added_to_carts:
          description: Whop pixel-attributed add-to-cart events, last-click.
          type: number
        audiences:
          $ref: '#/components/schemas/AdGroupAudiences'
          description: Saved audiences this ad group delivers to or excludes.
        bid_type:
          description: >-
            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.
          enum:
            - minimum_cost
            - average_target
            - maximum_target
            - null
          example: minimum_cost
          type:
            - string
            - 'null'
        budget_amount:
          description: >-
            This ad group's budget, in the ad account's currency. `null` when
            the budget is set on the campaign instead.
          type:
            - number
            - 'null'
        budget_type:
          description: >-
            Whether `budget_amount` is spent per day (`daily`) or over the ad
            group's full run (`lifetime`).
          enum:
            - daily
            - lifetime
            - null
          example: daily
          type:
            - string
            - 'null'
        click_through_rate:
          description: Clicks divided by impressions, between 0 and 1.
          type: number
        clicks:
          description: The number of clicks.
          type: number
        completed_registration_value:
          description: >-
            USD value attributed to complete-registration events. Sums the value
            sent with each event, normalized to USD; events without a value
            contribute 0.
          type: number
        completed_registrations:
          description: Whop pixel-attributed complete-registration events, last-click.
          type: number
        contact_value:
          description: >-
            USD value attributed to contact events. Sums the value sent with
            each event, normalized to USD; events without a value contribute 0.
          type: number
        contacts:
          description: Whop pixel-attributed contact events, last-click.
          type: number
        conversion_event:
          $ref: '#/components/schemas/ConversionEvent'
        conversion_location:
          description: >-
            Where the result you're optimizing for happens: `website` (your
            site), `profile` (your social media profile),
            `instagram_and_facebook` or `instagram_profile` (visits to your
            Instagram 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`).
          enum:
            - website
            - profile
            - instagram_and_facebook
            - instagram_profile
            - messaging
            - on_ad
            - instant_forms
            - instant_forms_and_messenger
            - website_and_instant_forms
            - null
          example: website
          type:
            - string
            - 'null'
        cost_per_added_to_cart:
          description: >-
            Spend divided by attributed add-to-cart events; null when they are
            not the goal and none are attributed.
          type:
            - number
            - 'null'
        cost_per_click:
          description: Spend divided by clicks; 0 when there are no clicks.
          type: number
        cost_per_completed_registration:
          description: >-
            Spend divided by attributed complete-registration events; null when
            they are not the goal and none are attributed.
          type:
            - number
            - 'null'
        cost_per_contact:
          description: >-
            Spend divided by attributed contact events; null when contacts are
            not the goal and none are attributed.
          type:
            - number
            - 'null'
        cost_per_lead:
          description: >-
            Spend divided by attributed leads; null when leads are not a goal
            and none are attributed.
          type:
            - number
            - 'null'
        cost_per_mille:
          description: Spend per 1,000 impressions; 0 when there are no impressions.
          type: number
        cost_per_purchase:
          description: >-
            Spend divided by attributed purchases; null when purchases are not a
            goal and none are attributed.
          type:
            - number
            - 'null'
        cost_per_result:
          description: >-
            Spend divided by Whop pixel-attributed results; null when nothing
            Whop-attributable is being optimized for.
          type:
            - number
            - 'null'
        cost_per_schedule:
          description: >-
            Spend divided by attributed schedule events; null when schedules are
            not the goal and none are attributed.
          type:
            - number
            - 'null'
        cost_per_submitted_application:
          description: >-
            Spend divided by attributed submit-application events; null when
            they are not the goal and none are attributed.
          type:
            - number
            - 'null'
        cost_per_unique_click:
          description: >-
            Spend divided by unique clicks; null when there are no unique
            clicks.
          type:
            - number
            - 'null'
        cost_per_viewed_content:
          description: >-
            Spend divided by attributed view-content events; null when they are
            not the goal and none are attributed.
          type:
            - number
            - 'null'
        created_at:
          description: When the ad group was created, as an ISO 8601 timestamp.
          type: string
        custom_conversions:
          description: >-
            Whop pixel-attributed custom (merchant-defined) conversion events,
            last-click, across all custom event names.
          type: number
        custom_event_counts:
          description: >-
            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.
          type: object
        custom_event_values:
          description: >-
            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.
          type: object
        delivery_status:
          description: >-
            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.
          enum:
            - all_ads_rejected
            - rejected
            - draft
            - no_ads
            - campaign_paused
            - paused
            - processing
            - issues
            - scheduled
            - completed
            - ads_off
            - learning_limited
            - learning
            - active
          example: all_ads_rejected
          type: string
        demographics:
          $ref: '#/components/schemas/AdGroupDemographics'
          description: Age, gender, and automatic-audience targeting.
        desired_cost_per_result:
          description: >-
            Cost per result to aim for (`average_target`) or never exceed
            (`maximum_target`). `null` for `minimum_cost` bidding.
          type:
            - number
            - 'null'
        detailed_targeting:
          $ref: '#/components/schemas/AdGroupDetailedTargeting'
          description: >-
            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:
          $ref: '#/components/schemas/AdGroupDevices'
          description: Device platforms and operating systems targeted.
        dynamic_creative:
          description: >-
            Whether the ad platform automatically mixes and matches this ad
            group's creatives and copy to find the best-performing combinations.
          type: boolean
        ends_at:
          description: >-
            When the ad group stops delivering, as an ISO 8601 timestamp. `null`
            when it runs until paused.
          type:
            - string
            - 'null'
        frequency:
          description: Platform-reported impressions divided by reach.
          type:
            - number
            - 'null'
        frequency_cap:
          description: >-
            Cap on how often one person sees ads from this ad group. Only
            available with `reach` optimization; `null` when uncapped.
          oneOf:
            - $ref: '#/components/schemas/AdGroupFrequencyCap'
            - type: 'null'
        id:
          description: Unique identifier for the ad group, prefixed `adgrp_`.
          type: string
        impressions:
          description: The number of impressions.
          type: number
        issues:
          items:
            $ref: '#/components/schemas/AdPlatformIssue'
            description: >-
              Open issues affecting this ad group and its ads. Empty when there
              are none.
          type: array
        languages:
          items:
            description: >-
              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.
            type: string
          type: array
        lead_value:
          description: >-
            USD value attributed to lead events. Sums the value sent with each
            event, normalized to USD; events without a value contribute 0.
          type: number
        leads:
          description: Whop pixel-attributed leads, last-click.
          type: number
        message_apps:
          items:
            description: >-
              Apps the conversation opens in when `conversion_location` is
              `messaging`. Empty for other conversion locations.
            enum:
              - messenger
              - instagram
              - whatsapp
            example: messenger
            type: string
          type: array
        minimum_daily_spend:
          description: >-
            Minimum the ad group tries to spend each day. `null` when no floor
            is set.
          type:
            - number
            - 'null'
        optimization_goal:
          description: The result the ad group's delivery is optimized to get the most of.
          enum:
            - 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
          type:
            - string
            - 'null'
        placements:
          items:
            $ref: '#/components/schemas/AdGroupPlacement'
            description: >-
              Where ads can appear, per platform. Empty when placements are
              chosen automatically.
          type: array
        purchase_value:
          description: USD value of pixel-attributed purchases.
          type: number
        purchases:
          description: Whop pixel-attributed purchases, last-click.
          type: number
        reach:
          description: The number of unique people who saw this.
          type: number
        regions:
          $ref: '#/components/schemas/AdGroupRegions'
          description: Locations targeted and excluded.
        result_event:
          description: >-
            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.
          enum:
            - purchase
            - lead
            - schedule
            - submit_application
            - contact
            - complete_registration
            - view_content
            - add_to_cart
            - custom
            - null
          example: purchase
          type:
            - string
            - 'null'
        result_event_name:
          description: >-
            The merchant-defined event name when result_event is custom; null
            for the standard events.
          type:
            - string
            - 'null'
        results:
          description: >-
            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.
          type:
            - number
            - 'null'
        return_on_ad_spend:
          description: >-
            Purchase value divided by spend, both in USD (a currency-neutral
            ratio); 0 when there is no spend.
          type: number
        schedule_value:
          description: >-
            USD value attributed to schedule events. Sums the value sent with
            each event, normalized to USD; events without a value contribute 0.
          type: number
        schedules:
          description: Whop pixel-attributed schedule events, last-click.
          type: number
        spend:
          description: The amount charged, in spend_currency.
          type: number
        spend_currency:
          description: The ISO 4217 currency code of all monetary metrics.
          type:
            - string
            - 'null'
        starts_at:
          description: >-
            When the ad group starts delivering, as an ISO 8601 timestamp.
            `null` when it starts as soon as it's active.
          type:
            - string
            - 'null'
        status:
          description: >-
            Whether the ad group is enabled. `active` and `paused` are set by
            you; `rejected` means it failed ad review; `duplicating` is a copy
            still being filled in.
          enum:
            - active
            - paused
            - rejected
            - duplicating
          example: active
          type: string
        submitted_application_value:
          description: >-
            USD value attributed to submit-application events. Sums the value
            sent with each event, normalized to USD; events without a value
            contribute 0.
          type: number
        submitted_applications:
          description: Whop pixel-attributed submit-application events, last-click.
          type: number
        title:
          description: Display name of the ad group.
          type:
            - string
            - 'null'
        unique_click_through_rate:
          description: Unique clicks divided by impressions, between 0 and 1.
          type:
            - number
            - 'null'
        unique_clicks:
          description: >-
            People who clicked, reported by the Whop pixel, counted once per
            person.
          type: number
        updated_at:
          description: When the ad group was last updated, as an ISO 8601 timestamp.
          type: string
        viewed_content_value:
          description: >-
            USD value attributed to view-content events. Sums the value sent
            with each event, normalized to USD; events without a value
            contribute 0.
          type: number
        viewed_contents:
          description: Whop pixel-attributed view-content events, last-click.
          type: number
      required:
        - click_through_rate
        - clicks
        - cost_per_click
        - cost_per_unique_click
        - cost_per_lead
        - cost_per_mille
        - cost_per_purchase
        - cost_per_schedule
        - cost_per_submitted_application
        - cost_per_contact
        - cost_per_completed_registration
        - cost_per_viewed_content
        - cost_per_added_to_cart
        - cost_per_result
        - frequency
        - impressions
        - leads
        - purchase_value
        - purchases
        - reach
        - result_event
        - result_event_name
        - results
        - return_on_ad_spend
        - spend
        - spend_currency
        - unique_click_through_rate
        - unique_clicks
        - schedules
        - submitted_applications
        - contacts
        - completed_registrations
        - viewed_contents
        - added_to_carts
        - custom_conversions
        - custom_event_counts
        - custom_event_values
        - lead_value
        - schedule_value
        - submitted_application_value
        - contact_value
        - completed_registration_value
        - viewed_content_value
        - added_to_cart_value
        - id
        - title
        - status
        - delivery_status
        - optimization_goal
        - conversion_location
        - message_apps
        - conversion_event
        - budget_amount
        - budget_type
        - minimum_daily_spend
        - bid_type
        - desired_cost_per_result
        - starts_at
        - ends_at
        - regions
        - demographics
        - detailed_targeting
        - audiences
        - languages
        - dynamic_creative
        - devices
        - frequency_cap
        - placements
        - ad_campaign
        - created_at
        - updated_at
        - issues
      type: object
    AdEntityReference:
      properties:
        id:
          description: The referenced entity's id.
          type: string
      required:
        - id
      type: object
    AdGroupAudiences:
      properties:
        exclude:
          items:
            description: IDs of saved audiences excluded from delivery, prefixed `adaud_`.
            type: string
          type: array
        include:
          items:
            description: >-
              IDs of saved audiences the ad group delivers to, prefixed
              `adaud_`.
            type: string
          type: array
      required:
        - include
        - exclude
      type: object
    ConversionEvent:
      anyOf:
        - enum:
            - 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
          type: string
        - type: string
        - type: 'null'
      description: >-
        The pixel event optimized for. A standard event, or any custom pixel
        event name.
    AdGroupDemographics:
      properties:
        automatic:
          description: >-
            Whether automatic audience targeting is on (Advantage+ on Meta).
            When `true`, the platform can deliver beyond the ages, genders, and
            detailed targeting you set, treating them as suggestions.
          type: boolean
        gender:
          description: Gender targeted.
          enum:
            - all
            - male
            - female
          example: all
          type: string
        maximum_age:
          description: Oldest age targeted. `null` when no maximum is set.
          type:
            - number
            - 'null'
        minimum_age:
          description: Youngest age targeted. `null` when no minimum is set.
          type:
            - number
            - 'null'
      required:
        - automatic
        - minimum_age
        - maximum_age
        - gender
      type: object
    AdGroupDetailedTargeting:
      properties:
        behaviors:
          items:
            $ref: '#/components/schemas/AdGroupTargetingCategory'
            description: Behavior categories targeted, such as frequent travelers.
          type: array
        demographics:
          items:
            $ref: '#/components/schemas/AdGroupDemographicCategory'
            description: >-
              Demographic categories targeted, such as life events or
              industries.
          type: array
        interests:
          items:
            $ref: '#/components/schemas/AdGroupTargetingCategory'
            description: Interest categories targeted, such as an interest in movies.
          type: array
      required:
        - interests
        - behaviors
        - demographics
      type: object
    AdGroupDevices:
      properties:
        operating_systems:
          items:
            $ref: '#/components/schemas/AdGroupOperatingSystem'
            description: Operating systems targeted. Empty targets all operating systems.
          type: array
        platforms:
          items:
            description: Device types targeted. Empty targets all devices.
            enum:
              - mobile
              - desktop
            example: mobile
            type: string
          type: array
      required:
        - platforms
        - operating_systems
      type: object
    AdGroupFrequencyCap:
      properties:
        maximum_impressions:
          description: >-
            Most times one person can be shown ads from this ad group within the
            window.
          type: number
        per_days:
          description: Length of the rolling window, in days.
          type:
            - number
            - 'null'
      required:
        - maximum_impressions
        - per_days
      type: object
    AdPlatformIssue:
      properties:
        id:
          description: Unique identifier for the issue.
          type: string
        message:
          description: A description of what the issue is and how it can be resolved.
          type: string
        resource_id:
          description: The ID of the campaign, ad group, or ad the issue is attached to.
          type:
            - string
            - 'null'
        resource_type:
          description: The type of resource the issue is attached to.
          enum:
            - ad_campaign
            - ad_group
            - ad
          example: ad_campaign
          type: string
      required:
        - id
        - message
        - resource_id
        - resource_type
      type: object
    AdGroupPlacement:
      properties:
        platform:
          description: >-
            Platform the ads run on: `facebook`, `instagram`, `messenger`,
            `audience_network`, `threads`, or `whatsapp`.
          type: string
        positions:
          items:
            description: >-
              Positions targeted within the platform, such as `feed` or `story`.
              Empty targets all of the platform's positions.
            type: string
          type: array
      required:
        - platform
        - positions
      type: object
    AdGroupRegions:
      properties:
        exclude:
          $ref: '#/components/schemas/AdGroupGeoLocations'
          description: Locations excluded from targeting. Country groups can't be excluded.
        include:
          $ref: '#/components/schemas/AdGroupGeoLocations'
          description: Locations the ad group targets.
      required:
        - include
        - exclude
      type: object
    V1ErrorResponse:
      properties:
        error:
          properties:
            message:
              description: Human-readable error message.
              type: string
            type:
              description: Machine-readable error code.
              type: string
          required:
            - type
            - message
          type: object
      required:
        - error
      type: object
    AdGroupTargetingCategory:
      properties:
        id:
          description: The ad platform's ID for the category in its targeting taxonomy.
          type: string
        name:
          description: Category name, such as `Movies`.
          type: string
      required:
        - id
      type: object
    AdGroupDemographicCategory:
      properties:
        id:
          description: The ad platform's ID for the category in its targeting taxonomy.
          type: string
        name:
          description: Category name, such as `Recently moved`.
          type: string
        type:
          description: Kind of demographic the category belongs to.
          enum:
            - life_events
            - industries
            - income
            - family_statuses
          example: life_events
          type: string
      required:
        - id
        - type
      type: object
    AdGroupOperatingSystem:
      properties:
        minimum_version:
          description: >-
            Lowest OS version targeted, such as `18.0`. Absent when any version
            qualifies.
          type: string
        os:
          description: Operating system targeted.
          enum:
            - ios
            - android
          example: ios
          type: string
      required:
        - os
      type: object
    AdGroupGeoLocations:
      properties:
        cities:
          items:
            $ref: '#/components/schemas/AdGroupCity'
            description: Cities, keyed by the ad platform's location taxonomy.
          type: array
        countries:
          items:
            description: Countries, as ISO 3166-1 alpha-2 codes such as `US`.
            type: string
          type: array
        country_groups:
          items:
            description: Multi-country groups such as `worldwide` or `europe`.
            type: string
          type: array
        custom_locations:
          items:
            $ref: '#/components/schemas/AdGroupCustomLocation'
            description: Circular areas, each a coordinate plus a radius.
          type: array
        regions:
          items:
            description: States and provinces, as ISO 3166-2 codes such as `US-CA`.
            type: string
          type: array
        zips:
          items:
            description: ZIP and postal codes.
            type: string
          type: array
      required:
        - countries
        - country_groups
        - regions
        - cities
        - zips
        - custom_locations
      type: object
    AdGroupCity:
      properties:
        key:
          description: The ad platform's key for the city in its location taxonomy.
          type: string
        name:
          description: >-
            City name, such as `Austin`. Absent when the platform doesn't return
            one.
          type: string
      required:
        - key
      type: object
    AdGroupCustomLocation:
      properties:
        distance_unit:
          description: Unit for `radius`.
          enum:
            - mile
            - kilometer
          example: mile
          type: string
        latitude:
          description: Latitude of the center point.
          type: number
        longitude:
          description: Longitude of the center point.
          type: number
        name:
          description: >-
            Label for the location, such as a city or address. Absent when the
            location has no label.
          type: string
        radius:
          description: Radius around the center point, in `distance_unit`.
          type: number
      required:
        - latitude
        - longitude
        - radius
        - distance_unit
      type: object
  responses:
    InvalidParameters:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/V1ErrorResponse'
      description: Invalid Parameters
    NotFound:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/V1ErrorResponse'
      description: Resource not found
  securitySchemes:
    bearerAuth:
      bearerFormat: auth-scheme
      description: >-
        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 ***************************`
      scheme: bearer
      type: http

````