Skip to content

Ad Set

An ad set groups ads that share the same targeting, optimisation goal and promoted app. Each Nova Play campaign has 2 or 3 ad sets. An ad set targets a subset of the countries of the campaign's region group and one audience type.

Naming convention

{GEO}_{AUDIENCE}_{COUNTRIES}
Part Values Meaning
GEO T1, SEA, LATAM, EA Region group, same as the campaign.
AUDIENCE Broad, Lookalike_Payers, Interest_Gaming Audience strategy. Reflected in targeting.custom_audiences (lookalike) and targeting.flexible_spec (interest).
COUNTRIES ISO codes joined by -, e.g. AU-CA-DE-GB-US Sorted list of targeted countries. Also available as targeting.geo_locations.countries.

Example: T1_Lookalike_Payers_CA-DE-US.

Fields

Field Type Description
id string Ad set id (17 digits). Always returned.
name string See naming convention.
campaign_id string Parent campaign id.
account_id string Numeric ad account id, without act_.
status string ACTIVE, or ARCHIVED when the campaign has ended.
effective_status string ACTIVE, CAMPAIGN_PAUSED (the parent campaign is paused) or ARCHIVED.
optimization_goal string APP_INSTALLS for INSTALL campaigns, VALUE for VALUE campaigns.
billing_event string Always IMPRESSIONS.
bid_strategy string Always LOWEST_COST_WITHOUT_CAP.
targeting object Targeting spec, see below.
promoted_object object The app being promoted, see below.
start_time datetime Campaign start.
end_time datetime Day after the campaign's last day. Omitted when there is no end date.
created_time datetime Creation timestamp.
updated_time datetime Last update timestamp.
is_dynamic_creative bool Always false.

Default fields when fields is omitted: id,name.

targeting

{
  "geo_locations": {
    "countries": ["AU", "CA", "DE", "GB", "US"],
    "location_types": ["home", "recent"]
  },
  "age_min": 18,
  "age_max": 65,
  "user_os": ["Android"],
  "publisher_platforms": ["facebook", "instagram", "audience_network"],
  "custom_audiences": [],
  "flexible_spec": []
}
Key Description
geo_locations.countries ISO 3166-1 alpha-2 codes. This is the authoritative list of countries an ad set delivers to; insights with breakdowns=country only ever return these countries.
user_os ["Android"] or ["iOS"], following the game.
custom_audiences [{ "id", "name": "LAL 1% payers" }] for Lookalike_Payers ad sets, otherwise [].
flexible_spec [{ "interests": [{ "id", "name": "Mobile games" }] }] for Interest_Gaming ad sets, otherwise [].
{
  "application_id": "5040209235711335",
  "object_store_url": "https://play.google.com/store/apps/details?id=com.novaplay.dragonmerge",
  "custom_event_type": "MOBILE_APP_INSTALL"
}
Key Description
application_id Numeric app id on the ad platform. Stable per game. Also appears in the ad's tracking_specs.
object_store_url Store listing URL. The store app id is embedded here: for Google Play it is the id= query parameter (com.novaplay.dragonmerge), for the App Store it is the last path segment (id1600000011). Use this to map an ad set to a game.
custom_event_type MOBILE_APP_INSTALL for INSTALL campaigns, PURCHASE for VALUE campaigns.

Edges

Edge Description
/<adset_id>/ads Ads in the ad set.
/<adset_id>/insights Performance for this ad set. Default level=adset.

List ad sets of an account: GET /act_<account_id>/adsets

Returns every ad set in the account, across all campaigns (typically 6 to 12).

Parameter Type Required Description
access_token string yes Personal token (or Authorization: Bearer).
fields string no Comma-separated list of ad set fields. Default id,name.
limit int no Page size, default 25, maximum 500.
after string no Cursor from a previous page. See Paging.
curl -G "https://graph.huydata.com/v21.0/act_199454714457591/adsets" \
  -d "access_token=$META_ACCESS_TOKEN" \
  -d "fields=id,name,campaign_id,status,effective_status,optimization_goal,promoted_object" \
  -d "limit=3"
{
  "data": [
    {
      "id": "12029269518058219",
      "name": "T1_Broad_AU-CA-DE-GB-US",
      "campaign_id": "12020064400866904",
      "status": "ACTIVE",
      "effective_status": "ACTIVE",
      "optimization_goal": "APP_INSTALLS",
      "promoted_object": {
        "application_id": "5040209235711335",
        "object_store_url": "https://play.google.com/store/apps/details?id=com.novaplay.dragonmerge",
        "custom_event_type": "MOBILE_APP_INSTALL"
      }
    },
    {
      "id": "12027707773097920",
      "name": "T1_Lookalike_Payers_CA-DE-US",
      "campaign_id": "12020064400866904",
      "status": "ACTIVE",
      "effective_status": "ACTIVE",
      "optimization_goal": "APP_INSTALLS",
      "promoted_object": {
        "application_id": "5040209235711335",
        "object_store_url": "https://play.google.com/store/apps/details?id=com.novaplay.dragonmerge",
        "custom_event_type": "MOBILE_APP_INSTALL"
      }
    },
    {
      "id": "12024481725776212",
      "name": "T1_Interest_Gaming_AU-CA-DE",
      "campaign_id": "12020064400866904",
      "status": "ACTIVE",
      "effective_status": "ACTIVE",
      "optimization_goal": "APP_INSTALLS",
      "promoted_object": {
        "application_id": "5040209235711335",
        "object_store_url": "https://play.google.com/store/apps/details?id=com.novaplay.dragonmerge",
        "custom_event_type": "MOBILE_APP_INSTALL"
      }
    }
  ],
  "paging": {
    "cursors": {
      "before": "b2Zmc2V0OjA",
      "after": "b2Zmc2V0OjM"
    },
    "next": "https://graph.huydata.com/v21.0/act_199454714457591/adsets?fields=id%2Cname%2Ccampaign_id%2Cstatus%2Ceffective_status%2Coptimization_goal%2Cpromoted_object&limit=3&access_token=...&after=b2Zmc2V0OjM"
  }
}

Because limit=3 was smaller than the number of ad sets, paging.next is present. Request it to get the next 3.

List ad sets of a campaign: GET /<campaign_id>/adsets

Same parameters and response shape as above, restricted to one campaign. Calling this edge on an ad set or ad id returns error 100 (Tried accessing nonexisting field (adsets) on node type (AdSet)).

curl -G "https://graph.huydata.com/v21.0/12020064400866904/adsets" \
  -d "access_token=$META_ACCESS_TOKEN" \
  -d "fields=id,name,targeting,start_time,end_time"

Read one ad set: GET /<adset_id>

Parameter Type Required Description
access_token string yes Personal token.
fields string no Comma-separated list of ad set fields. Default id,name.
curl -G "https://graph.huydata.com/v21.0/12029269518058219" \
  -d "access_token=$META_ACCESS_TOKEN" \
  -d "fields=id,name,campaign_id,account_id,status,effective_status,optimization_goal,billing_event,targeting,promoted_object,start_time,end_time,created_time,updated_time"
{
  "id": "12029269518058219",
  "name": "T1_Broad_AU-CA-DE-GB-US",
  "campaign_id": "12020064400866904",
  "account_id": "199454714457591",
  "status": "ACTIVE",
  "effective_status": "ACTIVE",
  "optimization_goal": "APP_INSTALLS",
  "billing_event": "IMPRESSIONS",
  "targeting": {
    "geo_locations": {
      "countries": ["AU", "CA", "DE", "GB", "US"],
      "location_types": ["home", "recent"]
    },
    "age_min": 18,
    "age_max": 65,
    "user_os": ["Android"],
    "publisher_platforms": ["facebook", "instagram", "audience_network"],
    "custom_audiences": [],
    "flexible_spec": []
  },
  "promoted_object": {
    "application_id": "5040209235711335",
    "object_store_url": "https://play.google.com/store/apps/details?id=com.novaplay.dragonmerge",
    "custom_event_type": "MOBILE_APP_INSTALL"
  },
  "start_time": "2026-04-18T00:00:00+0000",
  "created_time": "2026-04-17T04:00:00+0000",
  "updated_time": "2026-04-17T04:00:00+0000"
}

end_time is absent because the campaign has no end date.

Nested selection works on object-valued fields, e.g. fields=id,name,promoted_object{object_store_url} returns only that key (plus id if the object has one) inside promoted_object.