@zernio/node 0.2.133 → 0.2.135

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 CHANGED
@@ -13859,6 +13859,10 @@ type GetAdCommentsResponse = ({
13859
13859
  * Underlying post ID the comments belong to. effective_object_story_id for the Facebook side, effective_instagram_media_id for the Instagram side.
13860
13860
  */
13861
13861
  effectiveStoryId: string;
13862
+ /**
13863
+ * Facebook-only. The connected Facebook Page SocialAccount these comments were read through — pass it as `accountId` (with `effectiveStoryId` as the postId) to /v1/inbox/comments to reply/hide/delete. Null when no connected Page was used (then moderation isn't possible).
13864
+ */
13865
+ facebookAccountId?: (string) | null;
13862
13866
  /**
13863
13867
  * Instagram-only. The Instagram-scoped business ID that owns the boosted media (creative.instagram_user_id).
13864
13868
  */
@@ -13868,7 +13872,7 @@ type GetAdCommentsResponse = ({
13868
13872
  */
13869
13873
  instagramPermalink?: string;
13870
13874
  /**
13871
- * Instagram-only. The connected Instagram SocialAccount these comments were read through — use it for reply/hide actions via /v1/inbox/comments.
13875
+ * Instagram-only. The connected Instagram SocialAccount these comments were read through — pass it as `accountId` (with `effectiveStoryId` as the postId) to /v1/inbox/comments to reply/hide/delete.
13872
13876
  */
13873
13877
  instagramAccountId?: string;
13874
13878
  /**
@@ -14078,7 +14082,7 @@ type CreateStandaloneAdData = {
14078
14082
  adAccountId: string;
14079
14083
  name: string;
14080
14084
  /**
14081
- * Required on legacy + multi-creative shapes. Inherited from the ad set on the attach shape. Available goals vary by platform. Meta-specific: `conversions` requires `promotedObject.pixelId` + `promotedObject.customEventType`; `app_promotion` requires `promotedObject.applicationId` + `promotedObject.objectStoreUrl`; `lead_generation` accepts an optional `promotedObject.pageId` (auto-filled from the connected Page when omitted).
14085
+ * Required on legacy + multi-creative shapes. Inherited from the ad set on the attach shape. Available goals vary by platform. Meta-specific: `conversions` requires `promotedObject.pixelId` + `promotedObject.customEventType`; `app_promotion` requires `promotedObject.applicationId` + `promotedObject.objectStoreUrl`; `lead_generation` accepts an optional `promotedObject.pageId` (auto-filled from the connected Page when omitted). LinkedIn-specific: only `engagement`, `traffic`, and `awareness` are supported for standalone ads (creates a Direct Sponsored Content single image ad); `traffic` requires `linkUrl`. For `video_views` / `lead_generation` / `conversions` on LinkedIn — or to promote an existing post — use `POST /v1/ads/boost`.
14082
14086
  */
14083
14087
  goal?: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
14084
14088
  /**
@@ -14091,27 +14095,27 @@ type CreateStandaloneAdData = {
14091
14095
  budgetType?: 'daily' | 'lifetime';
14092
14096
  currency?: string;
14093
14097
  /**
14094
- * Required for Meta, Google, and Pinterest on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Ignored for TikTok and X/Twitter. Max: Meta=255, Google=30, Pinterest=100.
14098
+ * Required for Meta, Google, Pinterest, and LinkedIn on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Ignored for TikTok and X/Twitter. Max: Meta=255, Google=30, Pinterest=100, LinkedIn=400. On LinkedIn this is the ad's headline (the bold text on the creative); for traffic ads it's the link card title.
14095
14099
  */
14096
14100
  headline?: string;
14097
14101
  /**
14098
- * Google Display only. Defaults to `headline` if omitted.
14102
+ * Google Display only defaults to `headline` if omitted. On LinkedIn, reused as the optional secondary description text on traffic (link) ads; omitted if not provided.
14099
14103
  */
14100
14104
  longHeadline?: string;
14101
14105
  /**
14102
- * Required on legacy + attach shapes. For X/Twitter this is the tweet text (max 280 chars including a ~24-char URL when `linkUrl` is set). Max: Google=90, Pinterest=500.
14106
+ * Required on legacy + attach shapes. For X/Twitter 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). Max: Google=90, Pinterest=500.
14103
14107
  */
14104
14108
  body?: string;
14105
14109
  /**
14106
- * Required on legacy + attach shapes for Meta. Honoured on TikTok too — passes through to the Spark Ad creative's `call_to_action`. Ignored by other platforms.
14110
+ * 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/Twitter.
14107
14111
  */
14108
- callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE';
14112
+ callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE' | 'REGISTER' | 'JOIN' | 'ATTEND' | 'REQUEST_DEMO' | 'VIEW_QUOTE' | 'APPLY' | 'SEE_MORE' | 'BUY_NOW';
14109
14113
  /**
14110
- * Required on legacy + attach shapes. Skip for multi-creative.
14114
+ * 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`.
14111
14115
  */
14112
14116
  linkUrl?: string;
14113
14117
  /**
14114
- * Image creative for Meta/Google/Pinterest on legacy + attach shapes (mutually exclusive with `video`). 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). Ignored for X/Twitter. For Google Display, treated as the landscape image (alias of `images.landscape`); supply `images.square` alongside or the request is rejected.
14118
+ * Image creative for Meta/Google/Pinterest/LinkedIn on legacy + attach shapes (mutually exclusive with `video`). Required for LinkedIn ads. 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). Ignored for X/Twitter. 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).
14115
14119
  */
14116
14120
  imageUrl?: string;
14117
14121
  /**
@@ -14188,7 +14192,11 @@ type CreateStandaloneAdData = {
14188
14192
  */
14189
14193
  boardId?: string;
14190
14194
  /**
14191
- * ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no `cities` or `regions` are provided.
14195
+ * LinkedIn only. The Company Page that authors the Direct Sponsored Content ("dark") post backing the ad — accepts a numeric organization ID or a full `urn:li:organization:N` URN. Required unless the resolved `accountId` is a connected LinkedIn Company-Page account (defaults to that page) or the LinkedIn ad account is org-owned (defaults to the account's owning organization). The authenticated member must be an ADMINISTRATOR or DIRECT_SPONSORED_CONTENT_POSTER of this page (and the page must be associated with the ad account), or LinkedIn returns 403. Ignored by every other platform.
14196
+ */
14197
+ organizationId?: string;
14198
+ /**
14199
+ * ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no `cities` or `regions` are provided. (LinkedIn currently honours country-level targeting only.)
14192
14200
  */
14193
14201
  countries?: Array<(string)>;
14194
14202
  /**
@@ -14258,6 +14266,22 @@ type CreateStandaloneAdData = {
14258
14266
  * Meta only. Controls the Advantage audience feature (targeting_automation). 0 = disabled (default), 1 = enabled. Meta Marketing API requires this field on all ad set creation requests.
14259
14267
  */
14260
14268
  advantageAudience?: 0 | 1;
14269
+ /**
14270
+ * Meta only. Conversion attribution window for the ad set — maps 1:1 to Meta's
14271
+ * ad-set `attribution_spec`. Only honored for conversion goals (`conversions`,
14272
+ * `lead_generation`, `app_promotion`); ignored for awareness/traffic/engagement.
14273
+ * Omit to use Meta's default (`7-day click` + `1-day view`). Meta enforces the
14274
+ * valid combinations: `VIEW_THROUGH` only allows `windowDays: 1` (7d/28d view
14275
+ * windows were removed Jan 2026); `ENGAGED_VIDEO_VIEW` only `1` and only alongside
14276
+ * `VIEW_THROUGH: 1`; `CLICK_THROUGH: 28` only on certain objectives. Invalid combos
14277
+ * surface as a Meta 400.
14278
+ * Example: `[{ "eventType": "CLICK_THROUGH", "windowDays": 7 }, { "eventType": "VIEW_THROUGH", "windowDays": 1 }]`
14279
+ *
14280
+ */
14281
+ attributionSpec?: Array<{
14282
+ eventType: 'CLICK_THROUGH' | 'VIEW_THROUGH' | 'ENGAGED_VIDEO_VIEW';
14283
+ windowDays: 1 | 7 | 28;
14284
+ }>;
14261
14285
  /**
14262
14286
  * Meta only. Restrict the audience by gender. 'male' targets men only, 'female' targets women only, 'all' (default) targets everyone. Ignored by non-Meta platforms.
14263
14287
  */
package/dist/index.d.ts CHANGED
@@ -13859,6 +13859,10 @@ type GetAdCommentsResponse = ({
13859
13859
  * Underlying post ID the comments belong to. effective_object_story_id for the Facebook side, effective_instagram_media_id for the Instagram side.
13860
13860
  */
13861
13861
  effectiveStoryId: string;
13862
+ /**
13863
+ * Facebook-only. The connected Facebook Page SocialAccount these comments were read through — pass it as `accountId` (with `effectiveStoryId` as the postId) to /v1/inbox/comments to reply/hide/delete. Null when no connected Page was used (then moderation isn't possible).
13864
+ */
13865
+ facebookAccountId?: (string) | null;
13862
13866
  /**
13863
13867
  * Instagram-only. The Instagram-scoped business ID that owns the boosted media (creative.instagram_user_id).
13864
13868
  */
@@ -13868,7 +13872,7 @@ type GetAdCommentsResponse = ({
13868
13872
  */
13869
13873
  instagramPermalink?: string;
13870
13874
  /**
13871
- * Instagram-only. The connected Instagram SocialAccount these comments were read through — use it for reply/hide actions via /v1/inbox/comments.
13875
+ * Instagram-only. The connected Instagram SocialAccount these comments were read through — pass it as `accountId` (with `effectiveStoryId` as the postId) to /v1/inbox/comments to reply/hide/delete.
13872
13876
  */
13873
13877
  instagramAccountId?: string;
13874
13878
  /**
@@ -14078,7 +14082,7 @@ type CreateStandaloneAdData = {
14078
14082
  adAccountId: string;
14079
14083
  name: string;
14080
14084
  /**
14081
- * Required on legacy + multi-creative shapes. Inherited from the ad set on the attach shape. Available goals vary by platform. Meta-specific: `conversions` requires `promotedObject.pixelId` + `promotedObject.customEventType`; `app_promotion` requires `promotedObject.applicationId` + `promotedObject.objectStoreUrl`; `lead_generation` accepts an optional `promotedObject.pageId` (auto-filled from the connected Page when omitted).
14085
+ * Required on legacy + multi-creative shapes. Inherited from the ad set on the attach shape. Available goals vary by platform. Meta-specific: `conversions` requires `promotedObject.pixelId` + `promotedObject.customEventType`; `app_promotion` requires `promotedObject.applicationId` + `promotedObject.objectStoreUrl`; `lead_generation` accepts an optional `promotedObject.pageId` (auto-filled from the connected Page when omitted). LinkedIn-specific: only `engagement`, `traffic`, and `awareness` are supported for standalone ads (creates a Direct Sponsored Content single image ad); `traffic` requires `linkUrl`. For `video_views` / `lead_generation` / `conversions` on LinkedIn — or to promote an existing post — use `POST /v1/ads/boost`.
14082
14086
  */
14083
14087
  goal?: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
14084
14088
  /**
@@ -14091,27 +14095,27 @@ type CreateStandaloneAdData = {
14091
14095
  budgetType?: 'daily' | 'lifetime';
14092
14096
  currency?: string;
14093
14097
  /**
14094
- * Required for Meta, Google, and Pinterest on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Ignored for TikTok and X/Twitter. Max: Meta=255, Google=30, Pinterest=100.
14098
+ * Required for Meta, Google, Pinterest, and LinkedIn on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Ignored for TikTok and X/Twitter. Max: Meta=255, Google=30, Pinterest=100, LinkedIn=400. On LinkedIn this is the ad's headline (the bold text on the creative); for traffic ads it's the link card title.
14095
14099
  */
14096
14100
  headline?: string;
14097
14101
  /**
14098
- * Google Display only. Defaults to `headline` if omitted.
14102
+ * Google Display only defaults to `headline` if omitted. On LinkedIn, reused as the optional secondary description text on traffic (link) ads; omitted if not provided.
14099
14103
  */
14100
14104
  longHeadline?: string;
14101
14105
  /**
14102
- * Required on legacy + attach shapes. For X/Twitter this is the tweet text (max 280 chars including a ~24-char URL when `linkUrl` is set). Max: Google=90, Pinterest=500.
14106
+ * Required on legacy + attach shapes. For X/Twitter 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). Max: Google=90, Pinterest=500.
14103
14107
  */
14104
14108
  body?: string;
14105
14109
  /**
14106
- * Required on legacy + attach shapes for Meta. Honoured on TikTok too — passes through to the Spark Ad creative's `call_to_action`. Ignored by other platforms.
14110
+ * 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/Twitter.
14107
14111
  */
14108
- callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE';
14112
+ callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE' | 'REGISTER' | 'JOIN' | 'ATTEND' | 'REQUEST_DEMO' | 'VIEW_QUOTE' | 'APPLY' | 'SEE_MORE' | 'BUY_NOW';
14109
14113
  /**
14110
- * Required on legacy + attach shapes. Skip for multi-creative.
14114
+ * 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`.
14111
14115
  */
14112
14116
  linkUrl?: string;
14113
14117
  /**
14114
- * Image creative for Meta/Google/Pinterest on legacy + attach shapes (mutually exclusive with `video`). 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). Ignored for X/Twitter. For Google Display, treated as the landscape image (alias of `images.landscape`); supply `images.square` alongside or the request is rejected.
14118
+ * Image creative for Meta/Google/Pinterest/LinkedIn on legacy + attach shapes (mutually exclusive with `video`). Required for LinkedIn ads. 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). Ignored for X/Twitter. 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).
14115
14119
  */
14116
14120
  imageUrl?: string;
14117
14121
  /**
@@ -14188,7 +14192,11 @@ type CreateStandaloneAdData = {
14188
14192
  */
14189
14193
  boardId?: string;
14190
14194
  /**
14191
- * ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no `cities` or `regions` are provided.
14195
+ * LinkedIn only. The Company Page that authors the Direct Sponsored Content ("dark") post backing the ad — accepts a numeric organization ID or a full `urn:li:organization:N` URN. Required unless the resolved `accountId` is a connected LinkedIn Company-Page account (defaults to that page) or the LinkedIn ad account is org-owned (defaults to the account's owning organization). The authenticated member must be an ADMINISTRATOR or DIRECT_SPONSORED_CONTENT_POSTER of this page (and the page must be associated with the ad account), or LinkedIn returns 403. Ignored by every other platform.
14196
+ */
14197
+ organizationId?: string;
14198
+ /**
14199
+ * ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no `cities` or `regions` are provided. (LinkedIn currently honours country-level targeting only.)
14192
14200
  */
14193
14201
  countries?: Array<(string)>;
14194
14202
  /**
@@ -14258,6 +14266,22 @@ type CreateStandaloneAdData = {
14258
14266
  * Meta only. Controls the Advantage audience feature (targeting_automation). 0 = disabled (default), 1 = enabled. Meta Marketing API requires this field on all ad set creation requests.
14259
14267
  */
14260
14268
  advantageAudience?: 0 | 1;
14269
+ /**
14270
+ * Meta only. Conversion attribution window for the ad set — maps 1:1 to Meta's
14271
+ * ad-set `attribution_spec`. Only honored for conversion goals (`conversions`,
14272
+ * `lead_generation`, `app_promotion`); ignored for awareness/traffic/engagement.
14273
+ * Omit to use Meta's default (`7-day click` + `1-day view`). Meta enforces the
14274
+ * valid combinations: `VIEW_THROUGH` only allows `windowDays: 1` (7d/28d view
14275
+ * windows were removed Jan 2026); `ENGAGED_VIDEO_VIEW` only `1` and only alongside
14276
+ * `VIEW_THROUGH: 1`; `CLICK_THROUGH: 28` only on certain objectives. Invalid combos
14277
+ * surface as a Meta 400.
14278
+ * Example: `[{ "eventType": "CLICK_THROUGH", "windowDays": 7 }, { "eventType": "VIEW_THROUGH", "windowDays": 1 }]`
14279
+ *
14280
+ */
14281
+ attributionSpec?: Array<{
14282
+ eventType: 'CLICK_THROUGH' | 'VIEW_THROUGH' | 'ENGAGED_VIDEO_VIEW';
14283
+ windowDays: 1 | 7 | 28;
14284
+ }>;
14261
14285
  /**
14262
14286
  * Meta only. Restrict the audience by gender. 'male' targets men only, 'female' targets women only, 'all' (default) targets everyone. Ignored by non-Meta platforms.
14263
14287
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zernio/node",
3
- "version": "0.2.133",
3
+ "version": "0.2.135",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -3561,7 +3561,7 @@ export const boostPost = <ThrowOnError extends boolean = false>(options: Options
3561
3561
 
3562
3562
  /**
3563
3563
  * Create standalone ad
3564
- * Creates a paid ad with custom creative across Meta, Google Ads, Pinterest, TikTok, and X/Twitter. Supports three mutually-exclusive request shapes selected by the body, a legacy single-creative shape (all platforms, default), a Meta-only multi-creative shape via the creatives array (one ad set with N ads sharing budget and targeting), and a Meta-only attach shape via adSetId (adds one new ad to an existing ad set). Per-platform required fields, budget minimums, and video-ad rules (Meta only) are documented on each property below.
3564
+ * Creates a paid ad with custom creative across Meta, Google Ads, Pinterest, TikTok, X/Twitter, and LinkedIn. Supports three mutually-exclusive request shapes selected by the body, a legacy single-creative shape (all platforms, default), a Meta-only multi-creative shape via the creatives array (one ad set with N ads sharing budget and targeting), and a Meta-only attach shape via adSetId (adds one new ad to an existing ad set). Per-platform required fields, budget minimums, and video-ad rules (Meta only) are documented on each property below. LinkedIn creates a Single Image Ad backed by a Direct Sponsored Content "dark post" authored by a Company Page (see `organizationId`); supported goals are engagement, traffic, and awareness, and traffic ads require `linkUrl`.
3565
3565
  */
3566
3566
  export const createStandaloneAd = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateStandaloneAdData, ThrowOnError>) => {
3567
3567
  return (options?.client ?? client).post<CreateStandaloneAdResponse, CreateStandaloneAdError, ThrowOnError>({
@@ -14179,6 +14179,10 @@ export type GetAdCommentsResponse = ({
14179
14179
  * Underlying post ID the comments belong to. effective_object_story_id for the Facebook side, effective_instagram_media_id for the Instagram side.
14180
14180
  */
14181
14181
  effectiveStoryId: string;
14182
+ /**
14183
+ * Facebook-only. The connected Facebook Page SocialAccount these comments were read through — pass it as `accountId` (with `effectiveStoryId` as the postId) to /v1/inbox/comments to reply/hide/delete. Null when no connected Page was used (then moderation isn't possible).
14184
+ */
14185
+ facebookAccountId?: (string) | null;
14182
14186
  /**
14183
14187
  * Instagram-only. The Instagram-scoped business ID that owns the boosted media (creative.instagram_user_id).
14184
14188
  */
@@ -14188,7 +14192,7 @@ export type GetAdCommentsResponse = ({
14188
14192
  */
14189
14193
  instagramPermalink?: string;
14190
14194
  /**
14191
- * Instagram-only. The connected Instagram SocialAccount these comments were read through — use it for reply/hide actions via /v1/inbox/comments.
14195
+ * Instagram-only. The connected Instagram SocialAccount these comments were read through — pass it as `accountId` (with `effectiveStoryId` as the postId) to /v1/inbox/comments to reply/hide/delete.
14192
14196
  */
14193
14197
  instagramAccountId?: string;
14194
14198
  /**
@@ -14409,7 +14413,7 @@ export type CreateStandaloneAdData = {
14409
14413
  adAccountId: string;
14410
14414
  name: string;
14411
14415
  /**
14412
- * Required on legacy + multi-creative shapes. Inherited from the ad set on the attach shape. Available goals vary by platform. Meta-specific: `conversions` requires `promotedObject.pixelId` + `promotedObject.customEventType`; `app_promotion` requires `promotedObject.applicationId` + `promotedObject.objectStoreUrl`; `lead_generation` accepts an optional `promotedObject.pageId` (auto-filled from the connected Page when omitted).
14416
+ * Required on legacy + multi-creative shapes. Inherited from the ad set on the attach shape. Available goals vary by platform. Meta-specific: `conversions` requires `promotedObject.pixelId` + `promotedObject.customEventType`; `app_promotion` requires `promotedObject.applicationId` + `promotedObject.objectStoreUrl`; `lead_generation` accepts an optional `promotedObject.pageId` (auto-filled from the connected Page when omitted). LinkedIn-specific: only `engagement`, `traffic`, and `awareness` are supported for standalone ads (creates a Direct Sponsored Content single image ad); `traffic` requires `linkUrl`. For `video_views` / `lead_generation` / `conversions` on LinkedIn — or to promote an existing post — use `POST /v1/ads/boost`.
14413
14417
  */
14414
14418
  goal?: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
14415
14419
  /**
@@ -14422,27 +14426,27 @@ export type CreateStandaloneAdData = {
14422
14426
  budgetType?: 'daily' | 'lifetime';
14423
14427
  currency?: string;
14424
14428
  /**
14425
- * Required for Meta, Google, and Pinterest on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Ignored for TikTok and X/Twitter. Max: Meta=255, Google=30, Pinterest=100.
14429
+ * Required for Meta, Google, Pinterest, and LinkedIn on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Ignored for TikTok and X/Twitter. Max: Meta=255, Google=30, Pinterest=100, LinkedIn=400. On LinkedIn this is the ad's headline (the bold text on the creative); for traffic ads it's the link card title.
14426
14430
  */
14427
14431
  headline?: string;
14428
14432
  /**
14429
- * Google Display only. Defaults to `headline` if omitted.
14433
+ * Google Display only defaults to `headline` if omitted. On LinkedIn, reused as the optional secondary description text on traffic (link) ads; omitted if not provided.
14430
14434
  */
14431
14435
  longHeadline?: string;
14432
14436
  /**
14433
- * Required on legacy + attach shapes. For X/Twitter this is the tweet text (max 280 chars including a ~24-char URL when `linkUrl` is set). Max: Google=90, Pinterest=500.
14437
+ * Required on legacy + attach shapes. For X/Twitter 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). Max: Google=90, Pinterest=500.
14434
14438
  */
14435
14439
  body?: string;
14436
14440
  /**
14437
- * Required on legacy + attach shapes for Meta. Honoured on TikTok too — passes through to the Spark Ad creative's `call_to_action`. Ignored by other platforms.
14441
+ * 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/Twitter.
14438
14442
  */
14439
- callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE';
14443
+ callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE' | 'REGISTER' | 'JOIN' | 'ATTEND' | 'REQUEST_DEMO' | 'VIEW_QUOTE' | 'APPLY' | 'SEE_MORE' | 'BUY_NOW';
14440
14444
  /**
14441
- * Required on legacy + attach shapes. Skip for multi-creative.
14445
+ * 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`.
14442
14446
  */
14443
14447
  linkUrl?: string;
14444
14448
  /**
14445
- * Image creative for Meta/Google/Pinterest on legacy + attach shapes (mutually exclusive with `video`). 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). Ignored for X/Twitter. For Google Display, treated as the landscape image (alias of `images.landscape`); supply `images.square` alongside or the request is rejected.
14449
+ * Image creative for Meta/Google/Pinterest/LinkedIn on legacy + attach shapes (mutually exclusive with `video`). Required for LinkedIn ads. 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). Ignored for X/Twitter. 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).
14446
14450
  */
14447
14451
  imageUrl?: string;
14448
14452
  /**
@@ -14519,7 +14523,11 @@ export type CreateStandaloneAdData = {
14519
14523
  */
14520
14524
  boardId?: string;
14521
14525
  /**
14522
- * ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no `cities` or `regions` are provided.
14526
+ * LinkedIn only. The Company Page that authors the Direct Sponsored Content ("dark") post backing the ad — accepts a numeric organization ID or a full `urn:li:organization:N` URN. Required unless the resolved `accountId` is a connected LinkedIn Company-Page account (defaults to that page) or the LinkedIn ad account is org-owned (defaults to the account's owning organization). The authenticated member must be an ADMINISTRATOR or DIRECT_SPONSORED_CONTENT_POSTER of this page (and the page must be associated with the ad account), or LinkedIn returns 403. Ignored by every other platform.
14527
+ */
14528
+ organizationId?: string;
14529
+ /**
14530
+ * ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no `cities` or `regions` are provided. (LinkedIn currently honours country-level targeting only.)
14523
14531
  */
14524
14532
  countries?: Array<(string)>;
14525
14533
  /**
@@ -14589,6 +14597,22 @@ export type CreateStandaloneAdData = {
14589
14597
  * Meta only. Controls the Advantage audience feature (targeting_automation). 0 = disabled (default), 1 = enabled. Meta Marketing API requires this field on all ad set creation requests.
14590
14598
  */
14591
14599
  advantageAudience?: 0 | 1;
14600
+ /**
14601
+ * Meta only. Conversion attribution window for the ad set — maps 1:1 to Meta's
14602
+ * ad-set `attribution_spec`. Only honored for conversion goals (`conversions`,
14603
+ * `lead_generation`, `app_promotion`); ignored for awareness/traffic/engagement.
14604
+ * Omit to use Meta's default (`7-day click` + `1-day view`). Meta enforces the
14605
+ * valid combinations: `VIEW_THROUGH` only allows `windowDays: 1` (7d/28d view
14606
+ * windows were removed Jan 2026); `ENGAGED_VIDEO_VIEW` only `1` and only alongside
14607
+ * `VIEW_THROUGH: 1`; `CLICK_THROUGH: 28` only on certain objectives. Invalid combos
14608
+ * surface as a Meta 400.
14609
+ * Example: `[{ "eventType": "CLICK_THROUGH", "windowDays": 7 }, { "eventType": "VIEW_THROUGH", "windowDays": 1 }]`
14610
+ *
14611
+ */
14612
+ attributionSpec?: Array<{
14613
+ eventType: 'CLICK_THROUGH' | 'VIEW_THROUGH' | 'ENGAGED_VIDEO_VIEW';
14614
+ windowDays: 1 | 7 | 28;
14615
+ }>;
14592
14616
  /**
14593
14617
  * Meta only. Restrict the audience by gender. 'male' targets men only, 'female' targets women only, 'all' (default) targets everyone. Ignored by non-Meta platforms.
14594
14618
  */