Skip to main content

Media Upload

XenonFlare provides dedicated endpoints for uploading videos and images. Choosing the correct endpoint ensures optimized processing and validation for your media type.

Video Upload

POST /media/videos

Uploads a video file and schedules it for publication across your connected video platforms (YouTube, Instagram Reels, TikTok, LinkedIn, Pinterest).

Chunked Uploads

If you are using Chunked Uploads, the POST /media/videos endpoint is used to finalize the upload by providing the fileId instead of the file itself.

Headers

NameTypeDescription
X-API-KeystringYour API Key.
Content-TypestringMust be multipart/form-data.

Request Body (Form Data)

FieldTypeRequiredDescription
fileFileYes*The video file. Supported: .mp4, .mov.
fileIdstringYes*The unique ID from a chunked upload. Required if file is missing.
titlestringNoInternal title for the media.
descriptionstringNoInternal description or default caption.
platformsstringYesJSON array: ["youtube", "instagram", "tiktok", "linkedin", "pinterest"].
scheduledAtstringNoISO 8601 date string for scheduling.

* Either file or fileId must be provided.

Configuration

Platform-specific settings must be provided as Nested JSON Objects. Use the platform name as the key (e.g., youtube, tiktok) and provide a JSON string containing the parameters for that platform.

How to Select Channels/Accounts

For each platform, you can specify which connected accounts to use by adding a channels or accounts array to the nested JSON object.

  • YouTube: Use channels (array of YouTube Channel IDs).
  • Instagram, TikTok, LinkedIn, Pinterest: Use accounts (array of platform-specific account IDs).
  • Profiles: Use profileId (string) to target a pre-defined group of accounts.

You can get these IDs from the Channels API or the Posting Profiles API.

YouTube Specific Fields

Nested KeyTypeDescription
titlestringTitle of the YouTube video
descriptionstringDescription of the YouTube video
privacyselectPrivacy status
Options: public, private, unlisted
autoPublishbooleanWhether to auto-publish the video
channelsarrayList of channel IDs

Note: For nested config, send a JSON string in the field youtube.

Instagram Specific Fields

Nested KeyTypeDescription
captionstringCaption for the Instagram post
autoPublishbooleanWhether to auto-publish the post
accountsarrayList of Instagram account IDs

Note: For nested config, send a JSON string in the field instagram.

TikTok Specific Fields

Nested KeyTypeDescription
captionstringCaption for the TikTok
privacyselectPrivacy status
Options: PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, SELF_ONLY
autoPublishbooleanWhether to auto-publish the TikTok
accountsarrayList of TikTok account IDs
disableCommentbooleanDisable comments
disableDuetbooleanDisable duet
disableStitchbooleanDisable stitch

Note: For nested config, send a JSON string in the field tiktok.

LinkedIn Specific Fields

Nested KeyTypeDescription
commentstringComment for the LinkedIn post
autoPublishbooleanWhether to auto-publish the post
accountsarrayList of LinkedIn account IDs

Note: For nested config, send a JSON string in the field linkedin.

Pinterest Specific Fields

Nested KeyTypeDescription
titlestringTitle for the Pinterest pin
descriptionstringDescription for the Pinterest pin
autoPublishbooleanWhether to auto-publish the pin
accountsarrayList of Pinterest account IDs

Note: For nested config, send a JSON string in the field pinterest.


See the Image Upload documentation for uploading images.

Supported Platforms

PlatformVideo
YouTube Shorts
Instagram
TikTok
LinkedIn
Pinterest

Example: Uploading a Video

curl -X POST https://api.xenonflare.com/media/videos \
-H "X-API-Key: your_api_key" \
-F "file=@gaming_highlight.mp4" \
-F "platforms=[\"youtube\", \"tiktok\"]" \
-F "youtube={\"title\": \"Epic Moment #shorts\", \"autoPublish\": true}" \
-F "tiktok={\"caption\": \"Incredible play!\", \"autoPublish\": true}"

Example: Uploading with Nested Config

curl -X POST https://api.xenonflare.com/media/videos \
-H "X-API-Key: your_api_key" \
-F "file=@gaming_highlight.mp4" \
-F "platforms=[\"tiktok\"]" \
-F "tiktok={\"caption\": \"Check this out!\", \"privacy\": \"PUBLIC_TO_EVERYONE\", \"autoPublish\": true}"

Response Body

{
"success": true,
"message": "Upload successful",
"data": [
{
"id": "67a2b...",
"title": "My Post",
"status": "scheduled",
"platforms": ["youtube", "tiktok"]
}
]
}

For large video files (up to 5GB), we recommend using our resumable chunked upload API. This ensures reliability even on unstable connections.