Skip to main content

Upload Photos

Upload photos to various social media platforms using this endpoint.

Note: This feature is a work in progress. More parameters and social media platforms will be added in future updates.

Endpoint

POST /api/upload_photos

Headers

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

Common Parameters

NameTypeRequiredDescription
userStringYesUser identifier
platform[]ArrayYesPlatform(s) to upload to. Supported values: tiktok, instagram, linkedin, facebook, x, threads
photos[]ArrayYesArray of photo files to upload (can be file uploads or photo URLs)
titleStringYesTitle of the post
captionStringNoCaption/description for the photos (this will be used as the post commentary)

This endpoint supports simultaneous photo uploads to multiple social media platforms.

Platform-Specific Parameters

LinkedIn

NameTypeRequiredDescriptionDefault
visibilityStringNoVisibility setting for the post (accepted value: "PUBLIC")PUBLIC
target_linkedin_page_idStringNoLinkedIn page ID to upload photos to an organization"107579166"

Note: The caption is used as the post commentary; no separate description is accepted.

Facebook

NameTypeRequiredDescriptionDefault
facebook_page_idStringYesFacebook Page ID where the photos will be posted-

Note: The caption is applied only to the first photo uploaded. For correct posting on Facebook, ensure the Page is directly associated with your personal profile and not managed through a Business Portfolio.

X (Twitter)

No additional parameters are supported for photo uploads to X.

Note: For Twitter uploads, specify the platform as "x" in the platform[] array.

TikTok

NameTypeRequiredDescriptionDefault
auto_add_musicBooleanNoAutomatically add background music to photosfalse
disable_commentBooleanNoDisable comments on the postfalse
branded_contentBooleanNoIndicate if the post is branded content (requires disclose_commercial=true)false
disclose_commercialBooleanNoDisclose the commercial nature of the post (used with branded_content)false
photo_cover_indexIntegerNoIndex (starting at 0) of the photo to use as the cover/thumbnail for the TikTok photo post0
descriptionStringNoDescription for the TikTok post. If not provided, the title value will be used by default.title

Note: Setting branded_content along with disclose_commercial to true will enable specific branded content toggles on TikTok.

Instagram

NameTypeRequiredDescriptionDefault
media_typeStringNoType of media ("IMAGE" or "STORIES")"IMAGE"

Threads

No platform-specific parameters are required.

Example Requests

Upload Photos to Instagram

curl \
-H 'Authorization: Apikey your-api-key-here' \
-F 'photos[]=@/path/to/your/image1.jpg' \
-F 'user="test"' \
-F 'platform[]=instagram' \
-F 'title="My Photo Title"' \
-F 'description="My photo description"' \
-X POST https://api.upload-post.com/api/upload_photos

Upload Photos to Facebook Using URLs

curl \
-H 'Authorization: Apikey your-api-key-here' \
-F 'photos[]="https://example.com/images/photo1.jpg"' \
-F 'photos[]="https://example.com/images/photo2.jpg"' \
-F 'user="test"' \
-F 'platform[]=facebook' \
-F 'facebook_page_id="123456789"' \
-F 'title="My Photo Title"' \
-F 'caption="Check out these photos!"' \
-X POST https://api.upload-post.com/api/upload_photos

Response Format

TikTok Response

When uploading photos to TikTok, the API returns the following response structure:

{
"results": {
"tiktok": {
"publish_id": "string",
"status": "PUBLISH_COMPLETE",
"success": true,
"url": "https://www.tiktok.com/@username/photo/publish_id"
}
},
"success": true,
"usage": {
"count": 25,
"last_reset": "2025-05-31T19:09:09.984073",
"limit": 120
}
}
FieldTypeDescription
results.tiktok.publish_idStringUnique identifier for the published post
results.tiktok.statusStringPublishing status (e.g., "PUBLISH_COMPLETE")
results.tiktok.successBooleanIndicates if the upload was successful
results.tiktok.urlStringDirect URL to the published TikTok post
successBooleanOverall API request success status
usage.countNumberCurrent API usage count
usage.last_resetStringTimestamp of last usage counter reset
usage.limitNumberAPI usage limit