Skip to main content
GET
/
ads
/
{id}
Retrieve an Ad
curl --request GET \
  --url https://api.whop.com/api/v1/ads/{id} \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.whop.com/api/v1/ads/{id}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.whop.com/api/v1/ads/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/ads/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.whop.com/api/v1/ads/{id}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.whop.com/api/v1/ads/{id}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.whop.com/api/v1/ads/{id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "ad_campaign": {
    "id": "<string>"
  },
  "ad_group": {
    "id": "<string>"
  },
  "added_to_carts": 123,
  "call_to_action": "learn_more",
  "click_through_rate": 123,
  "clicks": 123,
  "completed_registrations": 123,
  "contacts": 123,
  "cost_per_added_to_cart": 123,
  "cost_per_click": 123,
  "cost_per_completed_registration": 123,
  "cost_per_contact": 123,
  "cost_per_lead": 123,
  "cost_per_mille": 123,
  "cost_per_purchase": 123,
  "cost_per_result": 123,
  "cost_per_schedule": 123,
  "cost_per_submitted_application": 123,
  "cost_per_viewed_content": 123,
  "created_at": "<string>",
  "creatives": [
    {
      "crop": {
        "height": 123,
        "width": 123,
        "x": 123,
        "y": 123
      },
      "format": "square",
      "id": "<string>",
      "media_type": "<string>",
      "url": "<string>"
    }
  ],
  "custom_conversions": 123,
  "delivery_status": "rejected",
  "descriptions": [
    "<string>"
  ],
  "frequency": 123,
  "headlines": [
    "<string>"
  ],
  "id": "<string>",
  "impressions": 123,
  "issues": [
    {
      "id": "<string>",
      "message": "<string>",
      "resource_id": "<string>",
      "resource_type": "ad_campaign"
    }
  ],
  "lead_form": {},
  "lead_form_id": "<string>",
  "leads": 123,
  "messaging_config": {},
  "multi_advertiser_ads": true,
  "post_id": "<string>",
  "post_source": "facebook",
  "post_thumbnail_url": "<string>",
  "primary_texts": [
    "<string>"
  ],
  "purchase_value": 123,
  "purchases": 123,
  "reach": 123,
  "result_event": "purchase",
  "result_event_name": "<string>",
  "return_on_ad_spend": 123,
  "schedules": 123,
  "social_accounts": [
    {}
  ],
  "spend": 123,
  "spend_currency": "<string>",
  "status": "active",
  "submitted_applications": 123,
  "title": "<string>",
  "unique_click_through_rate": 123,
  "unique_clicks": 123,
  "updated_at": "<string>",
  "url": "<string>",
  "url_parameters": {},
  "viewed_contents": 123
}
{
"error": {
"message": "<string>",
"type": "<string>"
}
}

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-08-1"

Path Parameters

id
string
required

The ad ID.

Query Parameters

stats_from
string

Start of the stats window.

stats_to
string

End of the stats window.

time_zone
string

IANA timezone the stats window is interpreted in. Defaults to UTC.

Response

ad retrieved

ad_campaign
object
required

The ad campaign this ad belongs to, an object with an id.

ad_group
object
required

The ad group this ad belongs to, an object with an id.

added_to_carts
number
required

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

call_to_action
enum<string> | null
required

The call-to-action button shown on the ad.

Available options:
learn_more,
shop_now,
sign_up,
subscribe,
get_started,
book_now,
apply_now,
contact_us,
download,
order_now,
buy_now,
get_quote,
message_page,
whatsapp_message,
instagram_message,
call_now,
get_directions,
send_updates,
get_offer,
watch_more,
listen_now,
play_game,
open_link,
no_button,
get_offer_view,
get_event_tickets,
see_menu,
request_time,
event_rsvp,
see_details,
view_instagram_profile,
null
Example:

"learn_more"

click_through_rate
number
required

Clicks divided by impressions, between 0 and 1.

clicks
number
required

The number of clicks.

completed_registrations
number
required

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

contacts
number
required

Whop pixel-attributed contact events, last-click.

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 was created, as an ISO 8601 timestamp.

creatives
object[]
required
custom_conversions
number
required

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

delivery_status
enum<string>
required

The current delivery state, mirroring the Delivery column in the ads dashboard. When several states apply at once, the highest-precedence one is returned.

Available options:
rejected,
in_review,
draft,
campaign_paused,
ad_group_paused,
paused,
processing,
issues,
learning_limited,
learning,
active
Example:

"rejected"

descriptions
string[]
required

The description variants shown on the ad.

frequency
number | null
required

Platform-reported impressions divided by reach.

headlines
string[]
required

The headline variants shown on the ad.

id
string
required

Unique identifier for the ad.

impressions
number
required

The number of impressions.

issues
object[]
required
lead_form
object | null
required

The instant lead form on the ad (Meta lead ads), or null when the ad group's conversion_location is not an instant-form destination. An object with name, form_type (more_volume or higher_intent), an optional intro, questions, a privacy_policy, an optional completion screen, and phone_verification.

lead_form_id
string | null
required

The Meta lead form the ad uses. Set when the ad references an existing form via lead_form_id, or once a form built from lead_form has been created on Meta at launch.

leads
number
required

Whop pixel-attributed leads, last-click.

messaging_config
object | null
required

The click-to-message welcome copy, an object with message and keyword, or null when the ad has none.

multi_advertiser_ads
boolean
required

Whether the ad can appear alongside other advertisers' ads in the same unit. Defaults to true.

post_id
string | null
required

The existing post this ad promotes (a Facebook post or Instagram media), or null when it uses uploaded creatives.

post_source
enum<string> | null
required

Which network post_id refers to — facebook (a page post) or instagram (a media id) — or null when the ad uses uploaded creatives.

Available options:
facebook,
instagram,
null
Example:

"facebook"

post_thumbnail_url
string | null
required

Preview image of the existing post this ad promotes. Null for ads that use uploaded creatives, or until the post's media has been fetched from the network.

primary_texts
string[]
required

The primary text variants shown in the ad body.

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.

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.

return_on_ad_spend
number
required

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

schedules
number
required

Whop pixel-attributed schedule events, last-click.

social_accounts
object[]
required
spend
number
required

The amount charged, in spend_currency.

spend_currency
string | null
required

The ISO 4217 currency code of all monetary metrics.

status
enum<string>
required

The delivery status of the ad.

Available options:
active,
paused,
in_review,
rejected
Example:

"active"

submitted_applications
number
required

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

title
string | null
required

The display title of the ad. Falls back to the creative set caption when unset.

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 was last updated, as an ISO 8601 timestamp.

url
string | null
required

The URL the ad links to.

url_parameters
object
required

Query parameters appended to the URL, as a string-to-string map.

viewed_contents
number
required

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