When retrieving a SavedAudience in v22.0 or higher, the IndividualSetting field is an Object type and is not parsed correctly. Specifically, the geo field's value is parsed as 1.0 instead of 1. When this SavedAudience object is then used to create an AdSet, the request is rejected because the value is invalid.
final SavedAudience savedAudience = new SavedAudience(120218882502790414L, context).get().requestTargetingField().execute();
final Targeting fieldTargeting = savedAudience.getFieldTargeting();
final Object fieldIndividualSetting = fieldTargeting.getFieldTargetingAutomation().getFieldIndividualSetting();
System.out.println(fieldIndividualSetting);
AdAccount.APIRequestCreateAdSet adSetToCreate = adAccount.createAdSet()
.setName("adset")
...
.setTargeting(fieldTargeting).execute()
18:04:02.921 [main] INFO c.s.p.m.api.MetaPostBoosterApi -- ========Start of API Call========
18:04:02.922 [main] INFO c.s.p.m.api.MetaPostBoosterApi -- Post: https://graph.facebook.com/v23.0/act_213324006957203/adsets
...
18:04:02.922 [main] INFO c.s.p.m.api.MetaPostBoosterApi -- Content-Disposition: form-data; name="targeting"
18:04:02.922 [main] INFO c.s.p.m.api.MetaPostBoosterApi -- {"age_max":65,"age_min":18,"age_range":[18,65],"genders":[0],"geo_locations":{"cities":[{"country":"US","distance_unit":"mile","key":"2525495","name":"Austin","radius":25,"region":"Texas","region_id":"3886"},{"country":"US","distance_unit":"mile","key":"2526105","name":"Cedar Park","radius":25,"region":"Texas","region_id":"3886"},{"country":"US","distance_unit":"mile","key":"2527173","name":"Georgetown","radius":25,"region":"Texas","region_id":"3886"},{"country":"US","distance_unit":"mile","key":"2528026","name":"Lakeway","radius":25,"region":"Texas","region_id":"3886"},{"country":"US","distance_unit":"mile","key":"2528104","name":"Leander","radius":25,"region":"Texas","region_id":"3886"},{"country":"US","distance_unit":"mile","key":"2529681","name":"Round Rock","radius":25,"region":"Texas","region_id":"3886"},{"country":"US","distance_unit":"mile","key":"2530714","name":"West Lake Hills","radius":25,"region":"Texas","region_id":"3886"}],"location_types":["home","recent"]},"publisher_platforms":["facebook"],"targeting_automation":{"advantage_audience":1,"individual_setting":{"geo":1.0}}}
When retrieving a SavedAudience in v22.0 or higher, the IndividualSetting field is an
Objecttype and is not parsed correctly. Specifically, thegeofield's value is parsed as1.0instead of1. When this SavedAudience object is then used to create an AdSet, the request is rejected because the value is invalid.This example:
outputs
And when using that targeting field on an AdSet request:
The debug output shows that
{geo=1.0}is being sent in thetargetingparameter (this is from a request using a different saved audience but ends in the same result)Manually changing the value to
{"geo":1}gives a successful result.