Create or reuse a custom conversion
Provision the Meta custom conversion an ads flow optimises toward, and hand back the
customConversionId for promotedObject.customConversionId on POST /v1/ads/create.
Removes the manual "create it in Ads Manager first" step.
Reuse is ours, not Meta's. Meta's create is not idempotent, so a retried request
would otherwise mint a duplicate carrying none of the original's optimisation history.
A non-archived conversion with the same name on the same pixelId is returned
instead of created, with reused: true and a 200 rather than a 201.
rule is forwarded verbatim in Meta's own grammar (e.g.
{"url": {"i_contains": "thank-you"}}); Meta validates it and rejects a malformed one
with "A conversion rule is required at creation time".
API key authentication - use your Zernio API key as a Bearer token
In: header
Path Parameters
Meta ads SocialAccount id.
Meta ad account id (act_).
Also the reuse key, together with pixelId.
length <= 255Meta pixel id (event_source_id). From GET /v1/accounts/{accountId}/tracking-tags.
Meta custom_event_type, e.g. LEAD, PURCHASE, OTHER.
Meta conversion rule, forwarded verbatim.
Response Body
application/json
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.adaccounts.createCustomConversion({ path: { accountId: 'account_abc123', }, body: { adAccountId: 'adaccount_abc123', name: 'Example', pixelId: 'pixel_abc123', customEventType: 'string', rule: {}, },});console.log(data);{
"adAccountId": "string",
"customConversionId": "string",
"reused": true,
"customConversion": {
"id": "string",
"name": "string",
"rule": {},
"customEventType": "string",
"pixelId": "string",
"isArchived": true
}
}{
"adAccountId": "string",
"customConversionId": "string",
"reused": true,
"customConversion": {
"id": "string",
"name": "string",
"rule": {},
"customEventType": "string",
"pixelId": "string",
"isArchived": true
}
}{
"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.
Schedule a budget increase POST
Pre-schedule a temporary budget increase (Black Friday, a launch, a sale) instead of editing the budget by hand on the day. Same target rule as the GET: exactly one of `campaignId` / `adSetId`. Two Meta constraints worth knowing before you call it. `timeStart` / `timeEnd` must fall on a 15-minute boundary, and a campaign cannot mix `ABSOLUTE` and `MULTIPLIER` across its schedules — the second type is rejected with "Can't mix your budget scaling selection". Window rules (must sit inside the campaign's run dates, minimum lead time, no overlap) are Meta's and its message is forwarded verbatim.