late-sdk 0.0.103 → 0.0.104
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.
- checksums.yaml +4 -4
- data/README.md +0 -52
- data/lib/late-sdk/version.rb +1 -1
- data/lib/late-sdk.rb +0 -41
- data/openapi.yaml +1 -731
- data/zernio-sdk-0.0.104.gem +0 -0
- metadata +2 -166
- data/docs/CaptionResponse.md +0 -18
- data/docs/CheckInstagramHashtags200Response.md +0 -22
- data/docs/CheckInstagramHashtags200ResponseResultsInner.md +0 -24
- data/docs/CheckInstagramHashtags200ResponseSummary.md +0 -22
- data/docs/CheckInstagramHashtagsRequest.md +0 -18
- data/docs/DownloadBlueskyMedia200Response.md +0 -26
- data/docs/DownloadFacebookVideo200Response.md +0 -24
- data/docs/DownloadFormat.md +0 -26
- data/docs/DownloadInstagramMedia200Response.md +0 -22
- data/docs/DownloadResponse.md +0 -26
- data/docs/DownloadTikTokVideo200Response.md +0 -24
- data/docs/DownloadTikTokVideo200ResponseFormatsInner.md +0 -22
- data/docs/DownloadYouTubeVideo200Response.md +0 -24
- data/docs/DownloadYouTubeVideo200ResponseFormatsInner.md +0 -28
- data/docs/GetYouTubeTranscript200Response.md +0 -26
- data/docs/GetYouTubeTranscript200ResponseSegmentsInner.md +0 -22
- data/docs/HashtagCheckResponse.md +0 -18
- data/docs/HashtagInfo.md +0 -22
- data/docs/ToolsApi.md +0 -663
- data/docs/TranscriptResponse.md +0 -22
- data/docs/TranscriptSegment.md +0 -22
- data/docs/ValidateApi.md +0 -287
- data/docs/ValidateMedia200Response.md +0 -32
- data/docs/ValidateMedia200ResponsePlatformLimitsValue.md +0 -22
- data/docs/ValidateMediaRequest.md +0 -18
- data/docs/ValidatePost200Response.md +0 -49
- data/docs/ValidatePost200ResponseOneOf.md +0 -22
- data/docs/ValidatePost200ResponseOneOf1.md +0 -22
- data/docs/ValidatePost200ResponseOneOf1ErrorsInner.md +0 -20
- data/docs/ValidatePost200ResponseOneOfWarningsInner.md +0 -20
- data/docs/ValidatePostLength200Response.md +0 -20
- data/docs/ValidatePostLength200ResponsePlatformsValue.md +0 -22
- data/docs/ValidatePostLengthRequest.md +0 -18
- data/docs/ValidatePostRequest.md +0 -22
- data/docs/ValidatePostRequestMediaItemsInner.md +0 -20
- data/docs/ValidatePostRequestPlatformsInner.md +0 -24
- data/docs/ValidatePostRequestPlatformsInnerCustomMediaInner.md +0 -20
- data/docs/ValidateSubreddit200Response.md +0 -49
- data/docs/ValidateSubreddit200ResponseOneOf.md +0 -20
- data/docs/ValidateSubreddit200ResponseOneOf1.md +0 -20
- data/docs/ValidateSubreddit200ResponseOneOfSubreddit.md +0 -32
- data/lib/late-sdk/api/tools_api.rb +0 -649
- data/lib/late-sdk/api/validate_api.rb +0 -290
- data/lib/late-sdk/models/caption_response.rb +0 -147
- data/lib/late-sdk/models/check_instagram_hashtags200_response.rb +0 -167
- data/lib/late-sdk/models/check_instagram_hashtags200_response_results_inner.rb +0 -208
- data/lib/late-sdk/models/check_instagram_hashtags200_response_summary.rb +0 -165
- data/lib/late-sdk/models/check_instagram_hashtags_request.rb +0 -175
- data/lib/late-sdk/models/download_bluesky_media200_response.rb +0 -183
- data/lib/late-sdk/models/download_facebook_video200_response.rb +0 -174
- data/lib/late-sdk/models/download_format.rb +0 -183
- data/lib/late-sdk/models/download_instagram_media200_response.rb +0 -165
- data/lib/late-sdk/models/download_response.rb +0 -185
- data/lib/late-sdk/models/download_tik_tok_video200_response.rb +0 -176
- data/lib/late-sdk/models/download_tik_tok_video200_response_formats_inner.rb +0 -165
- data/lib/late-sdk/models/download_you_tube_video200_response.rb +0 -176
- data/lib/late-sdk/models/download_you_tube_video200_response_formats_inner.rb +0 -192
- data/lib/late-sdk/models/get_you_tube_transcript200_response.rb +0 -185
- data/lib/late-sdk/models/get_you_tube_transcript200_response_segments_inner.rb +0 -165
- data/lib/late-sdk/models/hashtag_check_response.rb +0 -149
- data/lib/late-sdk/models/hashtag_info.rb +0 -199
- data/lib/late-sdk/models/transcript_response.rb +0 -167
- data/lib/late-sdk/models/transcript_segment.rb +0 -165
- data/lib/late-sdk/models/validate_media200_response.rb +0 -249
- data/lib/late-sdk/models/validate_media200_response_platform_limits_value.rb +0 -166
- data/lib/late-sdk/models/validate_media_request.rb +0 -165
- data/lib/late-sdk/models/validate_post200_response.rb +0 -104
- data/lib/late-sdk/models/validate_post200_response_one_of.rb +0 -168
- data/lib/late-sdk/models/validate_post200_response_one_of1.rb +0 -170
- data/lib/late-sdk/models/validate_post200_response_one_of1_errors_inner.rb +0 -156
- data/lib/late-sdk/models/validate_post200_response_one_of_warnings_inner.rb +0 -156
- data/lib/late-sdk/models/validate_post_length200_response.rb +0 -158
- data/lib/late-sdk/models/validate_post_length200_response_platforms_value.rb +0 -168
- data/lib/late-sdk/models/validate_post_length_request.rb +0 -165
- data/lib/late-sdk/models/validate_post_request.rb +0 -189
- data/lib/late-sdk/models/validate_post_request_media_items_inner.rb +0 -190
- data/lib/late-sdk/models/validate_post_request_platforms_inner.rb +0 -217
- data/lib/late-sdk/models/validate_post_request_platforms_inner_custom_media_inner.rb +0 -190
- data/lib/late-sdk/models/validate_subreddit200_response.rb +0 -104
- data/lib/late-sdk/models/validate_subreddit200_response_one_of.rb +0 -157
- data/lib/late-sdk/models/validate_subreddit200_response_one_of1.rb +0 -157
- data/lib/late-sdk/models/validate_subreddit200_response_one_of_subreddit.rb +0 -244
- data/spec/api/tools_api_spec.rb +0 -152
- data/spec/api/validate_api_spec.rb +0 -83
- data/spec/models/caption_response_spec.rb +0 -36
- data/spec/models/check_instagram_hashtags200_response_results_inner_spec.rb +0 -58
- data/spec/models/check_instagram_hashtags200_response_spec.rb +0 -48
- data/spec/models/check_instagram_hashtags200_response_summary_spec.rb +0 -48
- data/spec/models/check_instagram_hashtags_request_spec.rb +0 -36
- data/spec/models/download_bluesky_media200_response_spec.rb +0 -60
- data/spec/models/download_facebook_video200_response_spec.rb +0 -54
- data/spec/models/download_format_spec.rb +0 -60
- data/spec/models/download_instagram_media200_response_spec.rb +0 -48
- data/spec/models/download_response_spec.rb +0 -60
- data/spec/models/download_tik_tok_video200_response_formats_inner_spec.rb +0 -48
- data/spec/models/download_tik_tok_video200_response_spec.rb +0 -54
- data/spec/models/download_you_tube_video200_response_formats_inner_spec.rb +0 -66
- data/spec/models/download_you_tube_video200_response_spec.rb +0 -54
- data/spec/models/get_you_tube_transcript200_response_segments_inner_spec.rb +0 -48
- data/spec/models/get_you_tube_transcript200_response_spec.rb +0 -60
- data/spec/models/hashtag_check_response_spec.rb +0 -36
- data/spec/models/hashtag_info_spec.rb +0 -52
- data/spec/models/transcript_response_spec.rb +0 -48
- data/spec/models/transcript_segment_spec.rb +0 -48
- data/spec/models/validate_media200_response_platform_limits_value_spec.rb +0 -48
- data/spec/models/validate_media200_response_spec.rb +0 -82
- data/spec/models/validate_media_request_spec.rb +0 -36
- data/spec/models/validate_post200_response_one_of1_errors_inner_spec.rb +0 -42
- data/spec/models/validate_post200_response_one_of1_spec.rb +0 -48
- data/spec/models/validate_post200_response_one_of_spec.rb +0 -48
- data/spec/models/validate_post200_response_one_of_warnings_inner_spec.rb +0 -42
- data/spec/models/validate_post200_response_spec.rb +0 -32
- data/spec/models/validate_post_length200_response_platforms_value_spec.rb +0 -48
- data/spec/models/validate_post_length200_response_spec.rb +0 -42
- data/spec/models/validate_post_length_request_spec.rb +0 -36
- data/spec/models/validate_post_request_media_items_inner_spec.rb +0 -46
- data/spec/models/validate_post_request_platforms_inner_custom_media_inner_spec.rb +0 -46
- data/spec/models/validate_post_request_platforms_inner_spec.rb +0 -58
- data/spec/models/validate_post_request_spec.rb +0 -48
- data/spec/models/validate_subreddit200_response_one_of1_spec.rb +0 -42
- data/spec/models/validate_subreddit200_response_one_of_spec.rb +0 -42
- data/spec/models/validate_subreddit200_response_one_of_subreddit_spec.rb +0 -82
- data/spec/models/validate_subreddit200_response_spec.rb +0 -32
- data/zernio-sdk-0.0.103.gem +0 -0
data/openapi.yaml
CHANGED
|
@@ -200,14 +200,6 @@ tags:
|
|
|
200
200
|
description: |
|
|
201
201
|
X/Twitter-specific engagement endpoints for retweeting, bookmarking, and following.
|
|
202
202
|
Rate limits: 50 requests per 15-min window per user. Retweets share the 300/3hr creation limit with tweet creation.
|
|
203
|
-
- name: Tools
|
|
204
|
-
description: |
|
|
205
|
-
Media download and utility tools. Available to paid plans only.
|
|
206
|
-
Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
207
|
-
All responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.
|
|
208
|
-
- name: Validate
|
|
209
|
-
description: |
|
|
210
|
-
Pre-flight validation endpoints. Check post content, character limits, media URLs, and subreddit existence before publishing.
|
|
211
203
|
- name: Account Settings
|
|
212
204
|
description: |
|
|
213
205
|
Platform-specific account settings: Facebook persistent menu, Instagram ice breakers, and Telegram bot commands.
|
|
@@ -2528,79 +2520,6 @@ components:
|
|
|
2528
2520
|
format: date-time
|
|
2529
2521
|
timezone:
|
|
2530
2522
|
type: string
|
|
2531
|
-
# Tools Responses
|
|
2532
|
-
DownloadFormat:
|
|
2533
|
-
type: object
|
|
2534
|
-
properties:
|
|
2535
|
-
formatId:
|
|
2536
|
-
type: string
|
|
2537
|
-
ext:
|
|
2538
|
-
type: string
|
|
2539
|
-
resolution:
|
|
2540
|
-
type: string
|
|
2541
|
-
filesize:
|
|
2542
|
-
type: integer
|
|
2543
|
-
quality:
|
|
2544
|
-
type: string
|
|
2545
|
-
DownloadResponse:
|
|
2546
|
-
type: object
|
|
2547
|
-
properties:
|
|
2548
|
-
url:
|
|
2549
|
-
type: string
|
|
2550
|
-
format: uri
|
|
2551
|
-
title:
|
|
2552
|
-
type: string
|
|
2553
|
-
thumbnail:
|
|
2554
|
-
type: string
|
|
2555
|
-
format: uri
|
|
2556
|
-
duration:
|
|
2557
|
-
type: integer
|
|
2558
|
-
formats:
|
|
2559
|
-
type: array
|
|
2560
|
-
items:
|
|
2561
|
-
$ref: '#/components/schemas/DownloadFormat'
|
|
2562
|
-
TranscriptSegment:
|
|
2563
|
-
type: object
|
|
2564
|
-
properties:
|
|
2565
|
-
text:
|
|
2566
|
-
type: string
|
|
2567
|
-
start:
|
|
2568
|
-
type: number
|
|
2569
|
-
duration:
|
|
2570
|
-
type: number
|
|
2571
|
-
TranscriptResponse:
|
|
2572
|
-
type: object
|
|
2573
|
-
properties:
|
|
2574
|
-
transcript:
|
|
2575
|
-
type: string
|
|
2576
|
-
segments:
|
|
2577
|
-
type: array
|
|
2578
|
-
items:
|
|
2579
|
-
$ref: '#/components/schemas/TranscriptSegment'
|
|
2580
|
-
language:
|
|
2581
|
-
type: string
|
|
2582
|
-
HashtagInfo:
|
|
2583
|
-
type: object
|
|
2584
|
-
properties:
|
|
2585
|
-
hashtag:
|
|
2586
|
-
type: string
|
|
2587
|
-
status:
|
|
2588
|
-
type: string
|
|
2589
|
-
enum: [safe, banned, restricted, unknown]
|
|
2590
|
-
postCount:
|
|
2591
|
-
type: integer
|
|
2592
|
-
HashtagCheckResponse:
|
|
2593
|
-
type: object
|
|
2594
|
-
properties:
|
|
2595
|
-
hashtags:
|
|
2596
|
-
type: array
|
|
2597
|
-
items:
|
|
2598
|
-
$ref: '#/components/schemas/HashtagInfo'
|
|
2599
|
-
CaptionResponse:
|
|
2600
|
-
type: object
|
|
2601
|
-
properties:
|
|
2602
|
-
caption:
|
|
2603
|
-
type: string
|
|
2604
2523
|
# Users Responses
|
|
2605
2524
|
User:
|
|
2606
2525
|
type: object
|
|
@@ -2866,656 +2785,7 @@ webhooks:
|
|
|
2866
2785
|
security:
|
|
2867
2786
|
- bearerAuth: []
|
|
2868
2787
|
paths:
|
|
2869
|
-
#
|
|
2870
|
-
# Tools API - Media Download & Utilities
|
|
2871
|
-
# ============================================
|
|
2872
|
-
/v1/tools/youtube/download:
|
|
2873
|
-
get:
|
|
2874
|
-
operationId: downloadYouTubeVideo
|
|
2875
|
-
tags: [Tools]
|
|
2876
|
-
summary: Download YouTube video
|
|
2877
|
-
description: |
|
|
2878
|
-
Download YouTube videos or audio. Returns available formats or direct download URL.
|
|
2879
|
-
|
|
2880
|
-
Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
2881
|
-
security:
|
|
2882
|
-
- bearerAuth: []
|
|
2883
|
-
parameters:
|
|
2884
|
-
- name: url
|
|
2885
|
-
in: query
|
|
2886
|
-
required: true
|
|
2887
|
-
description: YouTube video URL or video ID
|
|
2888
|
-
schema:
|
|
2889
|
-
type: string
|
|
2890
|
-
example: "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
|
|
2891
|
-
- name: action
|
|
2892
|
-
in: query
|
|
2893
|
-
description: "Action to perform: 'download' returns download URL, 'formats' lists available formats"
|
|
2894
|
-
schema:
|
|
2895
|
-
type: string
|
|
2896
|
-
enum: [download, formats]
|
|
2897
|
-
default: download
|
|
2898
|
-
- name: format
|
|
2899
|
-
in: query
|
|
2900
|
-
description: Desired format (when action=download)
|
|
2901
|
-
schema:
|
|
2902
|
-
type: string
|
|
2903
|
-
enum: [video, audio]
|
|
2904
|
-
default: video
|
|
2905
|
-
- name: quality
|
|
2906
|
-
in: query
|
|
2907
|
-
description: Desired quality (when action=download)
|
|
2908
|
-
schema:
|
|
2909
|
-
type: string
|
|
2910
|
-
enum: [hd, sd]
|
|
2911
|
-
default: hd
|
|
2912
|
-
- name: formatId
|
|
2913
|
-
in: query
|
|
2914
|
-
description: Specific format ID from formats list
|
|
2915
|
-
schema:
|
|
2916
|
-
type: string
|
|
2917
|
-
responses:
|
|
2918
|
-
"200":
|
|
2919
|
-
description: Success
|
|
2920
|
-
headers:
|
|
2921
|
-
X-RateLimit-Limit:
|
|
2922
|
-
schema: { type: string }
|
|
2923
|
-
description: Daily rate limit
|
|
2924
|
-
X-RateLimit-Remaining:
|
|
2925
|
-
schema: { type: string }
|
|
2926
|
-
description: Remaining calls today
|
|
2927
|
-
X-RateLimit-Reset:
|
|
2928
|
-
schema: { type: string }
|
|
2929
|
-
description: Unix timestamp when limit resets
|
|
2930
|
-
content:
|
|
2931
|
-
application/json:
|
|
2932
|
-
schema:
|
|
2933
|
-
type: object
|
|
2934
|
-
properties:
|
|
2935
|
-
success: { type: boolean }
|
|
2936
|
-
title: { type: string }
|
|
2937
|
-
downloadUrl: { type: string, format: uri }
|
|
2938
|
-
formats:
|
|
2939
|
-
type: array
|
|
2940
|
-
items:
|
|
2941
|
-
type: object
|
|
2942
|
-
properties:
|
|
2943
|
-
id: { type: string }
|
|
2944
|
-
label: { type: string }
|
|
2945
|
-
ext: { type: string }
|
|
2946
|
-
type: { type: string }
|
|
2947
|
-
height: { type: integer }
|
|
2948
|
-
width: { type: integer }
|
|
2949
|
-
"401":
|
|
2950
|
-
$ref: '#/components/responses/Unauthorized'
|
|
2951
|
-
"403":
|
|
2952
|
-
description: Tools API not available on free plan
|
|
2953
|
-
"429":
|
|
2954
|
-
description: Daily rate limit exceeded
|
|
2955
|
-
|
|
2956
|
-
/v1/tools/youtube/transcript:
|
|
2957
|
-
get:
|
|
2958
|
-
operationId: getYouTubeTranscript
|
|
2959
|
-
tags: [Tools]
|
|
2960
|
-
summary: Get YouTube transcript
|
|
2961
|
-
description: |
|
|
2962
|
-
Extract transcript/captions from a YouTube video.
|
|
2963
|
-
|
|
2964
|
-
Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
2965
|
-
security:
|
|
2966
|
-
- bearerAuth: []
|
|
2967
|
-
parameters:
|
|
2968
|
-
- name: url
|
|
2969
|
-
in: query
|
|
2970
|
-
required: true
|
|
2971
|
-
description: YouTube video URL or video ID
|
|
2972
|
-
schema:
|
|
2973
|
-
type: string
|
|
2974
|
-
- name: lang
|
|
2975
|
-
in: query
|
|
2976
|
-
description: Language code for transcript
|
|
2977
|
-
schema:
|
|
2978
|
-
type: string
|
|
2979
|
-
default: en
|
|
2980
|
-
responses:
|
|
2981
|
-
"200":
|
|
2982
|
-
description: Success
|
|
2983
|
-
content:
|
|
2984
|
-
application/json:
|
|
2985
|
-
schema:
|
|
2986
|
-
type: object
|
|
2987
|
-
properties:
|
|
2988
|
-
success: { type: boolean }
|
|
2989
|
-
videoId: { type: string }
|
|
2990
|
-
language: { type: string }
|
|
2991
|
-
fullText: { type: string }
|
|
2992
|
-
segments:
|
|
2993
|
-
type: array
|
|
2994
|
-
items:
|
|
2995
|
-
type: object
|
|
2996
|
-
properties:
|
|
2997
|
-
text: { type: string }
|
|
2998
|
-
start: { type: number }
|
|
2999
|
-
duration: { type: number }
|
|
3000
|
-
"404":
|
|
3001
|
-
description: No transcript available
|
|
3002
|
-
"503":
|
|
3003
|
-
description: Transcript service temporarily unavailable
|
|
3004
|
-
|
|
3005
|
-
/v1/tools/instagram/download:
|
|
3006
|
-
get:
|
|
3007
|
-
operationId: downloadInstagramMedia
|
|
3008
|
-
tags: [Tools]
|
|
3009
|
-
summary: Download Instagram media
|
|
3010
|
-
description: |
|
|
3011
|
-
Download Instagram reels, posts, or photos.
|
|
3012
|
-
|
|
3013
|
-
Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
3014
|
-
security:
|
|
3015
|
-
- bearerAuth: []
|
|
3016
|
-
parameters:
|
|
3017
|
-
- name: url
|
|
3018
|
-
in: query
|
|
3019
|
-
required: true
|
|
3020
|
-
description: Instagram reel or post URL
|
|
3021
|
-
schema:
|
|
3022
|
-
type: string
|
|
3023
|
-
example: "https://www.instagram.com/reel/ABC123/"
|
|
3024
|
-
responses:
|
|
3025
|
-
"200":
|
|
3026
|
-
description: Success
|
|
3027
|
-
content:
|
|
3028
|
-
application/json:
|
|
3029
|
-
schema:
|
|
3030
|
-
type: object
|
|
3031
|
-
properties:
|
|
3032
|
-
success: { type: boolean }
|
|
3033
|
-
title: { type: string }
|
|
3034
|
-
downloadUrl: { type: string, format: uri }
|
|
3035
|
-
|
|
3036
|
-
/v1/tools/instagram/hashtag-checker:
|
|
3037
|
-
post:
|
|
3038
|
-
operationId: checkInstagramHashtags
|
|
3039
|
-
tags: [Tools]
|
|
3040
|
-
summary: Check IG hashtag bans
|
|
3041
|
-
description: |
|
|
3042
|
-
Check if Instagram hashtags are banned, restricted, or safe to use.
|
|
3043
|
-
|
|
3044
|
-
Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
3045
|
-
security:
|
|
3046
|
-
- bearerAuth: []
|
|
3047
|
-
requestBody:
|
|
3048
|
-
required: true
|
|
3049
|
-
content:
|
|
3050
|
-
application/json:
|
|
3051
|
-
schema:
|
|
3052
|
-
type: object
|
|
3053
|
-
required: [hashtags]
|
|
3054
|
-
properties:
|
|
3055
|
-
hashtags:
|
|
3056
|
-
type: array
|
|
3057
|
-
maxItems: 20
|
|
3058
|
-
items:
|
|
3059
|
-
type: string
|
|
3060
|
-
example: ["travel", "followforfollow", "fitness"]
|
|
3061
|
-
responses:
|
|
3062
|
-
"200":
|
|
3063
|
-
description: Success
|
|
3064
|
-
content:
|
|
3065
|
-
application/json:
|
|
3066
|
-
schema:
|
|
3067
|
-
type: object
|
|
3068
|
-
properties:
|
|
3069
|
-
success: { type: boolean }
|
|
3070
|
-
results:
|
|
3071
|
-
type: array
|
|
3072
|
-
items:
|
|
3073
|
-
type: object
|
|
3074
|
-
properties:
|
|
3075
|
-
hashtag: { type: string }
|
|
3076
|
-
status:
|
|
3077
|
-
type: string
|
|
3078
|
-
enum: [banned, restricted, safe, unknown]
|
|
3079
|
-
reason: { type: string }
|
|
3080
|
-
confidence: { type: number }
|
|
3081
|
-
summary:
|
|
3082
|
-
type: object
|
|
3083
|
-
properties:
|
|
3084
|
-
banned: { type: integer }
|
|
3085
|
-
restricted: { type: integer }
|
|
3086
|
-
safe: { type: integer }
|
|
3087
|
-
|
|
3088
|
-
/v1/tools/tiktok/download:
|
|
3089
|
-
get:
|
|
3090
|
-
operationId: downloadTikTokVideo
|
|
3091
|
-
tags: [Tools]
|
|
3092
|
-
summary: Download TikTok video
|
|
3093
|
-
description: |
|
|
3094
|
-
Download TikTok videos with or without watermark.
|
|
3095
|
-
|
|
3096
|
-
Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
3097
|
-
security:
|
|
3098
|
-
- bearerAuth: []
|
|
3099
|
-
parameters:
|
|
3100
|
-
- name: url
|
|
3101
|
-
in: query
|
|
3102
|
-
required: true
|
|
3103
|
-
description: TikTok video URL or ID
|
|
3104
|
-
schema:
|
|
3105
|
-
type: string
|
|
3106
|
-
- name: action
|
|
3107
|
-
in: query
|
|
3108
|
-
description: "'formats' to list available formats"
|
|
3109
|
-
schema:
|
|
3110
|
-
type: string
|
|
3111
|
-
enum: [download, formats]
|
|
3112
|
-
default: download
|
|
3113
|
-
- name: formatId
|
|
3114
|
-
in: query
|
|
3115
|
-
description: Specific format ID (0 = no watermark, etc.)
|
|
3116
|
-
schema:
|
|
3117
|
-
type: string
|
|
3118
|
-
responses:
|
|
3119
|
-
"200":
|
|
3120
|
-
description: Success
|
|
3121
|
-
content:
|
|
3122
|
-
application/json:
|
|
3123
|
-
schema:
|
|
3124
|
-
type: object
|
|
3125
|
-
properties:
|
|
3126
|
-
success: { type: boolean }
|
|
3127
|
-
title: { type: string }
|
|
3128
|
-
downloadUrl: { type: string, format: uri }
|
|
3129
|
-
formats:
|
|
3130
|
-
type: array
|
|
3131
|
-
items:
|
|
3132
|
-
type: object
|
|
3133
|
-
properties:
|
|
3134
|
-
id: { type: string }
|
|
3135
|
-
label: { type: string }
|
|
3136
|
-
ext: { type: string }
|
|
3137
|
-
|
|
3138
|
-
/v1/tools/twitter/download:
|
|
3139
|
-
get:
|
|
3140
|
-
operationId: downloadTwitterMedia
|
|
3141
|
-
tags: [Tools]
|
|
3142
|
-
summary: Download Twitter/X media
|
|
3143
|
-
description: |
|
|
3144
|
-
Download videos from Twitter/X posts.
|
|
3145
|
-
|
|
3146
|
-
Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
3147
|
-
security:
|
|
3148
|
-
- bearerAuth: []
|
|
3149
|
-
parameters:
|
|
3150
|
-
- name: url
|
|
3151
|
-
in: query
|
|
3152
|
-
required: true
|
|
3153
|
-
description: Twitter/X post URL
|
|
3154
|
-
schema:
|
|
3155
|
-
type: string
|
|
3156
|
-
example: "https://x.com/user/status/123456789"
|
|
3157
|
-
- name: action
|
|
3158
|
-
in: query
|
|
3159
|
-
schema:
|
|
3160
|
-
type: string
|
|
3161
|
-
enum: [download, formats]
|
|
3162
|
-
default: download
|
|
3163
|
-
- name: formatId
|
|
3164
|
-
in: query
|
|
3165
|
-
schema:
|
|
3166
|
-
type: string
|
|
3167
|
-
responses:
|
|
3168
|
-
"200":
|
|
3169
|
-
description: Success
|
|
3170
|
-
content:
|
|
3171
|
-
application/json:
|
|
3172
|
-
schema:
|
|
3173
|
-
type: object
|
|
3174
|
-
properties:
|
|
3175
|
-
success: { type: boolean }
|
|
3176
|
-
title: { type: string }
|
|
3177
|
-
downloadUrl: { type: string, format: uri }
|
|
3178
|
-
|
|
3179
|
-
/v1/tools/facebook/download:
|
|
3180
|
-
get:
|
|
3181
|
-
operationId: downloadFacebookVideo
|
|
3182
|
-
tags: [Tools]
|
|
3183
|
-
summary: Download Facebook video
|
|
3184
|
-
description: |
|
|
3185
|
-
Download videos and reels from Facebook.
|
|
3186
|
-
|
|
3187
|
-
Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
3188
|
-
security:
|
|
3189
|
-
- bearerAuth: []
|
|
3190
|
-
parameters:
|
|
3191
|
-
- name: url
|
|
3192
|
-
in: query
|
|
3193
|
-
required: true
|
|
3194
|
-
description: Facebook video or reel URL
|
|
3195
|
-
schema:
|
|
3196
|
-
type: string
|
|
3197
|
-
responses:
|
|
3198
|
-
"200":
|
|
3199
|
-
description: Success
|
|
3200
|
-
content:
|
|
3201
|
-
application/json:
|
|
3202
|
-
schema:
|
|
3203
|
-
type: object
|
|
3204
|
-
properties:
|
|
3205
|
-
success: { type: boolean }
|
|
3206
|
-
title: { type: string }
|
|
3207
|
-
downloadUrl: { type: string, format: uri }
|
|
3208
|
-
thumbnail: { type: string, format: uri }
|
|
3209
|
-
|
|
3210
|
-
/v1/tools/linkedin/download:
|
|
3211
|
-
get:
|
|
3212
|
-
operationId: downloadLinkedInVideo
|
|
3213
|
-
tags: [Tools]
|
|
3214
|
-
summary: Download LinkedIn video
|
|
3215
|
-
description: |
|
|
3216
|
-
Download videos from LinkedIn posts.
|
|
3217
|
-
|
|
3218
|
-
Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
3219
|
-
security:
|
|
3220
|
-
- bearerAuth: []
|
|
3221
|
-
parameters:
|
|
3222
|
-
- name: url
|
|
3223
|
-
in: query
|
|
3224
|
-
required: true
|
|
3225
|
-
description: LinkedIn post URL
|
|
3226
|
-
schema:
|
|
3227
|
-
type: string
|
|
3228
|
-
responses:
|
|
3229
|
-
"200":
|
|
3230
|
-
description: Success
|
|
3231
|
-
content:
|
|
3232
|
-
application/json:
|
|
3233
|
-
schema:
|
|
3234
|
-
type: object
|
|
3235
|
-
properties:
|
|
3236
|
-
success: { type: boolean }
|
|
3237
|
-
title: { type: string }
|
|
3238
|
-
downloadUrl: { type: string, format: uri }
|
|
3239
|
-
|
|
3240
|
-
/v1/tools/bluesky/download:
|
|
3241
|
-
get:
|
|
3242
|
-
operationId: downloadBlueskyMedia
|
|
3243
|
-
tags: [Tools]
|
|
3244
|
-
summary: Download Bluesky media
|
|
3245
|
-
description: |
|
|
3246
|
-
Download videos from Bluesky posts.
|
|
3247
|
-
|
|
3248
|
-
Rate limits: Build (50/day), Accelerate (500/day), Unlimited (unlimited).
|
|
3249
|
-
security:
|
|
3250
|
-
- bearerAuth: []
|
|
3251
|
-
parameters:
|
|
3252
|
-
- name: url
|
|
3253
|
-
in: query
|
|
3254
|
-
required: true
|
|
3255
|
-
description: Bluesky post URL
|
|
3256
|
-
schema:
|
|
3257
|
-
type: string
|
|
3258
|
-
example: "https://bsky.app/profile/user.bsky.social/post/abc123"
|
|
3259
|
-
responses:
|
|
3260
|
-
"200":
|
|
3261
|
-
description: Success
|
|
3262
|
-
content:
|
|
3263
|
-
application/json:
|
|
3264
|
-
schema:
|
|
3265
|
-
type: object
|
|
3266
|
-
properties:
|
|
3267
|
-
success: { type: boolean }
|
|
3268
|
-
title: { type: string }
|
|
3269
|
-
text: { type: string }
|
|
3270
|
-
downloadUrl: { type: string, format: uri }
|
|
3271
|
-
thumbnail: { type: string, format: uri }
|
|
3272
|
-
|
|
3273
|
-
# ============================================
|
|
3274
|
-
# Validate
|
|
3275
|
-
# ============================================
|
|
3276
|
-
/v1/tools/validate/post-length:
|
|
3277
|
-
post:
|
|
3278
|
-
operationId: validatePostLength
|
|
3279
|
-
tags: [Validate]
|
|
3280
|
-
summary: Validate post character count
|
|
3281
|
-
description: |
|
|
3282
|
-
Check weighted character count per platform and whether the text is within each platform's limit.
|
|
3283
|
-
|
|
3284
|
-
Twitter/X uses weighted counting (URLs = 23 chars via t.co, emojis = 2 chars). All other platforms use plain character length.
|
|
3285
|
-
|
|
3286
|
-
Returns counts and limits for all 15 supported platform variants.
|
|
3287
|
-
security:
|
|
3288
|
-
- bearerAuth: []
|
|
3289
|
-
requestBody:
|
|
3290
|
-
required: true
|
|
3291
|
-
content:
|
|
3292
|
-
application/json:
|
|
3293
|
-
schema:
|
|
3294
|
-
type: object
|
|
3295
|
-
required: [text]
|
|
3296
|
-
properties:
|
|
3297
|
-
text:
|
|
3298
|
-
type: string
|
|
3299
|
-
description: The post text to check
|
|
3300
|
-
example: "Check out https://zernio.com for scheduling posts!"
|
|
3301
|
-
responses:
|
|
3302
|
-
"200":
|
|
3303
|
-
description: Character counts per platform
|
|
3304
|
-
content:
|
|
3305
|
-
application/json:
|
|
3306
|
-
schema:
|
|
3307
|
-
type: object
|
|
3308
|
-
properties:
|
|
3309
|
-
text: { type: string }
|
|
3310
|
-
platforms:
|
|
3311
|
-
type: object
|
|
3312
|
-
additionalProperties:
|
|
3313
|
-
type: object
|
|
3314
|
-
properties:
|
|
3315
|
-
count: { type: integer, description: "Character count for this platform" }
|
|
3316
|
-
limit: { type: integer, description: "Maximum allowed characters" }
|
|
3317
|
-
valid: { type: boolean, description: "Whether the text is within the limit" }
|
|
3318
|
-
example:
|
|
3319
|
-
twitter: { count: 51, limit: 280, valid: true }
|
|
3320
|
-
twitterPremium: { count: 51, limit: 25000, valid: true }
|
|
3321
|
-
instagram: { count: 51, limit: 2200, valid: true }
|
|
3322
|
-
bluesky: { count: 51, limit: 300, valid: true }
|
|
3323
|
-
snapchat: { count: 51, limit: 160, valid: true }
|
|
3324
|
-
|
|
3325
|
-
/v1/tools/validate/post:
|
|
3326
|
-
post:
|
|
3327
|
-
operationId: validatePost
|
|
3328
|
-
tags: [Validate]
|
|
3329
|
-
summary: Validate post content
|
|
3330
|
-
description: |
|
|
3331
|
-
Dry-run the full post validation pipeline without publishing. Catches issues like missing media for Instagram/TikTok/YouTube, hashtag limits, invalid thread formats, Facebook Reel requirements, and character limit violations.
|
|
3332
|
-
|
|
3333
|
-
Accepts the same body as `POST /v1/posts`. Does NOT validate accounts, process media, or track usage. This is content-only validation.
|
|
3334
|
-
|
|
3335
|
-
Returns errors for failures and warnings for near-limit content (>90% of character limit).
|
|
3336
|
-
security:
|
|
3337
|
-
- bearerAuth: []
|
|
3338
|
-
requestBody:
|
|
3339
|
-
required: true
|
|
3340
|
-
content:
|
|
3341
|
-
application/json:
|
|
3342
|
-
schema:
|
|
3343
|
-
type: object
|
|
3344
|
-
required: [platforms]
|
|
3345
|
-
properties:
|
|
3346
|
-
content:
|
|
3347
|
-
type: string
|
|
3348
|
-
description: Post text content
|
|
3349
|
-
example: "Check out this video!"
|
|
3350
|
-
platforms:
|
|
3351
|
-
type: array
|
|
3352
|
-
description: Target platforms (same format as POST /v1/posts)
|
|
3353
|
-
items:
|
|
3354
|
-
type: object
|
|
3355
|
-
required: [platform]
|
|
3356
|
-
properties:
|
|
3357
|
-
platform:
|
|
3358
|
-
type: string
|
|
3359
|
-
enum: [twitter, instagram, tiktok, youtube, facebook, linkedin, bluesky, threads, reddit, pinterest, telegram, snapchat, googlebusiness]
|
|
3360
|
-
customContent: { type: string }
|
|
3361
|
-
platformSpecificData: { type: object }
|
|
3362
|
-
customMedia:
|
|
3363
|
-
type: array
|
|
3364
|
-
items:
|
|
3365
|
-
type: object
|
|
3366
|
-
properties:
|
|
3367
|
-
url: { type: string }
|
|
3368
|
-
type: { type: string, enum: [image, video] }
|
|
3369
|
-
example:
|
|
3370
|
-
- platform: youtube
|
|
3371
|
-
- platform: twitter
|
|
3372
|
-
mediaItems:
|
|
3373
|
-
type: array
|
|
3374
|
-
description: Root media items shared across platforms
|
|
3375
|
-
items:
|
|
3376
|
-
type: object
|
|
3377
|
-
properties:
|
|
3378
|
-
url: { type: string, format: uri }
|
|
3379
|
-
type: { type: string, enum: [image, video] }
|
|
3380
|
-
responses:
|
|
3381
|
-
"200":
|
|
3382
|
-
description: Validation result
|
|
3383
|
-
content:
|
|
3384
|
-
application/json:
|
|
3385
|
-
schema:
|
|
3386
|
-
oneOf:
|
|
3387
|
-
- type: object
|
|
3388
|
-
description: Valid post
|
|
3389
|
-
properties:
|
|
3390
|
-
valid: { type: boolean }
|
|
3391
|
-
message: { type: string, example: "No validation issues found." }
|
|
3392
|
-
warnings:
|
|
3393
|
-
type: array
|
|
3394
|
-
items:
|
|
3395
|
-
type: object
|
|
3396
|
-
properties:
|
|
3397
|
-
platform: { type: string }
|
|
3398
|
-
warning: { type: string }
|
|
3399
|
-
- type: object
|
|
3400
|
-
description: Invalid post
|
|
3401
|
-
properties:
|
|
3402
|
-
valid: { type: boolean }
|
|
3403
|
-
errors:
|
|
3404
|
-
type: array
|
|
3405
|
-
items:
|
|
3406
|
-
type: object
|
|
3407
|
-
properties:
|
|
3408
|
-
platform: { type: string }
|
|
3409
|
-
error: { type: string }
|
|
3410
|
-
warnings:
|
|
3411
|
-
type: array
|
|
3412
|
-
items:
|
|
3413
|
-
type: object
|
|
3414
|
-
properties:
|
|
3415
|
-
platform: { type: string }
|
|
3416
|
-
warning: { type: string }
|
|
3417
|
-
|
|
3418
|
-
/v1/tools/validate/media:
|
|
3419
|
-
post:
|
|
3420
|
-
operationId: validateMedia
|
|
3421
|
-
tags: [Validate]
|
|
3422
|
-
summary: Validate media URL
|
|
3423
|
-
description: |
|
|
3424
|
-
Check if a media URL is accessible and return metadata (content type, file size) plus per-platform size limit comparisons.
|
|
3425
|
-
|
|
3426
|
-
Performs a HEAD request (with GET fallback) to detect content type and size. Rejects private/localhost URLs for SSRF protection.
|
|
3427
|
-
|
|
3428
|
-
Platform limits are sourced from each platform's actual upload constraints.
|
|
3429
|
-
security:
|
|
3430
|
-
- bearerAuth: []
|
|
3431
|
-
requestBody:
|
|
3432
|
-
required: true
|
|
3433
|
-
content:
|
|
3434
|
-
application/json:
|
|
3435
|
-
schema:
|
|
3436
|
-
type: object
|
|
3437
|
-
required: [url]
|
|
3438
|
-
properties:
|
|
3439
|
-
url:
|
|
3440
|
-
type: string
|
|
3441
|
-
format: uri
|
|
3442
|
-
description: Public media URL to validate
|
|
3443
|
-
example: "https://example.com/image.jpg"
|
|
3444
|
-
responses:
|
|
3445
|
-
"200":
|
|
3446
|
-
description: Media validation result
|
|
3447
|
-
content:
|
|
3448
|
-
application/json:
|
|
3449
|
-
schema:
|
|
3450
|
-
type: object
|
|
3451
|
-
properties:
|
|
3452
|
-
valid: { type: boolean }
|
|
3453
|
-
url: { type: string, format: uri }
|
|
3454
|
-
error: { type: string, description: "Error message if valid is false" }
|
|
3455
|
-
contentType: { type: string, example: "image/jpeg" }
|
|
3456
|
-
size: { type: integer, nullable: true, description: "File size in bytes" }
|
|
3457
|
-
sizeFormatted: { type: string, example: "245 KB" }
|
|
3458
|
-
type: { type: string, enum: [image, video, unknown] }
|
|
3459
|
-
platformLimits:
|
|
3460
|
-
type: object
|
|
3461
|
-
description: Per-platform size limit comparison (only present when size and type are known)
|
|
3462
|
-
additionalProperties:
|
|
3463
|
-
type: object
|
|
3464
|
-
properties:
|
|
3465
|
-
limit: { type: integer, description: "Platform size limit in bytes" }
|
|
3466
|
-
limitFormatted: { type: string }
|
|
3467
|
-
withinLimit: { type: boolean }
|
|
3468
|
-
example:
|
|
3469
|
-
instagram: { limit: 8388608, limitFormatted: "8.0 MB", withinLimit: true }
|
|
3470
|
-
twitter: { limit: 5242880, limitFormatted: "5.0 MB", withinLimit: true }
|
|
3471
|
-
bluesky: { limit: 1000000, limitFormatted: "977 KB", withinLimit: true }
|
|
3472
|
-
|
|
3473
|
-
/v1/tools/validate/subreddit:
|
|
3474
|
-
get:
|
|
3475
|
-
operationId: validateSubreddit
|
|
3476
|
-
tags: [Validate]
|
|
3477
|
-
summary: Check subreddit existence
|
|
3478
|
-
description: |
|
|
3479
|
-
Check if a subreddit exists and return basic info (title, subscriber count, NSFW status, post types allowed).
|
|
3480
|
-
|
|
3481
|
-
Uses Reddit's public JSON API (no Reddit auth needed). Returns `exists: false` for private, banned, or nonexistent subreddits.
|
|
3482
|
-
security:
|
|
3483
|
-
- bearerAuth: []
|
|
3484
|
-
parameters:
|
|
3485
|
-
- name: name
|
|
3486
|
-
in: query
|
|
3487
|
-
required: true
|
|
3488
|
-
description: Subreddit name (with or without "r/" prefix)
|
|
3489
|
-
schema:
|
|
3490
|
-
type: string
|
|
3491
|
-
example: "programming"
|
|
3492
|
-
responses:
|
|
3493
|
-
"200":
|
|
3494
|
-
description: Subreddit lookup result
|
|
3495
|
-
content:
|
|
3496
|
-
application/json:
|
|
3497
|
-
schema:
|
|
3498
|
-
oneOf:
|
|
3499
|
-
- type: object
|
|
3500
|
-
description: Subreddit exists
|
|
3501
|
-
properties:
|
|
3502
|
-
exists: { type: boolean }
|
|
3503
|
-
subreddit:
|
|
3504
|
-
type: object
|
|
3505
|
-
properties:
|
|
3506
|
-
name: { type: string, example: "programming" }
|
|
3507
|
-
title: { type: string, example: "programming" }
|
|
3508
|
-
description: { type: string, example: "Computer Programming" }
|
|
3509
|
-
subscribers: { type: integer, example: 6844284 }
|
|
3510
|
-
isNSFW: { type: boolean }
|
|
3511
|
-
type: { type: string, enum: [public, private, restricted], example: "public" }
|
|
3512
|
-
allowImages: { type: boolean }
|
|
3513
|
-
allowVideos: { type: boolean }
|
|
3514
|
-
- type: object
|
|
3515
|
-
description: Subreddit not found
|
|
3516
|
-
properties:
|
|
3517
|
-
exists: { type: boolean }
|
|
3518
|
-
error: { type: string }
|
|
2788
|
+
# NOTE: Tools & Validate endpoints (/v1/tools/*) removed from docs but still functional for existing customers
|
|
3519
2789
|
|
|
3520
2790
|
# ============================================
|
|
3521
2791
|
# Analytics
|