@getlatedev/node 0.2.372 → 0.2.374

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
@@ -4420,19 +4420,19 @@ type TargetingSpec = {
4420
4420
  name?: string;
4421
4421
  }>;
4422
4422
  /**
4423
- * City targeting. Optional `radius` + `distance_unit` extend beyond the city limits; both must be set together or both omitted. `radius` is only honoured on platforms whose capability map allows city radius (Meta).
4423
+ * City targeting. Optional `radius` + `distanceUnit` extend beyond the city limits; both must be set together or both omitted. `radius` is only honoured on platforms whose capability map allows city radius (Meta).
4424
4424
  */
4425
4425
  cities?: Array<{
4426
4426
  key: string;
4427
4427
  name?: string;
4428
4428
  /**
4429
- * Radius around the city. Requires distance_unit.
4429
+ * Radius around the city. Requires distanceUnit. Meta enforces a minimum city radius (~17 km / 10 mi); smaller values resolve to a 0-size audience and the ad fails at launch. For a tighter catchment use customLocations (lat/lng), which allows a smaller radius.
4430
4430
  */
4431
4431
  radius?: number;
4432
4432
  /**
4433
4433
  * Required if radius is set.
4434
4434
  */
4435
- distance_unit?: 'mile' | 'kilometer';
4435
+ distanceUnit?: 'mile' | 'kilometer';
4436
4436
  }>;
4437
4437
  /**
4438
4438
  * Postal/ZIP targeting. `key` is the platform's postal location ID (e.g. Meta `US:94304`). Supported on Meta, Google, TikTok, Pinterest, X.
@@ -4475,18 +4475,18 @@ type TargetingSpec = {
4475
4475
  name?: string;
4476
4476
  }>;
4477
4477
  /**
4478
- * Cities to exclude. Optional `radius` + `distance_unit` exclude a catchment around the city (both must be set together or both omitted); Meta honours the radius on excluded cities.
4478
+ * Cities to exclude. Optional `radius` + `distanceUnit` exclude a catchment around the city (both must be set together or both omitted); Meta honours the radius on excluded cities.
4479
4479
  */
4480
4480
  cities?: Array<{
4481
4481
  key: string;
4482
4482
  /**
4483
- * Radius around the excluded city. Requires distance_unit.
4483
+ * Radius around the excluded city. Requires distanceUnit.
4484
4484
  */
4485
4485
  radius?: number;
4486
4486
  /**
4487
4487
  * Required if radius is set.
4488
4488
  */
4489
- distance_unit?: 'mile' | 'kilometer';
4489
+ distanceUnit?: 'mile' | 'kilometer';
4490
4490
  }>;
4491
4491
  zips?: Array<{
4492
4492
  key: string;
@@ -7195,6 +7195,18 @@ type YouTubeDemographicsResponse = {
7195
7195
  */
7196
7196
  accountId?: string;
7197
7197
  platform?: string;
7198
+ /**
7199
+ * Present only when demographics are scoped to a single video
7200
+ */
7201
+ videoId?: string;
7202
+ /**
7203
+ * Video title (video mode only)
7204
+ */
7205
+ title?: (string) | null;
7206
+ /**
7207
+ * Video publish date (video mode only)
7208
+ */
7209
+ publishedAt?: (string) | null;
7198
7210
  /**
7199
7211
  * Object keyed by breakdown dimension (age, gender, country)
7200
7212
  */
@@ -7910,10 +7922,17 @@ type GetYouTubeDemographicsData = {
7910
7922
  */
7911
7923
  endDate?: string;
7912
7924
  /**
7913
- * Start date in YYYY-MM-DD format. Defaults to 90 days ago.
7925
+ * Start date in YYYY-MM-DD format. Defaults to 90 days ago, or to the video's
7926
+ * publish date (lifetime) when videoId is provided.
7914
7927
  *
7915
7928
  */
7916
7929
  startDate?: string;
7930
+ /**
7931
+ * YouTube video ID. When provided, demographics are scoped to this single video
7932
+ * (must belong to the connected channel; otherwise 404 video_not_found).
7933
+ *
7934
+ */
7935
+ videoId?: string;
7917
7936
  };
7918
7937
  };
7919
7938
  type GetYouTubeDemographicsResponse = (YouTubeDemographicsResponse);
@@ -14662,10 +14681,21 @@ type SendInboxMessageData = {
14662
14681
  }>;
14663
14682
  /**
14664
14683
  * Action buttons. Mutually exclusive with quickReplies. Max 3 items.
14684
+ *
14685
+ * WhatsApp: buttons always render as interactive reply buttons.
14686
+ * Only `title` and `payload` are used — `type`, `url`, and `phone`
14687
+ * are ignored (WhatsApp has no URL/phone button in this field; use
14688
+ * the `interactive` field with `type: cta_url` for a link button).
14689
+ * `payload` becomes the button reply ID delivered on the
14690
+ * `message.received` webhook when the user taps. To send a simple
14691
+ * reply-button message, provide `title` + `payload` and set
14692
+ * `type: postback`, e.g.
14693
+ * `{ "type": "postback", "title": "Yes", "payload": "yes" }`.
14694
+ *
14665
14695
  */
14666
14696
  buttons?: Array<{
14667
14697
  /**
14668
- * Button type. phone is Facebook only.
14698
+ * Button type. phone is Facebook only. Ignored on WhatsApp (buttons always render as reply buttons).
14669
14699
  */
14670
14700
  type: 'url' | 'postback' | 'phone';
14671
14701
  /**
@@ -14673,11 +14703,11 @@ type SendInboxMessageData = {
14673
14703
  */
14674
14704
  title: string;
14675
14705
  /**
14676
- * URL for url-type buttons
14706
+ * URL for url-type buttons (Facebook/Instagram only)
14677
14707
  */
14678
14708
  url?: string;
14679
14709
  /**
14680
- * Payload for postback-type buttons
14710
+ * Payload for postback-type buttons. On WhatsApp, this is the reply ID returned on the message.received webhook when the button is tapped.
14681
14711
  */
14682
14712
  payload?: string;
14683
14713
  /**
@@ -23412,16 +23442,16 @@ type BoostPostData = {
23412
23442
  name?: string;
23413
23443
  }>;
23414
23444
  /**
23415
- * City targeting. Optional `radius` + `distance_unit` extend beyond the city limits (both set together, Meta only).
23445
+ * City targeting. Optional `radius` + `distanceUnit` extend beyond the city limits (both set together, Meta only).
23416
23446
  */
23417
23447
  cities?: Array<{
23418
23448
  key: string;
23419
23449
  name?: string;
23420
23450
  /**
23421
- * Requires distance_unit.
23451
+ * Requires distanceUnit. Meta enforces a minimum city radius (~17 km / 10 mi); smaller values resolve to a 0-size audience and the ad fails at launch. For a tighter catchment use customLocations (lat/lng).
23422
23452
  */
23423
23453
  radius?: number;
23424
- distance_unit?: 'mile' | 'kilometer';
23454
+ distanceUnit?: 'mile' | 'kilometer';
23425
23455
  }>;
23426
23456
  /**
23427
23457
  * Postal/ZIP targeting. `key` is the platform's postal location ID (e.g. Meta `US:94304`).
@@ -23824,7 +23854,7 @@ type CreateStandaloneAdData = {
23824
23854
  */
23825
23855
  key: string;
23826
23856
  /**
23827
- * Optional radius around the city. Must be set together with distance_unit.
23857
+ * Optional radius around the city. Must be set together with distance_unit. Meta enforces a minimum city radius (~17 km / 10 mi); smaller values resolve to a 0-size audience and the ad fails at launch. For a tighter catchment use customLocations (lat/lng).
23828
23858
  */
23829
23859
  radius?: number;
23830
23860
  /**
@@ -25863,6 +25893,10 @@ type CreateCtwaAdData = {
25863
25893
  * TargetingGeoLocationCity. `key` is Meta's city ID
25864
25894
  * (lookupable via GET /v1/ads/targeting/search). `radius`
25865
25895
  * and `distance_unit` are coupled: set both or neither.
25896
+ * Meta enforces a minimum city radius (~17 km / 10 mi);
25897
+ * smaller values resolve to a 0-size audience and the ad
25898
+ * fails at launch. For a tighter catchment use customLocations
25899
+ * (lat/lng).
25866
25900
  *
25867
25901
  */
25868
25902
  cities?: Array<{
package/dist/index.d.ts CHANGED
@@ -4420,19 +4420,19 @@ type TargetingSpec = {
4420
4420
  name?: string;
4421
4421
  }>;
4422
4422
  /**
4423
- * City targeting. Optional `radius` + `distance_unit` extend beyond the city limits; both must be set together or both omitted. `radius` is only honoured on platforms whose capability map allows city radius (Meta).
4423
+ * City targeting. Optional `radius` + `distanceUnit` extend beyond the city limits; both must be set together or both omitted. `radius` is only honoured on platforms whose capability map allows city radius (Meta).
4424
4424
  */
4425
4425
  cities?: Array<{
4426
4426
  key: string;
4427
4427
  name?: string;
4428
4428
  /**
4429
- * Radius around the city. Requires distance_unit.
4429
+ * Radius around the city. Requires distanceUnit. Meta enforces a minimum city radius (~17 km / 10 mi); smaller values resolve to a 0-size audience and the ad fails at launch. For a tighter catchment use customLocations (lat/lng), which allows a smaller radius.
4430
4430
  */
4431
4431
  radius?: number;
4432
4432
  /**
4433
4433
  * Required if radius is set.
4434
4434
  */
4435
- distance_unit?: 'mile' | 'kilometer';
4435
+ distanceUnit?: 'mile' | 'kilometer';
4436
4436
  }>;
4437
4437
  /**
4438
4438
  * Postal/ZIP targeting. `key` is the platform's postal location ID (e.g. Meta `US:94304`). Supported on Meta, Google, TikTok, Pinterest, X.
@@ -4475,18 +4475,18 @@ type TargetingSpec = {
4475
4475
  name?: string;
4476
4476
  }>;
4477
4477
  /**
4478
- * Cities to exclude. Optional `radius` + `distance_unit` exclude a catchment around the city (both must be set together or both omitted); Meta honours the radius on excluded cities.
4478
+ * Cities to exclude. Optional `radius` + `distanceUnit` exclude a catchment around the city (both must be set together or both omitted); Meta honours the radius on excluded cities.
4479
4479
  */
4480
4480
  cities?: Array<{
4481
4481
  key: string;
4482
4482
  /**
4483
- * Radius around the excluded city. Requires distance_unit.
4483
+ * Radius around the excluded city. Requires distanceUnit.
4484
4484
  */
4485
4485
  radius?: number;
4486
4486
  /**
4487
4487
  * Required if radius is set.
4488
4488
  */
4489
- distance_unit?: 'mile' | 'kilometer';
4489
+ distanceUnit?: 'mile' | 'kilometer';
4490
4490
  }>;
4491
4491
  zips?: Array<{
4492
4492
  key: string;
@@ -7195,6 +7195,18 @@ type YouTubeDemographicsResponse = {
7195
7195
  */
7196
7196
  accountId?: string;
7197
7197
  platform?: string;
7198
+ /**
7199
+ * Present only when demographics are scoped to a single video
7200
+ */
7201
+ videoId?: string;
7202
+ /**
7203
+ * Video title (video mode only)
7204
+ */
7205
+ title?: (string) | null;
7206
+ /**
7207
+ * Video publish date (video mode only)
7208
+ */
7209
+ publishedAt?: (string) | null;
7198
7210
  /**
7199
7211
  * Object keyed by breakdown dimension (age, gender, country)
7200
7212
  */
@@ -7910,10 +7922,17 @@ type GetYouTubeDemographicsData = {
7910
7922
  */
7911
7923
  endDate?: string;
7912
7924
  /**
7913
- * Start date in YYYY-MM-DD format. Defaults to 90 days ago.
7925
+ * Start date in YYYY-MM-DD format. Defaults to 90 days ago, or to the video's
7926
+ * publish date (lifetime) when videoId is provided.
7914
7927
  *
7915
7928
  */
7916
7929
  startDate?: string;
7930
+ /**
7931
+ * YouTube video ID. When provided, demographics are scoped to this single video
7932
+ * (must belong to the connected channel; otherwise 404 video_not_found).
7933
+ *
7934
+ */
7935
+ videoId?: string;
7917
7936
  };
7918
7937
  };
7919
7938
  type GetYouTubeDemographicsResponse = (YouTubeDemographicsResponse);
@@ -14662,10 +14681,21 @@ type SendInboxMessageData = {
14662
14681
  }>;
14663
14682
  /**
14664
14683
  * Action buttons. Mutually exclusive with quickReplies. Max 3 items.
14684
+ *
14685
+ * WhatsApp: buttons always render as interactive reply buttons.
14686
+ * Only `title` and `payload` are used — `type`, `url`, and `phone`
14687
+ * are ignored (WhatsApp has no URL/phone button in this field; use
14688
+ * the `interactive` field with `type: cta_url` for a link button).
14689
+ * `payload` becomes the button reply ID delivered on the
14690
+ * `message.received` webhook when the user taps. To send a simple
14691
+ * reply-button message, provide `title` + `payload` and set
14692
+ * `type: postback`, e.g.
14693
+ * `{ "type": "postback", "title": "Yes", "payload": "yes" }`.
14694
+ *
14665
14695
  */
14666
14696
  buttons?: Array<{
14667
14697
  /**
14668
- * Button type. phone is Facebook only.
14698
+ * Button type. phone is Facebook only. Ignored on WhatsApp (buttons always render as reply buttons).
14669
14699
  */
14670
14700
  type: 'url' | 'postback' | 'phone';
14671
14701
  /**
@@ -14673,11 +14703,11 @@ type SendInboxMessageData = {
14673
14703
  */
14674
14704
  title: string;
14675
14705
  /**
14676
- * URL for url-type buttons
14706
+ * URL for url-type buttons (Facebook/Instagram only)
14677
14707
  */
14678
14708
  url?: string;
14679
14709
  /**
14680
- * Payload for postback-type buttons
14710
+ * Payload for postback-type buttons. On WhatsApp, this is the reply ID returned on the message.received webhook when the button is tapped.
14681
14711
  */
14682
14712
  payload?: string;
14683
14713
  /**
@@ -23412,16 +23442,16 @@ type BoostPostData = {
23412
23442
  name?: string;
23413
23443
  }>;
23414
23444
  /**
23415
- * City targeting. Optional `radius` + `distance_unit` extend beyond the city limits (both set together, Meta only).
23445
+ * City targeting. Optional `radius` + `distanceUnit` extend beyond the city limits (both set together, Meta only).
23416
23446
  */
23417
23447
  cities?: Array<{
23418
23448
  key: string;
23419
23449
  name?: string;
23420
23450
  /**
23421
- * Requires distance_unit.
23451
+ * Requires distanceUnit. Meta enforces a minimum city radius (~17 km / 10 mi); smaller values resolve to a 0-size audience and the ad fails at launch. For a tighter catchment use customLocations (lat/lng).
23422
23452
  */
23423
23453
  radius?: number;
23424
- distance_unit?: 'mile' | 'kilometer';
23454
+ distanceUnit?: 'mile' | 'kilometer';
23425
23455
  }>;
23426
23456
  /**
23427
23457
  * Postal/ZIP targeting. `key` is the platform's postal location ID (e.g. Meta `US:94304`).
@@ -23824,7 +23854,7 @@ type CreateStandaloneAdData = {
23824
23854
  */
23825
23855
  key: string;
23826
23856
  /**
23827
- * Optional radius around the city. Must be set together with distance_unit.
23857
+ * Optional radius around the city. Must be set together with distance_unit. Meta enforces a minimum city radius (~17 km / 10 mi); smaller values resolve to a 0-size audience and the ad fails at launch. For a tighter catchment use customLocations (lat/lng).
23828
23858
  */
23829
23859
  radius?: number;
23830
23860
  /**
@@ -25863,6 +25893,10 @@ type CreateCtwaAdData = {
25863
25893
  * TargetingGeoLocationCity. `key` is Meta's city ID
25864
25894
  * (lookupable via GET /v1/ads/targeting/search). `radius`
25865
25895
  * and `distance_unit` are coupled: set both or neither.
25896
+ * Meta enforces a minimum city radius (~17 km / 10 mi);
25897
+ * smaller values resolve to a 0-size audience and the ad
25898
+ * fails at launch. For a tighter catchment use customLocations
25899
+ * (lat/lng).
25866
25900
  *
25867
25901
  */
25868
25902
  cities?: Array<{
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(index_exports);
36
36
  // package.json
37
37
  var package_default = {
38
38
  name: "@getlatedev/node",
39
- version: "0.2.372",
39
+ version: "0.2.374",
40
40
  description: "The official Node.js library for the Zernio API",
41
41
  main: "dist/index.js",
42
42
  module: "dist/index.mjs",
package/dist/index.mjs CHANGED
@@ -5,7 +5,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
5
5
  // package.json
6
6
  var package_default = {
7
7
  name: "@getlatedev/node",
8
- version: "0.2.372",
8
+ version: "0.2.374",
9
9
  description: "The official Node.js library for the Zernio API",
10
10
  main: "dist/index.js",
11
11
  module: "dist/index.mjs",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getlatedev/node",
3
- "version": "0.2.372",
3
+ "version": "0.2.374",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -279,8 +279,11 @@ export const getInstagramDemographics = <ThrowOnError extends boolean = false>(o
279
279
  /**
280
280
  * Get YouTube demographics
281
281
  * Returns audience demographic insights for a YouTube channel, broken down by age, gender, and/or country.
282
+ * Pass videoId to get the audience profile of a single video instead of the whole channel.
282
283
  * Age and gender values are viewer percentages (0-100). Country values are view counts.
283
- * Data is based on signed-in viewers only, with a 2-3 day delay. Requires the Analytics add-on.
284
+ * Data is based on signed-in viewers only, with a 2-3 day delay. YouTube suppresses demographics
285
+ * for videos with too few signed-in views, so low-traffic videos can return empty breakdowns.
286
+ * Requires the Analytics add-on.
284
287
  *
285
288
  */
286
289
  export const getYouTubeDemographics = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetYouTubeDemographicsData, ThrowOnError>) => {
@@ -3692,19 +3692,19 @@ export type TargetingSpec = {
3692
3692
  name?: string;
3693
3693
  }>;
3694
3694
  /**
3695
- * City targeting. Optional `radius` + `distance_unit` extend beyond the city limits; both must be set together or both omitted. `radius` is only honoured on platforms whose capability map allows city radius (Meta).
3695
+ * City targeting. Optional `radius` + `distanceUnit` extend beyond the city limits; both must be set together or both omitted. `radius` is only honoured on platforms whose capability map allows city radius (Meta).
3696
3696
  */
3697
3697
  cities?: Array<{
3698
3698
  key: string;
3699
3699
  name?: string;
3700
3700
  /**
3701
- * Radius around the city. Requires distance_unit.
3701
+ * Radius around the city. Requires distanceUnit. Meta enforces a minimum city radius (~17 km / 10 mi); smaller values resolve to a 0-size audience and the ad fails at launch. For a tighter catchment use customLocations (lat/lng), which allows a smaller radius.
3702
3702
  */
3703
3703
  radius?: number;
3704
3704
  /**
3705
3705
  * Required if radius is set.
3706
3706
  */
3707
- distance_unit?: 'mile' | 'kilometer';
3707
+ distanceUnit?: 'mile' | 'kilometer';
3708
3708
  }>;
3709
3709
  /**
3710
3710
  * Postal/ZIP targeting. `key` is the platform's postal location ID (e.g. Meta `US:94304`). Supported on Meta, Google, TikTok, Pinterest, X.
@@ -3747,18 +3747,18 @@ export type TargetingSpec = {
3747
3747
  name?: string;
3748
3748
  }>;
3749
3749
  /**
3750
- * Cities to exclude. Optional `radius` + `distance_unit` exclude a catchment around the city (both must be set together or both omitted); Meta honours the radius on excluded cities.
3750
+ * Cities to exclude. Optional `radius` + `distanceUnit` exclude a catchment around the city (both must be set together or both omitted); Meta honours the radius on excluded cities.
3751
3751
  */
3752
3752
  cities?: Array<{
3753
3753
  key: string;
3754
3754
  /**
3755
- * Radius around the excluded city. Requires distance_unit.
3755
+ * Radius around the excluded city. Requires distanceUnit.
3756
3756
  */
3757
3757
  radius?: number;
3758
3758
  /**
3759
3759
  * Required if radius is set.
3760
3760
  */
3761
- distance_unit?: 'mile' | 'kilometer';
3761
+ distanceUnit?: 'mile' | 'kilometer';
3762
3762
  }>;
3763
3763
  zips?: Array<{
3764
3764
  key: string;
@@ -6577,6 +6577,18 @@ export type YouTubeDemographicsResponse = {
6577
6577
  */
6578
6578
  accountId?: string;
6579
6579
  platform?: string;
6580
+ /**
6581
+ * Present only when demographics are scoped to a single video
6582
+ */
6583
+ videoId?: string;
6584
+ /**
6585
+ * Video title (video mode only)
6586
+ */
6587
+ title?: (string) | null;
6588
+ /**
6589
+ * Video publish date (video mode only)
6590
+ */
6591
+ publishedAt?: (string) | null;
6580
6592
  /**
6581
6593
  * Object keyed by breakdown dimension (age, gender, country)
6582
6594
  */
@@ -7338,10 +7350,17 @@ export type GetYouTubeDemographicsData = {
7338
7350
  */
7339
7351
  endDate?: string;
7340
7352
  /**
7341
- * Start date in YYYY-MM-DD format. Defaults to 90 days ago.
7353
+ * Start date in YYYY-MM-DD format. Defaults to 90 days ago, or to the video's
7354
+ * publish date (lifetime) when videoId is provided.
7342
7355
  *
7343
7356
  */
7344
7357
  startDate?: string;
7358
+ /**
7359
+ * YouTube video ID. When provided, demographics are scoped to this single video
7360
+ * (must belong to the connected channel; otherwise 404 video_not_found).
7361
+ *
7362
+ */
7363
+ videoId?: string;
7345
7364
  };
7346
7365
  };
7347
7366
 
@@ -14594,10 +14613,21 @@ export type SendInboxMessageData = {
14594
14613
  }>;
14595
14614
  /**
14596
14615
  * Action buttons. Mutually exclusive with quickReplies. Max 3 items.
14616
+ *
14617
+ * WhatsApp: buttons always render as interactive reply buttons.
14618
+ * Only `title` and `payload` are used — `type`, `url`, and `phone`
14619
+ * are ignored (WhatsApp has no URL/phone button in this field; use
14620
+ * the `interactive` field with `type: cta_url` for a link button).
14621
+ * `payload` becomes the button reply ID delivered on the
14622
+ * `message.received` webhook when the user taps. To send a simple
14623
+ * reply-button message, provide `title` + `payload` and set
14624
+ * `type: postback`, e.g.
14625
+ * `{ "type": "postback", "title": "Yes", "payload": "yes" }`.
14626
+ *
14597
14627
  */
14598
14628
  buttons?: Array<{
14599
14629
  /**
14600
- * Button type. phone is Facebook only.
14630
+ * Button type. phone is Facebook only. Ignored on WhatsApp (buttons always render as reply buttons).
14601
14631
  */
14602
14632
  type: 'url' | 'postback' | 'phone';
14603
14633
  /**
@@ -14605,11 +14635,11 @@ export type SendInboxMessageData = {
14605
14635
  */
14606
14636
  title: string;
14607
14637
  /**
14608
- * URL for url-type buttons
14638
+ * URL for url-type buttons (Facebook/Instagram only)
14609
14639
  */
14610
14640
  url?: string;
14611
14641
  /**
14612
- * Payload for postback-type buttons
14642
+ * Payload for postback-type buttons. On WhatsApp, this is the reply ID returned on the message.received webhook when the button is tapped.
14613
14643
  */
14614
14644
  payload?: string;
14615
14645
  /**
@@ -24071,16 +24101,16 @@ export type BoostPostData = {
24071
24101
  name?: string;
24072
24102
  }>;
24073
24103
  /**
24074
- * City targeting. Optional `radius` + `distance_unit` extend beyond the city limits (both set together, Meta only).
24104
+ * City targeting. Optional `radius` + `distanceUnit` extend beyond the city limits (both set together, Meta only).
24075
24105
  */
24076
24106
  cities?: Array<{
24077
24107
  key: string;
24078
24108
  name?: string;
24079
24109
  /**
24080
- * Requires distance_unit.
24110
+ * Requires distanceUnit. Meta enforces a minimum city radius (~17 km / 10 mi); smaller values resolve to a 0-size audience and the ad fails at launch. For a tighter catchment use customLocations (lat/lng).
24081
24111
  */
24082
24112
  radius?: number;
24083
- distance_unit?: 'mile' | 'kilometer';
24113
+ distanceUnit?: 'mile' | 'kilometer';
24084
24114
  }>;
24085
24115
  /**
24086
24116
  * Postal/ZIP targeting. `key` is the platform's postal location ID (e.g. Meta `US:94304`).
@@ -24486,7 +24516,7 @@ export type CreateStandaloneAdData = {
24486
24516
  */
24487
24517
  key: string;
24488
24518
  /**
24489
- * Optional radius around the city. Must be set together with distance_unit.
24519
+ * Optional radius around the city. Must be set together with distance_unit. Meta enforces a minimum city radius (~17 km / 10 mi); smaller values resolve to a 0-size audience and the ad fails at launch. For a tighter catchment use customLocations (lat/lng).
24490
24520
  */
24491
24521
  radius?: number;
24492
24522
  /**
@@ -26630,6 +26660,10 @@ export type CreateCtwaAdData = {
26630
26660
  * TargetingGeoLocationCity. `key` is Meta's city ID
26631
26661
  * (lookupable via GET /v1/ads/targeting/search). `radius`
26632
26662
  * and `distance_unit` are coupled: set both or neither.
26663
+ * Meta enforces a minimum city radius (~17 km / 10 mi);
26664
+ * smaller values resolve to a 0-size audience and the ad
26665
+ * fails at launch. For a tighter catchment use customLocations
26666
+ * (lat/lng).
26633
26667
  *
26634
26668
  */
26635
26669
  cities?: Array<{