@zernio/node 0.2.1169 → 0.2.1170
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +200 -103
- package/dist/index.d.ts +200 -103
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/src/generated/sdk.gen.ts +127 -16
- package/src/generated/types.gen.ts +200 -103
package/dist/index.d.mts
CHANGED
|
@@ -2109,13 +2109,13 @@ type AccountWithFollowerStats = SocialAccount & {
|
|
|
2109
2109
|
type Ad = {
|
|
2110
2110
|
_id?: string;
|
|
2111
2111
|
name?: string;
|
|
2112
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
2112
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
2113
2113
|
/**
|
|
2114
2114
|
* Delivery status. Derived from the platform `effective_status`, so it inherits ancestor pauses (an ACTIVE ad under a PAUSED campaign reads `paused`). For the ad's own on/off toggle use `configuredStatus`; for the review state use `reviewStatus`.
|
|
2115
2115
|
*/
|
|
2116
2116
|
status?: (AdStatus);
|
|
2117
2117
|
/**
|
|
2118
|
-
* The ad's own on/off switch as configured on the platform, independent of its parents: an ACTIVE ad under a paused ad set or campaign still reads ACTIVE here while `status` reads `paused`. Sources: Meta `configured_status`, TikTok ad `operation_status` (ENABLE -> ACTIVE, DISABLE -> PAUSED), ChatGPT (OpenAI) ad `status` (ACTIVE / PAUSED, plus ARCHIVED on OpenAI). On create it is read back from the platform, not copied from the request: a `PAUSED` create pauses only the top-most object it creates, so an ad under a new paused campaign or ad set reads ACTIVE here with `status: paused`, and only an ad attached to an existing ad set reads PAUSED. Distinct from `status`, which is the ancestor-cascaded delivery status. Only present for Meta, TikTok and
|
|
2118
|
+
* The ad's own on/off switch as configured on the platform, independent of its parents: an ACTIVE ad under a paused ad set or campaign still reads ACTIVE here while `status` reads `paused`. Sources: Meta `configured_status`, TikTok ad `operation_status` (ENABLE -> ACTIVE, DISABLE -> PAUSED), ChatGPT (OpenAI) ad `status` (ACTIVE / PAUSED, plus ARCHIVED on OpenAI), Reddit `configured_status` (ACTIVE / PAUSED / ARCHIVED). On create it is read back from the platform, not copied from the request: a `PAUSED` create pauses only the top-most object it creates, so an ad under a new paused campaign or ad set reads ACTIVE here with `status: paused`, and only an ad attached to an existing ad set reads PAUSED. Distinct from `status`, which is the ancestor-cascaded delivery status. Only present for Meta, TikTok, OpenAI and Reddit ads created or synced after the field was added for that platform; null otherwise.
|
|
2119
2119
|
*/
|
|
2120
2120
|
configuredStatus?: (string) | null;
|
|
2121
2121
|
/**
|
|
@@ -2484,7 +2484,7 @@ type Ad = {
|
|
|
2484
2484
|
createdAt?: string;
|
|
2485
2485
|
updatedAt?: string;
|
|
2486
2486
|
};
|
|
2487
|
-
type platform = 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
2487
|
+
type platform = 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
2488
2488
|
type adType = 'boost' | 'standalone';
|
|
2489
2489
|
/**
|
|
2490
2490
|
* Creative format, classified from the media the creative carries. `null` when the creative carries no media to classify. An unsynced creative and a genuine text-only ad are indistinguishable, so neither is guessed at. Returned by `GET /v1/ads`, `GET /v1/ads/{adId}` and the ad nodes of `GET /v1/ads/tree`.
|
|
@@ -2553,7 +2553,7 @@ type AdBudget = {
|
|
|
2553
2553
|
};
|
|
2554
2554
|
type AdCampaign = {
|
|
2555
2555
|
platformCampaignId?: string;
|
|
2556
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
2556
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
2557
2557
|
campaignName?: string;
|
|
2558
2558
|
/**
|
|
2559
2559
|
* Delivery status derived from child ad statuses. Distinct from `reviewStatus`.
|
|
@@ -2564,7 +2564,7 @@ type AdCampaign = {
|
|
|
2564
2564
|
*/
|
|
2565
2565
|
reviewStatus?: (AdReviewStatus | null);
|
|
2566
2566
|
/**
|
|
2567
|
-
* Raw platform-level campaign status (Meta `effective_status`; ChatGPT (OpenAI): the campaign's own switch, active / paused / archived; TikTok: the campaign's own switch `operation_status`, ENABLE / DISABLE).
|
|
2567
|
+
* Raw platform-level campaign status (Meta `effective_status`; ChatGPT (OpenAI): the campaign's own switch, active / paused / archived; TikTok: the campaign's own switch `operation_status`, ENABLE / DISABLE; Reddit: the campaign's `configured_status`, ACTIVE / PAUSED / ARCHIVED).
|
|
2568
2568
|
*/
|
|
2569
2569
|
platformCampaignStatus?: (string) | null;
|
|
2570
2570
|
/**
|
|
@@ -3135,8 +3135,17 @@ type matchType2 = 'broad' | 'phrase' | 'exact';
|
|
|
3135
3135
|
* optimizes for (sent as the campaign's `conversion_event_setting_ids`); every other
|
|
3136
3136
|
* `promotedObject` field is rejected with a 400. See `customEventType` below.
|
|
3137
3137
|
*
|
|
3138
|
+
* **Reddit Ads**: Reddit puts a pixel on every ad group, whatever the goal. `pixelId`
|
|
3139
|
+
* (or `tracking.pixelId`) picks it; when omitted the ad account's first pixel is used,
|
|
3140
|
+
* and an ad account with no pixel returns 422 (create the pixel in Reddit Ads Manager).
|
|
3141
|
+
* A `pixelId` that is not a pixel of the ad account returns 400. `goal: conversions`
|
|
3142
|
+
* requires `customEventType` (see below). `goal: lead_generation` optimizes toward the
|
|
3143
|
+
* pixel's Lead event. Reddit only optimizes toward an event the pixel has already
|
|
3144
|
+
* received: when it never fired, the request returns 422 `invalid_resource_state`.
|
|
3145
|
+
* Fire it from your site or send it with POST /v1/ads/conversions first.
|
|
3146
|
+
*
|
|
3138
3147
|
* The remaining `promotedObject.*` fields are Meta-only. Platforms other than
|
|
3139
|
-
* Meta, TikTok and
|
|
3148
|
+
* Meta, TikTok, OpenAI and Reddit ignore `promotedObject` entirely.
|
|
3140
3149
|
*
|
|
3141
3150
|
*/
|
|
3142
3151
|
type AdPromotedObject = {
|
|
@@ -3146,6 +3155,7 @@ type AdPromotedObject = {
|
|
|
3146
3155
|
* carrying `pixel_id` without `custom_event_type` (error_subcode 1885014),
|
|
3147
3156
|
* even when `customConversionId` is also present.
|
|
3148
3157
|
* **TikTok:** TikTok Pixel ID, required for `goal: conversions`.
|
|
3158
|
+
* **Reddit:** Reddit pixel ID (e.g. `a2_abc123`), optional on every goal (see above).
|
|
3149
3159
|
* To discover the pixels an ad account can use, call
|
|
3150
3160
|
* `GET /v1/accounts/{accountId}/tracking-tags?adAccountId=act_...` (each entry
|
|
3151
3161
|
* carries `kind` and `ownerAdAccountId`), or
|
|
@@ -3183,6 +3193,11 @@ type AdPromotedObject = {
|
|
|
3183
3193
|
* the campaign optimizes for the first optimizable event in OpenAI's own list
|
|
3184
3194
|
* order, which is the most recently created one.
|
|
3185
3195
|
*
|
|
3196
|
+
* **Reddit:** required for `goal: conversions` (400 without it). One of `PURCHASE`,
|
|
3197
|
+
* `LEAD`, `COMPLETE_REGISTRATION` or `SIGN_UP` (both sent as Reddit's SIGN_UP),
|
|
3198
|
+
* `ADD_TO_CART`, `PAGE_VISIT`, `VIEW_CONTENT` or `CONTENT_VIEW` (both sent as
|
|
3199
|
+
* PAGE_VISIT), any case. The pixel must already have received the event (422 otherwise).
|
|
3200
|
+
*
|
|
3186
3201
|
*/
|
|
3187
3202
|
customEventType?: string;
|
|
3188
3203
|
/**
|
|
@@ -3336,11 +3351,11 @@ type AdsTimelineResponse = {
|
|
|
3336
3351
|
}>;
|
|
3337
3352
|
};
|
|
3338
3353
|
/**
|
|
3339
|
-
* Meta, plus `urlTags` on ChatGPT (OpenAI). Meta: attaches pixel measurement to the ad regardless of the optimization goal (the "Website events" tracking row in Ads Manager). `pixelId` becomes the ad's `tracking_specs` (offsite_conversion + fb_pixel); `urlTags` is stored on the new creative as `url_tags` and retained on the ad for compatibility. Applied on the legacy single-creative shape, every ad of the multi-creative shape, and the attach shape. NOTE: tracking lives on the AD object and is not inherited from the ad set, so pass it on EVERY attach call that should carry the pixel. ChatGPT (OpenAI): `urlTags` becomes the ad's `landing_page_configuration.query_string_template`, which OpenAI appends to `linkUrl` on click.
|
|
3354
|
+
* Meta, plus `urlTags` on ChatGPT (OpenAI) and `pixelId` on Reddit. Meta: attaches pixel measurement to the ad regardless of the optimization goal (the "Website events" tracking row in Ads Manager). `pixelId` becomes the ad's `tracking_specs` (offsite_conversion + fb_pixel); `urlTags` is stored on the new creative as `url_tags` and retained on the ad for compatibility. Applied on the legacy single-creative shape, every ad of the multi-creative shape, and the attach shape. NOTE: tracking lives on the AD object and is not inherited from the ad set, so pass it on EVERY attach call that should carry the pixel. ChatGPT (OpenAI): `urlTags` becomes the ad's `landing_page_configuration.query_string_template`, which OpenAI appends to `linkUrl` on click. Reddit: `pixelId` picks the pixel of the new ad group, like `promotedObject.pixelId` (which wins when both are sent).
|
|
3340
3355
|
*/
|
|
3341
3356
|
type AdTracking = {
|
|
3342
3357
|
/**
|
|
3343
|
-
* Meta Pixel ID to attach for offsite-conversion measurement.
|
|
3358
|
+
* Meta Pixel ID to attach for offsite-conversion measurement, or the Reddit pixel of the new ad group.
|
|
3344
3359
|
*/
|
|
3345
3360
|
pixelId?: string;
|
|
3346
3361
|
/**
|
|
@@ -3451,7 +3466,7 @@ type AdTreeAdSet = {
|
|
|
3451
3466
|
*/
|
|
3452
3467
|
type AdTreeCampaign = {
|
|
3453
3468
|
platformCampaignId?: string;
|
|
3454
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
3469
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
3455
3470
|
campaignName?: string;
|
|
3456
3471
|
/**
|
|
3457
3472
|
* Earliest `platformCreatedAt` (platform ad creation time; falls back to `createdAt`, Zernio's sync time, for ads synced before that field existed) across every ad in the campaign. Not the platform campaign's own creation time (Meta's `Campaign.created_time` etc. is not synced). A campaign created empty and populated later will show its first ad's time, not the campaign's. Usable for sorting "most recently created" without the numeric-campaign-id heuristic. Same source as `AdTreeAdSet.createdTime` and `Ad.platformCreatedAt`; mirrors `AdCampaign.earliestAd`.
|
|
@@ -3472,7 +3487,7 @@ type AdTreeCampaign = {
|
|
|
3472
3487
|
*/
|
|
3473
3488
|
reviewStatus?: (AdReviewStatus | null);
|
|
3474
3489
|
/**
|
|
3475
|
-
* Raw platform-level campaign status (Meta `effective_status`: ACTIVE, PAUSED, DELETED, ARCHIVED, IN_PROCESS, WITH_ISSUES; ChatGPT (OpenAI): the campaign's own switch, active / paused / archived, independent of the delivery `status`; TikTok: the campaign's own switch `operation_status`, ENABLE / DISABLE). Distinct from per-ad `platformStatus`.
|
|
3490
|
+
* Raw platform-level campaign status (Meta `effective_status`: ACTIVE, PAUSED, DELETED, ARCHIVED, IN_PROCESS, WITH_ISSUES; ChatGPT (OpenAI): the campaign's own switch, active / paused / archived, independent of the delivery `status`; TikTok: the campaign's own switch `operation_status`, ENABLE / DISABLE; Reddit: the campaign's `configured_status`, ACTIVE / PAUSED / ARCHIVED). Distinct from per-ad `platformStatus`.
|
|
3476
3491
|
*/
|
|
3477
3492
|
platformCampaignStatus?: (string) | null;
|
|
3478
3493
|
/**
|
|
@@ -5951,14 +5966,15 @@ type ConversionEvent = {
|
|
|
5951
5966
|
* Standard event name (Purchase, Lead, CompleteRegistration, AddToCart,
|
|
5952
5967
|
* InitiateCheckout, AddPaymentInfo, Subscribe, StartTrial, ViewContent,
|
|
5953
5968
|
* Search, Contact, SubmitApplication, Schedule) or a custom string
|
|
5954
|
-
* (only supported on platforms that accept custom events: Meta
|
|
5955
|
-
* OpenAI Ads).
|
|
5969
|
+
* (only supported on platforms that accept custom events: Meta,
|
|
5970
|
+
* OpenAI Ads and Reddit).
|
|
5956
5971
|
*
|
|
5957
5972
|
* Per-platform behavior:
|
|
5958
5973
|
* - Meta: free-form; standard names match Meta's built-ins.
|
|
5959
5974
|
* - Google: ignored. The conversion action's category determines the type.
|
|
5960
5975
|
* - LinkedIn: ignored. The conversion rule's `type` is locked to the destination.
|
|
5961
5976
|
* - OpenAI Ads: a fixed subset of standard names (Purchase, Lead, AddToCart, ViewContent, InitiateCheckout, CompleteRegistration, Subscribe, StartTrial, Schedule) maps 1:1 onto OpenAI's own event-type enum; anything else is sent as a custom event with the name preserved.
|
|
5977
|
+
* - Reddit: Purchase, Lead, CompleteRegistration (SIGN_UP), AddToCart, AddToWishlist, ViewContent, Search and PageView (PAGE_VISIT) map onto Reddit's tracking types; anything else is sent as a CUSTOM event with the name preserved.
|
|
5962
5978
|
*
|
|
5963
5979
|
*/
|
|
5964
5980
|
eventName: string;
|
|
@@ -5971,7 +5987,8 @@ type ConversionEvent = {
|
|
|
5971
5987
|
* to prevent double-counting. Mapped to event_id on Meta,
|
|
5972
5988
|
* transactionId on Google, eventId on LinkedIn (LinkedIn deduplicates
|
|
5973
5989
|
* against Insight Tag events with the same eventId; the Insight Tag
|
|
5974
|
-
* event wins when both arrive).
|
|
5990
|
+
* event wins when both arrive), and `metadata.conversion_id` on Reddit
|
|
5991
|
+
* (Reddit's dedup key against Reddit Pixel events).
|
|
5975
5992
|
*
|
|
5976
5993
|
*/
|
|
5977
5994
|
eventId: string;
|
|
@@ -6090,6 +6107,14 @@ type ConversionEvent = {
|
|
|
6090
6107
|
* Pinterest click ID (the `epik` URL param or `_epik` cookie). Sent to Pinterest as `click_id`, not hashed.
|
|
6091
6108
|
*/
|
|
6092
6109
|
epik?: string;
|
|
6110
|
+
/**
|
|
6111
|
+
* Reddit click ID (the `rdt_cid` URL param Reddit adds to ad clicks). Sent to Reddit as `click_id`, not hashed.
|
|
6112
|
+
*/
|
|
6113
|
+
rdt_cid?: string;
|
|
6114
|
+
/**
|
|
6115
|
+
* Reddit Pixel browser id (the `_rdt_uuid` first-party cookie). Sent to Reddit as `user.uuid`, not hashed.
|
|
6116
|
+
*/
|
|
6117
|
+
rdt_uuid?: string;
|
|
6093
6118
|
};
|
|
6094
6119
|
};
|
|
6095
6120
|
/**
|
|
@@ -12067,7 +12092,7 @@ type SnapchatPlatformData = {
|
|
|
12067
12092
|
type contentType3 = 'story' | 'saved_story' | 'spotlight';
|
|
12068
12093
|
type SocialAccount = {
|
|
12069
12094
|
_id: string;
|
|
12070
|
-
platform: 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads' | 'sms' | 'phone' | 'rcs' | 'whopads';
|
|
12095
|
+
platform: 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads' | 'redditads' | 'sms' | 'phone' | 'rcs' | 'whopads';
|
|
12071
12096
|
profileId: (string | Profile);
|
|
12072
12097
|
username?: string;
|
|
12073
12098
|
displayName?: string;
|
|
@@ -12160,7 +12185,7 @@ type SocialAccount = {
|
|
|
12160
12185
|
[key: string]: unknown;
|
|
12161
12186
|
};
|
|
12162
12187
|
};
|
|
12163
|
-
type platform11 = 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads' | 'sms' | 'phone' | 'rcs' | 'whopads';
|
|
12188
|
+
type platform11 = 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads' | 'redditads' | 'sms' | 'phone' | 'rcs' | 'whopads';
|
|
12164
12189
|
/**
|
|
12165
12190
|
* TikTok accounts only. The account type TikTok reported when the account was connected. `personal` accounts cannot use TikTok direct messages through the API (TikTok limits Business Messaging to Business Accounts): skip the inbox for them and tell the user to switch to a Business Account in the TikTok app, then reconnect. `business` is the prerequisite, not a guarantee; messaging also needs the messaging scopes granted and TikTok's regional availability. `unknown` on accounts connected before this was captured or whose grant left out the account-type scope.
|
|
12166
12191
|
*/
|
|
@@ -12454,7 +12479,7 @@ type TargetingSpec = {
|
|
|
12454
12479
|
}>;
|
|
12455
12480
|
};
|
|
12456
12481
|
/**
|
|
12457
|
-
* Minimum age. Applied on Meta, TikTok, Pinterest, LinkedIn, X and Google Search/Display (Google excludes the age ranges outside the request); rejected with 400 on OpenAI and on Google Performance Max / Demand Gen. Each platform clamps to its own range: Meta and Pinterest effectively cap at 65 (65 = 65+), TikTok maps up to 100. LinkedIn rounds out to its buckets (18-24, 25-34, 35-54, 55+) and has no under-18 audience; X rounds out to the narrowest of its fixed ranges (e.g. 25-34 becomes 25-49, 18-65 becomes 18+). Pinterest has no under-18 bucket, so an ageMin below 18 starts at 18 there.
|
|
12482
|
+
* Minimum age. Applied on Meta, TikTok, Pinterest, LinkedIn, X and Google Search/Display (Google excludes the age ranges outside the request); rejected with 400 on OpenAI, Reddit and on Google Performance Max / Demand Gen. Each platform clamps to its own range: Meta and Pinterest effectively cap at 65 (65 = 65+), TikTok maps up to 100. LinkedIn rounds out to its buckets (18-24, 25-34, 35-54, 55+) and has no under-18 audience; X rounds out to the narrowest of its fixed ranges (e.g. 25-34 becomes 25-49, 18-65 becomes 18+). Pinterest has no under-18 bucket, so an ageMin below 18 starts at 18 there.
|
|
12458
12483
|
*/
|
|
12459
12484
|
ageMin?: number;
|
|
12460
12485
|
/**
|
|
@@ -12462,7 +12487,7 @@ type TargetingSpec = {
|
|
|
12462
12487
|
*/
|
|
12463
12488
|
ageMax?: number;
|
|
12464
12489
|
/**
|
|
12465
|
-
* Restrict by gender. 'all' (default) targets everyone. Applied on Meta, TikTok, Pinterest, LinkedIn, X and Google Search/Display (Google excludes the other gender); rejected with 400 on OpenAI and on Google Performance Max / Demand Gen.
|
|
12490
|
+
* Restrict by gender. 'all' (default) targets everyone. Applied on Meta, TikTok, Pinterest, LinkedIn, X, Reddit and Google Search/Display (Google excludes the other gender); rejected with 400 on OpenAI and on Google Performance Max / Demand Gen.
|
|
12466
12491
|
*/
|
|
12467
12492
|
gender?: 'all' | 'male' | 'female';
|
|
12468
12493
|
/**
|
|
@@ -12475,7 +12500,7 @@ type TargetingSpec = {
|
|
|
12475
12500
|
*/
|
|
12476
12501
|
incomeTier?: 'top_5' | 'top_10' | 'top_10_25' | 'top_25_50';
|
|
12477
12502
|
/**
|
|
12478
|
-
* Language codes restricting the audience by language. Applied on Meta, Google, TikTok, LinkedIn, X and
|
|
12503
|
+
* Language codes restricting the audience by language. Applied on Meta, Google, TikTok, LinkedIn, X, Pinterest and Reddit; rejected with 400 on OpenAI. A code the platform cannot target returns 400 listing the ones it can. On Meta, ISO 639-1 codes (e.g. ['en']); a bare code targets all regional variants ("en" = all English), or use a region-qualified code ("en_GB", "pt_BR") for a specific one. Unknown codes are rejected.
|
|
12479
12504
|
*/
|
|
12480
12505
|
languages?: Array<(string)>;
|
|
12481
12506
|
/**
|
|
@@ -12530,13 +12555,29 @@ type TargetingSpec = {
|
|
|
12530
12555
|
*/
|
|
12531
12556
|
jobFunctions?: Array<(string)>;
|
|
12532
12557
|
/**
|
|
12533
|
-
* Platform audience IDs to include, as returned by GET /v1/ads/audiences (Meta custom audience ids, TikTok audience ids, Pinterest customer list ids, LinkedIn segment ids (the platformAudienceId from GET /v1/ads/audiences; Zernio resolves it to the targetable LinkedIn ad segment, an unknown id returns 400), Google user list ids, X custom audience ids). Not supported on OpenAI (400).
|
|
12558
|
+
* Platform audience IDs to include, as returned by GET /v1/ads/audiences (Meta custom audience ids, TikTok audience ids, Pinterest customer list ids, LinkedIn segment ids (the platformAudienceId from GET /v1/ads/audiences; Zernio resolves it to the targetable LinkedIn ad segment, an unknown id returns 400), Google user list ids, X custom audience ids). On Reddit, the ids of custom audiences built in Reddit Ads Manager (GET /v1/ads/audiences does not list Reddit audiences). Not supported on OpenAI (400).
|
|
12534
12559
|
*/
|
|
12535
12560
|
audienceInclude?: Array<(string)>;
|
|
12536
12561
|
/**
|
|
12537
12562
|
* Platform audience IDs to exclude; same ID formats as audienceInclude. Not supported on OpenAI (400).
|
|
12538
12563
|
*/
|
|
12539
12564
|
audienceExclude?: Array<(string)>;
|
|
12565
|
+
/**
|
|
12566
|
+
* Reddit only (400 elsewhere). Subreddits to target, by name, with or without the `r/` prefix (e.g. `['marketing', 'r/startups']`), as returned by /v1/ads/targeting/search?dimension=community.
|
|
12567
|
+
*/
|
|
12568
|
+
communities?: Array<(string)>;
|
|
12569
|
+
/**
|
|
12570
|
+
* Reddit only (400 elsewhere). Subreddits to exclude, named like `communities`.
|
|
12571
|
+
*/
|
|
12572
|
+
excludedCommunities?: Array<(string)>;
|
|
12573
|
+
/**
|
|
12574
|
+
* Reddit only (400 elsewhere). Keywords that place the ad in Reddit conversations about them, as returned by /v1/ads/targeting/search?dimension=conversationKeyword.
|
|
12575
|
+
*/
|
|
12576
|
+
conversationKeywords?: Array<(string)>;
|
|
12577
|
+
/**
|
|
12578
|
+
* Reddit only (400 elsewhere). Conversation keywords to keep the ad away from.
|
|
12579
|
+
*/
|
|
12580
|
+
excludedConversationKeywords?: Array<(string)>;
|
|
12540
12581
|
};
|
|
12541
12582
|
/**
|
|
12542
12583
|
* Text, images (up to 10), videos (up to 10), and mixed media albums. Captions up to 1024 chars for media, 4096 for text-only.
|
|
@@ -20566,7 +20607,7 @@ type DeleteProfileError = (unknown | ErrorResponse | {
|
|
|
20566
20607
|
type ListAccountsData = {
|
|
20567
20608
|
query?: {
|
|
20568
20609
|
/**
|
|
20569
|
-
* Only accounts of this kind. ads = ad accounts (Meta, Google, LinkedIn, Pinterest, TikTok, X, OpenAI), communication = WhatsApp, Telegram, Discord, Slack and iMessage, blogs = Shopify and WordPress, social = every other platform.
|
|
20610
|
+
* Only accounts of this kind. ads = ad accounts (Meta, Google, LinkedIn, Pinterest, TikTok, X, OpenAI, Reddit), communication = WhatsApp, Telegram, Discord, Slack and iMessage, blogs = Shopify and WordPress, social = every other platform.
|
|
20570
20611
|
*/
|
|
20571
20612
|
category?: 'social' | 'ads' | 'communication' | 'blogs';
|
|
20572
20613
|
/**
|
|
@@ -20759,7 +20800,7 @@ type GetAllAccountsHealthData = {
|
|
|
20759
20800
|
/**
|
|
20760
20801
|
* Filter by platform
|
|
20761
20802
|
*/
|
|
20762
|
-
platform?: 'facebook' | 'instagram' | 'linkedin' | 'twitter' | 'tiktok' | 'youtube' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads' | 'whopads';
|
|
20803
|
+
platform?: 'facebook' | 'instagram' | 'linkedin' | 'twitter' | 'tiktok' | 'youtube' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads' | 'redditads' | 'whopads';
|
|
20763
20804
|
/**
|
|
20764
20805
|
* Filter by profile ID
|
|
20765
20806
|
*/
|
|
@@ -21704,6 +21745,10 @@ type GetConnectUrlData = {
|
|
|
21704
21745
|
* x_ads_denied, x_ads_auth_failed, x_ads_config_error, x_ads_account_not_found,
|
|
21705
21746
|
* x_ads_state_error, x_ads_token_failed, x_ads_token_missing, x_ads_callback_error
|
|
21706
21747
|
*
|
|
21748
|
+
* Reddit Ads (platform=redditads):
|
|
21749
|
+
* reddit_ads_auth_failed, reddit_ads_invalid_state, reddit_ads_access_denied,
|
|
21750
|
+
* reddit_ads_scope_not_granted, reddit_ads_no_ad_accounts, reddit_ads_callback_error
|
|
21751
|
+
*
|
|
21707
21752
|
* Shopify (platform=shopify):
|
|
21708
21753
|
* shopify_auth_failed, shopify_config_error, shopify_invalid_state, shopify_invalid_hmac,
|
|
21709
21754
|
* shopify_invalid_shop, shopify_missing_scopes, shopify_callback_error
|
|
@@ -21714,8 +21759,8 @@ type GetConnectUrlData = {
|
|
|
21714
21759
|
* and `tiktok_ads_auth_failed` may carry the provider's raw error string in `error_message`.
|
|
21715
21760
|
*
|
|
21716
21761
|
* 2. On the tiktok and twitter ads flows `platform` carries the ads platform id
|
|
21717
|
-
* (`tiktokads`, `xads`), not the value used in the request path. The googleads and
|
|
21718
|
-
* flows report `googleads` and `shopify`.
|
|
21762
|
+
* (`tiktokads`, `xads`), not the value used in the request path. The googleads, redditads and
|
|
21763
|
+
* shopify flows report `googleads`, `redditads` and `shopify`.
|
|
21719
21764
|
*
|
|
21720
21765
|
* 3. `missing_tiktok_permissions` means the TikTok authorization left out a permission the
|
|
21721
21766
|
* already-connected account needs, so nothing was changed and it keeps working as before.
|
|
@@ -21933,7 +21978,7 @@ type ConnectAdsData = {
|
|
|
21933
21978
|
* instagram_login flow no ads account can be created; do not use this value for those accounts.
|
|
21934
21979
|
*
|
|
21935
21980
|
*/
|
|
21936
|
-
platform: 'facebook' | 'instagram' | 'linkedin' | 'tiktok' | 'twitter' | 'pinterest' | 'googleads';
|
|
21981
|
+
platform: 'facebook' | 'instagram' | 'linkedin' | 'tiktok' | 'twitter' | 'pinterest' | 'googleads' | 'redditads';
|
|
21937
21982
|
};
|
|
21938
21983
|
query: {
|
|
21939
21984
|
/**
|
|
@@ -21947,7 +21992,7 @@ type ConnectAdsData = {
|
|
|
21947
21992
|
* profile's ads connection hangs off: that account is no longer connected, so the
|
|
21948
21993
|
* call returns 409 `reconnect_required` instead of reconnecting another account.
|
|
21949
21994
|
* Reconnect it via GET /v1/connect/{platform} first. Ignored for standalone
|
|
21950
|
-
* platforms (`googleads`).
|
|
21995
|
+
* platforms (`googleads`, `redditads`).
|
|
21951
21996
|
*
|
|
21952
21997
|
*/
|
|
21953
21998
|
accountId?: string;
|
|
@@ -21957,7 +22002,8 @@ type ConnectAdsData = {
|
|
|
21957
22002
|
* preserve the existing scope; supplied IDs are checked against the new grant. To change
|
|
21958
22003
|
* that scope after migration, call this endpoint with the IDs and omit loginMode. Supported
|
|
21959
22004
|
* on `facebook`/`instagram` (Meta, `act_<digits>`), `linkedin` (bare
|
|
21960
|
-
* numeric sponsored-account id), `googleads` (bare customer id digits)
|
|
22005
|
+
* numeric sponsored-account id), `googleads` (bare customer id digits),
|
|
22006
|
+
* `redditads` (Reddit ad account id, `a2_<id>` or `t2_<id>`)
|
|
21961
22007
|
* and `twitter` (X Ads, base36 account id). `tiktok` scopes advertisers
|
|
21962
22008
|
* at OAuth and `pinterest` has no ads discovery, so both ignore it.
|
|
21963
22009
|
* Meta ids are additionally validated against the connected token:
|
|
@@ -21973,9 +22019,9 @@ type ConnectAdsData = {
|
|
|
21973
22019
|
* scoped ones, instead of every ad account the login can reach. The scope
|
|
21974
22020
|
* is kept when this call returns an `authUrl`, so the Meta Ads account
|
|
21975
22021
|
* created after OAuth is scoped (and only its scoped ad accounts synced and
|
|
21976
|
-
* subscribed) from the start. On `googleads` the scope is kept through
|
|
21977
|
-
* OAuth when `redirect_url` is set, so the
|
|
21978
|
-
*
|
|
22022
|
+
* subscribed) from the start. On `googleads` and `redditads` the scope is kept through
|
|
22023
|
+
* OAuth when `redirect_url` is set, so the connection created after OAuth
|
|
22024
|
+
* syncs only its scoped ad accounts from the first sync.
|
|
21979
22025
|
* For multiple accounts use `adAccountIds` instead.
|
|
21980
22026
|
*
|
|
21981
22027
|
*/
|
|
@@ -22032,17 +22078,19 @@ type ConnectAdsData = {
|
|
|
22032
22078
|
/**
|
|
22033
22079
|
* Custom URL the browser is sent to once the OAuth flow finishes. Honored on
|
|
22034
22080
|
* every ads platform, including the separate-token (`tiktok`, `twitter`) and
|
|
22035
|
-
* standalone (`googleads`) flows. MUST be an absolute http(s) URL or a custom
|
|
22081
|
+
* standalone (`googleads`, `redditads`) flows. MUST be an absolute http(s) URL or a custom
|
|
22036
22082
|
* app scheme for mobile deeplinks (e.g. myapp://callback); a relative path is
|
|
22037
22083
|
* rejected with 400 INVALID_REDIRECT_URL. On success
|
|
22038
|
-
* `tiktok
|
|
22084
|
+
* `tiktok` lands on the URL unchanged; `twitter`, `googleads` and `redditads`
|
|
22085
|
+
* append `connected` (the ads platform id: `xads`, `googleads` or `redditads`),
|
|
22086
|
+
* `profileId`, `accountId` (the ads connection) and `username`; and the
|
|
22039
22087
|
* same-token platforms (`facebook`, `instagram`, `linkedin`, `pinterest`)
|
|
22040
22088
|
* append `connected`, `profileId`, `accountId`, `username` and, on API-key
|
|
22041
22089
|
* calls, `connect_token`. On failure the same error contract applies as on
|
|
22042
22090
|
* GET /v1/connect/{platform}: `error` and `platform` are always appended,
|
|
22043
22091
|
* other params are optional, and the value list there is not exhaustive.
|
|
22044
|
-
* On the tiktok, twitter and
|
|
22045
|
-
* the ads platform id (`tiktokads`, `xads`, `googleads`), not the value
|
|
22092
|
+
* On the tiktok, twitter, googleads and redditads flows `platform` carries
|
|
22093
|
+
* the ads platform id (`tiktokads`, `xads`, `googleads`, `redditads`), not the value
|
|
22046
22094
|
* used in the request path. When omitted, the browser lands on
|
|
22047
22095
|
* the Zernio dashboard.
|
|
22048
22096
|
*
|
|
@@ -39932,7 +39980,7 @@ type ListAdsData = {
|
|
|
39932
39980
|
* Meta only: Facebook Page ID. Returns only ads whose creative is backed by this Page (a Meta ad account serves ads for every Page in the Business Manager). Matches each ad's `creative.pageId`; ads with no page signal (rare IG-only creatives) never match. Mirrors the same filter on /v1/ads/campaigns and /v1/ads/tree.
|
|
39933
39981
|
*/
|
|
39934
39982
|
pageId?: string;
|
|
39935
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
39983
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
39936
39984
|
/**
|
|
39937
39985
|
* Meta ad ID. Returns the ad with this platform-side ad ID.
|
|
39938
39986
|
*/
|
|
@@ -40624,7 +40672,7 @@ type ListAdCampaignsData = {
|
|
|
40624
40672
|
* Meta only: Facebook Page ID. Campaigns have no Page of their own, so this keeps campaigns having at least one ad backed by this Page, with adCount and metrics computed over those ads only. Mirrors the same filter on /v1/ads and /v1/ads/tree.
|
|
40625
40673
|
*/
|
|
40626
40674
|
pageId?: string;
|
|
40627
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
40675
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
40628
40676
|
/**
|
|
40629
40677
|
* Profile ID
|
|
40630
40678
|
*/
|
|
@@ -40683,6 +40731,14 @@ type CreateAdCampaignData = {
|
|
|
40683
40731
|
budgetAmount?: number;
|
|
40684
40732
|
budgetType?: 'daily' | 'lifetime';
|
|
40685
40733
|
status?: 'ACTIVE' | 'PAUSED';
|
|
40734
|
+
/**
|
|
40735
|
+
* Reddit only (400 elsewhere). Campaign start (ISO 8601); a value without an offset is read in the ad account time zone. Requires a campaign budget (`budgetAmount` + `budgetType`, 400 otherwise). Defaults to now.
|
|
40736
|
+
*/
|
|
40737
|
+
startDate?: string;
|
|
40738
|
+
/**
|
|
40739
|
+
* Reddit only (400 elsewhere). Campaign end (ISO 8601); a value without an offset is read in the ad account time zone. Requires a campaign budget (400 otherwise), and is required for `budgetType: lifetime`.
|
|
40740
|
+
*/
|
|
40741
|
+
endDate?: string;
|
|
40686
40742
|
/**
|
|
40687
40743
|
* Google only (400 elsewhere). Written on the new campaign.
|
|
40688
40744
|
*/
|
|
@@ -40745,7 +40801,7 @@ type CreateAdCampaignError = (unknown | ErrorResponse);
|
|
|
40745
40801
|
type UpdateAdCampaignStatusData = {
|
|
40746
40802
|
body: {
|
|
40747
40803
|
status: 'active' | 'paused';
|
|
40748
|
-
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
40804
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
40749
40805
|
};
|
|
40750
40806
|
path: {
|
|
40751
40807
|
/**
|
|
@@ -40760,7 +40816,7 @@ type UpdateAdCampaignStatusResponse = ({
|
|
|
40760
40816
|
*/
|
|
40761
40817
|
status?: 'active' | 'paused';
|
|
40762
40818
|
/**
|
|
40763
|
-
* The campaign's own switch as read back from the platform, in the raw platform vocabulary (Meta effective_status, TikTok ENABLE / DISABLE, Google ENABLED / PAUSED, ChatGPT (OpenAI) status). Null when the platform could not be read, which is always the case on Pinterest, LinkedIn and X (no single-campaign read).
|
|
40819
|
+
* The campaign's own switch as read back from the platform, in the raw platform vocabulary (Meta effective_status, TikTok ENABLE / DISABLE, Google ENABLED / PAUSED, ChatGPT (OpenAI) status, Reddit configured_status). Null when the platform could not be read, which is always the case on Pinterest, LinkedIn and X (no single-campaign read).
|
|
40764
40820
|
*/
|
|
40765
40821
|
platformCampaignStatus?: (string) | null;
|
|
40766
40822
|
/**
|
|
@@ -40962,7 +41018,7 @@ type UpdateAdCampaignData = {
|
|
|
40962
41018
|
/**
|
|
40963
41019
|
* Required: platform campaign IDs are not globally unique.
|
|
40964
41020
|
*/
|
|
40965
|
-
platform: 'facebook' | 'instagram' | 'google';
|
|
41021
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
40966
41022
|
/**
|
|
40967
41023
|
* **Meta only.** Zernio SocialAccount id owning the ad account. Needed only for an EMPTY campaign (zero ads); ignored otherwise.
|
|
40968
41024
|
*/
|
|
@@ -41006,7 +41062,7 @@ type UpdateAdCampaignData = {
|
|
|
41006
41062
|
*/
|
|
41007
41063
|
sharedBudgetId?: (string) | null;
|
|
41008
41064
|
/**
|
|
41009
|
-
* Meta CBO, Google daily, or OpenAI Ads daily or lifetime campaign budget, in whole currency units.
|
|
41065
|
+
* Meta CBO, Google daily, or OpenAI Ads or Reddit Ads daily or lifetime campaign budget, in whole currency units.
|
|
41010
41066
|
*/
|
|
41011
41067
|
budget?: {
|
|
41012
41068
|
/**
|
|
@@ -41016,7 +41072,7 @@ type UpdateAdCampaignData = {
|
|
|
41016
41072
|
type: 'daily' | 'lifetime';
|
|
41017
41073
|
};
|
|
41018
41074
|
/**
|
|
41019
|
-
* **Meta
|
|
41075
|
+
* **Meta and Reddit.** Rename the campaign.
|
|
41020
41076
|
*/
|
|
41021
41077
|
name?: string;
|
|
41022
41078
|
/**
|
|
@@ -41066,7 +41122,7 @@ type UpdateAdCampaignResponse = ({
|
|
|
41066
41122
|
type UpdateAdCampaignError = (unknown | ErrorResponse);
|
|
41067
41123
|
type DeleteAdCampaignData = {
|
|
41068
41124
|
body: {
|
|
41069
|
-
platform: 'facebook' | 'instagram' | 'google' | 'twitter';
|
|
41125
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
41070
41126
|
/**
|
|
41071
41127
|
* Zernio SocialAccount id owning the ad account. Required only to delete an EMPTY campaign (zero ads), which has no local Ad documents to resolve a token from.
|
|
41072
41128
|
*/
|
|
@@ -41102,7 +41158,7 @@ type ListCampaignNegativeKeywordsData = {
|
|
|
41102
41158
|
/**
|
|
41103
41159
|
* Optional and NOT authoritative: the resolved campaign's own platform decides 200 vs 501, never this hint.
|
|
41104
41160
|
*/
|
|
41105
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
41161
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
41106
41162
|
};
|
|
41107
41163
|
};
|
|
41108
41164
|
type ListCampaignNegativeKeywordsResponse = ({
|
|
@@ -41126,7 +41182,7 @@ type ReplaceCampaignNegativeKeywordsData = {
|
|
|
41126
41182
|
/**
|
|
41127
41183
|
* Optional and NOT authoritative: the resolved campaign's own platform decides 200 vs 501, never this hint.
|
|
41128
41184
|
*/
|
|
41129
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
41185
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
41130
41186
|
keywords: Array<KeywordEntry>;
|
|
41131
41187
|
};
|
|
41132
41188
|
path: {
|
|
@@ -41166,7 +41222,7 @@ type BulkUpdateAdCampaignStatusData = {
|
|
|
41166
41222
|
/**
|
|
41167
41223
|
* The ad platform, e.g. `google` for Google Ads. The ads connection slug (`googleads`, `tiktokads`, ...) is accepted as an alias. `metaads` is not: send `facebook` or `instagram`.
|
|
41168
41224
|
*/
|
|
41169
|
-
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'googleads' | 'tiktokads' | 'linkedinads' | 'pinterestads' | 'xads' | 'openaiads';
|
|
41225
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit' | 'googleads' | 'tiktokads' | 'linkedinads' | 'pinterestads' | 'xads' | 'openaiads' | 'redditads';
|
|
41170
41226
|
}>;
|
|
41171
41227
|
};
|
|
41172
41228
|
};
|
|
@@ -41509,7 +41565,7 @@ type ListAdSetsData = {
|
|
|
41509
41565
|
* Read the on/off switches live from the platform instead of returning the synced values. The fresh values are stored (so later reads return them too) and the response carries `statusReadAt`, the time of the read. At most 20 platform objects are read per request. Where a read fails (credentials, platform error, no reader on that platform), the stored values come back with `statusReadAt: null`. See "Status freshness" in the operation description. On X the budget is read live in the same read: on GET /v1/ads/{adId} `budget`, `adSetBudget`, `campaignBudget` and `budgetLevel` are the line item and campaign budgets X holds now (stored like the switches); on the ad set and campaign listings `budget` is the one that line item or campaign holds now (returned, not stored); a row whose budget the other level holds keeps its synced `budget`.
|
|
41510
41566
|
*/
|
|
41511
41567
|
live?: boolean;
|
|
41512
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
41568
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
41513
41569
|
};
|
|
41514
41570
|
};
|
|
41515
41571
|
type ListAdSetsResponse = ({
|
|
@@ -41655,7 +41711,7 @@ type CreateAdSetData = {
|
|
|
41655
41711
|
/**
|
|
41656
41712
|
* Only "google" is implemented today; every other value returns 501.
|
|
41657
41713
|
*/
|
|
41658
|
-
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
41714
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
41659
41715
|
/**
|
|
41660
41716
|
* Google platform campaign ID (numeric) the ad group is created under.
|
|
41661
41717
|
*/
|
|
@@ -41830,7 +41886,7 @@ type GetAdSetDetailsResponse = ({
|
|
|
41830
41886
|
type GetAdSetDetailsError = (unknown | ErrorResponse);
|
|
41831
41887
|
type UpdateAdSetData = {
|
|
41832
41888
|
body: {
|
|
41833
|
-
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
41889
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
41834
41890
|
/**
|
|
41835
41891
|
* Omit if not updating budget
|
|
41836
41892
|
*/
|
|
@@ -41858,7 +41914,8 @@ type UpdateAdSetData = {
|
|
|
41858
41914
|
* COST_CAP = TARGET, with `bidAmount` as `bid_amount_local_micro`;
|
|
41859
41915
|
* LOWEST_COST_WITH_MIN_ROAS is rejected with 422. X decides which strategy
|
|
41860
41916
|
* the line item's objective allows (TARGET only on REACH, FOLLOWERS and
|
|
41861
|
-
* WEBSITE_CLICKS, MAX not on REACH or FOLLOWERS).
|
|
41917
|
+
* WEBSITE_CLICKS, MAX not on REACH or FOLLOWERS). On Reddit, see the mapping in the
|
|
41918
|
+
* description above (LOWEST_COST_WITH_MIN_ROAS returns 422). Other platforms
|
|
41862
41919
|
* (linkedin, pinterest, google) return 501 Not Implemented when bidStrategy is set.
|
|
41863
41920
|
*
|
|
41864
41921
|
*/
|
|
@@ -42037,7 +42094,7 @@ type DeleteAdSetError = (ErrorResponse | unknown);
|
|
|
42037
42094
|
type UpdateAdSetStatusData = {
|
|
42038
42095
|
body: {
|
|
42039
42096
|
status: 'active' | 'paused';
|
|
42040
|
-
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
42097
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
42041
42098
|
};
|
|
42042
42099
|
path: {
|
|
42043
42100
|
/**
|
|
@@ -42052,7 +42109,7 @@ type UpdateAdSetStatusResponse = ({
|
|
|
42052
42109
|
*/
|
|
42053
42110
|
status?: 'active' | 'paused';
|
|
42054
42111
|
/**
|
|
42055
|
-
* The ad set's own switch as read back from the platform, in the raw platform vocabulary (Meta effective_status, TikTok ENABLE / DISABLE, Google ENABLED / PAUSED, LinkedIn and Pinterest ACTIVE / PAUSED, ChatGPT (OpenAI) status). Null when the platform could not be read, which is always the case on X.
|
|
42112
|
+
* The ad set's own switch as read back from the platform, in the raw platform vocabulary (Meta effective_status, TikTok ENABLE / DISABLE, Google ENABLED / PAUSED, LinkedIn and Pinterest ACTIVE / PAUSED, ChatGPT (OpenAI) status, Reddit configured_status). Null when the platform could not be read, which is always the case on X.
|
|
42056
42113
|
*/
|
|
42057
42114
|
platformAdSetStatus?: (string) | null;
|
|
42058
42115
|
/**
|
|
@@ -42119,7 +42176,7 @@ type GetAdTreeData = {
|
|
|
42119
42176
|
* Meta only: Facebook Page ID. Prunes the tree to ads whose creative is backed by this Page: campaigns and ad sets with no ad on the Page drop out, and rolled-up metrics cover only the Page's ads. Mirrors the same filter on /v1/ads and /v1/ads/campaigns.
|
|
42120
42177
|
*/
|
|
42121
42178
|
pageId?: string;
|
|
42122
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
42179
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
42123
42180
|
/**
|
|
42124
42181
|
* Profile ID
|
|
42125
42182
|
*/
|
|
@@ -42178,7 +42235,7 @@ type GetAdsTimelineData = {
|
|
|
42178
42235
|
/**
|
|
42179
42236
|
* Restrict to one platform.
|
|
42180
42237
|
*/
|
|
42181
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
42238
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
42182
42239
|
/**
|
|
42183
42240
|
* Inclusive end of metrics range (YYYY-MM-DD). Defaults to today. Max 730-day range.
|
|
42184
42241
|
*/
|
|
@@ -44962,7 +45019,7 @@ type ListAdNegativeKeywordListsData = {
|
|
|
44962
45019
|
* @deprecated
|
|
44963
45020
|
*/
|
|
44964
45021
|
customerId?: string;
|
|
44965
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
45022
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
44966
45023
|
};
|
|
44967
45024
|
};
|
|
44968
45025
|
type ListAdNegativeKeywordListsResponse = ({
|
|
@@ -44999,7 +45056,7 @@ type CreateAdNegativeKeywordListData = {
|
|
|
44999
45056
|
/**
|
|
45000
45057
|
* Optional courtesy field. The resolved account or campaign determines support; other platforms return 501.
|
|
45001
45058
|
*/
|
|
45002
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
45059
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
45003
45060
|
/**
|
|
45004
45061
|
* Nonempty list name, trimmed before use.
|
|
45005
45062
|
*/
|
|
@@ -45040,7 +45097,7 @@ type GetAdNegativeKeywordListData = {
|
|
|
45040
45097
|
* @deprecated
|
|
45041
45098
|
*/
|
|
45042
45099
|
customerId?: string;
|
|
45043
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
45100
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
45044
45101
|
};
|
|
45045
45102
|
};
|
|
45046
45103
|
type GetAdNegativeKeywordListResponse = ({
|
|
@@ -45079,7 +45136,7 @@ type UpdateAdNegativeKeywordListData = {
|
|
|
45079
45136
|
/**
|
|
45080
45137
|
* Optional courtesy field. The resolved account or campaign determines support; other platforms return 501.
|
|
45081
45138
|
*/
|
|
45082
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
45139
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
45083
45140
|
/**
|
|
45084
45141
|
* Nonempty list name, trimmed before use.
|
|
45085
45142
|
*/
|
|
@@ -45108,7 +45165,7 @@ type DeleteAdNegativeKeywordListData = {
|
|
|
45108
45165
|
* @deprecated
|
|
45109
45166
|
*/
|
|
45110
45167
|
customerId?: string;
|
|
45111
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
45168
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
45112
45169
|
};
|
|
45113
45170
|
};
|
|
45114
45171
|
type DeleteAdNegativeKeywordListResponse = ({
|
|
@@ -45137,7 +45194,7 @@ type ReplaceAdNegativeKeywordListKeywordsData = {
|
|
|
45137
45194
|
/**
|
|
45138
45195
|
* Optional courtesy field. The resolved account or campaign determines support; other platforms return 501.
|
|
45139
45196
|
*/
|
|
45140
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
45197
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
45141
45198
|
/**
|
|
45142
45199
|
* Full desired keyword set. Bare strings use broad match. Send [] to clear the list.
|
|
45143
45200
|
*/
|
|
@@ -45167,7 +45224,7 @@ type ListCampaignNegativeKeywordListsData = {
|
|
|
45167
45224
|
campaignId: string;
|
|
45168
45225
|
};
|
|
45169
45226
|
query?: {
|
|
45170
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
45227
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
45171
45228
|
};
|
|
45172
45229
|
};
|
|
45173
45230
|
type ListCampaignNegativeKeywordListsResponse = ({
|
|
@@ -45191,7 +45248,7 @@ type ReplaceCampaignNegativeKeywordListsData = {
|
|
|
45191
45248
|
/**
|
|
45192
45249
|
* Optional courtesy field. The resolved account or campaign determines support; other platforms return 501.
|
|
45193
45250
|
*/
|
|
45194
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
45251
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'reddit';
|
|
45195
45252
|
listIds: Array<(string)>;
|
|
45196
45253
|
};
|
|
45197
45254
|
path: {
|
|
@@ -46139,9 +46196,17 @@ type ListAdAccountsResponse = ({
|
|
|
46139
46196
|
*/
|
|
46140
46197
|
accountStatus?: unknown;
|
|
46141
46198
|
/**
|
|
46142
|
-
* X only. X's own ad account approval status
|
|
46199
|
+
* X and Reddit only. X's own ad account approval status, or Reddit's `admin_approval`. Observed X values are `ACCEPTED`, `PENDING` and `REJECTED`, but X does not publish the full vocabulary, so treat an unrecognised value as not usable. Other platforms report `accountStatus` or `status` instead.
|
|
46143
46200
|
*/
|
|
46144
46201
|
approvalStatus?: string;
|
|
46202
|
+
/**
|
|
46203
|
+
* Reddit only. The ad account's time zone as Reddit reports it (`time_zone_id`). Schedules on Reddit ads are read in this zone.
|
|
46204
|
+
*/
|
|
46205
|
+
timezone?: string;
|
|
46206
|
+
/**
|
|
46207
|
+
* Reddit only. Reddit's ad account type, forwarded unchanged.
|
|
46208
|
+
*/
|
|
46209
|
+
type?: string;
|
|
46145
46210
|
/**
|
|
46146
46211
|
* Meta only. Meta's `disable_reason` code, forwarded unchanged. Present when `accountStatus` is `2` (DISABLED) and Meta gives a reason, which is what separates a policy action from a payment problem. Meta does not publish a stable list of values for this field, so none are enumerated here: resolve the code against Meta's own ad account reference. Absent when Meta reports no reason, or when the connected token cannot read the field.
|
|
46147
46212
|
*/
|
|
@@ -46346,11 +46411,11 @@ type BoostPostData = {
|
|
|
46346
46411
|
*/
|
|
46347
46412
|
postId?: string;
|
|
46348
46413
|
/**
|
|
46349
|
-
* Platform post ID (alternative to postId). Meta: a Page post id (`<pageId>_<postId>` or the bare post id) or an Instagram media id. On a Meta Ads business-login connection (platform metaads) the id is resolved live: an Instagram media id is boosted as that media, running as the Instagram account that owns it.
|
|
46414
|
+
* Platform post ID (alternative to postId). Reddit: the post id, with or without the `t3_` prefix. Meta: a Page post id (`<pageId>_<postId>` or the bare post id) or an Instagram media id. On a Meta Ads business-login connection (platform metaads) the id is resolved live: an Instagram media id is boosted as that media, running as the Instagram account that owns it.
|
|
46350
46415
|
*/
|
|
46351
46416
|
platformPostId?: string;
|
|
46352
46417
|
/**
|
|
46353
|
-
* Zernio account id. Normally the connected posting account (facebook, instagram, tiktok, linkedin, pinterest, twitter) or a
|
|
46418
|
+
* Zernio account id. Normally the connected posting account (facebook, instagram, tiktok, linkedin, pinterest, twitter), a googleads account or a redditads account. TikTok: the TikTok Ads connection (platform tiktokads) is accepted too when the post brings its own authorization (sparkAuthCode or sparkPosts), so Spark ads need no organic TikTok account connected; such a call must use platformPostId, not postId.
|
|
46354
46419
|
*/
|
|
46355
46420
|
accountId: string;
|
|
46356
46421
|
/**
|
|
@@ -46367,7 +46432,7 @@ type BoostPostData = {
|
|
|
46367
46432
|
*/
|
|
46368
46433
|
adSetName?: string;
|
|
46369
46434
|
/**
|
|
46370
|
-
* Available goals vary by platform. Meta (Facebook/Instagram) and TikTok support all 7. LinkedIn supports all except app_promotion. X supports engagement, traffic, awareness, video_views, app_promotion. Pinterest and Google Ads support only engagement, traffic, awareness, video_views.
|
|
46435
|
+
* Available goals vary by platform. Meta (Facebook/Instagram) and TikTok support all 7. LinkedIn supports all except app_promotion. X supports engagement, traffic, awareness, video_views, app_promotion. Pinterest and Google Ads support only engagement, traffic, awareness, video_views. Reddit supports traffic, awareness, video_views, lead_generation and conversions.
|
|
46371
46436
|
*/
|
|
46372
46437
|
goal: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
|
|
46373
46438
|
/**
|
|
@@ -46430,11 +46495,11 @@ type BoostPostData = {
|
|
|
46430
46495
|
*/
|
|
46431
46496
|
currency?: string;
|
|
46432
46497
|
/**
|
|
46433
|
-
* Ad-set start time (ISO 8601, e.g. "2026-06-10T09:00:00Z"), mapped to the ad set's `start_time`. When omitted the ad starts delivering immediately. On Meta, TikTok, X and
|
|
46498
|
+
* Ad-set start time (ISO 8601, e.g. "2026-06-10T09:00:00Z"), mapped to the ad set's `start_time`. When omitted the ad starts delivering immediately. On Meta, TikTok, X, Pinterest and Reddit a value without an offset (`YYYY-MM-DD`, `YYYY-MM-DD HH:MM:SS` or `YYYY-MM-DDTHH:MM:SS`) is read in the ad account timezone. Same field as on POST /v1/ads/create.
|
|
46434
46499
|
*/
|
|
46435
46500
|
startDate?: string;
|
|
46436
46501
|
/**
|
|
46437
|
-
* Ad-set end time (ISO 8601), mapped to the ad set's `end_time` (on X, the line item's `end_time`; X campaigns carry no flight dates). Required for lifetime budgets. On Meta, TikTok, X and
|
|
46502
|
+
* Ad-set end time (ISO 8601), mapped to the ad set's `end_time` (on X, the line item's `end_time`; X campaigns carry no flight dates). Required for lifetime budgets. On Meta, TikTok, X, Pinterest and Reddit a value without an offset (`YYYY-MM-DD`, `YYYY-MM-DD HH:MM:SS` or `YYYY-MM-DDTHH:MM:SS`) is read in the ad account timezone, and a date-only end runs to 23:59:59 local. Same field as on POST /v1/ads/create.
|
|
46438
46503
|
*/
|
|
46439
46504
|
endDate?: string;
|
|
46440
46505
|
/**
|
|
@@ -46458,18 +46523,22 @@ type BoostPostData = {
|
|
|
46458
46523
|
* Geo keys (`regions`/`cities`/`zips`/`metros`) resolve via
|
|
46459
46524
|
* GET /v1/ads/targeting/search?dimension=geo. City radius and lat/lng
|
|
46460
46525
|
* `customLocations` are Meta-only and preserve the boosted post's
|
|
46461
|
-
* social proof (the ad references the existing post).
|
|
46526
|
+
* social proof (the ad references the existing post). On Reddit the whole
|
|
46527
|
+
* `TargetingSpec` applies, including `communities`, `excludedCommunities`,
|
|
46528
|
+
* `conversationKeywords`, `excludedConversationKeywords`, `interests`,
|
|
46529
|
+
* `audienceInclude` / `audienceExclude` and `excludedLocations`; without
|
|
46530
|
+
* any geo the ad targets the US.
|
|
46462
46531
|
*
|
|
46463
46532
|
*/
|
|
46464
46533
|
targeting?: {
|
|
46465
46534
|
ageMin?: number;
|
|
46466
46535
|
ageMax?: number;
|
|
46467
46536
|
/**
|
|
46468
|
-
* Applied on Meta, TikTok and
|
|
46537
|
+
* Applied on Meta, TikTok, Pinterest and Reddit. Ignored on Google, LinkedIn and X.
|
|
46469
46538
|
*/
|
|
46470
46539
|
gender?: 'all' | 'male' | 'female';
|
|
46471
46540
|
/**
|
|
46472
|
-
* Meta locale ids (numeric), passed through as given.
|
|
46541
|
+
* Meta locale ids (numeric), passed through as given. Reddit: language codes (e.g. `en`).
|
|
46473
46542
|
*/
|
|
46474
46543
|
languages?: Array<(string)>;
|
|
46475
46544
|
/**
|
|
@@ -46568,7 +46637,9 @@ type BoostPostData = {
|
|
|
46568
46637
|
* Deprecated: send it inside `platformSpecificData` instead (Meta today; TikTok's nested shape is planned). The flat field keeps working during the deprecation window; sending both shapes returns a 400.
|
|
46569
46638
|
*
|
|
46570
46639
|
* Meta bid strategy applied to the ad set. On TikTok, mapped to
|
|
46571
|
-
* `bid_type` / `bid_price` / `deep_bid_type` automatically.
|
|
46640
|
+
* `bid_type` / `bid_price` / `deep_bid_type` automatically. On Reddit,
|
|
46641
|
+
* applied to the new ad group (see the Reddit section above; 422 for
|
|
46642
|
+
* LOWEST_COST_WITH_MIN_ROAS).
|
|
46572
46643
|
*
|
|
46573
46644
|
* @deprecated
|
|
46574
46645
|
*/
|
|
@@ -46607,7 +46678,7 @@ type BoostPostData = {
|
|
|
46607
46678
|
*/
|
|
46608
46679
|
platformSpecificData?: (LinkedInAdsPlatformData | MetaAdsPlatformData);
|
|
46609
46680
|
/**
|
|
46610
|
-
* Meta only. Tracking specs (pixel, URL tags).
|
|
46681
|
+
* Meta only, except `pixelId`, which also picks the Reddit pixel of the new ad group (`promotedObject.pixelId` wins when both are sent). Tracking specs (pixel, URL tags).
|
|
46611
46682
|
*/
|
|
46612
46683
|
tracking?: {
|
|
46613
46684
|
pixelId?: string;
|
|
@@ -46650,6 +46721,8 @@ type BoostPostData = {
|
|
|
46650
46721
|
* (`AdcreateCreatives.landing_page_url`); Spark Ads have no clickable
|
|
46651
46722
|
* destination without it.
|
|
46652
46723
|
*
|
|
46724
|
+
* **Reddit**: the ad's `click_url`, where a click on the promoted post lands.
|
|
46725
|
+
*
|
|
46653
46726
|
* Ignored on LinkedIn / Pinterest / X / Google, which infer the destination
|
|
46654
46727
|
* from the boosted post.
|
|
46655
46728
|
*
|
|
@@ -46725,7 +46798,7 @@ type BoostPostData = {
|
|
|
46725
46798
|
minimumPurchaseCurrency?: string;
|
|
46726
46799
|
}>;
|
|
46727
46800
|
/**
|
|
46728
|
-
* Meta and
|
|
46801
|
+
* Meta, TikTok and Reddit. What the conversion ad set optimizes toward, so a boost
|
|
46729
46802
|
* of an existing organic post can run for a conversion instead of only
|
|
46730
46803
|
* engagement or traffic. Required when `goal` is `conversions` (Meta also
|
|
46731
46804
|
* `lead_conversion`); ignored on goals that do not optimize for a conversion.
|
|
@@ -46744,10 +46817,17 @@ type BoostPostData = {
|
|
|
46744
46817
|
* `platformPostId` + `sparkAuthCode`: the pixel lives on the ad group and
|
|
46745
46818
|
* the Spark item on the creative.
|
|
46746
46819
|
*
|
|
46820
|
+
* Reddit: every ad group carries a pixel, whatever the goal. `pixelId` picks
|
|
46821
|
+
* it (default: the ad account's first pixel; 422 when the account has none).
|
|
46822
|
+
* `conversions` requires `customEventType` (PURCHASE, LEAD,
|
|
46823
|
+
* COMPLETE_REGISTRATION, SIGN_UP, ADD_TO_CART, PAGE_VISIT, VIEW_CONTENT or
|
|
46824
|
+
* CONTENT_VIEW), and the pixel must already have received that event (422
|
|
46825
|
+
* otherwise); `lead_generation` needs the pixel to have received Lead.
|
|
46826
|
+
*
|
|
46747
46827
|
*/
|
|
46748
46828
|
promotedObject?: {
|
|
46749
46829
|
/**
|
|
46750
|
-
* Meta Pixel id,
|
|
46830
|
+
* Meta Pixel id, TikTok Pixel (numeric id or the alphanumeric pixel code from Events Manager, resolved for you), or Reddit pixel id.
|
|
46751
46831
|
*/
|
|
46752
46832
|
pixelId?: string;
|
|
46753
46833
|
/**
|
|
@@ -46780,7 +46860,7 @@ type BoostPostData = {
|
|
|
46780
46860
|
*/
|
|
46781
46861
|
dsaPayor?: string;
|
|
46782
46862
|
/**
|
|
46783
|
-
* Lead Gen form ID to attach to the boosted ad's creative. REQUIRED when `goal` is `lead_generation`. On Meta this is the leadgen_forms ID (create one via POST /v1/ads/lead-forms). On LinkedIn this is the adForm ID (create one via POST /v1/ads/lead-forms with a LinkedIn account); the creative's `leadgenCallToAction.destination` is set to `urn:li:adForm:{id}`. Ignored for other goals.
|
|
46863
|
+
* Lead Gen form ID to attach to the boosted ad's creative. REQUIRED when `goal` is `lead_generation`. On Meta this is the leadgen_forms ID (create one via POST /v1/ads/lead-forms). On LinkedIn this is the adForm ID (create one via POST /v1/ads/lead-forms with a LinkedIn account); the creative's `leadgenCallToAction.destination` is set to `urn:li:adForm:{id}`. Ignored for other goals. Reddit: rejected with 400 on every goal (Reddit retired its native lead forms).
|
|
46784
46864
|
*/
|
|
46785
46865
|
leadGenFormId?: string;
|
|
46786
46866
|
/**
|
|
@@ -47054,11 +47134,11 @@ type CreateStandaloneAdData = {
|
|
|
47054
47134
|
adAccountId: string;
|
|
47055
47135
|
name: string;
|
|
47056
47136
|
/**
|
|
47057
|
-
* Meta
|
|
47137
|
+
* Meta and Reddit. Exact campaign name. Overrides the default `<name> - Campaign`.
|
|
47058
47138
|
*/
|
|
47059
47139
|
campaignName?: string;
|
|
47060
47140
|
/**
|
|
47061
|
-
* Meta
|
|
47141
|
+
* Meta and Reddit (the ad group). Exact ad set name. Overrides the default `<name> - Ad Set`. (For per-ad names on the multi-creative shape, set `name` on each `creatives[]` entry.)
|
|
47062
47142
|
*/
|
|
47063
47143
|
adSetName?: string;
|
|
47064
47144
|
/**
|
|
@@ -47090,6 +47170,12 @@ type CreateStandaloneAdData = {
|
|
|
47090
47170
|
* **OpenAI Ads**
|
|
47091
47171
|
* - Only `traffic`, `awareness`, and `conversions` are supported (other goals return 400). Maps to OpenAI's `bidding_type` (clicks, impressions, conversions respectively). `conversions` requires an active conversion event setting on the account; create a tracking tag with `defaultEventType` via the tracking-tags API (`POST /v1/accounts/{accountId}/tracking-tags`), or configure a conversion event in OpenAI Ads Manager, or the request returns 400. Pick the event with `promotedObject.customEventType` (see AdPromotedObject); without it the most recently created optimizable event is used.
|
|
47092
47172
|
*
|
|
47173
|
+
* **Reddit Ads**
|
|
47174
|
+
* - `traffic` (CLICKS), `awareness` (BRAND_AWARENESS), `conversions`, `video_views` (VIDEO_VIEWABLE_IMPRESSIONS) and `lead_generation` (LEAD_GENERATION); any other goal returns 400.
|
|
47175
|
+
* - `conversions` requires `promotedObject.customEventType`; the pixel must already have received that event (see AdPromotedObject).
|
|
47176
|
+
* - `lead_generation` sends people to `linkUrl` and optimizes toward the pixel's Lead event, which the pixel must already have received. Reddit retired its native lead forms on September 30, 2026, so `leadGenFormId` returns 400.
|
|
47177
|
+
* - `video_views` needs a `video` (422 otherwise); `optimizationGoal` picks VIDEO_VIEW_6S (default) or VIDEO_VIEW_15S.
|
|
47178
|
+
*
|
|
47093
47179
|
*/
|
|
47094
47180
|
goal?: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'lead_conversion' | 'conversions' | 'app_promotion' | 'catalog_sales' | 'page_likes' | 'page_visits' | 'job_applicants';
|
|
47095
47181
|
/**
|
|
@@ -47113,7 +47199,7 @@ type CreateStandaloneAdData = {
|
|
|
47113
47199
|
interestsBehaviors?: boolean;
|
|
47114
47200
|
};
|
|
47115
47201
|
/**
|
|
47116
|
-
* Meta,
|
|
47202
|
+
* Meta, TikTok with goal video_views (ENGAGED_VIEW, the 6-second default, or ENGAGED_VIEW_FIFTEEN; both bill per view), or Reddit with goal video_views (VIDEO_VIEW_6S, the default, or VIDEO_VIEW_15S; other values return 400). Meta: Explicit ad-set `optimization_goal` (e.g. `LANDING_PAGE_VIEWS`, `LINK_CLICKS`, `REACH`, `IMPRESSIONS`, `OFFSITE_CONVERSIONS`, `THRUPLAY`, `LEAD_GENERATION`). Overrides the default derived from `goal` (e.g. `traffic` defaults to `LINK_CLICKS`). Forwarded verbatim to Meta, which validates compatibility with the campaign objective and rejects incompatible combinations.
|
|
47117
47203
|
*/
|
|
47118
47204
|
optimizationGoal?: string;
|
|
47119
47205
|
/**
|
|
@@ -47153,7 +47239,7 @@ type CreateStandaloneAdData = {
|
|
|
47153
47239
|
*/
|
|
47154
47240
|
budgetAmount?: number;
|
|
47155
47241
|
/**
|
|
47156
|
-
* Required on legacy, multi-creative and Performance Max shapes. Inherited on attach. OpenAI Ads accepts both as the campaign's single spend cap. A lifetime cap can later switch to daily with PUT /v1/ads/campaigns/{campaignId}, but OpenAI never switches a daily cap back to lifetime (422). Automatic bidding (Maximize Results) needs a daily budget.
|
|
47242
|
+
* Required on legacy, multi-creative and Performance Max shapes. Inherited on attach. OpenAI Ads accepts both as the campaign's single spend cap. A lifetime cap can later switch to daily with PUT /v1/ads/campaigns/{campaignId}, but OpenAI never switches a daily cap back to lifetime (422). Automatic bidding (Maximize Results) needs a daily budget. Reddit Ads: the ad group's daily or lifetime spend goal; lifetime needs `endDate`.
|
|
47157
47243
|
*/
|
|
47158
47244
|
budgetType?: 'daily' | 'lifetime';
|
|
47159
47245
|
/**
|
|
@@ -47201,7 +47287,7 @@ type CreateStandaloneAdData = {
|
|
|
47201
47287
|
*/
|
|
47202
47288
|
currency?: string;
|
|
47203
47289
|
/**
|
|
47204
|
-
* Required for Meta, Google, Pinterest, LinkedIn, and
|
|
47290
|
+
* Required for Meta, Google, Pinterest, LinkedIn, OpenAI Ads and Reddit Ads on legacy + attach shapes (skip for multi-creative; use `creatives[].headline`). Ignored for TikTok. On X, the website card title (needs imageUrl and linkUrl, max 70). Max: Meta=255, Google=30, Pinterest=100, LinkedIn=400, OpenAI=50 (min 3), Reddit=300 (the promoted post's title). On LinkedIn this is the ad's headline (the bold text on the creative); for traffic ads it's the link card title. On OpenAI Ads this is the chat card's title.
|
|
47205
47291
|
*/
|
|
47206
47292
|
headline?: string;
|
|
47207
47293
|
/**
|
|
@@ -47209,7 +47295,7 @@ type CreateStandaloneAdData = {
|
|
|
47209
47295
|
*/
|
|
47210
47296
|
longHeadline?: string;
|
|
47211
47297
|
/**
|
|
47212
|
-
* Required on legacy + attach shapes. For X this is the tweet text (max 280 chars including a ~24-char URL when `linkUrl` is set). On LinkedIn this is the post commentary (the intro text shown above the ad). On OpenAI Ads this is the chat card's body text. Max: Google=90, Pinterest=500, OpenAI=100.
|
|
47298
|
+
* Required on legacy + attach shapes. For X this is the tweet text (max 280 chars including a ~24-char URL when `linkUrl` is set). On LinkedIn this is the post commentary (the intro text shown above the ad). On OpenAI Ads this is the chat card's body text. On Reddit it is the promoted post's body: optional on image, video and carousel ads, required on text ads. Max: Google=90, Pinterest=500, OpenAI=100.
|
|
47213
47299
|
*/
|
|
47214
47300
|
body?: string;
|
|
47215
47301
|
/**
|
|
@@ -47246,19 +47332,19 @@ type CreateStandaloneAdData = {
|
|
|
47246
47332
|
*/
|
|
47247
47333
|
descriptions?: Array<(string)>;
|
|
47248
47334
|
/**
|
|
47249
|
-
* Required on legacy + attach shapes for Meta. Honoured on TikTok (passes through to the Spark Ad creative's `call_to_action`) and on LinkedIn (the CTA button on the ad; defaults to LEARN_MORE when `linkUrl` is set). LinkedIn accepts: LEARN_MORE, SIGN_UP, DOWNLOAD, SUBSCRIBE, REGISTER, JOIN, ATTEND, REQUEST_DEMO, VIEW_QUOTE, APPLY, SEE_MORE, SHOP_NOW, BUY_NOW. Ignored by Google, Pinterest, and X.
|
|
47335
|
+
* Required on legacy + attach shapes for Meta. Honoured on TikTok (passes through to the Spark Ad creative's `call_to_action`) and on LinkedIn (the CTA button on the ad; defaults to LEARN_MORE when `linkUrl` is set). LinkedIn accepts: LEARN_MORE, SIGN_UP, DOWNLOAD, SUBSCRIBE, REGISTER, JOIN, ATTEND, REQUEST_DEMO, VIEW_QUOTE, APPLY, SEE_MORE, SHOP_NOW, BUY_NOW. Reddit (image, video and carousel ads) accepts: LEARN_MORE, SHOP_NOW, SIGN_UP, CONTACT_US, DOWNLOAD, GET_QUOTE, SUBSCRIBE, APPLY_NOW, BOOK_NOW, BUY_TICKETS, DONATE_NOW, GET_DIRECTIONS, GET_SHOWTIMES, LISTEN_NOW, ORDER_NOW, SEE_MENU, INSTALL_MOBILE_APP (other values return 400). Ignored by Google, Pinterest, and X.
|
|
47250
47336
|
*/
|
|
47251
47337
|
callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE' | 'ADD_TO_CART' | 'APPLY_NOW' | 'BOOK_NOW' | 'BUY_TICKETS' | 'DONATE' | 'DONATE_NOW' | 'GET_DIRECTIONS' | 'GET_SHOWTIMES' | 'LISTEN_NOW' | 'ORDER_NOW' | 'PLAY_GAME' | 'REQUEST_TIME' | 'SEE_MENU' | 'START_ORDER' | 'INSTALL_MOBILE_APP' | 'USE_APP' | 'REGISTER' | 'JOIN' | 'ATTEND' | 'REQUEST_DEMO' | 'VIEW_QUOTE' | 'APPLY' | 'SEE_MORE' | 'BUY_NOW';
|
|
47252
47338
|
/**
|
|
47253
|
-
* Required on legacy + attach shapes (skip for multi-creative). On LinkedIn it's the ad's destination URL; required for `traffic` ads, optional for `engagement` / `awareness`. NOT required when `goal` is `lead_generation` (the ad opens a Lead Gen form instead of a destination). On LinkedIn, `imageUrl` + `linkUrl` publishes an ARTICLE-content creative; this is LinkedIn's article ad format, with the image as thumbnail and `longHeadline` as description. Required for OpenAI Ads (the chat card's target_url).
|
|
47339
|
+
* Required on legacy + attach shapes (skip for multi-creative). On LinkedIn it's the ad's destination URL; required for `traffic` ads, optional for `engagement` / `awareness`. NOT required when `goal` is `lead_generation` (the ad opens a Lead Gen form instead of a destination). On LinkedIn, `imageUrl` + `linkUrl` publishes an ARTICLE-content creative; this is LinkedIn's article ad format, with the image as thumbnail and `longHeadline` as description. Required for OpenAI Ads (the chat card's target_url). Reddit: required on image and video ads (the post's destination and the ad's click URL), the fallback for carousel cards without their own, and refused with 400 on text ads.
|
|
47254
47340
|
*/
|
|
47255
47341
|
linkUrl?: string;
|
|
47256
47342
|
/**
|
|
47257
|
-
* Lead Gen form ID to attach to the ad's creative. REQUIRED when `goal` is `lead_generation`. Create one via POST /v1/ads/lead-forms. On Meta (facebook/instagram) this is the leadgen_forms ID; the ad set's promoted_object.page_id + LEAD_GENERATION optimization + destination_type ON_AD are derived automatically from the goal. On LinkedIn this is the adForm ID; the creative's `leadgenCallToAction.destination` is set to `urn:li:adForm:{id}` and the campaign objective is set to MAX_LEAD. Forms must be owned by the sponsoredAccount (not the organization) for the URN to resolve. Also required on every Meta ATTACH (`adSetId`) call that targets a lead ad set (the form attaches per-ad; Meta rejects a formless ad in a lead ad set). `placementAssets`, `dynamicCreative` and `carouselCards` (Meta multi-card Instant-Form lead ad; `linkUrl` and per-card `linkUrl` are optional and forwarded as real destinations when sent, falling back to Meta's lead-form link when omitted) ARE supported on Meta instant-form lead ads.
|
|
47343
|
+
* Lead Gen form ID to attach to the ad's creative. REQUIRED when `goal` is `lead_generation`. Create one via POST /v1/ads/lead-forms. On Meta (facebook/instagram) this is the leadgen_forms ID; the ad set's promoted_object.page_id + LEAD_GENERATION optimization + destination_type ON_AD are derived automatically from the goal. On LinkedIn this is the adForm ID; the creative's `leadgenCallToAction.destination` is set to `urn:li:adForm:{id}` and the campaign objective is set to MAX_LEAD. Forms must be owned by the sponsoredAccount (not the organization) for the URN to resolve. Also required on every Meta ATTACH (`adSetId`) call that targets a lead ad set (the form attaches per-ad; Meta rejects a formless ad in a lead ad set). `placementAssets`, `dynamicCreative` and `carouselCards` (Meta multi-card Instant-Form lead ad; `linkUrl` and per-card `linkUrl` are optional and forwarded as real destinations when sent, falling back to Meta's lead-form link when omitted) ARE supported on Meta instant-form lead ads. Reddit: rejected with 400 on every goal (Reddit retired its native lead forms).
|
|
47258
47344
|
*/
|
|
47259
47345
|
leadGenFormId?: string;
|
|
47260
47346
|
/**
|
|
47261
|
-
* Image creative for Meta/Google/Pinterest/LinkedIn on legacy + attach shapes (mutually exclusive with `video`). Required for LinkedIn ads unless `video` is set. Not required for Google Search campaigns. For TikTok, this field carries the VIDEO URL (the TikTok ads endpoint is video-only; the field retains the `imageUrl` name for cross-platform consistency). On X, imageUrl + headline + linkUrl together build a website card (image, title and destination under the post; the URL is not added to the post text); sending only some of them is a 400. description, video and callToAction are rejected with 400 on X (promote a post that carries a video with POST /v1/ads/boost). For Google Display, treated as the landscape image (alias of `images.landscape`); supply `images.square` alongside or the request is rejected. For LinkedIn the image is uploaded to LinkedIn under the authoring Company Page (see `organizationId`); recommended ratio 1.91:1 (e.g. 1200×627). Required for OpenAI Ads (uploaded as the chat card's image; OpenAI has no video ad format).
|
|
47347
|
+
* Image creative for Meta/Google/Pinterest/LinkedIn on legacy + attach shapes (mutually exclusive with `video`). Required for LinkedIn ads unless `video` is set. Not required for Google Search campaigns. For TikTok, this field carries the VIDEO URL (the TikTok ads endpoint is video-only; the field retains the `imageUrl` name for cross-platform consistency). On X, imageUrl + headline + linkUrl together build a website card (image, title and destination under the post; the URL is not added to the post text); sending only some of them is a 400. description, video and callToAction are rejected with 400 on X (promote a post that carries a video with POST /v1/ads/boost). For Google Display, treated as the landscape image (alias of `images.landscape`); supply `images.square` alongside or the request is rejected. For LinkedIn the image is uploaded to LinkedIn under the authoring Company Page (see `organizationId`); recommended ratio 1.91:1 (e.g. 1200×627). Required for OpenAI Ads (uploaded as the chat card's image; OpenAI has no video ad format). Reddit: builds an image ad (requires `linkUrl`); on a Reddit video ad it is the fallback for `video.thumbnailUrl`.
|
|
47262
47348
|
*/
|
|
47263
47349
|
imageUrl?: string;
|
|
47264
47350
|
/**
|
|
@@ -47275,7 +47361,7 @@ type CreateStandaloneAdData = {
|
|
|
47275
47361
|
square?: string;
|
|
47276
47362
|
};
|
|
47277
47363
|
/**
|
|
47278
|
-
* Meta (facebook, instagram) and
|
|
47364
|
+
* Meta (facebook, instagram), LinkedIn and Reddit. On Reddit `url`, `linkUrl` and a thumbnail (`thumbnailUrl`, or `imageUrl`) are all required. Creates a single VIDEO ad. Mutually exclusive with `imageUrl`. Supply `url` to upload a file, or `id` to reuse a video already on the ad account (list them with GET /v1/ads/videos). Works on the single-ad and attach (`adSetId`) shapes; for Meta multi-creative, set `video` per entry inside `creatives[]` instead. For LinkedIn the video is uploaded to LinkedIn under the authoring Company Page (see `organizationId`) and the campaign format is set to SINGLE_VIDEO; LinkedIn ignores `thumbnailUrl` (it auto-generates the poster frame). Supply MP4 H.264/AAC, 3s-30min, 75KB-500MB.
|
|
47279
47365
|
*/
|
|
47280
47366
|
video?: {
|
|
47281
47367
|
/**
|
|
@@ -47452,6 +47538,8 @@ type CreateStandaloneAdData = {
|
|
|
47452
47538
|
* UNDER the flat inline targeting fields below: `savedTargetingId` < `targeting` <
|
|
47453
47539
|
* flat fields (a flat field present on the body replaces the nested value entirely).
|
|
47454
47540
|
* Both forms are equivalent; use whichever your integration already builds.
|
|
47541
|
+
* Reddit-only targeting (`communities`, `excludedCommunities`,
|
|
47542
|
+
* `conversationKeywords`, `excludedConversationKeywords`) is sent here.
|
|
47455
47543
|
*
|
|
47456
47544
|
*/
|
|
47457
47545
|
targeting?: (TargetingSpec);
|
|
@@ -47662,14 +47750,14 @@ type CreateStandaloneAdData = {
|
|
|
47662
47750
|
[key: string]: (number);
|
|
47663
47751
|
};
|
|
47664
47752
|
/**
|
|
47665
|
-
* Required for lifetime budgets. Read like `startDate` (account timezone on Meta, TikTok, X, Pinterest and
|
|
47753
|
+
* Required for lifetime budgets. Read like `startDate` (account timezone on Meta, TikTok, X, Pinterest, OpenAI and Reddit; whole account-local days on Google; UTC on LinkedIn), and a date-only end runs to 23:59:59 local.
|
|
47666
47754
|
*/
|
|
47667
47755
|
endDate?: string;
|
|
47668
47756
|
/**
|
|
47669
47757
|
* Ad-set start time (ISO 8601, e.g. "2026-06-10T09:00:00Z"), mapped to the ad set's
|
|
47670
47758
|
* start (Meta `start_time`, TikTok ad group `schedule_start_time`, LinkedIn / Pinterest / X
|
|
47671
47759
|
* / Google campaign start). When omitted the ad starts delivering immediately. For lifetime
|
|
47672
|
-
* budgets Meta also requires `endDate`. On Meta, TikTok, X, Pinterest and
|
|
47760
|
+
* budgets Meta also requires `endDate`. On Meta, TikTok, X, Pinterest, OpenAI and Reddit a value
|
|
47673
47761
|
* without an offset (`YYYY-MM-DD`, `YYYY-MM-DD HH:MM:SS` or `YYYY-MM-DDTHH:MM:SS`) is read
|
|
47674
47762
|
* in the ad account timezone (Meta itself would read it as UTC). Google runs whole days in
|
|
47675
47763
|
* the customer account timezone and takes the value's calendar date as written. LinkedIn
|
|
@@ -47746,6 +47834,11 @@ type CreateStandaloneAdData = {
|
|
|
47746
47834
|
adFormat?: 'SINGLE_IMAGE' | 'CAROUSEL_IMAGE' | 'SINGLE_VIDEO';
|
|
47747
47835
|
};
|
|
47748
47836
|
/**
|
|
47837
|
+
* Reddit: builds a carousel ad, each card with its image, destination (card `linkUrl`,
|
|
47838
|
+
* falling back to the top-level `linkUrl`, 400 when neither is set), call to action
|
|
47839
|
+
* (card `callToAction`, falling back to the top-level one) and caption (card
|
|
47840
|
+
* `headline`, else `description`). `headline` is still required.
|
|
47841
|
+
*
|
|
47749
47842
|
* Meta only. Hand-built carousel: 2-10 authored cards in DETERMINISTIC order, mapped to
|
|
47750
47843
|
* the creative's `link_data.child_attachments`. Unlike `dynamicCreative`,
|
|
47751
47844
|
* you control the card order and per-card copy/link. Requires top-level `body`
|
|
@@ -47991,7 +48084,7 @@ type CreateStandaloneAdData = {
|
|
|
47991
48084
|
windowDays: 1 | 7 | 28;
|
|
47992
48085
|
}>;
|
|
47993
48086
|
/**
|
|
47994
|
-
* Restrict the audience by gender. 'male' targets men only, 'female' targets women only, 'all' (default) targets everyone. Applied on Meta, TikTok and
|
|
48087
|
+
* Restrict the audience by gender. 'male' targets men only, 'female' targets women only, 'all' (default) targets everyone. Applied on Meta, TikTok, Pinterest and Reddit. Ignored on Google, LinkedIn and X.
|
|
47995
48088
|
*/
|
|
47996
48089
|
gender?: 'all' | 'male' | 'female';
|
|
47997
48090
|
/**
|
|
@@ -48001,6 +48094,8 @@ type CreateStandaloneAdData = {
|
|
|
48001
48094
|
*
|
|
48002
48095
|
* OpenAI Ads: sent via this flat field, the only channel it supports (`platformSpecificData` is Meta/LinkedIn-only and returns 400 for OpenAI). `LOWEST_COST_WITH_BID_CAP` or `COST_CAP` with `bidAmount` sets a fixed bid (`fixed_bid`, the CPA bid on `conversions`). Omitted or `LOWEST_COST_WITHOUT_CAP` bids automatically with OpenAI's Maximize Results (`maximize_clicks` for `traffic`, `maximize_conversions` for `conversions`), which needs `budgetType: daily`; on a lifetime budget or the `awareness` goal it returns 400.
|
|
48003
48096
|
*
|
|
48097
|
+
* Reddit Ads: sent via this flat field and applied to the new ad group. LOWEST_COST_WITHOUT_CAP or omitted = automatic bidding (BIDLESS), LOWEST_COST_WITH_BID_CAP + `bidAmount` = MANUAL_BIDDING with that bid, COST_CAP + `bidAmount` = MAXIMIZE_VOLUME with that cap. Any other strategy returns 422 before anything is created.
|
|
48098
|
+
*
|
|
48004
48099
|
* Google (not deprecated there, this shared flat field is Google's only shape): applied to the campaign this call creates. On Google: LOWEST_COST_WITHOUT_CAP = Maximize Conversions, COST_CAP + bidAmount = Target CPA, LOWEST_COST_WITH_MIN_ROAS + roasAverageFloor = Target ROAS, LOWEST_COST_WITH_BID_CAP + bidAmount = Maximize Clicks with a CPC ceiling; portfolioBidStrategyId attaches a portfolio strategy instead. Omitted, the campaign falls back to a goal-based default.
|
|
48005
48100
|
*
|
|
48006
48101
|
* @deprecated
|
|
@@ -48883,7 +48978,7 @@ type SearchAdTargetingData = {
|
|
|
48883
48978
|
/**
|
|
48884
48979
|
* What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities (`behavior` on Meta, TikTok and LinkedIn), `interestKeyword`/`hashtag` resolve TikTok additional interests and hashtags (TikTok only), `income` resolves the normalized income tiers, `language` resolves Google's targetable language_constant table (Google only), `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics, `industry`/`jobFunction`/`seniority`/`companySize` resolve LinkedIn B2B facets (LinkedIn only). Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias.
|
|
48885
48980
|
*/
|
|
48886
|
-
dimension?: 'geo' | 'interest' | 'interestKeyword' | 'behavior' | 'hashtag' | 'income' | 'language' | 'workPosition' | 'workEmployer' | 'workIndustry' | 'industry' | 'jobFunction' | 'seniority' | 'companySize';
|
|
48981
|
+
dimension?: 'geo' | 'interest' | 'interestKeyword' | 'behavior' | 'hashtag' | 'income' | 'language' | 'workPosition' | 'workEmployer' | 'workIndustry' | 'industry' | 'jobFunction' | 'seniority' | 'companySize' | 'community' | 'conversationKeyword';
|
|
48887
48982
|
/**
|
|
48888
48983
|
* Only used when `dimension=geo`. The kind of location to resolve. `all` searches every type in one relevance-ranked call. Defaults to `city`.
|
|
48889
48984
|
*/
|
|
@@ -48909,7 +49004,7 @@ type SearchAdTargetingResponse = ({
|
|
|
48909
49004
|
*/
|
|
48910
49005
|
name: string;
|
|
48911
49006
|
/**
|
|
48912
|
-
* What the result is. Equals the requested dimension (interest, interestKeyword, behavior, hashtag, income, language, workPosition, workEmployer, workIndustry, industry, jobFunction, seniority, companySize), or the location level for geo (country, region, city, zip, metro, ...).
|
|
49007
|
+
* What the result is. Equals the requested dimension (interest, interestKeyword, behavior, hashtag, income, language, workPosition, workEmployer, workIndustry, industry, jobFunction, seniority, companySize, community, conversationKeyword), or the location level for geo (country, region, city, zip, metro, ...).
|
|
48913
49008
|
*/
|
|
48914
49009
|
type: string;
|
|
48915
49010
|
/**
|
|
@@ -48929,7 +49024,7 @@ type SearchAdTargetingResponse = ({
|
|
|
48929
49024
|
*/
|
|
48930
49025
|
countryCode?: string;
|
|
48931
49026
|
/**
|
|
48932
|
-
*
|
|
49027
|
+
* On Reddit `community` results: Reddit's own subreddit id (the `id` is the name). Otherwise only on `country` results: the platform's own id for the country, which `id` replaced with the ISO code (TikTok's native location_id, a GeoNames id such as 2635167 for GB; Meta's country key; Google's geo target constant id; X's targeting value; LinkedIn's geo URN). Use it to match a country against what the platform reports back, e.g. `location_ids` in a TikTok `nativeSettings` read.
|
|
48933
49028
|
*/
|
|
48934
49029
|
platformId?: string;
|
|
48935
49030
|
}>;
|
|
@@ -50191,7 +50286,7 @@ type GetConversionsQualityError = (ErrorResponse | unknown);
|
|
|
50191
50286
|
type SendConversionsData = {
|
|
50192
50287
|
body: {
|
|
50193
50288
|
/**
|
|
50194
|
-
* SocialAccount ID (metaads, googleads, linkedinads, tiktokads, openaiads, or
|
|
50289
|
+
* SocialAccount ID (metaads, googleads, linkedinads, tiktokads, openaiads, pinterestads, or redditads).
|
|
50195
50290
|
*/
|
|
50196
50291
|
accountId: string;
|
|
50197
50292
|
/**
|
|
@@ -50199,13 +50294,14 @@ type SendConversionsData = {
|
|
|
50199
50294
|
* ID. For Google, the conversion action resource name. For
|
|
50200
50295
|
* LinkedIn, the conversion rule ID or full
|
|
50201
50296
|
* `urn:lla:llaPartnerConversion:{id}` URN. For OpenAI Ads, the
|
|
50202
|
-
* pixel wire id. For Pinterest, the numeric ad account id.
|
|
50297
|
+
* pixel wire id. For Pinterest, the numeric ad account id. For
|
|
50298
|
+
* Reddit, the pixel id (`a2_...`).
|
|
50203
50299
|
*
|
|
50204
50300
|
*/
|
|
50205
50301
|
destinationId: string;
|
|
50206
50302
|
events: Array<ConversionEvent>;
|
|
50207
50303
|
/**
|
|
50208
|
-
* Meta `test_event_code` passthrough. On Pinterest any value sends the batch with `test=true` (validated, not recorded). Ignored by Google, LinkedIn, and OpenAI Ads.
|
|
50304
|
+
* Meta `test_event_code` passthrough. On Pinterest any value sends the batch with `test=true` (validated, not recorded). On Reddit, sent as `test_id` so the events show in the pixel's test view. Ignored by Google, LinkedIn, and OpenAI Ads.
|
|
50209
50305
|
*/
|
|
50210
50306
|
testCode?: string;
|
|
50211
50307
|
/**
|
|
@@ -50215,7 +50311,8 @@ type SendConversionsData = {
|
|
|
50215
50311
|
* the batch (data_processing_options ["LDU"] with
|
|
50216
50312
|
* geolocation, country 0 / state 0); GRANTED or absent
|
|
50217
50313
|
* consent sends events with Meta's default processing.
|
|
50218
|
-
*
|
|
50314
|
+
* On Reddit, `adUserData: DENIED` drops every user field
|
|
50315
|
+
* from the events. Ignored by LinkedIn.
|
|
50219
50316
|
*
|
|
50220
50317
|
*/
|
|
50221
50318
|
consent?: {
|
|
@@ -50225,7 +50322,7 @@ type SendConversionsData = {
|
|
|
50225
50322
|
};
|
|
50226
50323
|
};
|
|
50227
50324
|
type SendConversionsResponse = ({
|
|
50228
|
-
platform?: 'metaads' | 'googleads' | 'linkedinads' | 'tiktokads' | 'openaiads' | 'pinterestads';
|
|
50325
|
+
platform?: 'metaads' | 'googleads' | 'linkedinads' | 'tiktokads' | 'openaiads' | 'pinterestads' | 'redditads';
|
|
50229
50326
|
/**
|
|
50230
50327
|
* Events accepted by the platform.
|
|
50231
50328
|
*/
|
|
@@ -50249,8 +50346,8 @@ type SendConversionsResponse = ({
|
|
|
50249
50346
|
/**
|
|
50250
50347
|
* Platform trace ID for debugging. fbtrace_id for Meta,
|
|
50251
50348
|
* requestId for Google. Absent for LinkedIn (LinkedIn's
|
|
50252
|
-
* conversionEvents endpoint does not surface a trace ID)
|
|
50253
|
-
*
|
|
50349
|
+
* conversionEvents endpoint does not surface a trace ID),
|
|
50350
|
+
* OpenAI Ads and Reddit (no trace ID surfaced).
|
|
50254
50351
|
*
|
|
50255
50352
|
*/
|
|
50256
50353
|
traceId?: string;
|
|
@@ -50694,19 +50791,19 @@ type UpdateCampaignConversionGoalsError = (ErrorResponse | unknown);
|
|
|
50694
50791
|
type ListConversionDestinationsData = {
|
|
50695
50792
|
path: {
|
|
50696
50793
|
/**
|
|
50697
|
-
* SocialAccount ID (metaads, googleads, linkedinads, tiktokads, openaiads, or
|
|
50794
|
+
* SocialAccount ID (metaads, googleads, linkedinads, tiktokads, openaiads, pinterestads, or redditads).
|
|
50698
50795
|
*/
|
|
50699
50796
|
accountId: string;
|
|
50700
50797
|
};
|
|
50701
50798
|
};
|
|
50702
50799
|
type ListConversionDestinationsResponse = ({
|
|
50703
|
-
platform?: 'metaads' | 'googleads' | 'linkedinads' | 'tiktokads' | 'openaiads' | 'pinterestads';
|
|
50800
|
+
platform?: 'metaads' | 'googleads' | 'linkedinads' | 'tiktokads' | 'openaiads' | 'pinterestads' | 'redditads';
|
|
50704
50801
|
destinations?: Array<{
|
|
50705
50802
|
/**
|
|
50706
50803
|
* Destination identifier. Meta: pixel ID. Google:
|
|
50707
50804
|
* conversion action resource name. LinkedIn:
|
|
50708
50805
|
* numeric conversion rule ID. OpenAI Ads: pixel wire
|
|
50709
|
-
* id.
|
|
50806
|
+
* id. Reddit: pixel id (`a2_...`).
|
|
50710
50807
|
*
|
|
50711
50808
|
*/
|
|
50712
50809
|
id?: string;
|
|
@@ -50721,8 +50818,8 @@ type ListConversionDestinationsResponse = ({
|
|
|
50721
50818
|
status?: 'active' | 'inactive';
|
|
50722
50819
|
/**
|
|
50723
50820
|
* Set by adapters whose destinations are scoped to a
|
|
50724
|
-
* specific ad account (LinkedIn).
|
|
50725
|
-
* subsequent CRUD calls.
|
|
50821
|
+
* specific ad account (LinkedIn, Reddit). On LinkedIn,
|
|
50822
|
+
* pass it back on subsequent CRUD calls.
|
|
50726
50823
|
*
|
|
50727
50824
|
*/
|
|
50728
50825
|
adAccountId?: string;
|