v2
latestOpenAPI 3.1.02026-08-075421692.0 MBCreate a value rule set
Creates a value rule set on the ad account (Meta's POST /act_X/value_rule_set). Attach the returned id to an ad set with valueRuleSetId on POST /v1/ads/create or PUT /v1/ads/ad-sets/{adSetId}.
Rule order is semantic: rules are evaluated in array order and only the first matching rule adjusts the bid for an overlapping audience.
adjustValue is an unsigned magnitude in percent; the direction lives in adjustSign. INCREASE accepts 1-1000, DECREASE accepts 1-90. There is no signed field and 0 is out of range.
criteriaValueTypes is positionally paired with criteriaValues (same length, same order). Every type is the literal "NONE" except on LOCATION, which uses LOCATION_COUNTRY / LOCATION_REGION / LOCATION_CITY / LOCATION_COMSCORE_MARKET and may mix them within one criterion. Location values are Targeting-Search keys: a two-letter country code for LOCATION_COUNTRY, a numeric key for the rest.
LOCATION_DMA was replaced by LOCATION_COMSCORE_MARKET on 2026-06-22 and rules using DMAs are no longer active, so this API rejects it.
AUDIENCE_LABEL values (e.g. HIGH_VALUE) are applied to a Custom Audience in Ads Manager. There is no API to provision them, so label strings are passed through unvalidated and a typo produces a rule that never fires.
Ads Manager turns a rule set read-only (this API stays editable) when a rule uses more than 2 criteria, a custom age range, or the placements FB_MARKETPLACE, FB_SEARCH, FB_VIDEO or IG_EXPLORE.
Limits: 6 rule sets per ad account, 10 rules per set, 4 criteria per rule. The per-account cap is enforced by Meta, not here.
Request body
Response
Value rule set created