Skip to Content

Threads Upload API

This section details how to upload text, images, videos, and carousels to Threads using the API.

Base URL

https://api.multi-upload-tool.com/api/v1

Authentication

All requests require an API Token in the header: x-api-key: YOUR_API_TOKEN


Requirements

Threads Media Requirements

Text Posts

  • Type: Text-only posts (no media required)
  • Max length: 500 characters

Image Posts

  • Supported Formats: JPG, JPEG, PNG, GIF, WEBP
  • Size: Maximum 8 MB per image
  • Alt Text: Maximum 1000 characters

Video Posts

  • Supported Formats: MP4, MOV, AVI, MKV, WebM
  • Size: Maximum 1 GB (1024 MB)
  • Processing: Videos are processed asynchronously; expect a delay before publishing
  • Items: Minimum 2, maximum 20 items (mix of images and videos)
  • Image Size: Maximum 8 MB per image
  • Video Size: Maximum 1 GB (1024 MB) per video
  • Alt Text: Maximum 1000 characters (applied to all carousel items)

Validation & Limits

The following limits are enforced by our API:

ConstraintLimitNotes
Video file size1 GB (1024 MB)Enforced by API
Image file size8 MB per imageEnforced by API
Post text500 charactersMax character length enforced
Alt text1000 charactersMax character length for image/video alt text
Carousel items2–20 itemsMinimum 2, maximum 20 per carousel
Reply controleveryone, accounts_you_follow, mentioned_only, parent_post_author_only, followers_onlyRestricts who can reply to the post

Source: Threads API — Content Publishing Guide 


Upload Text Post

Upload a text-only post to Threads.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Threads account.
titlestringYesThe text content of the post. Maximum 500 characters.
descriptionstringNoAlternative to title for the post text.
threads_reply_controlstringNoeveryone (default), accounts_you_follow, mentioned_only, parent_post_author_only, followers_only.

Example Request

curl -X POST https://api.multi-upload-tool.com/api/v1/upload \ -H "x-api-key: YOUR_API_TOKEN" \ -F "accountId=123" \ -F "title=Just thinking out loud on Threads 🧵" \ -F "threads_reply_control=everyone"

Example Response

{ "success": true, "message": "Upload queued successfully", "data": { "uploadId": 789, "status": "pending", "jobId": "job_456" } }

Upload Image Post

Upload a single image to Threads.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Threads account.
photoFileYesThe image file (JPG, JPEG, PNG, GIF, WEBP). Maximum 8 MB.
titlestringYesPost text/caption. Maximum 500 characters.
descriptionstringNoAlternative to title for the post text.
threads_alt_textstringNoAccessibility alt text for the image. Maximum 1000 characters.
threads_reply_controlstringNoeveryone (default), accounts_you_follow, mentioned_only, parent_post_author_only, followers_only.

Example Request

curl -X POST https://api.multi-upload-tool.com/api/v1/upload \ -H "x-api-key: YOUR_API_TOKEN" \ -F "accountId=123" \ -F "photo=@/path/to/image.jpg" \ -F "title=Beautiful sunset 🌅" \ -F "threads_alt_text=A warm golden sunset over the ocean"

Example Response

{ "success": true, "message": "Upload queued successfully", "data": { "uploadId": 790, "status": "pending", "jobId": "job_457" } }

Upload Video Post

Upload a single video to Threads.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Threads account.
videoFileYesThe video file (MP4, MOV, AVI, MKV, WebM). Maximum 1 GB.
titlestringYesPost text/caption. Maximum 500 characters.
descriptionstringNoAlternative to title for the post text.
threads_reply_controlstringNoeveryone (default), accounts_you_follow, mentioned_only, parent_post_author_only, followers_only.

Example Request

curl -X POST https://api.multi-upload-tool.com/api/v1/upload \ -H "x-api-key: YOUR_API_TOKEN" \ -F "accountId=123" \ -F "video=@/path/to/video.mp4" \ -F "title=Check out this amazing moment! 🎬" \ -F "threads_reply_control=everyone"

Example Response

{ "success": true, "message": "Upload queued successfully", "data": { "uploadId": 791, "status": "pending", "jobId": "job_458" } }

Note: Videos are processed asynchronously by Threads. Publishing may take a few moments.


Upload multiple images and/or videos to create a Threads carousel.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Threads account.
photoFile[]YesArray of image files (JPG, JPEG, PNG, GIF, WEBP). Maximum 8 MB each. Minimum 2, maximum 20 items.
titlestringYesPost text/caption. Maximum 500 characters.
descriptionstringNoAlternative to title for the post text.
threads_alt_textstringNoAccessibility alt text applied to all items. Maximum 1000 characters.
threads_reply_controlstringNoeveryone (default), accounts_you_follow, mentioned_only, parent_post_author_only, followers_only.

Example Request

curl -X POST https://api.multi-upload-tool.com/api/v1/upload \ -H "x-api-key: YOUR_API_TOKEN" \ -F "accountId=123" \ -F "photo=@/path/to/image1.jpg" \ -F "photo=@/path/to/image2.jpg" \ -F "photo=@/path/to/image3.jpg" \ -F "title=Photo carousel from the trip ✈️" \ -F "threads_alt_text=Travel photos from our recent vacation" \ -F "threads_reply_control=accounts_you_follow"

Example Response

{ "success": true, "message": "Upload queued successfully", "data": { "uploadId": 792, "status": "pending", "jobId": "job_459" } }

Carousel limits: Between 2 and 20 items per carousel. Videos and images can be mixed.


Check Upload Status

Check the status of a queued or completed upload. See the Posts API for details on listing and filtering uploads.