@getlatedev/node 0.1.24 → 0.1.26

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.
@@ -94,12 +94,7 @@ export type ApiKey = {
94
94
  };
95
95
 
96
96
  /**
97
- * Bluesky post settings:
98
- * - Supports text posts with up to 4 images per post
99
- * - Videos supported (single video per post)
100
- * - threadItems creates a reply chain (Bluesky thread)
101
- * - Images exceeding Bluesky's 1MB limit are automatically compressed
102
- * - Alt text for images is supported via mediaItem properties
97
+ * Bluesky post settings. Supports text posts with up to 4 images or a single video. threadItems creates a reply chain (Bluesky thread). Images exceeding 1MB are automatically compressed. Alt text supported via mediaItem properties.
103
98
  *
104
99
  */
105
100
  export type BlueskyPlatformData = {
@@ -132,13 +127,7 @@ export type ConnectionLog = {
132
127
  accountId?: string;
133
128
  platform?: 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat';
134
129
  /**
135
- * Type of connection event:
136
- * - `connect_success` - New account connected successfully
137
- * - `connect_failed` - Connection attempt failed
138
- * - `disconnect` - Account was disconnected
139
- * - `reconnect_success` - Existing account reconnected successfully
140
- * - `reconnect_failed` - Reconnection attempt failed
141
- *
130
+ * Type of connection event: connect_success, connect_failed, disconnect, reconnect_success, reconnect_failed
142
131
  */
143
132
  eventType?: 'connect_success' | 'connect_failed' | 'disconnect' | 'reconnect_success' | 'reconnect_failed';
144
133
  /**
@@ -209,13 +198,7 @@ export type ConnectionLog = {
209
198
  export type platform = 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat';
210
199
 
211
200
  /**
212
- * Type of connection event:
213
- * - `connect_success` - New account connected successfully
214
- * - `connect_failed` - Connection attempt failed
215
- * - `disconnect` - Account was disconnected
216
- * - `reconnect_success` - Existing account reconnected successfully
217
- * - `reconnect_failed` - Reconnection attempt failed
218
- *
201
+ * Type of connection event: connect_success, connect_failed, disconnect, reconnect_success, reconnect_failed
219
202
  */
220
203
  export type eventType = 'connect_success' | 'connect_failed' | 'disconnect' | 'reconnect_success' | 'reconnect_failed';
221
204
 
@@ -248,14 +231,7 @@ export type ErrorResponse = {
248
231
  };
249
232
 
250
233
  /**
251
- * Constraints:
252
- * - Posts cannot mix videos and images.
253
- * - Multiple images supported via attached_media (up to 10 images for feed posts).
254
- * - Multiple videos in the same post are not supported.
255
- * - Stories require media (single image or video); text captions are not displayed with stories.
256
- * - Stories are ephemeral (disappear after 24 hours).
257
- * - Use pageId to post to multiple pages from the same account connection.
258
- *
234
+ * Up to 10 images for feed posts, cannot mix videos and images. Stories require single image or video (ephemeral 24h, no captions). Use pageId for multi-page posting.
259
235
  */
260
236
  export type FacebookPlatformData = {
261
237
  /**
@@ -267,10 +243,7 @@ export type FacebookPlatformData = {
267
243
  */
268
244
  firstComment?: string;
269
245
  /**
270
- * Target Facebook Page ID for multi-page posting.
271
- * If omitted, uses the selected/default page on the connection.
272
- * Use GET /api/v1/accounts/{id}/facebook-page to list available pages.
273
- *
246
+ * Target Facebook Page ID for multi-page posting. If omitted, uses the default page. Use GET /v1/accounts/{id}/facebook-page to list pages.
274
247
  */
275
248
  pageId?: string;
276
249
  };
@@ -365,30 +338,15 @@ export type FoodMenuSection = {
365
338
  };
366
339
 
367
340
  /**
368
- * Google Business Profile post settings:
369
- * - Posts support text content and a single image (no videos)
370
- * - Images must be publicly accessible URLs
371
- * - Call-to-action buttons drive user engagement
372
- * - Posts appear on your Google Business Profile and in Google Search/Maps
373
- * - Use locationId to post to multiple locations from the same account connection
374
- * - Language is auto-detected from content; override with languageCode if needed
375
- *
341
+ * Text and single image only (no videos). Optional call-to-action button. Posts appear on GBP, Google Search, and Maps. Use locationId for multi-location posting.
376
342
  */
377
343
  export type GoogleBusinessPlatformData = {
378
344
  /**
379
- * Target Google Business location ID for multi-location posting.
380
- * Format: "locations/123456789"
381
- * If omitted, uses the selected/default location on the connection.
382
- * Use GET /api/v1/accounts/{id}/gmb-locations to list available locations.
383
- *
345
+ * Target GBP location ID (e.g. "locations/123456789"). If omitted, uses the default location. Use GET /v1/accounts/{id}/gmb-locations to list locations.
384
346
  */
385
347
  locationId?: string;
386
348
  /**
387
- * BCP 47 language code for the post content (e.g., "en", "de", "es", "fr").
388
- * If omitted, the language is automatically detected from the post text.
389
- * Setting this explicitly is recommended when auto-detection may not be accurate
390
- * (e.g., very short posts, mixed-language content, or transliterated text).
391
- *
349
+ * BCP 47 language code (e.g. "en", "de", "es"). Auto-detected if omitted. Set explicitly for short or mixed-language posts.
392
350
  */
393
351
  languageCode?: string;
394
352
  /**
@@ -396,14 +354,7 @@ export type GoogleBusinessPlatformData = {
396
354
  */
397
355
  callToAction?: {
398
356
  /**
399
- * Button action type:
400
- * - LEARN_MORE: Link to more information
401
- * - BOOK: Booking/reservation link
402
- * - ORDER: Online ordering link
403
- * - SHOP: E-commerce/shopping link
404
- * - SIGN_UP: Registration/signup link
405
- * - CALL: Phone call action
406
- *
357
+ * Button action type: LEARN_MORE, BOOK, ORDER, SHOP, SIGN_UP, CALL
407
358
  */
408
359
  type: 'LEARN_MORE' | 'BOOK' | 'ORDER' | 'SHOP' | 'SIGN_UP' | 'CALL';
409
360
  /**
@@ -414,14 +365,7 @@ export type GoogleBusinessPlatformData = {
414
365
  };
415
366
 
416
367
  /**
417
- * Button action type:
418
- * - LEARN_MORE: Link to more information
419
- * - BOOK: Booking/reservation link
420
- * - ORDER: Online ordering link
421
- * - SHOP: E-commerce/shopping link
422
- * - SIGN_UP: Registration/signup link
423
- * - CALL: Phone call action
424
- *
368
+ * Button action type: LEARN_MORE, BOOK, ORDER, SHOP, SIGN_UP, CALL
425
369
  */
426
370
  export type type = 'LEARN_MORE' | 'BOOK' | 'ORDER' | 'SHOP' | 'SIGN_UP' | 'CALL';
427
371
 
@@ -438,21 +382,7 @@ export type HashtagInfo = {
438
382
  export type status = 'safe' | 'banned' | 'restricted' | 'unknown';
439
383
 
440
384
  /**
441
- * Constraints:
442
- * - Feed posts require images with aspect ratio between 0.8 (4:5 portrait) and 1.91 (1.91:1 landscape).
443
- * - Images outside this range (e.g., 9:16 Stories/TikTok format) must use contentType 'story'.
444
- * - Validation happens at post creation; invalid images are rejected immediately with helpful error messages.
445
- * - Carousels support up to 10 media items.
446
- * - Stories require media; no captions are published with Stories.
447
- * - User tags: coordinates range from 0.0 to 1.0 representing position from top-left corner. For carousels, use `mediaIndex` to tag specific slides. Tagged users receive notifications.
448
- *
449
- * **Automatic Compression (similar to Bluesky):**
450
- * - All images (story, post, carousel, thumbnails) exceeding 8 MB are automatically compressed using quality reduction and resizing.
451
- * - Story videos exceeding 100 MB are automatically compressed.
452
- * - Reel videos exceeding 300 MB are automatically compressed.
453
- * - Compression uses Sharp (images) and FFmpeg (videos) to maintain quality while meeting size limits.
454
- * - Original files are preserved; compressed versions are uploaded to blob storage automatically.
455
- *
385
+ * Feed aspect ratio 0.8-1.91, carousels up to 10 items, stories require media (no captions). User tag coordinates 0.0-1.0 from top-left. Images over 8 MB and videos over platform limits are auto-compressed.
456
386
  */
457
387
  export type InstagramPlatformData = {
458
388
  /**
@@ -472,27 +402,16 @@ export type InstagramPlatformData = {
472
402
  */
473
403
  firstComment?: string;
474
404
  /**
475
- * Trial Reels configuration. Trial reels are only shared to non-followers initially.
476
- * They can later be "graduated" (converted to regular reels visible to followers)
477
- * either manually in the Instagram app or automatically based on performance.
478
- * Only applies to Reels (video posts).
479
- *
405
+ * Trial Reels configuration. Trial reels are shared to non-followers first and can later be graduated to regular reels manually or automatically based on performance. Only applies to Reels.
480
406
  */
481
407
  trialParams?: {
482
408
  /**
483
- * The graduation strategy specifies when a trial reel becomes a regular reel:
484
- * - MANUAL: The trial reel can only be manually graduated from the native Instagram app.
485
- * - SS_PERFORMANCE: The trial reel will be automatically graduated if it performs well with non-followers.
486
- *
409
+ * MANUAL (graduate from Instagram app) or SS_PERFORMANCE (auto-graduate if performs well with non-followers)
487
410
  */
488
411
  graduationStrategy?: 'MANUAL' | 'SS_PERFORMANCE';
489
412
  };
490
413
  /**
491
- * Tag Instagram users in photos by username and position coordinates. Not supported for stories or videos.
492
- * For carousel posts, use the optional `mediaIndex` field to specify which slide each tag applies to.
493
- * Tags without `mediaIndex` default to the first image (index 0) for backwards compatibility.
494
- * Tags targeting video items are silently skipped (Instagram only supports tagging on images).
495
- *
414
+ * Tag Instagram users in photos by username and position. Not supported for stories or videos. For carousels, use mediaIndex to target specific slides (defaults to 0). Tags on video items are silently skipped.
496
415
  */
497
416
  userTags?: Array<{
498
417
  /**
@@ -508,34 +427,22 @@ export type InstagramPlatformData = {
508
427
  */
509
428
  y: number;
510
429
  /**
511
- * Zero-based index of the carousel item to tag. Defaults to 0 (first image) if omitted.
512
- * Only relevant for carousel posts. Tags targeting video items or out-of-range indices are ignored.
513
- *
430
+ * Zero-based index of the carousel item to tag. Defaults to 0. Tags on video items or out-of-range indices are ignored.
514
431
  */
515
432
  mediaIndex?: number;
516
433
  }>;
517
434
  /**
518
- * Custom name for the original audio in Reels. Replaces the default "Original Audio" label.
519
- * Only applies to Reels (video posts). Can only be set once - either during creation or
520
- * later from the Instagram audio page in the app.
521
- *
435
+ * Custom name for original audio in Reels. Replaces the default "Original Audio" label. Can only be set once.
522
436
  */
523
437
  audioName?: string;
524
438
  /**
525
- * Millisecond offset from the start of the video to use as the Reel thumbnail.
526
- * Only applies to Reels (video posts). If a custom thumbnail URL (instagramThumbnail
527
- * in mediaItems) is provided, it takes priority and this offset is ignored.
528
- * Defaults to 0 (first frame).
529
- *
439
+ * Millisecond offset from video start for the Reel thumbnail. Ignored if a custom thumbnail URL is provided. Defaults to 0.
530
440
  */
531
441
  thumbOffset?: number;
532
442
  };
533
443
 
534
444
  /**
535
- * The graduation strategy specifies when a trial reel becomes a regular reel:
536
- * - MANUAL: The trial reel can only be manually graduated from the native Instagram app.
537
- * - SS_PERFORMANCE: The trial reel will be automatically graduated if it performs well with non-followers.
538
- *
445
+ * MANUAL (graduate from Instagram app) or SS_PERFORMANCE (auto-graduate if performs well with non-followers)
539
446
  */
540
447
  export type graduationStrategy = 'MANUAL' | 'SS_PERFORMANCE';
541
448
 
@@ -553,9 +460,7 @@ export type LinkedInAggregateAnalyticsDailyResponse = {
553
460
  endDate?: string;
554
461
  } | null;
555
462
  /**
556
- * Daily breakdown of each metric. Each metric contains an array of date/count pairs.
557
- * Note: 'reach' (MEMBERS_REACHED) is not available with DAILY aggregation per LinkedIn API limitations.
558
- *
463
+ * Daily breakdown of each metric as date/count pairs. Reach not available with DAILY aggregation.
559
464
  */
560
465
  analytics?: {
561
466
  impressions?: Array<{
@@ -631,22 +536,11 @@ export type LinkedInAggregateAnalyticsTotalResponse = {
631
536
  export type aggregation3 = 'TOTAL';
632
537
 
633
538
  /**
634
- * Constraints:
635
- * - Multi-image posts support up to 20 images.
636
- * - Multi-video posts are not supported.
637
- * - Single PDF document posts are supported (max 100MB, ~300 pages). Documents cannot be mixed with other media.
638
- * - Post ID is returned in the x-restli-id response header.
639
- * - Link previews are automatically generated for URLs when no media is attached (can be disabled with disableLinkPreview).
640
- * - Use organizationUrn to post to multiple organizations from the same account connection.
641
- *
539
+ * Up to 20 images, no multi-video. Single PDF supported (max 100MB). Link previews auto-generated when no media attached. Use organizationUrn for multi-org posting.
642
540
  */
643
541
  export type LinkedInPlatformData = {
644
542
  /**
645
- * Target LinkedIn Organization URN for multi-organization posting.
646
- * Format: "urn:li:organization:123456789"
647
- * If omitted, uses the selected/default organization on the connection.
648
- * Use GET /api/v1/accounts/{id}/linkedin-organizations to list available organizations.
649
- *
543
+ * Target LinkedIn Organization URN (e.g. "urn:li:organization:123456789"). If omitted, uses the default org. Use GET /v1/accounts/{id}/linkedin-organizations to list orgs.
650
544
  */
651
545
  organizationUrn?: string;
652
546
  /**
@@ -660,16 +554,7 @@ export type LinkedInPlatformData = {
660
554
  };
661
555
 
662
556
  /**
663
- * Media referenced in posts. URLs must be publicly reachable over HTTPS by the destination platforms.
664
- * When using third-party storage, ensure signed links remain valid until upload completes.
665
- *
666
- * **Uploading Media:**
667
- * Use `POST /v1/media/presign` to get a presigned URL, then upload your file directly to cloud storage.
668
- * Supports files up to 5GB. See the `/v1/media/presign` endpoint documentation for details.
669
- *
670
- * **Automatic Media Compression:**
671
- * Late automatically compresses images and videos that exceed platform limits. Compression happens server-side during publishing. Videos larger than 200 MB may not be compressed due to server timeout constraints.
672
- *
557
+ * Media referenced in posts. URLs must be publicly reachable over HTTPS. Use POST /v1/media/presign for uploads up to 5GB. Late auto-compresses images and videos that exceed platform limits (videos over 200 MB may not be compressed).
673
558
  */
674
559
  export type MediaItem = {
675
560
  type?: 'image' | 'video' | 'gif' | 'document';
@@ -805,11 +690,7 @@ export type PlatformTarget = {
805
690
  */
806
691
  platformPostId?: string;
807
692
  /**
808
- * Public URL of the published post on the platform.
809
- * Populated after successful publish. For immediate posts (publishNow=true),
810
- * this is included in the response. For scheduled posts, fetch the post
811
- * via GET /v1/posts/{postId} after the scheduled time.
812
- *
693
+ * Public URL of the published post. Included in the response for immediate posts; for scheduled posts, fetch via GET /v1/posts/{postId} after publish time.
813
694
  */
814
695
  platformPostUrl?: string;
815
696
  /**
@@ -817,59 +698,26 @@ export type PlatformTarget = {
817
698
  */
818
699
  publishedAt?: string;
819
700
  /**
820
- * Human-readable error message when status is 'failed'.
821
- * Contains platform-specific error details explaining why the publish failed.
822
- * Examples:
823
- * - "Instagram access token has expired. Please reconnect your account."
824
- * - "Post text exceeds the 500 character limit for Threads."
825
- * - "You do not have enough karma to post in this subreddit."
826
- * - "Video is too long for Reels. Facebook Reels must be 90 seconds or less."
827
- *
701
+ * Human-readable error message when status is failed. Contains platform-specific error details explaining why the publish failed.
828
702
  */
829
703
  errorMessage?: string;
830
704
  /**
831
- * Error category for programmatic handling:
832
- * - auth_expired: Token expired or revoked, account needs reconnection
833
- * - user_content: Content doesn't meet platform requirements (too long, wrong format, etc.)
834
- * - user_abuse: Rate limits, spam detection, excessive posting
835
- * - account_issue: Account configuration problems (missing board, inactive account)
836
- * - platform_rejected: Platform rules violated (banned, suspended, policy violation)
837
- * - platform_error: Platform-side issues (5xx errors, maintenance)
838
- * - system_error: Late infrastructure issues (timeouts, network errors)
839
- * - unknown: Unclassified error
840
- *
705
+ * Error category for programmatic handling: auth_expired (token expired/revoked), user_content (wrong format/too long), user_abuse (rate limits/spam), account_issue (config problems), platform_rejected (policy violation), platform_error (5xx/maintenance), system_error (Late infra), unknown
841
706
  */
842
707
  errorCategory?: 'auth_expired' | 'user_content' | 'user_abuse' | 'account_issue' | 'platform_rejected' | 'platform_error' | 'system_error' | 'unknown';
843
708
  /**
844
- * Who/what caused the error:
845
- * - user: User action required (fix content, reconnect account)
846
- * - platform: Platform-side issue (outage, API change)
847
- * - system: Late system issue (rare)
848
- *
709
+ * Who caused the error: user (fix content/reconnect), platform (outage/API change), system (Late issue, rare)
849
710
  */
850
711
  errorSource?: 'user' | 'platform' | 'system';
851
712
  };
852
713
 
853
714
  /**
854
- * Error category for programmatic handling:
855
- * - auth_expired: Token expired or revoked, account needs reconnection
856
- * - user_content: Content doesn't meet platform requirements (too long, wrong format, etc.)
857
- * - user_abuse: Rate limits, spam detection, excessive posting
858
- * - account_issue: Account configuration problems (missing board, inactive account)
859
- * - platform_rejected: Platform rules violated (banned, suspended, policy violation)
860
- * - platform_error: Platform-side issues (5xx errors, maintenance)
861
- * - system_error: Late infrastructure issues (timeouts, network errors)
862
- * - unknown: Unclassified error
863
- *
715
+ * Error category for programmatic handling: auth_expired (token expired/revoked), user_content (wrong format/too long), user_abuse (rate limits/spam), account_issue (config problems), platform_rejected (policy violation), platform_error (5xx/maintenance), system_error (Late infra), unknown
864
716
  */
865
717
  export type errorCategory = 'auth_expired' | 'user_content' | 'user_abuse' | 'account_issue' | 'platform_rejected' | 'platform_error' | 'system_error' | 'unknown';
866
718
 
867
719
  /**
868
- * Who/what caused the error:
869
- * - user: User action required (fix content, reconnect account)
870
- * - platform: Platform-side issue (outage, API change)
871
- * - system: Late system issue (rare)
872
- *
720
+ * Who caused the error: user (fix content/reconnect), platform (outage/API change), system (Late issue, rare)
873
721
  */
874
722
  export type errorSource = 'user' | 'platform' | 'system';
875
723
 
@@ -888,11 +736,7 @@ export type Post = {
888
736
  timezone?: string;
889
737
  status?: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed' | 'partial';
890
738
  /**
891
- * YouTube tag constraints when targeting YouTube:
892
- * - No count cap; duplicates removed.
893
- * - Each tag must be ≤ 100 chars.
894
- * - Combined characters across all tags ≤ 500.
895
- *
739
+ * YouTube constraints: each tag max 100 chars, combined max 500 chars, duplicates removed.
896
740
  */
897
741
  tags?: Array<(string)>;
898
742
  hashtags?: Array<(string)>;
@@ -962,14 +806,7 @@ export type PostLog = {
962
806
  accountId?: string;
963
807
  accountUsername?: string;
964
808
  /**
965
- * Type of action logged:
966
- * - `publish` - Initial publish attempt
967
- * - `retry` - Retry after failure
968
- * - `media_upload` - Media upload step
969
- * - `rate_limit_pause` - Account paused due to rate limits
970
- * - `token_refresh` - Token was refreshed
971
- * - `cancelled` - Post was cancelled
972
- *
809
+ * Type of action logged: publish (initial attempt), retry (after failure), media_upload, rate_limit_pause, token_refresh, cancelled
973
810
  */
974
811
  action?: 'publish' | 'retry' | 'media_upload' | 'rate_limit_pause' | 'token_refresh' | 'cancelled';
975
812
  status?: 'success' | 'failed' | 'pending' | 'skipped';
@@ -1032,52 +869,12 @@ export type PostLog = {
1032
869
  };
1033
870
 
1034
871
  /**
1035
- * Type of action logged:
1036
- * - `publish` - Initial publish attempt
1037
- * - `retry` - Retry after failure
1038
- * - `media_upload` - Media upload step
1039
- * - `rate_limit_pause` - Account paused due to rate limits
1040
- * - `token_refresh` - Token was refreshed
1041
- * - `cancelled` - Post was cancelled
1042
- *
872
+ * Type of action logged: publish (initial attempt), retry (after failure), media_upload, rate_limit_pause, token_refresh, cancelled
1043
873
  */
1044
874
  export type action = 'publish' | 'retry' | 'media_upload' | 'rate_limit_pause' | 'token_refresh' | 'cancelled';
1045
875
 
1046
876
  export type status3 = 'success' | 'failed' | 'pending' | 'skipped';
1047
877
 
1048
- export type PostLogDetail = PostLog & {
1049
- /**
1050
- * Populated post with full details
1051
- */
1052
- postId?: {
1053
- _id?: string;
1054
- content?: string;
1055
- status?: string;
1056
- scheduledFor?: string;
1057
- platforms?: Array<{
1058
- [key: string]: unknown;
1059
- }>;
1060
- mediaItems?: Array<{
1061
- [key: string]: unknown;
1062
- }>;
1063
- };
1064
- /**
1065
- * Populated account reference
1066
- */
1067
- accountId?: {
1068
- _id?: string;
1069
- platform?: string;
1070
- username?: string;
1071
- displayName?: string;
1072
- };
1073
- /**
1074
- * Additional metadata (e.g., rate limit info)
1075
- */
1076
- metadata?: {
1077
- [key: string]: unknown;
1078
- };
1079
- };
1080
-
1081
878
  export type PostRetryResponse = {
1082
879
  message?: string;
1083
880
  post?: Post;
@@ -1101,10 +898,7 @@ export type Profile = {
1101
898
  color?: string;
1102
899
  isDefault?: boolean;
1103
900
  /**
1104
- * Only present when `includeOverLimit=true` is used. Indicates if this profile
1105
- * exceeds the user's plan limit. Over-limit profiles cannot be used for posting
1106
- * but can be managed (disconnected accounts, deleted).
1107
- *
901
+ * Only present when includeOverLimit=true. Indicates if this profile exceeds the plan limit.
1108
902
  */
1109
903
  isOverLimit?: boolean;
1110
904
  createdAt?: string;
@@ -1204,22 +998,11 @@ export type QueueUpdateResponse = {
1204
998
  };
1205
999
 
1206
1000
  /**
1207
- * Reddit post settings:
1208
- * - Posts are either "link" (with URL/media) or "self" (text-only)
1209
- * - If media is provided, the first media item's URL is used as the link
1210
- * - Use forceSelf to override and create a text post with the URL in the body
1211
- * - Subreddit defaults to the account's configured subreddit if omitted
1212
- * - Use the same accountId multiple times with different subreddit values in platformSpecificData to post to multiple subreddits
1213
- * - Images are automatically compressed if they exceed Reddit's 20MB limit
1214
- * - Some subreddits require a flair; if not provided, the API will attempt to use the first available flair as fallback
1215
- *
1001
+ * Posts are either link (with URL/media) or self (text-only). Use forceSelf to override. Subreddit defaults to the account's configured one. Some subreddits require a flair.
1216
1002
  */
1217
1003
  export type RedditPlatformData = {
1218
1004
  /**
1219
- * Target subreddit name (without "r/" prefix).
1220
- * Overrides the default subreddit configured on the account connection.
1221
- * Use GET /api/v1/accounts/{id}/reddit-subreddits to list available subreddits.
1222
- *
1005
+ * Target subreddit name (without "r/" prefix). Overrides the default. Use GET /v1/accounts/{id}/reddit-subreddits to list options.
1223
1006
  */
1224
1007
  subreddit?: string;
1225
1008
  /**
@@ -1235,38 +1018,23 @@ export type RedditPlatformData = {
1235
1018
  */
1236
1019
  forceSelf?: boolean;
1237
1020
  /**
1238
- * Flair ID for the post. Required by some subreddits.
1239
- * Use GET /api/v1/accounts/{id}/reddit-flairs?subreddit=name to list available flairs.
1240
- *
1021
+ * Flair ID for the post. Required by some subreddits. Use GET /v1/accounts/{id}/reddit-flairs?subreddit=name to list flairs.
1241
1022
  */
1242
1023
  flairId?: string;
1243
1024
  };
1244
1025
 
1245
1026
  /**
1246
- * Snapchat requires a Public Profile. Media is required for all content types (single item only, auto-encrypted before upload).
1247
- *
1248
- * **Content types:** Story (ephemeral 24h, no caption), Saved Story (permanent, title max 45 chars), Spotlight (video, description max 160 chars).
1249
- *
1250
- * **Media limits:** Images max 20 MB (JPEG/PNG), videos max 500 MB (MP4, 5-60s, min 540x960px, 9:16 recommended).
1251
- *
1027
+ * Requires a Public Profile. Single media item only. Content types: story (ephemeral 24h), saved_story (permanent, title max 45 chars), spotlight (video, max 160 chars).
1252
1028
  */
1253
1029
  export type SnapchatPlatformData = {
1254
1030
  /**
1255
- * Type of Snapchat content to publish:
1256
- * - `story` - Ephemeral snap visible for 24 hours (default)
1257
- * - `saved_story` - Permanent story saved to Public Profile
1258
- * - `spotlight` - Video posted to Spotlight (Snapchat's TikTok-like feed)
1259
- *
1031
+ * Content type: story (ephemeral 24h, default), saved_story (permanent on Public Profile), spotlight (video feed)
1260
1032
  */
1261
1033
  contentType?: 'story' | 'saved_story' | 'spotlight';
1262
1034
  };
1263
1035
 
1264
1036
  /**
1265
- * Type of Snapchat content to publish:
1266
- * - `story` - Ephemeral snap visible for 24 hours (default)
1267
- * - `saved_story` - Permanent story saved to Public Profile
1268
- * - `spotlight` - Video posted to Spotlight (Snapchat's TikTok-like feed)
1269
- *
1037
+ * Content type: story (ephemeral 24h, default), saved_story (permanent on Public Profile), spotlight (video feed)
1270
1038
  */
1271
1039
  export type contentType2 = 'story' | 'saved_story' | 'spotlight';
1272
1040
 
@@ -1277,20 +1045,7 @@ export type SocialAccount = {
1277
1045
  username?: string;
1278
1046
  displayName?: string;
1279
1047
  /**
1280
- * Full profile URL for the connected account. Available for all platforms:
1281
- * - Twitter/X: https://x.com/{username}
1282
- * - Instagram: https://instagram.com/{username}
1283
- * - TikTok: https://tiktok.com/@{username}
1284
- * - YouTube: https://youtube.com/@{handle} or https://youtube.com/channel/{id}
1285
- * - LinkedIn Personal: https://www.linkedin.com/in/{vanityName}/
1286
- * - LinkedIn Organization: https://www.linkedin.com/company/{vanityName}/
1287
- * - Threads: https://threads.net/@{username}
1288
- * - Pinterest: https://pinterest.com/{username}
1289
- * - Reddit: https://reddit.com/user/{username}
1290
- * - Bluesky: https://bsky.app/profile/{handle}
1291
- * - Facebook: https://facebook.com/{username} or https://facebook.com/{pageId}
1292
- * - Google Business: Google Maps URL for the business location
1293
- *
1048
+ * Full profile URL for the connected account on its platform.
1294
1049
  */
1295
1050
  profileUrl?: string;
1296
1051
  isActive?: boolean;
@@ -1305,18 +1060,7 @@ export type SocialAccount = {
1305
1060
  };
1306
1061
 
1307
1062
  /**
1308
- * Telegram channel/group posting settings:
1309
- * - Supports text, images (up to 10), videos (up to 10), and mixed media albums
1310
- * - Posts to channels display the channel name and logo as author
1311
- * - Posts to groups display the bot name (Late) as author
1312
- * - Message IDs are returned for analytics tracking
1313
- * - Captions support up to 1024 characters for media posts, 4096 for text-only
1314
- *
1315
- * **Analytics:**
1316
- * - **Not available via API.** The Telegram Bot API does not expose message analytics (views, forwards, reactions).
1317
- * - View counts are only visible to channel admins directly in the Telegram app.
1318
- * - This is a Telegram platform limitation that affects all third-party tools.
1319
- *
1063
+ * Text, images (up to 10), videos (up to 10), and mixed media albums. Captions up to 1024 chars for media, 4096 for text-only.
1320
1064
  */
1321
1065
  export type TelegramPlatformData = {
1322
1066
  /**
@@ -1343,13 +1087,7 @@ export type TelegramPlatformData = {
1343
1087
  export type parseMode = 'HTML' | 'Markdown' | 'MarkdownV2';
1344
1088
 
1345
1089
  /**
1346
- * Constraints:
1347
- * - Carousel posts support up to 10 images (no videos in carousels).
1348
- * - Single posts support one image or one video.
1349
- * - Videos must be H.264/AAC MP4 format, max 5 minutes duration.
1350
- * - Images must be JPEG or PNG, max 8 MB each.
1351
- * - threadItems creates a reply chain (Threads equivalent of Twitter threads).
1352
- *
1090
+ * Up to 10 images per carousel (no videos). Videos must be H.264/AAC MP4, max 5 min. Images JPEG/PNG, max 8 MB. Use threadItems for reply chains.
1353
1091
  */
1354
1092
  export type ThreadsPlatformData = {
1355
1093
  /**
@@ -1362,25 +1100,11 @@ export type ThreadsPlatformData = {
1362
1100
  };
1363
1101
 
1364
1102
  /**
1365
- * TikTok platform-specific settings for video/photo posting.
1366
- *
1367
- * **Constraints:**
1368
- * - Photo carousels support up to 35 images.
1369
- * - **Title length limits**:
1370
- * - Videos: up to 2200 chars (full content used as title)
1371
- * - Photos: content is automatically truncated to 90 chars for title (hashtags/URLs stripped). Use 'description' field for longer text (up to 4000 chars).
1372
- * - privacyLevel must be chosen from creator_info.privacy_level_options (no defaulting).
1373
- * - allowDuet and allowStitch required for videos; allowComment for all.
1374
- * - contentPreviewConfirmed and expressConsentGiven must be true before posting.
1375
- *
1376
- * **Note:** Both camelCase and snake_case field names are accepted for backwards compatibility.
1377
- * The nested `tiktokSettings` object format is also still supported but deprecated.
1378
- *
1103
+ * Photo carousels up to 35 images. Video titles up to 2200 chars, photo titles truncated to 90 chars. privacyLevel must match creator_info options. Both camelCase and snake_case accepted.
1379
1104
  */
1380
1105
  export type TikTokPlatformData = {
1381
1106
  /**
1382
- * When true, Late sends the post to the TikTok Creator Inbox as a draft instead of publishing it immediately. When omitted or false, TikTok uses direct posting (live publish) as usual.
1383
- *
1107
+ * When true, sends the post to the TikTok Creator Inbox as a draft instead of publishing immediately.
1384
1108
  */
1385
1109
  draft?: boolean;
1386
1110
  /**
@@ -1440,9 +1164,7 @@ export type TikTokPlatformData = {
1440
1164
  */
1441
1165
  videoMadeWithAi?: boolean;
1442
1166
  /**
1443
- * Optional long-form description for photo posts (max 4000 chars).
1444
- * Recommended for photo posts when content exceeds 90 characters, as photo titles are automatically truncated to 90 chars (after stripping hashtags/URLs).
1445
- *
1167
+ * Optional long-form description for photo posts (max 4000 chars). Recommended when content exceeds 90 chars, as photo titles are auto-truncated.
1446
1168
  */
1447
1169
  description?: string;
1448
1170
  };
@@ -1457,30 +1179,6 @@ export type commercialContentType = 'none' | 'brand_organic' | 'brand_content';
1457
1179
  */
1458
1180
  export type mediaType = 'video' | 'photo';
1459
1181
 
1460
- /**
1461
- * **DEPRECATED**: Use flat properties directly in TikTokPlatformData instead.
1462
- * This nested format is supported for backwards compatibility only.
1463
- *
1464
- * @deprecated
1465
- */
1466
- export type TikTokSettings = {
1467
- privacyLevel?: string;
1468
- allowComment?: boolean;
1469
- allowDuet?: boolean;
1470
- allowStitch?: boolean;
1471
- commercialContentType?: string;
1472
- brandPartnerPromote?: boolean;
1473
- isBrandOrganicPost?: boolean;
1474
- contentPreviewConfirmed?: boolean;
1475
- expressConsentGiven?: boolean;
1476
- mediaType?: string;
1477
- videoCoverTimestampMs?: number;
1478
- photoCoverIndex?: number;
1479
- autoAddMusic?: boolean;
1480
- videoMadeWithAi?: boolean;
1481
- description?: string;
1482
- };
1483
-
1484
1182
  export type TranscriptResponse = {
1485
1183
  transcript?: string;
1486
1184
  segments?: Array<TranscriptSegment>;
@@ -1897,16 +1595,7 @@ export type YouTubeDailyViewsResponse = {
1897
1595
  };
1898
1596
 
1899
1597
  /**
1900
- * YouTube video upload settings:
1901
- * - Videos ≤ 3 minutes are automatically detected as YouTube Shorts
1902
- * - Videos > 3 minutes become regular YouTube videos
1903
- * - Custom thumbnails supported for regular videos (via mediaItem.thumbnail)
1904
- * - Custom thumbnails NOT supported for Shorts via API
1905
- * - Scheduled videos are uploaded immediately as the specified visibility and published at scheduled time
1906
- * - Visibility defaults to "public" if not specified
1907
- * - madeForKids defaults to false (not child-directed)
1908
- * - Set containsSyntheticMedia: true if your video contains AI-generated content
1909
- *
1598
+ * Videos under 3 min auto-detected as Shorts. Custom thumbnails for regular videos only. Scheduled videos are uploaded immediately with the specified visibility.
1910
1599
  */
1911
1600
  export type YouTubePlatformData = {
1912
1601
  /**
@@ -1914,24 +1603,11 @@ export type YouTubePlatformData = {
1914
1603
  */
1915
1604
  title?: string;
1916
1605
  /**
1917
- * Video visibility setting:
1918
- * - public: Anyone can search for and watch (default)
1919
- * - unlisted: Only people with the link can watch
1920
- * - private: Only you and people you specifically share with can watch
1921
- *
1606
+ * Video visibility: public (default, anyone can watch), unlisted (link only), private (invite only)
1922
1607
  */
1923
1608
  visibility?: 'public' | 'private' | 'unlisted';
1924
1609
  /**
1925
- * COPPA compliance: Audience designation for the video.
1926
- * - true: Video is made for kids (child-directed content)
1927
- * - false: Video is NOT made for kids (default)
1928
- *
1929
- * This field maps to YouTube's `selfDeclaredMadeForKids` setting. Videos marked as made for kids
1930
- * have restricted features (no comments, no notifications, limited ad targeting).
1931
- *
1932
- * IMPORTANT: If not specified, defaults to false. YouTube requires this to be explicitly set,
1933
- * otherwise the video may be blocked from views until configured in YouTube Studio.
1934
- *
1610
+ * COPPA compliance flag. Set true for child-directed content (restricts comments, notifications, ad targeting). Defaults to false. YouTube may block views if not explicitly set.
1935
1611
  */
1936
1612
  madeForKids?: boolean;
1937
1613
  /**
@@ -1939,20 +1615,11 @@ export type YouTubePlatformData = {
1939
1615
  */
1940
1616
  firstComment?: string;
1941
1617
  /**
1942
- * AI-generated content disclosure flag. Set to true if your video contains AI-generated or synthetic content
1943
- * that could be mistaken for real people, places, or events. This helps viewers understand when realistic
1944
- * content has been created or altered using AI. YouTube may add a label to videos when this is set.
1945
- * Added to YouTube Data API in October 2024.
1946
- *
1618
+ * AI-generated content disclosure. Set true if the video contains synthetic content that could be mistaken for real. YouTube may add a label.
1947
1619
  */
1948
1620
  containsSyntheticMedia?: boolean;
1949
1621
  /**
1950
- * YouTube video category ID. Defaults to '22' (People & Blogs).
1951
- * Common categories: 1 (Film & Animation), 2 (Autos & Vehicles), 10 (Music),
1952
- * 15 (Pets & Animals), 17 (Sports), 20 (Gaming), 22 (People & Blogs),
1953
- * 23 (Comedy), 24 (Entertainment), 25 (News & Politics), 26 (Howto & Style),
1954
- * 27 (Education), 28 (Science & Technology).
1955
- *
1622
+ * YouTube video category ID. Defaults to 22 (People & Blogs). Common: 1 (Film), 2 (Autos), 10 (Music), 15 (Pets), 17 (Sports), 20 (Gaming), 23 (Comedy), 24 (Entertainment), 25 (News), 26 (Howto), 27 (Education), 28 (Science & Tech).
1956
1623
  */
1957
1624
  categoryId?: string;
1958
1625
  };
@@ -2207,10 +1874,7 @@ export type GetAnalyticsData = {
2207
1874
  */
2208
1875
  platform?: string;
2209
1876
  /**
2210
- * Returns analytics for a single post. Accepts both Late Post IDs (from `POST /v1/posts`)
2211
- * and External Post IDs (from this endpoint's list response). The API automatically
2212
- * resolves Late Post IDs to their corresponding External Post analytics.
2213
- *
1877
+ * Returns analytics for a single post. Accepts both Late Post IDs and External Post IDs. Late IDs are auto-resolved to External Post analytics.
2214
1878
  */
2215
1879
  postId?: string;
2216
1880
  /**
@@ -2222,11 +1886,7 @@ export type GetAnalyticsData = {
2222
1886
  */
2223
1887
  sortBy?: 'date' | 'engagement';
2224
1888
  /**
2225
- * Filter by post source:
2226
- * - `late` - Only posts scheduled/published via Late API
2227
- * - `external` - Only posts synced from the platform (not posted via Late)
2228
- * - `all` - All posts (default)
2229
- *
1889
+ * Filter by post source: late (posted via Late API), external (synced from platform), all (default)
2230
1890
  */
2231
1891
  source?: 'all' | 'late' | 'external';
2232
1892
  /**
@@ -2474,9 +2134,7 @@ export type CreatePostData = {
2474
2134
  body: {
2475
2135
  title?: string;
2476
2136
  /**
2477
- * Post caption/text content. Optional when media is attached (images, videos, etc.).
2478
- * Required for text-only posts. Can also be omitted if all platforms have customContent set.
2479
- *
2137
+ * Post caption/text. Optional when media is attached or all platforms have customContent. Required for text-only posts.
2480
2138
  */
2481
2139
  content?: string;
2482
2140
  mediaItems?: Array<{
@@ -2505,11 +2163,7 @@ export type CreatePostData = {
2505
2163
  isDraft?: boolean;
2506
2164
  timezone?: string;
2507
2165
  /**
2508
- * Tags/keywords for the post. YouTube-specific constraints:
2509
- * - No count limit; duplicates are automatically removed
2510
- * - Each tag must be ≤ 100 characters
2511
- * - Combined total across all tags ≤ 500 characters (YouTube's limit)
2512
- *
2166
+ * Tags/keywords. YouTube constraints: each tag max 100 chars, combined max 500 chars, duplicates auto-removed.
2513
2167
  */
2514
2168
  tags?: Array<(string)>;
2515
2169
  hashtags?: Array<(string)>;
@@ -2519,21 +2173,11 @@ export type CreatePostData = {
2519
2173
  [key: string]: unknown;
2520
2174
  };
2521
2175
  /**
2522
- * Root-level TikTok settings applied to all TikTok platforms in the request.
2523
- * This is a convenience shorthand. Settings here are merged into each TikTok
2524
- * platform's platformSpecificData, with platform-specific settings taking precedence.
2525
- *
2176
+ * Root-level TikTok settings applied to all TikTok platforms. Merged into each platform's platformSpecificData, with platform-specific settings taking precedence.
2526
2177
  */
2527
2178
  tiktokSettings?: TikTokPlatformData;
2528
2179
  /**
2529
- * Profile ID to schedule via queue.
2530
- *
2531
- * When provided (without `scheduledFor`), the post will be automatically assigned
2532
- * to the next available slot from the profile's queue. The system uses distributed
2533
- * locking to prevent race conditions when multiple posts are scheduled concurrently.
2534
- * Do not call `/v1/queue/next-slot` and then use that time in `scheduledFor`.
2535
- * That bypasses the queue system and can cause duplicate slot assignments.
2536
- *
2180
+ * Profile ID to schedule via queue. When provided without scheduledFor, the post is auto-assigned to the next available slot. Do not call /v1/queue/next-slot and use that time in scheduledFor, as that bypasses queue locking.
2537
2181
  */
2538
2182
  queuedFromProfile?: string;
2539
2183
  /**
@@ -2584,10 +2228,7 @@ export type UpdatePostData = {
2584
2228
  content?: string;
2585
2229
  scheduledFor?: string;
2586
2230
  /**
2587
- * Root-level TikTok settings applied to all TikTok platforms in the request.
2588
- * This is a convenience shorthand. Settings here are merged into each TikTok
2589
- * platform's platformSpecificData, with platform-specific settings taking precedence.
2590
- *
2231
+ * Root-level TikTok settings applied to all TikTok platforms. Merged into each platform's platformSpecificData, with platform-specific settings taking precedence.
2591
2232
  */
2592
2233
  tiktokSettings?: TikTokPlatformData;
2593
2234
  [key: string]: unknown | string | TikTokPlatformData;
@@ -2724,10 +2365,7 @@ export type GetUserError = ({
2724
2365
  export type ListProfilesData = {
2725
2366
  query?: {
2726
2367
  /**
2727
- * When true, includes profiles that exceed the user's plan limit.
2728
- * Over-limit profiles will have `isOverLimit: true` in the response.
2729
- * Useful for managing/deleting profiles after a plan downgrade.
2730
- *
2368
+ * When true, includes over-limit profiles (marked with isOverLimit: true).
2731
2369
  */
2732
2370
  includeOverLimit?: boolean;
2733
2371
  };
@@ -2805,9 +2443,7 @@ export type DeleteProfileError = (unknown | {
2805
2443
  export type ListAccountsData = {
2806
2444
  query?: {
2807
2445
  /**
2808
- * When true, includes accounts from profiles that exceed the user's plan limit.
2809
- * Useful for disconnecting accounts from over-limit profiles so they can be deleted.
2810
- *
2446
+ * When true, includes accounts from over-limit profiles.
2811
2447
  */
2812
2448
  includeOverLimit?: boolean;
2813
2449
  /**
@@ -3117,14 +2753,7 @@ export type GetConnectUrlData = {
3117
2753
  */
3118
2754
  profileId: string;
3119
2755
  /**
3120
- * Your custom redirect URL after connection completes.
3121
- *
3122
- * **Standard Mode:** After the user selects an account, Late redirects here with `?connected={platform}&profileId=X&username=Y`.
3123
- *
3124
- * **Headless Mode:** Pass `headless=true` as a query parameter on this endpoint. After OAuth, the user is redirected to your URL with OAuth data (`profileId`, `tempToken`, `userProfile`, `connect_token`, `platform`, `step`). See the main endpoint description for details.
3125
- *
3126
- * Example: `https://yourdomain.com/integrations/callback`
3127
- *
2756
+ * Your custom redirect URL after connection completes. Standard mode appends ?connected={platform}&profileId=X&username=Y. Headless mode appends OAuth data params.
3128
2757
  */
3129
2758
  redirect_url?: string;
3130
2759
  };
@@ -3322,9 +2951,7 @@ export type SelectGoogleBusinessLocationData = {
3322
2951
  */
3323
2952
  tempToken: string;
3324
2953
  /**
3325
- * Decoded user profile object from the OAuth callback. **Important:** This contains
3326
- * the refresh token needed for token refresh. Always include this field.
3327
- *
2954
+ * Decoded user profile from the OAuth callback. Contains the refresh token. Always include this field.
3328
2955
  */
3329
2956
  userProfile?: {
3330
2957
  id?: string;
@@ -3514,10 +3141,7 @@ export type GetGoogleBusinessLocationDetailsData = {
3514
3141
  };
3515
3142
  query?: {
3516
3143
  /**
3517
- * Comma-separated fields to return. Defaults to common fields.
3518
- * Available: name, title, phoneNumbers, categories, storefrontAddress, websiteUri,
3519
- * regularHours, specialHours, serviceArea, profile, openInfo, metadata, moreHours
3520
- *
3144
+ * Comma-separated fields to return. Available: name, title, phoneNumbers, categories, storefrontAddress, websiteUri, regularHours, specialHours, serviceArea, profile, openInfo, metadata, moreHours.
3521
3145
  */
3522
3146
  readMask?: string;
3523
3147
  };
@@ -3871,7 +3495,7 @@ export type DeleteGoogleBusinessPlaceActionError = (ErrorResponse);
3871
3495
  export type GetPendingOAuthDataData = {
3872
3496
  query: {
3873
3497
  /**
3874
- * The pending data token from the OAuth redirect URL (`pendingDataToken` parameter)
3498
+ * The pending data token from the OAuth redirect URL (pendingDataToken parameter)
3875
3499
  */
3876
3500
  token: string;
3877
3501
  };
@@ -4262,10 +3886,7 @@ export type ConnectBlueskyCredentialsData = {
4262
3886
  */
4263
3887
  appPassword: string;
4264
3888
  /**
4265
- * Required state parameter formatted as `{userId}-{profileId}`.
4266
- * - `userId`: Your Late user ID (get from `GET /v1/users` → `currentUserId`)
4267
- * - `profileId`: The profile ID to connect the account to (get from `GET /v1/profiles`)
4268
- *
3889
+ * Required state formatted as {userId}-{profileId}. Get userId from GET /v1/users and profileId from GET /v1/profiles.
4269
3890
  */
4270
3891
  state: string;
4271
3892
  /**
@@ -4323,10 +3944,7 @@ export type GetTelegramConnectStatusError = (unknown | {
4323
3944
  export type InitiateTelegramConnectData = {
4324
3945
  body: {
4325
3946
  /**
4326
- * The Telegram chat ID. Can be:
4327
- * - Numeric ID (e.g., "-1001234567890")
4328
- * - Username with @ prefix (e.g., "@mychannel")
4329
- *
3947
+ * The Telegram chat ID. Numeric ID (e.g. "-1001234567890") or username with @ prefix (e.g. "@mychannel").
4330
3948
  */
4331
3949
  chatId: string;
4332
3950
  /**
@@ -4459,31 +4077,19 @@ export type GetLinkedInAggregateAnalyticsData = {
4459
4077
  };
4460
4078
  query?: {
4461
4079
  /**
4462
- * Type of aggregation for the analytics data.
4463
- * - `TOTAL` (default): Returns single totals for each metric
4464
- * - `DAILY`: Returns daily breakdown of metrics
4465
- *
4466
- * Note: `MEMBERS_REACHED` metric is not available with `DAILY` aggregation.
4467
- *
4080
+ * TOTAL (default, lifetime totals) or DAILY (time series). MEMBERS_REACHED not available with DAILY.
4468
4081
  */
4469
4082
  aggregation?: 'TOTAL' | 'DAILY';
4470
4083
  /**
4471
- * End date for analytics data in YYYY-MM-DD format (exclusive).
4472
- * If provided without startDate, startDate defaults to 30 days before endDate.
4473
- *
4084
+ * End date (YYYY-MM-DD, exclusive). Defaults to today if omitted.
4474
4085
  */
4475
4086
  endDate?: string;
4476
4087
  /**
4477
- * Comma-separated list of metrics to fetch. If omitted, fetches all available metrics.
4478
- * Valid values: IMPRESSION, MEMBERS_REACHED, REACTION, COMMENT, RESHARE
4479
- *
4088
+ * Comma-separated metrics: IMPRESSION, MEMBERS_REACHED, REACTION, COMMENT, RESHARE. Omit for all.
4480
4089
  */
4481
4090
  metrics?: string;
4482
4091
  /**
4483
- * Start date for analytics data in YYYY-MM-DD format.
4484
- * If provided without endDate, endDate defaults to today.
4485
- * If omitted entirely, returns lifetime analytics.
4486
- *
4092
+ * Start date (YYYY-MM-DD). If omitted, returns lifetime analytics.
4487
4093
  */
4488
4094
  startDate?: string;
4489
4095
  };
@@ -4610,17 +4216,11 @@ export type GetLinkedInMentionsData = {
4610
4216
  };
4611
4217
  query: {
4612
4218
  /**
4613
- * The exact display name as shown on LinkedIn.
4614
- * - **Person mentions:** Required for clickable mentions. If not provided, a name is derived from the vanity URL which may not match exactly.
4615
- * - **Organization mentions:** Optional. If not provided, the company name is automatically retrieved from LinkedIn.
4616
- *
4219
+ * Exact display name as shown on LinkedIn. Required for person mentions to be clickable. Optional for org mentions.
4617
4220
  */
4618
4221
  displayName?: string;
4619
4222
  /**
4620
4223
  * LinkedIn profile URL, company URL, or vanity name.
4621
- * - Person: `miquelpalet`, `linkedin.com/in/miquelpalet`
4622
- * - Organization: `company/microsoft`, `linkedin.com/company/microsoft`
4623
- *
4624
4224
  */
4625
4225
  url: string;
4626
4226
  };
@@ -5151,73 +4751,6 @@ export type GetWebhookLogsError = ({
5151
4751
  error?: string;
5152
4752
  });
5153
4753
 
5154
- export type ListLogsData = {
5155
- query?: {
5156
- /**
5157
- * Filter by action type
5158
- */
5159
- action?: 'publish' | 'retry' | 'media_upload' | 'rate_limit_pause' | 'token_refresh' | 'cancelled' | 'all';
5160
- /**
5161
- * Number of days to look back (max 7)
5162
- */
5163
- days?: number;
5164
- /**
5165
- * Maximum number of logs to return (max 100)
5166
- */
5167
- limit?: number;
5168
- /**
5169
- * Filter by platform
5170
- */
5171
- platform?: 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'all';
5172
- /**
5173
- * Number of logs to skip (for pagination)
5174
- */
5175
- skip?: number;
5176
- /**
5177
- * Filter by log status
5178
- */
5179
- status?: 'success' | 'failed' | 'pending' | 'skipped' | 'all';
5180
- };
5181
- };
5182
-
5183
- export type ListLogsResponse = ({
5184
- logs?: Array<PostLog>;
5185
- pagination?: {
5186
- /**
5187
- * Total number of logs matching the query
5188
- */
5189
- total?: number;
5190
- limit?: number;
5191
- skip?: number;
5192
- /**
5193
- * Total number of pages
5194
- */
5195
- pages?: number;
5196
- hasMore?: boolean;
5197
- };
5198
- });
5199
-
5200
- export type ListLogsError = ({
5201
- error?: string;
5202
- });
5203
-
5204
- export type GetLogData = {
5205
- path: {
5206
- /**
5207
- * The log entry ID
5208
- */
5209
- logId: string;
5210
- };
5211
- };
5212
-
5213
- export type GetLogResponse = ({
5214
- log?: PostLogDetail;
5215
- });
5216
-
5217
- export type GetLogError = ({
5218
- error?: string;
5219
- } | unknown);
5220
-
5221
4754
  export type ListPostsLogsData = {
5222
4755
  query?: {
5223
4756
  /**
@@ -6043,12 +5576,7 @@ export type ListInboxCommentsError = ({
6043
5576
  export type GetInboxPostCommentsData = {
6044
5577
  path: {
6045
5578
  /**
6046
- * The post identifier. Accepts a Late post ID (MongoDB ObjectId) which is automatically resolved to the platform-specific post ID, or a platform-specific post ID directly (e.g. tweet ID, Facebook Graph ID, YouTube video ID).
6047
- *
6048
- * **LinkedIn:** For your own posts, the full URN stored in Late (e.g., `urn:li:share:7429218977714745345`) is used automatically.
6049
- * For third-party posts, pass either the full activity URN (e.g., `urn:li:activity:7422459067685855232`) or the raw numeric activity ID from the LinkedIn URL (automatically wrapped as `urn:li:activity:`).
6050
- * Note: LinkedIn post URLs use activity IDs (`linkedin.com/feed/update/urn:li:activity:XXXX`).
6051
- *
5579
+ * Late post ID or platform-specific post ID. Late IDs are auto-resolved. LinkedIn third-party posts accept full activity URN or numeric ID.
6052
5580
  */
6053
5581
  postId: string;
6054
5582
  };
@@ -6185,10 +5713,7 @@ export type ReplyToInboxPostData = {
6185
5713
  };
6186
5714
  path: {
6187
5715
  /**
6188
- * The post identifier. Accepts a Late post ID or a platform-specific post ID.
6189
- *
6190
- * **LinkedIn:** For third-party posts, pass the full activity URN (e.g., `urn:li:activity:7422459067685855232`) or the raw numeric activity ID from the URL.
6191
- *
5716
+ * Late post ID or platform-specific post ID. LinkedIn third-party posts accept full activity URN or numeric ID.
6192
5717
  */
6193
5718
  postId: string;
6194
5719
  };
@@ -6213,10 +5738,7 @@ export type ReplyToInboxPostError = ({
6213
5738
  export type DeleteInboxCommentData = {
6214
5739
  path: {
6215
5740
  /**
6216
- * The post identifier. Accepts a Late post ID or a platform-specific post ID.
6217
- *
6218
- * **LinkedIn:** For third-party posts, pass the full activity URN (e.g., `urn:li:activity:7422459067685855232`) or the raw numeric activity ID from the URL.
6219
- *
5741
+ * Late post ID or platform-specific post ID. LinkedIn third-party posts accept full activity URN or numeric ID.
6220
5742
  */
6221
5743
  postId: string;
6222
5744
  };