Skip to main content
GET
/
ad_campaigns
/
{id}
Retrieve an Ad Campaign
curl --request GET \
  --url https://{defaultHost}/ad_campaigns/{id} \
  --header 'Authorization: Bearer <token>'
{
  "id": "<string>",
  "title": "<string>",
  "status": "draft",
  "platform": "meta",
  "objective": "awareness",
  "special_ad_categories": [
    "housing"
  ],
  "optimization_goal": "<string>",
  "budget_amount": 123,
  "budget_type": "daily",
  "budget_optimization": "ad_campaign",
  "bid_type": "minimum_cost",
  "created_at": "<string>",
  "updated_at": "<string>",
  "click_through_rate": 123,
  "clicks": 123,
  "cost_per_click": 123,
  "cost_per_lead": 123,
  "cost_per_mille": 123,
  "cost_per_purchase": 123,
  "cost_per_result": 123,
  "frequency": 123,
  "impressions": 123,
  "leads": 123,
  "purchase_value": 123,
  "purchases": 123,
  "reach": 123,
  "return_on_ad_spend": 123,
  "spend": 123,
  "spend_currency": "<string>",
  "unique_click_through_rate": 123,
  "unique_clicks": 123,
  "issues": [
    {
      "id": "<string>",
      "category": "policy_rejection",
      "resource_id": "<string>",
      "resource_type": "ad_campaign"
    }
  ]
}

Authorizations

Authorization
string
header
required

An account API key, account scoped JWT, app API key, or user OAuth token.

Headers

Api-Version-Date
string<date>

Pins the request to a dated API version. When omitted, the request uses the original (2025-01-01) request/response shapes, so existing unversioned callers are never broken. Generated SDKs always send the latest version they were built against. An unrecognized value is rejected with a 400. The schemas documented here always describe the latest version.

Example:

"2026-06-20"

Path Parameters

id
string
required

The ad campaign ID.

Query Parameters

stats_from
string

Start of the stats window.

stats_to
string

End of the stats window.

Response

ad campaign retrieved

id
string
required

Unique identifier for the ad campaign.

title
string
required

The title of the ad campaign.

status
enum<string>
required

The lifecycle status of the ad campaign.

Available options:
draft,
active,
paused,
payment_failed
Example:

"draft"

platform
enum<string>
required

The ad network the campaign runs on.

Available options:
meta
Example:

"meta"

objective
enum<string> | null
required

The goal the campaign optimizes toward.

Available options:
awareness,
traffic,
engagement,
leads,
sales,
null
Example:

"awareness"

special_ad_categories
enum<string>[]
required

Regulated categories the campaign is declared under. Ads in these categories are subject to extra targeting restrictions. Empty when none apply.

Available options:
housing,
employment,
financial_products,
politics
optimization_goal
string | null
required

The specific event the campaign optimizes for. If the campaign is CBO, then all ad groups will have the same optimization goal, which will be returned here.

budget_amount
number | null
required

The campaign budget in USD. Null when budget is set at the ad group level (ABO).

budget_type
enum<string> | null
required

Whether the budget is spent per day or over the campaign's lifetime.

Available options:
daily,
lifetime,
null
Example:

"daily"

budget_optimization
enum<string> | null
required

Which level owns the budget — the campaign (CBO) or each ad group (ABO).

Available options:
ad_campaign,
ad_group,
null
Example:

"ad_campaign"

bid_type
enum<string> | null
required

The bidding strategy the campaign uses.

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

"minimum_cost"

created_at
string
required

When the campaign was created, as an ISO 8601 timestamp.

updated_at
string
required

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

click_through_rate
number
required

Clicks divided by impressions, between 0 and 1.

clicks
number
required

The number of clicks for all ads within this campaign.

cost_per_click
number
required

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

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 results; null when nothing is being optimized for.

frequency
number | null
required

Platform-reported impressions divided by reach.

impressions
number
required

The number of impressions.

leads
number
required

Whop pixel-attributed leads, last-click.

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 an ad.

return_on_ad_spend
number
required

Purchase value divided by spend; 0 when there is no spend.

spend
number
required

The amount charged, in spend_currency.

spend_currency
string | null
required

The ISO 4217 currency code of all monetary metrics.

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.

issues
object[]
required