Skip to main content
POST
/
ad_groups
Create ad group
curl --request POST \
  --url https://api.whop.com/api/v1/ad_groups \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "campaign_id": "<string>",
  "config": {
    "bid_strategy": "lowest_cost",
    "bid_amount": 42,
    "optimization_goal": "conversions",
    "billing_event": "impressions",
    "start_time": "<string>",
    "end_time": "<string>",
    "pacing": "standard",
    "frequency_cap": 42,
    "frequency_cap_interval_days": 42,
    "targeting": {
      "age_max": 42,
      "age_min": 42,
      "countries": [
        "<string>"
      ],
      "device_platforms": [
        "mobile"
      ],
      "exclude_audience_ids": [
        "<string>"
      ],
      "genders": [
        "male"
      ],
      "include_audience_ids": [
        "<string>"
      ],
      "interest_ids": [
        "<string>"
      ],
      "languages": [
        "<string>"
      ],
      "placement_type": "automatic"
    }
  },
  "daily_budget": 6.9,
  "name": "<string>",
  "platform_config": {
    "meta": {
      "status": "ACTIVE",
      "bid_strategy": "LOWEST_COST_WITHOUT_CAP",
      "bid_amount": 42,
      "daily_budget": 42,
      "lifetime_budget": 42,
      "end_time": "<string>",
      "optimization_goal": "NONE",
      "billing_event": "APP_INSTALLS",
      "attribution_spec": [
        {
          "event_type": "<string>",
          "window_days": 42
        }
      ],
      "destination_type": "UNDEFINED",
      "promoted_object": {
        "custom_event_type": "<string>",
        "page_id": "<string>",
        "pixel_id": "<string>",
        "whatsapp_phone_number": "<string>"
      },
      "whatsapp_phone_number": "<string>",
      "page_id": "<string>",
      "instagram_actor_id": "<string>",
      "audience_type": "<string>",
      "publisher_platforms": [
        "<string>"
      ],
      "facebook_positions": [
        "<string>"
      ],
      "instagram_positions": [
        "<string>"
      ],
      "messenger_positions": [
        "<string>"
      ],
      "audience_network_positions": [
        "<string>"
      ],
      "threads_positions": [
        "<string>"
      ],
      "whatsapp_positions": [
        "<string>"
      ],
      "user_os": [
        "<string>"
      ],
      "user_device": [
        "<string>"
      ],
      "ios_devices": [
        "<string>"
      ],
      "android_devices": [
        "<string>"
      ],
      "geo_regions": [
        {
          "key": "<string>",
          "country": "<string>",
          "name": "<string>",
          "radius": 42
        }
      ],
      "geo_cities": [
        {
          "key": "<string>",
          "country": "<string>",
          "name": "<string>",
          "radius": 42
        }
      ],
      "geo_zips": [
        "<string>"
      ],
      "location_types": [
        "<string>"
      ],
      "excluded_geo_locations": {
        "cities": [
          {
            "key": "<string>",
            "country": "<string>",
            "name": "<string>",
            "radius": 42
          }
        ],
        "countries": [
          "<string>"
        ],
        "location_types": [
          "<string>"
        ],
        "regions": [
          {
            "key": "<string>",
            "country": "<string>",
            "name": "<string>",
            "radius": 42
          }
        ],
        "zips": [
          {
            "key": "<string>",
            "country": "<string>",
            "name": "<string>",
            "radius": 42
          }
        ]
      },
      "geo_locations": {
        "cities": [
          {
            "key": "<string>",
            "country": "<string>",
            "name": "<string>",
            "radius": 42
          }
        ],
        "countries": [
          "<string>"
        ],
        "location_types": [
          "<string>"
        ],
        "regions": [
          {
            "key": "<string>",
            "country": "<string>",
            "name": "<string>",
            "radius": 42
          }
        ],
        "zips": [
          {
            "key": "<string>",
            "country": "<string>",
            "name": "<string>",
            "radius": 42
          }
        ]
      },
      "targeting_automation": {
        "advantage_audience": 42
      },
      "brand_safety_content_filter_levels": [
        "<string>"
      ]
    },
    "tiktok": {
      "budget_mode": "BUDGET_MODE_DAY",
      "schedule_type": "SCHEDULE_START_END",
      "schedule_start_time": "<string>",
      "schedule_end_time": "<string>",
      "dayparting": "<string>",
      "optimization_goal": "CLICK",
      "billing_event": "CPC",
      "bid_type": "BID_TYPE_NO_BID",
      "bid_price": 6.9,
      "conversion_bid_price": 6.9,
      "pacing": "PACING_MODE_SMOOTH",
      "placement_type": "PLACEMENT_TYPE_AUTOMATIC",
      "placements": [
        "<string>"
      ],
      "tiktok_subplacements": [
        "<string>"
      ],
      "pixel_id": "<string>",
      "optimization_event": "<string>",
      "app_id": "app_xxxxxxxxxxxxxx",
      "promotion_type": "<string>",
      "identity_id": "<string>",
      "identity_type": "<string>",
      "identity_authorized_bc_id": "<string>",
      "operation_status": "ENABLE",
      "creative_material_mode": "<string>"
    }
  },
  "status": "active"
}
'
{
  "id": "adgrp_xxxxxxxxxxxx",
  "name": "<string>",
  "status": "active",
  "daily_budget": 6.9,
  "created_at": "2023-12-01T05:00:00.401Z",
  "updated_at": "2023-12-01T05:00:00.401Z",
  "platform_config": {
    "typename": "<string>",
    "platform": "meta",
    "page_id": "<string>",
    "instagram_actor_id": "<string>",
    "status": "ACTIVE",
    "bid_strategy": "LOWEST_COST_WITHOUT_CAP",
    "bid_amount": 42,
    "daily_budget": 42,
    "lifetime_budget": 42,
    "end_time": "<string>",
    "optimization_goal": "NONE",
    "billing_event": "APP_INSTALLS",
    "destination_type": "UNDEFINED",
    "promoted_object": {},
    "attribution_spec": [
      {}
    ],
    "publisher_platforms": [
      "<string>"
    ],
    "facebook_positions": [
      "<string>"
    ],
    "instagram_positions": [
      "<string>"
    ],
    "geo_locations": {},
    "excluded_geo_locations": {},
    "targeting_automation": {}
  },
  "config": {
    "bid_strategy": "lowest_cost",
    "bid_amount": 42,
    "optimization_goal": "conversions",
    "billing_event": "impressions",
    "start_time": "<string>",
    "end_time": "<string>",
    "pacing": "standard",
    "frequency_cap": 42,
    "frequency_cap_interval_days": 42,
    "targeting": {
      "countries": [
        "<string>"
      ],
      "age_min": 42,
      "age_max": 42,
      "genders": [
        "male"
      ],
      "languages": [
        "<string>"
      ],
      "placement_type": "automatic",
      "device_platforms": [
        "mobile"
      ],
      "interest_ids": [
        "<string>"
      ],
      "include_audience_ids": [
        "<string>"
      ],
      "exclude_audience_ids": [
        "<string>"
      ]
    }
  },
  "ad_campaign": {
    "id": "adcamp_xxxxxxxxxxx",
    "title": "<string>",
    "platform": "meta",
    "status": "active"
  }
}

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 ***************************

Body

application/json

Parameters for CreateAdGroupV2

campaign_id
string
required

The ad campaign to create this ad group within.

config
object

Unified ad group configuration (bidding, optimization, targeting).

daily_budget
number | null

Daily budget in dollars.

Example:

6.9

name
string | null

Human-readable ad group name.

platform_config
object

Platform-specific ad group configuration.

status
enum<string> | null

Initial status of the ad group (default: active).

Available options:
active,
paused,
inactive

Response

A successful response

An external ad group (ad set) belonging to an ad campaign

id
string
required

The unique identifier for the external ad group.

Example:

"adgrp_xxxxxxxxxxxx"

name
string | null
required

Human-readable ad group name

status
enum<string>
required

Current operational status of the ad group

Available options:
active,
paused,
inactive
daily_budget
number | null
required

Daily budget in dollars

Example:

6.9

created_at
string<date-time>
required

The datetime the external ad group was created.

Example:

"2023-12-01T05:00:00.401Z"

updated_at
string<date-time>
required

The datetime the external ad group was last updated.

Example:

"2023-12-01T05:00:00.401Z"

platform_config
MetaAdGroupPlatformConfigType · object
required

Meta (Facebook/Instagram) ad set configuration.

config
object
required

Unified ad group configuration (platform-agnostic)

ad_campaign
object
required

The parent ad campaign