import Whop from '@whop/sdk';
const client = new Whop({
apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
});
const reachEstimate = await client.adGroups.estimateReach({ platform: 'meta' });
console.log(reachEstimate.users_lower_bound);curl --request POST \
--url https://api.whop.com/api/v1/ad_groups/estimate_reach \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"platform": "meta",
"account_id": "biz_xxxxxxxxxxxxxx",
"audiences": {
"exclude": [
"adaud_xxxxxxxxxxxxxx"
],
"include": [
"adaud_xxxxxxxxxxxxxx"
]
},
"demographics": {
"automatic": false,
"gender": "all",
"maximum_age": 64,
"minimum_age": 21
},
"detailed_targeting": {
"behaviors": [
{
"id": "6007101291578",
"behavior_type": "video",
"name": "Recent vehicle purchase (30 days)",
"period": 123
}
],
"demographics": [
{
"id": "6002714398172",
"type": "life_events",
"name": "Recently moved"
}
],
"interests": [
{
"id": "6003193685204",
"name": "Car wash"
}
]
},
"devices": {
"operating_systems": [
{
"os": "ios",
"minimum_version": "18.0"
}
],
"platforms": [
"mobile"
]
},
"languages": [
"en"
],
"regions": {
"exclude": {
"cities": [
{
"key": "2418046",
"name": "Austin"
}
],
"countries": [
"US"
],
"country_groups": [
"north_america"
],
"custom_locations": [
{
"latitude": 30.2672,
"longitude": -97.7431,
"radius": 25,
"distance_unit": "mile",
"name": "4180 Burnet Rd, Austin TX 78756"
}
],
"regions": [
"US-TX"
],
"zips": [
"78756"
]
},
"include": {
"cities": [
{
"key": "2418046",
"name": "Austin"
}
],
"countries": [
"US"
],
"country_groups": [
"north_america"
],
"custom_locations": [
{
"latitude": 30.2672,
"longitude": -97.7431,
"radius": 25,
"distance_unit": "mile",
"name": "4180 Burnet Rd, Austin TX 78756"
}
],
"regions": [
"US-TX"
],
"zips": [
"78756"
]
}
}
}
'import requests
url = "https://api.whop.com/api/v1/ad_groups/estimate_reach"
payload = {
"platform": "meta",
"account_id": "biz_xxxxxxxxxxxxxx",
"audiences": {
"exclude": ["adaud_xxxxxxxxxxxxxx"],
"include": ["adaud_xxxxxxxxxxxxxx"]
},
"demographics": {
"automatic": False,
"gender": "all",
"maximum_age": 64,
"minimum_age": 21
},
"detailed_targeting": {
"behaviors": [
{
"id": "6007101291578",
"behavior_type": "video",
"name": "Recent vehicle purchase (30 days)",
"period": 123
}
],
"demographics": [
{
"id": "6002714398172",
"type": "life_events",
"name": "Recently moved"
}
],
"interests": [
{
"id": "6003193685204",
"name": "Car wash"
}
]
},
"devices": {
"operating_systems": [
{
"os": "ios",
"minimum_version": "18.0"
}
],
"platforms": ["mobile"]
},
"languages": ["en"],
"regions": {
"exclude": {
"cities": [
{
"key": "2418046",
"name": "Austin"
}
],
"countries": ["US"],
"country_groups": ["north_america"],
"custom_locations": [
{
"latitude": 30.2672,
"longitude": -97.7431,
"radius": 25,
"distance_unit": "mile",
"name": "4180 Burnet Rd, Austin TX 78756"
}
],
"regions": ["US-TX"],
"zips": ["78756"]
},
"include": {
"cities": [
{
"key": "2418046",
"name": "Austin"
}
],
"countries": ["US"],
"country_groups": ["north_america"],
"custom_locations": [
{
"latitude": 30.2672,
"longitude": -97.7431,
"radius": 25,
"distance_unit": "mile",
"name": "4180 Burnet Rd, Austin TX 78756"
}
],
"regions": ["US-TX"],
"zips": ["78756"]
}
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/ad_groups/estimate_reach",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'platform' => 'meta',
'account_id' => 'biz_xxxxxxxxxxxxxx',
'audiences' => [
'exclude' => [
'adaud_xxxxxxxxxxxxxx'
],
'include' => [
'adaud_xxxxxxxxxxxxxx'
]
],
'demographics' => [
'automatic' => false,
'gender' => 'all',
'maximum_age' => 64,
'minimum_age' => 21
],
'detailed_targeting' => [
'behaviors' => [
[
'id' => '6007101291578',
'behavior_type' => 'video',
'name' => 'Recent vehicle purchase (30 days)',
'period' => 123
]
],
'demographics' => [
[
'id' => '6002714398172',
'type' => 'life_events',
'name' => 'Recently moved'
]
],
'interests' => [
[
'id' => '6003193685204',
'name' => 'Car wash'
]
]
],
'devices' => [
'operating_systems' => [
[
'os' => 'ios',
'minimum_version' => '18.0'
]
],
'platforms' => [
'mobile'
]
],
'languages' => [
'en'
],
'regions' => [
'exclude' => [
'cities' => [
[
'key' => '2418046',
'name' => 'Austin'
]
],
'countries' => [
'US'
],
'country_groups' => [
'north_america'
],
'custom_locations' => [
[
'latitude' => 30.2672,
'longitude' => -97.7431,
'radius' => 25,
'distance_unit' => 'mile',
'name' => '4180 Burnet Rd, Austin TX 78756'
]
],
'regions' => [
'US-TX'
],
'zips' => [
'78756'
]
],
'include' => [
'cities' => [
[
'key' => '2418046',
'name' => 'Austin'
]
],
'countries' => [
'US'
],
'country_groups' => [
'north_america'
],
'custom_locations' => [
[
'latitude' => 30.2672,
'longitude' => -97.7431,
'radius' => 25,
'distance_unit' => 'mile',
'name' => '4180 Burnet Rd, Austin TX 78756'
]
],
'regions' => [
'US-TX'
],
'zips' => [
'78756'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.whop.com/api/v1/ad_groups/estimate_reach"
payload := strings.NewReader("{\n \"platform\": \"meta\",\n \"account_id\": \"biz_xxxxxxxxxxxxxx\",\n \"audiences\": {\n \"exclude\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ],\n \"include\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ]\n },\n \"demographics\": {\n \"automatic\": false,\n \"gender\": \"all\",\n \"maximum_age\": 64,\n \"minimum_age\": 21\n },\n \"detailed_targeting\": {\n \"behaviors\": [\n {\n \"id\": \"6007101291578\",\n \"behavior_type\": \"video\",\n \"name\": \"Recent vehicle purchase (30 days)\",\n \"period\": 123\n }\n ],\n \"demographics\": [\n {\n \"id\": \"6002714398172\",\n \"type\": \"life_events\",\n \"name\": \"Recently moved\"\n }\n ],\n \"interests\": [\n {\n \"id\": \"6003193685204\",\n \"name\": \"Car wash\"\n }\n ]\n },\n \"devices\": {\n \"operating_systems\": [\n {\n \"os\": \"ios\",\n \"minimum_version\": \"18.0\"\n }\n ],\n \"platforms\": [\n \"mobile\"\n ]\n },\n \"languages\": [\n \"en\"\n ],\n \"regions\": {\n \"exclude\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n },\n \"include\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.whop.com/api/v1/ad_groups/estimate_reach")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"platform\": \"meta\",\n \"account_id\": \"biz_xxxxxxxxxxxxxx\",\n \"audiences\": {\n \"exclude\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ],\n \"include\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ]\n },\n \"demographics\": {\n \"automatic\": false,\n \"gender\": \"all\",\n \"maximum_age\": 64,\n \"minimum_age\": 21\n },\n \"detailed_targeting\": {\n \"behaviors\": [\n {\n \"id\": \"6007101291578\",\n \"behavior_type\": \"video\",\n \"name\": \"Recent vehicle purchase (30 days)\",\n \"period\": 123\n }\n ],\n \"demographics\": [\n {\n \"id\": \"6002714398172\",\n \"type\": \"life_events\",\n \"name\": \"Recently moved\"\n }\n ],\n \"interests\": [\n {\n \"id\": \"6003193685204\",\n \"name\": \"Car wash\"\n }\n ]\n },\n \"devices\": {\n \"operating_systems\": [\n {\n \"os\": \"ios\",\n \"minimum_version\": \"18.0\"\n }\n ],\n \"platforms\": [\n \"mobile\"\n ]\n },\n \"languages\": [\n \"en\"\n ],\n \"regions\": {\n \"exclude\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n },\n \"include\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/ad_groups/estimate_reach")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"platform\": \"meta\",\n \"account_id\": \"biz_xxxxxxxxxxxxxx\",\n \"audiences\": {\n \"exclude\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ],\n \"include\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ]\n },\n \"demographics\": {\n \"automatic\": false,\n \"gender\": \"all\",\n \"maximum_age\": 64,\n \"minimum_age\": 21\n },\n \"detailed_targeting\": {\n \"behaviors\": [\n {\n \"id\": \"6007101291578\",\n \"behavior_type\": \"video\",\n \"name\": \"Recent vehicle purchase (30 days)\",\n \"period\": 123\n }\n ],\n \"demographics\": [\n {\n \"id\": \"6002714398172\",\n \"type\": \"life_events\",\n \"name\": \"Recently moved\"\n }\n ],\n \"interests\": [\n {\n \"id\": \"6003193685204\",\n \"name\": \"Car wash\"\n }\n ]\n },\n \"devices\": {\n \"operating_systems\": [\n {\n \"os\": \"ios\",\n \"minimum_version\": \"18.0\"\n }\n ],\n \"platforms\": [\n \"mobile\"\n ]\n },\n \"languages\": [\n \"en\"\n ],\n \"regions\": {\n \"exclude\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n },\n \"include\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"users_lower_bound": 1500000,
"users_upper_bound": 1800000
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}Estimate Ad Group Reach
Estimates how many people a draft targeting spec can reach, before an ad group is created. The body takes the same targeting fields as creating an ad group — regions, demographics, detailed_targeting, audiences, languages, and devices — and nothing is persisted.
import Whop from '@whop/sdk';
const client = new Whop({
apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
});
const reachEstimate = await client.adGroups.estimateReach({ platform: 'meta' });
console.log(reachEstimate.users_lower_bound);curl --request POST \
--url https://api.whop.com/api/v1/ad_groups/estimate_reach \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"platform": "meta",
"account_id": "biz_xxxxxxxxxxxxxx",
"audiences": {
"exclude": [
"adaud_xxxxxxxxxxxxxx"
],
"include": [
"adaud_xxxxxxxxxxxxxx"
]
},
"demographics": {
"automatic": false,
"gender": "all",
"maximum_age": 64,
"minimum_age": 21
},
"detailed_targeting": {
"behaviors": [
{
"id": "6007101291578",
"behavior_type": "video",
"name": "Recent vehicle purchase (30 days)",
"period": 123
}
],
"demographics": [
{
"id": "6002714398172",
"type": "life_events",
"name": "Recently moved"
}
],
"interests": [
{
"id": "6003193685204",
"name": "Car wash"
}
]
},
"devices": {
"operating_systems": [
{
"os": "ios",
"minimum_version": "18.0"
}
],
"platforms": [
"mobile"
]
},
"languages": [
"en"
],
"regions": {
"exclude": {
"cities": [
{
"key": "2418046",
"name": "Austin"
}
],
"countries": [
"US"
],
"country_groups": [
"north_america"
],
"custom_locations": [
{
"latitude": 30.2672,
"longitude": -97.7431,
"radius": 25,
"distance_unit": "mile",
"name": "4180 Burnet Rd, Austin TX 78756"
}
],
"regions": [
"US-TX"
],
"zips": [
"78756"
]
},
"include": {
"cities": [
{
"key": "2418046",
"name": "Austin"
}
],
"countries": [
"US"
],
"country_groups": [
"north_america"
],
"custom_locations": [
{
"latitude": 30.2672,
"longitude": -97.7431,
"radius": 25,
"distance_unit": "mile",
"name": "4180 Burnet Rd, Austin TX 78756"
}
],
"regions": [
"US-TX"
],
"zips": [
"78756"
]
}
}
}
'import requests
url = "https://api.whop.com/api/v1/ad_groups/estimate_reach"
payload = {
"platform": "meta",
"account_id": "biz_xxxxxxxxxxxxxx",
"audiences": {
"exclude": ["adaud_xxxxxxxxxxxxxx"],
"include": ["adaud_xxxxxxxxxxxxxx"]
},
"demographics": {
"automatic": False,
"gender": "all",
"maximum_age": 64,
"minimum_age": 21
},
"detailed_targeting": {
"behaviors": [
{
"id": "6007101291578",
"behavior_type": "video",
"name": "Recent vehicle purchase (30 days)",
"period": 123
}
],
"demographics": [
{
"id": "6002714398172",
"type": "life_events",
"name": "Recently moved"
}
],
"interests": [
{
"id": "6003193685204",
"name": "Car wash"
}
]
},
"devices": {
"operating_systems": [
{
"os": "ios",
"minimum_version": "18.0"
}
],
"platforms": ["mobile"]
},
"languages": ["en"],
"regions": {
"exclude": {
"cities": [
{
"key": "2418046",
"name": "Austin"
}
],
"countries": ["US"],
"country_groups": ["north_america"],
"custom_locations": [
{
"latitude": 30.2672,
"longitude": -97.7431,
"radius": 25,
"distance_unit": "mile",
"name": "4180 Burnet Rd, Austin TX 78756"
}
],
"regions": ["US-TX"],
"zips": ["78756"]
},
"include": {
"cities": [
{
"key": "2418046",
"name": "Austin"
}
],
"countries": ["US"],
"country_groups": ["north_america"],
"custom_locations": [
{
"latitude": 30.2672,
"longitude": -97.7431,
"radius": 25,
"distance_unit": "mile",
"name": "4180 Burnet Rd, Austin TX 78756"
}
],
"regions": ["US-TX"],
"zips": ["78756"]
}
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/ad_groups/estimate_reach",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'platform' => 'meta',
'account_id' => 'biz_xxxxxxxxxxxxxx',
'audiences' => [
'exclude' => [
'adaud_xxxxxxxxxxxxxx'
],
'include' => [
'adaud_xxxxxxxxxxxxxx'
]
],
'demographics' => [
'automatic' => false,
'gender' => 'all',
'maximum_age' => 64,
'minimum_age' => 21
],
'detailed_targeting' => [
'behaviors' => [
[
'id' => '6007101291578',
'behavior_type' => 'video',
'name' => 'Recent vehicle purchase (30 days)',
'period' => 123
]
],
'demographics' => [
[
'id' => '6002714398172',
'type' => 'life_events',
'name' => 'Recently moved'
]
],
'interests' => [
[
'id' => '6003193685204',
'name' => 'Car wash'
]
]
],
'devices' => [
'operating_systems' => [
[
'os' => 'ios',
'minimum_version' => '18.0'
]
],
'platforms' => [
'mobile'
]
],
'languages' => [
'en'
],
'regions' => [
'exclude' => [
'cities' => [
[
'key' => '2418046',
'name' => 'Austin'
]
],
'countries' => [
'US'
],
'country_groups' => [
'north_america'
],
'custom_locations' => [
[
'latitude' => 30.2672,
'longitude' => -97.7431,
'radius' => 25,
'distance_unit' => 'mile',
'name' => '4180 Burnet Rd, Austin TX 78756'
]
],
'regions' => [
'US-TX'
],
'zips' => [
'78756'
]
],
'include' => [
'cities' => [
[
'key' => '2418046',
'name' => 'Austin'
]
],
'countries' => [
'US'
],
'country_groups' => [
'north_america'
],
'custom_locations' => [
[
'latitude' => 30.2672,
'longitude' => -97.7431,
'radius' => 25,
'distance_unit' => 'mile',
'name' => '4180 Burnet Rd, Austin TX 78756'
]
],
'regions' => [
'US-TX'
],
'zips' => [
'78756'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.whop.com/api/v1/ad_groups/estimate_reach"
payload := strings.NewReader("{\n \"platform\": \"meta\",\n \"account_id\": \"biz_xxxxxxxxxxxxxx\",\n \"audiences\": {\n \"exclude\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ],\n \"include\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ]\n },\n \"demographics\": {\n \"automatic\": false,\n \"gender\": \"all\",\n \"maximum_age\": 64,\n \"minimum_age\": 21\n },\n \"detailed_targeting\": {\n \"behaviors\": [\n {\n \"id\": \"6007101291578\",\n \"behavior_type\": \"video\",\n \"name\": \"Recent vehicle purchase (30 days)\",\n \"period\": 123\n }\n ],\n \"demographics\": [\n {\n \"id\": \"6002714398172\",\n \"type\": \"life_events\",\n \"name\": \"Recently moved\"\n }\n ],\n \"interests\": [\n {\n \"id\": \"6003193685204\",\n \"name\": \"Car wash\"\n }\n ]\n },\n \"devices\": {\n \"operating_systems\": [\n {\n \"os\": \"ios\",\n \"minimum_version\": \"18.0\"\n }\n ],\n \"platforms\": [\n \"mobile\"\n ]\n },\n \"languages\": [\n \"en\"\n ],\n \"regions\": {\n \"exclude\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n },\n \"include\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.whop.com/api/v1/ad_groups/estimate_reach")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"platform\": \"meta\",\n \"account_id\": \"biz_xxxxxxxxxxxxxx\",\n \"audiences\": {\n \"exclude\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ],\n \"include\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ]\n },\n \"demographics\": {\n \"automatic\": false,\n \"gender\": \"all\",\n \"maximum_age\": 64,\n \"minimum_age\": 21\n },\n \"detailed_targeting\": {\n \"behaviors\": [\n {\n \"id\": \"6007101291578\",\n \"behavior_type\": \"video\",\n \"name\": \"Recent vehicle purchase (30 days)\",\n \"period\": 123\n }\n ],\n \"demographics\": [\n {\n \"id\": \"6002714398172\",\n \"type\": \"life_events\",\n \"name\": \"Recently moved\"\n }\n ],\n \"interests\": [\n {\n \"id\": \"6003193685204\",\n \"name\": \"Car wash\"\n }\n ]\n },\n \"devices\": {\n \"operating_systems\": [\n {\n \"os\": \"ios\",\n \"minimum_version\": \"18.0\"\n }\n ],\n \"platforms\": [\n \"mobile\"\n ]\n },\n \"languages\": [\n \"en\"\n ],\n \"regions\": {\n \"exclude\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n },\n \"include\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/ad_groups/estimate_reach")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"platform\": \"meta\",\n \"account_id\": \"biz_xxxxxxxxxxxxxx\",\n \"audiences\": {\n \"exclude\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ],\n \"include\": [\n \"adaud_xxxxxxxxxxxxxx\"\n ]\n },\n \"demographics\": {\n \"automatic\": false,\n \"gender\": \"all\",\n \"maximum_age\": 64,\n \"minimum_age\": 21\n },\n \"detailed_targeting\": {\n \"behaviors\": [\n {\n \"id\": \"6007101291578\",\n \"behavior_type\": \"video\",\n \"name\": \"Recent vehicle purchase (30 days)\",\n \"period\": 123\n }\n ],\n \"demographics\": [\n {\n \"id\": \"6002714398172\",\n \"type\": \"life_events\",\n \"name\": \"Recently moved\"\n }\n ],\n \"interests\": [\n {\n \"id\": \"6003193685204\",\n \"name\": \"Car wash\"\n }\n ]\n },\n \"devices\": {\n \"operating_systems\": [\n {\n \"os\": \"ios\",\n \"minimum_version\": \"18.0\"\n }\n ],\n \"platforms\": [\n \"mobile\"\n ]\n },\n \"languages\": [\n \"en\"\n ],\n \"regions\": {\n \"exclude\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n },\n \"include\": {\n \"cities\": [\n {\n \"key\": \"2418046\",\n \"name\": \"Austin\"\n }\n ],\n \"countries\": [\n \"US\"\n ],\n \"country_groups\": [\n \"north_america\"\n ],\n \"custom_locations\": [\n {\n \"latitude\": 30.2672,\n \"longitude\": -97.7431,\n \"radius\": 25,\n \"distance_unit\": \"mile\",\n \"name\": \"4180 Burnet Rd, Austin TX 78756\"\n }\n ],\n \"regions\": [\n \"US-TX\"\n ],\n \"zips\": [\n \"78756\"\n ]\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"users_lower_bound": 1500000,
"users_upper_bound": 1800000
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}Authorizations
An Account API key, account-scoped JWT, App API key, or user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************.
Headers
A unique key that makes this request safe to retry. See Idempotent requests.
255"d9105228-4a08-46b1-8b91-42fed586d383"
Pins the request to a dated API version.
"2026-08-21"
Body
The ad network the estimate runs on.
meta "meta"
Account to estimate on behalf of. Defaults to the authenticated account.
"biz_xxxxxxxxxxxxxx"
Saved audiences to deliver to or exclude. Can't be combined with demographics.automatic.
Show child attributes
Show child attributes
Age, gender, and automatic-audience targeting.
Show child attributes
Show child attributes
Interest, behavior, and demographic targeting, using categories from the ad platform's targeting taxonomy. At most 100 entries per section.
Show child attributes
Show child attributes
Device platforms and operating systems to target.
Show child attributes
Show child attributes
Languages to target, as ISO 639 codes such as en or es. Empty or omitted targets all languages.
Locations to target and exclude.
Show child attributes
Show child attributes
Response
reach estimated
Low end of how many people the targeting can reach. Null when the platform couldn't produce an estimate.
1500000
High end of how many people the targeting can reach. Null when the platform couldn't produce an estimate.
1800000

