The targeting configuration allows you to define which audience segments will see your ads. The targeting options are set at the ad set level, and each targeting field accepts an AdSetTarget object with positive (include) and/or negative (exclude) lists.
Basic Format
{
"targeting": {
"fieldName": {
"positive": ["value1", "value2"],
"negative": ["value3"]
}
}
} Validation Examples
✅ Valid Examples
// Single value
"gender": { "positive": ["male"] }
// Multiple values
"ageGroup": { "positive": ["18-30", "31-44"] }
// Unlimited
"interest": { "positive": ["all"] }
// Mixed (location & device location only)
"location": {
"positive": ["2886", "2895"],
"negative": ["1234567"]
} ❌ Invalid Examples
// "all" with other values
"gender": { "positive": ["all", "male"] } // ERROR
// "all" in negative
"ageGroup": { "negative": ["all"] } // ERROR
// Mixed on non-location field
"gender": { "positive": ["male"], "negative": ["female"] } // ERROR
// Invalid value
"gender": { "positive": ["unknown"] } // ERROR
// Empty targetingComplete Request Example
{
"campaignId": "123456789",
"name": "Spring Campaign - Tech Enthusiasts",
"trafficPlatforms": ["APP"],
"placements": ["IN_FEED"],
"budgetType": "DAILY",
"budget": 50000,
"startTime": 1698796800,
"endTime": 1701388800,
"goal": "CLICK",
"payBy": "CLICK",
"bidRate": 5000,
"deliveryRate": "STANDARD",
"optimization": true,
"draft": false,
"addedValue": false,
"isCpaOrder": false,
"targeting": {
"gender": {
"positive": ["male", "female"]
},
"ageGroup": {
"positive": ["18-30", "31-44"]
},
"interest": {
"positive": ["technology", "business"]
},
"location": {
"positive": ["2886", "2895", "2901"],
"negative": []
},
"deviceLocation": {
"positive": ["all"]
},
"language": {
"positive": ["en_us"]
},
"os": {
"positive": ["android@12", "android@13", "android@14", "ios@16", "ios@17", "ios@18"]
},
"manufacturer": {
"positive": ["apple", "samsung", "google"]
},
"carrier": {
"positive": ["all"]
},
"network": {
"positive": ["wifi", "cellular"]
}
}
}Error Responses
Invalid Targeting Value
{
"status": "ERROR",
"message": "Invalid targeting value",
"field": "targeting.gender"
}Mixed Targeting Not Allowed
{
"status": "ERROR",
"message": "Cannot use both positive and negative targeting for this field",
"field": "targeting.gender"
}Empty Targeting
{
"status": "ERROR",
"message": "Targeting field cannot be empty",
"field": "targeting.ageGroup"
}