Create 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.
API key authentication - use your Zernio API key as a Bearer token
In: header
Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
Meta ad account id (act_).
1 <= length <= 255Evaluated in order; the first matching rule wins.
1 <= items <= 10Response Body
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.adaccounts.createValueRuleSet({ body: { accountId: 'account_abc123', adAccountId: 'adaccount_abc123', name: 'Example', rules: [ { name: 'Example', adjustSign: 'INCREASE', adjustValue: 1, criteria: [ { criteriaType: 'AGE', operator: 'CONTAINS', criteriaValues: [ 'string', ], criteriaValueTypes: [ 'string', ], }, ], }, ], },});console.log(data);{
"adAccountId": "string",
"valueRuleSetId": "string"
}{
"error": "Unauthorized"
}List value rule sets GET
Lists the ad account's value rule sets (Meta's `/act_X/value_rule_set`). A value rule set adjusts the auction bid up or down for audience segments you value differently; attach one to an ad set with `valueRuleSetId` on `POST /v1/ads/create` or `PUT /v1/ads/ad-sets/{adSetId}`. Rows are returned in the same camelCase shape the `PUT` body takes, ids included, so a set round-trips 1:1: **the update is a full replace, not a patch**, so you GET, mutate and send the whole thing back. Limits: 6 rule sets per ad account, 10 rules per set, 4 criteria per rule. **Rule order is semantic.** Rules are evaluated in array order and only the FIRST matching rule adjusts the bid for an overlapping audience. The order you send is the order that is stored and returned. Eligibility: value rule sets apply only to ad sets on the `LOWEST_COST_WITHOUT_CAP` (auto-bid) or `COST_CAP` bid strategies. Meta rejects the rest server-side.
Ad account finances GET
Finances of one Meta ad account: prepaid `balance`, lifetime `amountSpent`, account `spendCap` (null = no cap) and the `fundingSource`. Money values are converted from Meta's minor units to whole units of `currency`.