Skip to main content

Upload Video

Upload video to various social media platforms using this endpoint.

Endpoint

POST /api/upload

Headers

NameValueDescription
AuthorizationApikey your-api-key-hereYour API key for authentication

Common Parameters

NameTypeRequiredDescription
userStringYesUser identifier
platform[]ArrayYesPlatform(s) to upload to (e.g., "tiktok", "instagram", "linkedin", "youtube", "facebook", "twitter", "threads", "pinterest")
videoFileYesThe video file to upload (can be a file upload or a video URL)
titleStringYesTitle of the video

Platform-Specific Parameters

TikTok

For more information about Tiktok API parameters, visit the Tiktok API documentation.

NameTypeRequiredDescriptionDefault
privacy_levelStringNoPrivacy setting ("PUBLIC_TO_EVERYONE", "MUTUAL_FOLLOW_FRIENDS", "FOLLOWER_OF_CREATOR", "SELF_ONLY")"PUBLIC_TO_EVERYONE"
disable_duetBooleanNoDisable duet featurefalse
disable_commentBooleanNoDisable commentsfalse
disable_stitchBooleanNoDisable stitch featurefalse
cover_timestampIntegerNoTimestamp in milliseconds for video cover1000
brand_content_toggleBooleanNoEnable branded contentfalse
brand_organicBooleanNoEnable organic branded contentfalse
branded_contentBooleanNoEnable branded content with disclosurefalse
brand_organic_toggleBooleanNoEnable organic branded content togglefalse
is_aigcBooleanNoIndicates if content is AI-generatedfalse

Instagram

For more information about Instagram API parameters, visit the Instagram Graph API documentation.

NameTypeRequiredDescriptionDefault
media_typeStringNoType of media ("REELS" or "STORIES")"REELS"
share_to_feedBooleanNoWhether to share to feedtrue
collaboratorsStringNoComma-separated list of collaborator usernames-
cover_urlStringNoURL for custom video cover-
audio_nameStringNoName of the audio track-
user_tagsStringNoComma-separated list of user tags-
location_idStringNoInstagram location ID-
thumb_offsetStringNoTimestamp offset for video thumbnail-

LinkedIn

For more information about LinkedIn API parameters, visit the LinkedIn Marketing API documentation.

NameTypeRequiredDescriptionDefault
descriptionStringNoThe user generated commentary for the postTitle param
visibilityStringYesVisibility setting ("CONNECTIONS", "PUBLIC", "LOGGED_IN", "CONTAINER")"PUBLIC"
target_linkedin_page_idStringNoLinkedIn page ID to upload videos to an organization"107579166"

YouTube

For more information about YouTube API parameters, visit the YouTube Data API documentation.

NameTypeRequiredDescriptionDefault
descriptionStringNoDescription of the videoTitle param
tagsArrayNoArray of tags[]
categoryIdStringNoVideo category"22"
privacyStatusStringNoPrivacy setting ("public", "unlisted", "private")"public"
embeddableBooleanNoWhether video is embeddabletrue
licenseStringNoVideo license ("youtube", "creativeCommon")"youtube"
publicStatsViewableBooleanNoWhether public stats are viewabletrue
madeForKidsBooleanNoWhether video is made for kidsfalse

Facebook

For more information about Facebook API parameters, visit the Facebook Graph API documentation.

NameTypeRequiredDescriptionDefault
facebook_page_idStringYesFacebook Page ID where the video will be posted-
descriptionStringNoDescription of the videoTitle param
video_stateStringNoDesired state of the video ("DRAFT", "PUBLISHED", "SCHEDULED")"PUBLISHED"

Note: For correct posting on Facebook, ensure the Page is directly associated with your personal profile and not managed through a Business Portfolio.

Threads

For more information about Threads API parameters, visit the Threads API documentation.

NameTypeRequiredDescriptionDefault
descriptionStringNoThe user generated commentary for the postTitle param

X (Twitter)

For more information about X API parameters, visit the X API Post Creation documentation.

NameTypeRequiredDescriptionDefault
x_long_text_as_postBooleanNoWhen true, publishes long text as a single post. Otherwise, creates a thread.false
tagged_user_idsArrayNoArray of user IDs to tag[]
reply_settingsStringNoWho can reply ("following", "mentionedUsers", "everyone")"following"
nullcastBooleanNoWhether to publish without broadcastingfalse
place_idStringNoLocation place ID-
poll_durationIntegerNoPoll duration in minutes1440
poll_optionsArrayNoArray of poll options[]
poll_reply_settingsStringNoWho can reply to poll ("following", "mentionedUsers", "everyone")"following"

How X (Twitter) Thread Creation Works (Advanced Logic)

Note: The following describes the default thread creation logic. To override this and post long text as a single post, set the x_long_text_as_post parameter to true.

The system is engineered to create well-formatted, natural-looking threads on X (formerly Twitter). Instead of simply splitting text at every line break, it intelligently groups paragraphs to create more readable tweets.

Here's the step-by-step logic:

Intelligent Paragraph Grouping (Primary Method):

The function first identifies distinct paragraphs (any text separated by a blank line). It then combines as many of these paragraphs as possible into a single tweet, filling it up to the 280-character limit without exceeding it. The double newline (\n\n) between combined paragraphs is preserved for formatting. This results in fewer, more substantial tweets that flow naturally, just as if a person had written them.

Handling Exceptionally Long Paragraphs:

If a single paragraph is, by itself, longer than the 280-character limit, a more granular splitting logic is automatically triggered for that paragraph only:

  • Split by Line Break: The system first attempts to break the paragraph down by its individual line breaks (\n).
  • Split by Word: If any of those single lines are still too long, it will split them by words as a final resort.

Media Attachment:

For posts that include photos or videos, all media is attached only to the first tweet of the thread. The subsequent tweets in the thread will be text-only replies.

Pinterest

NameTypeRequiredDescriptionDefault
pinterest_board_idStringYesPinterest board ID to publish the video to.-
pinterest_linkStringNoDestination link for the video Pin.-
pinterest_cover_image_urlStringNoURL of an image to use as the video cover.-
pinterest_cover_image_content_typeStringNoContent type of the cover image (e.g., image/jpeg, image/png), used if pinterest_cover_image_data is provided.-
pinterest_cover_image_dataStringNoBase64 encoded cover image data, used if pinterest_cover_image_content_type is provided.-
pinterest_cover_image_key_frame_timeIntegerNoTime in milliseconds of the video frame to use as cover.-

Example Requests

Upload a Video to TikTok

curl \
-H 'Authorization: Apikey your-api-key-here' \
-F 'video=@/path/to/your/video.mp4' \
-F 'title="Your Video Title"' \
-F 'description="Your video description"' \
-F 'user="test"' \
-F 'platform[]=tiktok' \
-F 'tags[]=hashtag1' \
-F 'tags[]=hashtag2' \
-X POST https://api.upload-post.com/api/upload

Upload a Video to YouTube Using URL

curl \
-H 'Authorization: Apikey your-api-key-here' \
-F 'video="https://example.com/videos/myvideo.mp4"' \
-F 'title="Your Video Title"' \
-F 'description="Your video description"' \
-F 'user="test"' \
-F 'platform[]=youtube' \
-F 'tags[]=tutorial' \
-F 'tags[]=howto' \
-F 'categoryId="22"' \
-X POST https://api.upload-post.com/api/upload