@getlatedev/node 0.1.24 → 0.1.25
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/README.md +14 -16
- package/dist/index.d.mts +63 -458
- package/dist/index.d.ts +63 -458
- package/dist/index.js +0 -14
- package/dist/index.mjs +0 -14
- package/package.json +1 -1
- package/src/client.ts +0 -4
- package/src/generated/sdk.gen.ts +110 -464
- package/src/generated/types.gen.ts +62 -463
|
@@ -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
|
-
*
|
|
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
|
+
* Cannot mix videos and images. Up to 10 images for feed posts. Stories require single image or video (no captions, ephemeral 24h). Use pageId for multi-page posting.
|
|
259
235
|
*/
|
|
260
236
|
export type FacebookPlatformData = {
|
|
261
237
|
/**
|
|
@@ -365,14 +341,7 @@ export type FoodMenuSection = {
|
|
|
365
341
|
};
|
|
366
342
|
|
|
367
343
|
/**
|
|
368
|
-
* Google
|
|
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
|
-
*
|
|
344
|
+
* Posts support text and a single image (no videos). Images must be publicly accessible URLs. Optional call-to-action button. Posts appear on GBP, Google Search, and Maps. Use locationId for multi-location posting. Language is auto-detected; override with languageCode.
|
|
376
345
|
*/
|
|
377
346
|
export type GoogleBusinessPlatformData = {
|
|
378
347
|
/**
|
|
@@ -396,14 +365,7 @@ export type GoogleBusinessPlatformData = {
|
|
|
396
365
|
*/
|
|
397
366
|
callToAction?: {
|
|
398
367
|
/**
|
|
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
|
-
*
|
|
368
|
+
* Button action type: LEARN_MORE, BOOK, ORDER, SHOP, SIGN_UP, CALL
|
|
407
369
|
*/
|
|
408
370
|
type: 'LEARN_MORE' | 'BOOK' | 'ORDER' | 'SHOP' | 'SIGN_UP' | 'CALL';
|
|
409
371
|
/**
|
|
@@ -414,14 +376,7 @@ export type GoogleBusinessPlatformData = {
|
|
|
414
376
|
};
|
|
415
377
|
|
|
416
378
|
/**
|
|
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
|
-
*
|
|
379
|
+
* Button action type: LEARN_MORE, BOOK, ORDER, SHOP, SIGN_UP, CALL
|
|
425
380
|
*/
|
|
426
381
|
export type type = 'LEARN_MORE' | 'BOOK' | 'ORDER' | 'SHOP' | 'SIGN_UP' | 'CALL';
|
|
427
382
|
|
|
@@ -438,21 +393,7 @@ export type HashtagInfo = {
|
|
|
438
393
|
export type status = 'safe' | 'banned' | 'restricted' | 'unknown';
|
|
439
394
|
|
|
440
395
|
/**
|
|
441
|
-
*
|
|
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
|
-
*
|
|
396
|
+
* Feed posts require aspect ratio 0.8-1.91; images outside this range must use contentType story. 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 100 MB (stories) or 300 MB (reels) are auto-compressed.
|
|
456
397
|
*/
|
|
457
398
|
export type InstagramPlatformData = {
|
|
458
399
|
/**
|
|
@@ -472,27 +413,16 @@ export type InstagramPlatformData = {
|
|
|
472
413
|
*/
|
|
473
414
|
firstComment?: string;
|
|
474
415
|
/**
|
|
475
|
-
* Trial Reels configuration. Trial reels are
|
|
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
|
-
*
|
|
416
|
+
* 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
417
|
*/
|
|
481
418
|
trialParams?: {
|
|
482
419
|
/**
|
|
483
|
-
*
|
|
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
|
-
*
|
|
420
|
+
* MANUAL (graduate from Instagram app) or SS_PERFORMANCE (auto-graduate if performs well with non-followers)
|
|
487
421
|
*/
|
|
488
422
|
graduationStrategy?: 'MANUAL' | 'SS_PERFORMANCE';
|
|
489
423
|
};
|
|
490
424
|
/**
|
|
491
|
-
* Tag Instagram users in photos by username and position
|
|
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
|
-
*
|
|
425
|
+
* 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
426
|
*/
|
|
497
427
|
userTags?: Array<{
|
|
498
428
|
/**
|
|
@@ -508,34 +438,22 @@ export type InstagramPlatformData = {
|
|
|
508
438
|
*/
|
|
509
439
|
y: number;
|
|
510
440
|
/**
|
|
511
|
-
* Zero-based index of the carousel item to tag. Defaults to 0
|
|
512
|
-
* Only relevant for carousel posts. Tags targeting video items or out-of-range indices are ignored.
|
|
513
|
-
*
|
|
441
|
+
* Zero-based index of the carousel item to tag. Defaults to 0. Tags on video items or out-of-range indices are ignored.
|
|
514
442
|
*/
|
|
515
443
|
mediaIndex?: number;
|
|
516
444
|
}>;
|
|
517
445
|
/**
|
|
518
|
-
* Custom name for
|
|
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
|
-
*
|
|
446
|
+
* Custom name for original audio in Reels. Replaces the default "Original Audio" label. Can only be set once.
|
|
522
447
|
*/
|
|
523
448
|
audioName?: string;
|
|
524
449
|
/**
|
|
525
|
-
* Millisecond offset from
|
|
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
|
-
*
|
|
450
|
+
* Millisecond offset from video start for the Reel thumbnail. Ignored if a custom thumbnail URL is provided. Defaults to 0.
|
|
530
451
|
*/
|
|
531
452
|
thumbOffset?: number;
|
|
532
453
|
};
|
|
533
454
|
|
|
534
455
|
/**
|
|
535
|
-
*
|
|
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
|
-
*
|
|
456
|
+
* MANUAL (graduate from Instagram app) or SS_PERFORMANCE (auto-graduate if performs well with non-followers)
|
|
539
457
|
*/
|
|
540
458
|
export type graduationStrategy = 'MANUAL' | 'SS_PERFORMANCE';
|
|
541
459
|
|
|
@@ -631,14 +549,7 @@ export type LinkedInAggregateAnalyticsTotalResponse = {
|
|
|
631
549
|
export type aggregation3 = 'TOTAL';
|
|
632
550
|
|
|
633
551
|
/**
|
|
634
|
-
*
|
|
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
|
-
*
|
|
552
|
+
* Up to 20 images, no multi-video. Single PDF supported (max 100MB, ~300 pages, cannot mix with other media). Link previews auto-generated when no media attached (disable with disableLinkPreview). Use organizationUrn for multi-org posting.
|
|
642
553
|
*/
|
|
643
554
|
export type LinkedInPlatformData = {
|
|
644
555
|
/**
|
|
@@ -660,15 +571,8 @@ export type LinkedInPlatformData = {
|
|
|
660
571
|
};
|
|
661
572
|
|
|
662
573
|
/**
|
|
663
|
-
* Media referenced in posts. URLs must be publicly reachable over HTTPS
|
|
664
|
-
*
|
|
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.
|
|
574
|
+
* Media referenced in posts. URLs must be publicly reachable over HTTPS. When using third-party storage, ensure signed links remain valid until upload completes.
|
|
575
|
+
* Use POST /v1/media/presign to get a presigned URL for direct cloud storage upload (up to 5GB). Late automatically compresses images and videos that exceed platform limits server-side during publishing. Videos larger than 200 MB may not be compressed due to timeout constraints.
|
|
672
576
|
*
|
|
673
577
|
*/
|
|
674
578
|
export type MediaItem = {
|
|
@@ -817,59 +721,26 @@ export type PlatformTarget = {
|
|
|
817
721
|
*/
|
|
818
722
|
publishedAt?: string;
|
|
819
723
|
/**
|
|
820
|
-
* Human-readable error message when status is
|
|
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
|
-
*
|
|
724
|
+
* Human-readable error message when status is failed. Contains platform-specific error details explaining why the publish failed.
|
|
828
725
|
*/
|
|
829
726
|
errorMessage?: string;
|
|
830
727
|
/**
|
|
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
|
-
*
|
|
728
|
+
* 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
729
|
*/
|
|
842
730
|
errorCategory?: 'auth_expired' | 'user_content' | 'user_abuse' | 'account_issue' | 'platform_rejected' | 'platform_error' | 'system_error' | 'unknown';
|
|
843
731
|
/**
|
|
844
|
-
* Who
|
|
845
|
-
* - user: User action required (fix content, reconnect account)
|
|
846
|
-
* - platform: Platform-side issue (outage, API change)
|
|
847
|
-
* - system: Late system issue (rare)
|
|
848
|
-
*
|
|
732
|
+
* Who caused the error: user (fix content/reconnect), platform (outage/API change), system (Late issue, rare)
|
|
849
733
|
*/
|
|
850
734
|
errorSource?: 'user' | 'platform' | 'system';
|
|
851
735
|
};
|
|
852
736
|
|
|
853
737
|
/**
|
|
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
|
-
*
|
|
738
|
+
* 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
739
|
*/
|
|
865
740
|
export type errorCategory = 'auth_expired' | 'user_content' | 'user_abuse' | 'account_issue' | 'platform_rejected' | 'platform_error' | 'system_error' | 'unknown';
|
|
866
741
|
|
|
867
742
|
/**
|
|
868
|
-
* Who
|
|
869
|
-
* - user: User action required (fix content, reconnect account)
|
|
870
|
-
* - platform: Platform-side issue (outage, API change)
|
|
871
|
-
* - system: Late system issue (rare)
|
|
872
|
-
*
|
|
743
|
+
* Who caused the error: user (fix content/reconnect), platform (outage/API change), system (Late issue, rare)
|
|
873
744
|
*/
|
|
874
745
|
export type errorSource = 'user' | 'platform' | 'system';
|
|
875
746
|
|
|
@@ -888,11 +759,7 @@ export type Post = {
|
|
|
888
759
|
timezone?: string;
|
|
889
760
|
status?: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed' | 'partial';
|
|
890
761
|
/**
|
|
891
|
-
* YouTube tag
|
|
892
|
-
* - No count cap; duplicates removed.
|
|
893
|
-
* - Each tag must be ≤ 100 chars.
|
|
894
|
-
* - Combined characters across all tags ≤ 500.
|
|
895
|
-
*
|
|
762
|
+
* YouTube constraints: each tag max 100 chars, combined max 500 chars, duplicates removed.
|
|
896
763
|
*/
|
|
897
764
|
tags?: Array<(string)>;
|
|
898
765
|
hashtags?: Array<(string)>;
|
|
@@ -962,14 +829,7 @@ export type PostLog = {
|
|
|
962
829
|
accountId?: string;
|
|
963
830
|
accountUsername?: string;
|
|
964
831
|
/**
|
|
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
|
-
*
|
|
832
|
+
* Type of action logged: publish (initial attempt), retry (after failure), media_upload, rate_limit_pause, token_refresh, cancelled
|
|
973
833
|
*/
|
|
974
834
|
action?: 'publish' | 'retry' | 'media_upload' | 'rate_limit_pause' | 'token_refresh' | 'cancelled';
|
|
975
835
|
status?: 'success' | 'failed' | 'pending' | 'skipped';
|
|
@@ -1032,52 +892,12 @@ export type PostLog = {
|
|
|
1032
892
|
};
|
|
1033
893
|
|
|
1034
894
|
/**
|
|
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
|
-
*
|
|
895
|
+
* Type of action logged: publish (initial attempt), retry (after failure), media_upload, rate_limit_pause, token_refresh, cancelled
|
|
1043
896
|
*/
|
|
1044
897
|
export type action = 'publish' | 'retry' | 'media_upload' | 'rate_limit_pause' | 'token_refresh' | 'cancelled';
|
|
1045
898
|
|
|
1046
899
|
export type status3 = 'success' | 'failed' | 'pending' | 'skipped';
|
|
1047
900
|
|
|
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
901
|
export type PostRetryResponse = {
|
|
1082
902
|
message?: string;
|
|
1083
903
|
post?: Post;
|
|
@@ -1101,9 +921,7 @@ export type Profile = {
|
|
|
1101
921
|
color?: string;
|
|
1102
922
|
isDefault?: boolean;
|
|
1103
923
|
/**
|
|
1104
|
-
* Only present when
|
|
1105
|
-
* exceeds the user's plan limit. Over-limit profiles cannot be used for posting
|
|
1106
|
-
* but can be managed (disconnected accounts, deleted).
|
|
924
|
+
* Only present when includeOverLimit=true is used. Indicates if this profile exceeds the user's plan limit. Over-limit profiles cannot be used for posting but can be managed (disconnected accounts, deleted).
|
|
1107
925
|
*
|
|
1108
926
|
*/
|
|
1109
927
|
isOverLimit?: boolean;
|
|
@@ -1204,15 +1022,7 @@ export type QueueUpdateResponse = {
|
|
|
1204
1022
|
};
|
|
1205
1023
|
|
|
1206
1024
|
/**
|
|
1207
|
-
*
|
|
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
|
-
*
|
|
1025
|
+
* Posts are either link (with URL/media) or self (text-only). If media is provided, the first item URL is used as the link; use forceSelf to override. Subreddit defaults to the account's configured one. Images over 20 MB are auto-compressed. Some subreddits require a flair; if missing, the first available flair is used as fallback.
|
|
1216
1026
|
*/
|
|
1217
1027
|
export type RedditPlatformData = {
|
|
1218
1028
|
/**
|
|
@@ -1243,30 +1053,20 @@ export type RedditPlatformData = {
|
|
|
1243
1053
|
};
|
|
1244
1054
|
|
|
1245
1055
|
/**
|
|
1246
|
-
*
|
|
1247
|
-
*
|
|
1248
|
-
*
|
|
1249
|
-
*
|
|
1250
|
-
* **Media limits:** Images max 20 MB (JPEG/PNG), videos max 500 MB (MP4, 5-60s, min 540x960px, 9:16 recommended).
|
|
1056
|
+
* Requires a Public Profile. Media required for all content types (single item only, auto-encrypted).
|
|
1057
|
+
* Content types: story (ephemeral 24h, no caption), saved_story (permanent, title max 45 chars), spotlight (video, description max 160 chars).
|
|
1058
|
+
* Images max 20 MB (JPEG/PNG), videos max 500 MB (MP4, 5-60s, min 540x960px).
|
|
1251
1059
|
*
|
|
1252
1060
|
*/
|
|
1253
1061
|
export type SnapchatPlatformData = {
|
|
1254
1062
|
/**
|
|
1255
|
-
*
|
|
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
|
-
*
|
|
1063
|
+
* Content type: story (ephemeral 24h, default), saved_story (permanent on Public Profile), spotlight (video feed)
|
|
1260
1064
|
*/
|
|
1261
1065
|
contentType?: 'story' | 'saved_story' | 'spotlight';
|
|
1262
1066
|
};
|
|
1263
1067
|
|
|
1264
1068
|
/**
|
|
1265
|
-
*
|
|
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
|
-
*
|
|
1069
|
+
* Content type: story (ephemeral 24h, default), saved_story (permanent on Public Profile), spotlight (video feed)
|
|
1270
1070
|
*/
|
|
1271
1071
|
export type contentType2 = 'story' | 'saved_story' | 'spotlight';
|
|
1272
1072
|
|
|
@@ -1305,18 +1105,7 @@ export type SocialAccount = {
|
|
|
1305
1105
|
};
|
|
1306
1106
|
|
|
1307
1107
|
/**
|
|
1308
|
-
*
|
|
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
|
-
*
|
|
1108
|
+
* Supports text, images (up to 10), videos (up to 10), and mixed media albums. Captions up to 1024 chars for media posts, 4096 for text-only. Channel posts show channel name as author; group posts show bot name. Analytics not available via Telegram Bot API.
|
|
1320
1109
|
*/
|
|
1321
1110
|
export type TelegramPlatformData = {
|
|
1322
1111
|
/**
|
|
@@ -1343,13 +1132,7 @@ export type TelegramPlatformData = {
|
|
|
1343
1132
|
export type parseMode = 'HTML' | 'Markdown' | 'MarkdownV2';
|
|
1344
1133
|
|
|
1345
1134
|
/**
|
|
1346
|
-
*
|
|
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
|
-
*
|
|
1135
|
+
* Carousels support up to 10 images (no videos). Single posts support one image or video. Videos must be H.264/AAC MP4, max 5 min. Images must be JPEG/PNG, max 8 MB. threadItems creates a reply chain.
|
|
1353
1136
|
*/
|
|
1354
1137
|
export type ThreadsPlatformData = {
|
|
1355
1138
|
/**
|
|
@@ -1362,25 +1145,11 @@ export type ThreadsPlatformData = {
|
|
|
1362
1145
|
};
|
|
1363
1146
|
|
|
1364
1147
|
/**
|
|
1365
|
-
*
|
|
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
|
-
*
|
|
1148
|
+
* Photo carousels up to 35 images. Video titles up to 2200 chars; photo titles auto-truncated to 90 chars (use description field for longer text up to 4000 chars). privacyLevel must match creator_info options. allowDuet/allowStitch required for videos. contentPreviewConfirmed and expressConsentGiven must be true. Both camelCase and snake_case accepted.
|
|
1379
1149
|
*/
|
|
1380
1150
|
export type TikTokPlatformData = {
|
|
1381
1151
|
/**
|
|
1382
|
-
* When true,
|
|
1383
|
-
*
|
|
1152
|
+
* When true, sends the post to the TikTok Creator Inbox as a draft instead of publishing immediately.
|
|
1384
1153
|
*/
|
|
1385
1154
|
draft?: boolean;
|
|
1386
1155
|
/**
|
|
@@ -1440,9 +1209,7 @@ export type TikTokPlatformData = {
|
|
|
1440
1209
|
*/
|
|
1441
1210
|
videoMadeWithAi?: boolean;
|
|
1442
1211
|
/**
|
|
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
|
-
*
|
|
1212
|
+
* Optional long-form description for photo posts (max 4000 chars). Recommended when content exceeds 90 chars, as photo titles are auto-truncated.
|
|
1446
1213
|
*/
|
|
1447
1214
|
description?: string;
|
|
1448
1215
|
};
|
|
@@ -1457,30 +1224,6 @@ export type commercialContentType = 'none' | 'brand_organic' | 'brand_content';
|
|
|
1457
1224
|
*/
|
|
1458
1225
|
export type mediaType = 'video' | 'photo';
|
|
1459
1226
|
|
|
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
1227
|
export type TranscriptResponse = {
|
|
1485
1228
|
transcript?: string;
|
|
1486
1229
|
segments?: Array<TranscriptSegment>;
|
|
@@ -1897,16 +1640,7 @@ export type YouTubeDailyViewsResponse = {
|
|
|
1897
1640
|
};
|
|
1898
1641
|
|
|
1899
1642
|
/**
|
|
1900
|
-
*
|
|
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
|
-
*
|
|
1643
|
+
* Videos up to 3 min are auto-detected as Shorts, longer as regular videos. Custom thumbnails supported for regular videos only (via mediaItem.thumbnail). Scheduled videos are uploaded immediately with the specified visibility. madeForKids defaults to false.
|
|
1910
1644
|
*/
|
|
1911
1645
|
export type YouTubePlatformData = {
|
|
1912
1646
|
/**
|
|
@@ -1914,24 +1648,11 @@ export type YouTubePlatformData = {
|
|
|
1914
1648
|
*/
|
|
1915
1649
|
title?: string;
|
|
1916
1650
|
/**
|
|
1917
|
-
* Video visibility
|
|
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
|
-
*
|
|
1651
|
+
* Video visibility: public (default, anyone can watch), unlisted (link only), private (invite only)
|
|
1922
1652
|
*/
|
|
1923
1653
|
visibility?: 'public' | 'private' | 'unlisted';
|
|
1924
1654
|
/**
|
|
1925
|
-
* COPPA compliance
|
|
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
|
-
*
|
|
1655
|
+
* 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
1656
|
*/
|
|
1936
1657
|
madeForKids?: boolean;
|
|
1937
1658
|
/**
|
|
@@ -1939,20 +1660,11 @@ export type YouTubePlatformData = {
|
|
|
1939
1660
|
*/
|
|
1940
1661
|
firstComment?: string;
|
|
1941
1662
|
/**
|
|
1942
|
-
* AI-generated content disclosure
|
|
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
|
-
*
|
|
1663
|
+
* AI-generated content disclosure. Set true if the video contains synthetic content that could be mistaken for real. YouTube may add a label.
|
|
1947
1664
|
*/
|
|
1948
1665
|
containsSyntheticMedia?: boolean;
|
|
1949
1666
|
/**
|
|
1950
|
-
* YouTube video category ID. Defaults to
|
|
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
|
-
*
|
|
1667
|
+
* 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
1668
|
*/
|
|
1957
1669
|
categoryId?: string;
|
|
1958
1670
|
};
|
|
@@ -2207,10 +1919,7 @@ export type GetAnalyticsData = {
|
|
|
2207
1919
|
*/
|
|
2208
1920
|
platform?: string;
|
|
2209
1921
|
/**
|
|
2210
|
-
* Returns analytics for a single post. Accepts both Late Post IDs
|
|
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
|
-
*
|
|
1922
|
+
* 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
1923
|
*/
|
|
2215
1924
|
postId?: string;
|
|
2216
1925
|
/**
|
|
@@ -2222,11 +1931,7 @@ export type GetAnalyticsData = {
|
|
|
2222
1931
|
*/
|
|
2223
1932
|
sortBy?: 'date' | 'engagement';
|
|
2224
1933
|
/**
|
|
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
|
-
*
|
|
1934
|
+
* Filter by post source: late (posted via Late API), external (synced from platform), all (default)
|
|
2230
1935
|
*/
|
|
2231
1936
|
source?: 'all' | 'late' | 'external';
|
|
2232
1937
|
/**
|
|
@@ -2474,9 +2179,7 @@ export type CreatePostData = {
|
|
|
2474
2179
|
body: {
|
|
2475
2180
|
title?: string;
|
|
2476
2181
|
/**
|
|
2477
|
-
* Post caption/text
|
|
2478
|
-
* Required for text-only posts. Can also be omitted if all platforms have customContent set.
|
|
2479
|
-
*
|
|
2182
|
+
* Post caption/text. Optional when media is attached or all platforms have customContent. Required for text-only posts.
|
|
2480
2183
|
*/
|
|
2481
2184
|
content?: string;
|
|
2482
2185
|
mediaItems?: Array<{
|
|
@@ -2505,11 +2208,7 @@ export type CreatePostData = {
|
|
|
2505
2208
|
isDraft?: boolean;
|
|
2506
2209
|
timezone?: string;
|
|
2507
2210
|
/**
|
|
2508
|
-
* Tags/keywords
|
|
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
|
-
*
|
|
2211
|
+
* Tags/keywords. YouTube constraints: each tag max 100 chars, combined max 500 chars, duplicates auto-removed.
|
|
2513
2212
|
*/
|
|
2514
2213
|
tags?: Array<(string)>;
|
|
2515
2214
|
hashtags?: Array<(string)>;
|
|
@@ -2519,21 +2218,11 @@ export type CreatePostData = {
|
|
|
2519
2218
|
[key: string]: unknown;
|
|
2520
2219
|
};
|
|
2521
2220
|
/**
|
|
2522
|
-
* Root-level TikTok settings applied to all TikTok platforms
|
|
2523
|
-
* This is a convenience shorthand. Settings here are merged into each TikTok
|
|
2524
|
-
* platform's platformSpecificData, with platform-specific settings taking precedence.
|
|
2525
|
-
*
|
|
2221
|
+
* Root-level TikTok settings applied to all TikTok platforms. Merged into each platform's platformSpecificData, with platform-specific settings taking precedence.
|
|
2526
2222
|
*/
|
|
2527
2223
|
tiktokSettings?: TikTokPlatformData;
|
|
2528
2224
|
/**
|
|
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
|
-
*
|
|
2225
|
+
* 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
2226
|
*/
|
|
2538
2227
|
queuedFromProfile?: string;
|
|
2539
2228
|
/**
|
|
@@ -2584,10 +2273,7 @@ export type UpdatePostData = {
|
|
|
2584
2273
|
content?: string;
|
|
2585
2274
|
scheduledFor?: string;
|
|
2586
2275
|
/**
|
|
2587
|
-
* Root-level TikTok settings applied to all TikTok platforms
|
|
2588
|
-
* This is a convenience shorthand. Settings here are merged into each TikTok
|
|
2589
|
-
* platform's platformSpecificData, with platform-specific settings taking precedence.
|
|
2590
|
-
*
|
|
2276
|
+
* Root-level TikTok settings applied to all TikTok platforms. Merged into each platform's platformSpecificData, with platform-specific settings taking precedence.
|
|
2591
2277
|
*/
|
|
2592
2278
|
tiktokSettings?: TikTokPlatformData;
|
|
2593
2279
|
[key: string]: unknown | string | TikTokPlatformData;
|
|
@@ -2724,9 +2410,7 @@ export type GetUserError = ({
|
|
|
2724
2410
|
export type ListProfilesData = {
|
|
2725
2411
|
query?: {
|
|
2726
2412
|
/**
|
|
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.
|
|
2413
|
+
* When true, includes profiles that exceed the user's plan limit. Over-limit profiles will have isOverLimit: true in the response. Useful for managing/deleting profiles after a plan downgrade.
|
|
2730
2414
|
*
|
|
2731
2415
|
*/
|
|
2732
2416
|
includeOverLimit?: boolean;
|
|
@@ -3118,12 +2802,8 @@ export type GetConnectUrlData = {
|
|
|
3118
2802
|
profileId: string;
|
|
3119
2803
|
/**
|
|
3120
2804
|
* Your custom redirect URL after connection completes.
|
|
3121
|
-
*
|
|
3122
|
-
*
|
|
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`
|
|
2805
|
+
* Standard mode: Late redirects here with ?connected={platform}&profileId=X&username=Y.
|
|
2806
|
+
* Headless mode: pass headless=true on this endpoint. User is redirected to your URL with OAuth data (profileId, tempToken, userProfile, connect_token, platform, step). See endpoint description for details.
|
|
3127
2807
|
*
|
|
3128
2808
|
*/
|
|
3129
2809
|
redirect_url?: string;
|
|
@@ -3322,8 +3002,7 @@ export type SelectGoogleBusinessLocationData = {
|
|
|
3322
3002
|
*/
|
|
3323
3003
|
tempToken: string;
|
|
3324
3004
|
/**
|
|
3325
|
-
* Decoded user profile object from the OAuth callback.
|
|
3326
|
-
* the refresh token needed for token refresh. Always include this field.
|
|
3005
|
+
* Decoded user profile object from the OAuth callback. Contains the refresh token needed for token refresh. Always include this field.
|
|
3327
3006
|
*
|
|
3328
3007
|
*/
|
|
3329
3008
|
userProfile?: {
|
|
@@ -3871,7 +3550,7 @@ export type DeleteGoogleBusinessPlaceActionError = (ErrorResponse);
|
|
|
3871
3550
|
export type GetPendingOAuthDataData = {
|
|
3872
3551
|
query: {
|
|
3873
3552
|
/**
|
|
3874
|
-
* The pending data token from the OAuth redirect URL (
|
|
3553
|
+
* The pending data token from the OAuth redirect URL (pendingDataToken parameter)
|
|
3875
3554
|
*/
|
|
3876
3555
|
token: string;
|
|
3877
3556
|
};
|
|
@@ -4262,9 +3941,7 @@ export type ConnectBlueskyCredentialsData = {
|
|
|
4262
3941
|
*/
|
|
4263
3942
|
appPassword: string;
|
|
4264
3943
|
/**
|
|
4265
|
-
* Required state parameter formatted as
|
|
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`)
|
|
3944
|
+
* Required state parameter formatted as {userId}-{profileId}. userId is your Late user ID (from GET /v1/users, currentUserId field), profileId is the profile to connect the account to (from GET /v1/profiles).
|
|
4268
3945
|
*
|
|
4269
3946
|
*/
|
|
4270
3947
|
state: string;
|
|
@@ -4459,11 +4136,7 @@ export type GetLinkedInAggregateAnalyticsData = {
|
|
|
4459
4136
|
};
|
|
4460
4137
|
query?: {
|
|
4461
4138
|
/**
|
|
4462
|
-
* Type of aggregation
|
|
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.
|
|
4139
|
+
* Type of aggregation: TOTAL (default, returns single totals) or DAILY (returns daily breakdown). Note: MEMBERS_REACHED is not available with DAILY aggregation.
|
|
4467
4140
|
*
|
|
4468
4141
|
*/
|
|
4469
4142
|
aggregation?: 'TOTAL' | 'DAILY';
|
|
@@ -4610,16 +4283,12 @@ export type GetLinkedInMentionsData = {
|
|
|
4610
4283
|
};
|
|
4611
4284
|
query: {
|
|
4612
4285
|
/**
|
|
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.
|
|
4286
|
+
* The exact display name as shown on LinkedIn. Required for person mentions (for clickable mentions; if not provided, a name is derived from the vanity URL which may not match). Optional for organization mentions (company name is auto-retrieved from LinkedIn).
|
|
4616
4287
|
*
|
|
4617
4288
|
*/
|
|
4618
4289
|
displayName?: string;
|
|
4619
4290
|
/**
|
|
4620
|
-
* LinkedIn profile URL, company URL, or vanity name.
|
|
4621
|
-
* - Person: `miquelpalet`, `linkedin.com/in/miquelpalet`
|
|
4622
|
-
* - Organization: `company/microsoft`, `linkedin.com/company/microsoft`
|
|
4291
|
+
* LinkedIn profile URL, company URL, or vanity name. Person examples: miquelpalet, linkedin.com/in/miquelpalet. Organization examples: company/microsoft, linkedin.com/company/microsoft.
|
|
4623
4292
|
*
|
|
4624
4293
|
*/
|
|
4625
4294
|
url: string;
|
|
@@ -5151,73 +4820,6 @@ export type GetWebhookLogsError = ({
|
|
|
5151
4820
|
error?: string;
|
|
5152
4821
|
});
|
|
5153
4822
|
|
|
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
4823
|
export type ListPostsLogsData = {
|
|
5222
4824
|
query?: {
|
|
5223
4825
|
/**
|
|
@@ -6044,10 +5646,7 @@ export type GetInboxPostCommentsData = {
|
|
|
6044
5646
|
path: {
|
|
6045
5647
|
/**
|
|
6046
5648
|
* 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`).
|
|
5649
|
+
* LinkedIn: for your own posts, the full URN stored in Late is used automatically. For third-party posts, pass the full activity URN or the raw numeric activity ID from the LinkedIn URL (automatically wrapped as urn:li:activity:).
|
|
6051
5650
|
*
|
|
6052
5651
|
*/
|
|
6053
5652
|
postId: string;
|
|
@@ -6187,7 +5786,7 @@ export type ReplyToInboxPostData = {
|
|
|
6187
5786
|
/**
|
|
6188
5787
|
* The post identifier. Accepts a Late post ID or a platform-specific post ID.
|
|
6189
5788
|
*
|
|
6190
|
-
*
|
|
5789
|
+
* 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
5790
|
*
|
|
6192
5791
|
*/
|
|
6193
5792
|
postId: string;
|
|
@@ -6215,7 +5814,7 @@ export type DeleteInboxCommentData = {
|
|
|
6215
5814
|
/**
|
|
6216
5815
|
* The post identifier. Accepts a Late post ID or a platform-specific post ID.
|
|
6217
5816
|
*
|
|
6218
|
-
*
|
|
5817
|
+
* 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
5818
|
*
|
|
6220
5819
|
*/
|
|
6221
5820
|
postId: string;
|