Image Upload
XenonFlare provides dedicated endpoints for uploading videos and images. Choosing the correct endpoint ensures optimized processing and validation for your media type. For deleting multiple images, see Bulk Operations.
Endpoint
POST /media/images
If you are using chunked uploads, the POST /media/images endpoint is used to finalize the upload by providing the fileId instead of the file itself.
Headers
X-API-Key: Your API keyAuthorization:Bearer <API_KEY>(Alternative toX-API-Key)Content-Type:multipart/form-data
Request Body (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
file | File | Yes* | The image file to upload. |
fileId | string | Yes* | The unique ID from a chunked upload. Required if file is missing. |
title | string | No | Internal title for the image. |
description | string | No | Internal description for the image. |
platforms | string[] | Yes | JSON array of platforms (e.g., ["instagram", "tiktok"]). |
scheduledAt | string | No | ISO 8601 date string for scheduled publishing. |
* 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., instagram, tiktok) and provide a JSON string containing the parameters for that platform.
How to Select Accounts
For each platform, you can specify which connected accounts to use by adding an accounts array to the nested JSON object.
- 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.
Instagram Specific Fields
| Nested Key | Type | Description |
|---|---|---|
caption | string | Caption for the Instagram post |
autoPublish | boolean | Whether to auto-publish the post |
accounts | array | List of Instagram account IDs |
Note: For nested config, send a JSON string in the field instagram.
TikTok Specific Fields
| Nested Key | Type | Description |
|---|---|---|
caption | string | Caption for the TikTok |
privacy | select | Privacy status Options: PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, SELF_ONLY |
autoPublish | boolean | Whether to auto-publish the TikTok |
accounts | array | List of TikTok account IDs |
disableComment | boolean | Disable comments |
disableDuet | boolean | Disable duet |
disableStitch | boolean | Disable stitch |
Note: For nested config, send a JSON string in the field tiktok.
LinkedIn Specific Fields
| Nested Key | Type | Description |
|---|---|---|
comment | string | Comment for the LinkedIn post |
autoPublish | boolean | Whether to auto-publish the post |
accounts | array | List of LinkedIn account IDs |
Note: For nested config, send a JSON string in the field linkedin.
Pinterest Specific Fields
| Nested Key | Type | Description |
|---|---|---|
title | string | Title for the Pinterest pin |
description | string | Description for the Pinterest pin |
autoPublish | boolean | Whether to auto-publish the pin |
accounts | array | List of Pinterest account IDs |
Note: For nested config, send a JSON string in the field pinterest.
Example Request
curl -X POST https://api.xenonflare.com/media/images \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@/path/to/image.jpg" \
-F "platforms=[\"instagram\", \"pinterest\"]" \
-F "instagram={\"caption\": \"Stunning view! #nature\", \"autoPublish\": true, \"accounts\": [\"YOUR_INSTAGRAM_BUSINESS_ID\"]}" \
-F "pinterest={\"title\": \"Nature Photography\", \"description\": \"Beautiful landscape photo.\", \"autoPublish\": true, \"accounts\": [\"YOUR_PINTEREST_ID\"]}"
Response
{
"success": true,
"message": "Upload successful",
"data": [
{
"id": "65cbde...",
"title": "Untitled Image",
"status": "scheduled",
"platforms": ["instagram", "pinterest"],
"createdAt": "2024-02-13T10:00:00.000Z"
}
]
}