Skip to Content

Instagram Upload API

This section details how to upload photos, videos, reels, stories, and carousels to Instagram 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

Instagram Video Requirements

  • Container Format: MOV or MP4 (MPEG-4 Part 14), no edit lists, moov atom at head.
  • Audio Codec: AAC, 48 kHz max, 1-2 channels, 128 kbps.
  • Video Codec: HEVC or H264, progressive scan, closed GOP, 4:2:0 chroma subsampling.
  • Video Bitrate: VBR, max 25 Mbps.
  • Frame Rate: 23-60 FPS.
  • Resolution: Max width 1920px.
  • Aspect Ratio: 0.01:1 to 10:1 (Recommended 9:16 to avoid cropping).
  • Duration: 3 seconds to 15 minutes.
  • File Size: Max 300 MB.

Instagram Photo Requirements

  • Formats: PNG, JPEG, GIF.
  • Media Types: IMAGE (Feed), STORIES.
  • Carousels: Up to 10 images/videos.

Upload Photo

Upload a single photo or a story to a connected Instagram account.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

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

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Instagram account.
photoFileYesThe image file to upload.
titlestringNoThe caption for the post.
media_typestringNoIMAGE (Feed), STORIES. Default: IMAGE.
scheduledDatestringNoISO 8601 date string to schedule the post (e.g., 2025-12-25T10:00:00Z).
location_idstringNoInstagram Location ID to tag a place.
collaboratorsstringNoComma-separated list of usernames to invite as collaborators.
user_tagsstringNoComma-separated list of usernames to tag in the image.

Example Request (Photo)

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=Hello Instagram! #vibes" \ -F "media_type=IMAGE" \ -F "location_id=123456789"

Upload Video

Upload a single video, reel, or video story to a connected Instagram account.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

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

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Instagram account.
videoFileYesThe video file to upload.
titlestringNoThe caption for the post (Reels/Feed).
media_typestringNoVIDEO, REELS, STORIES. Default: REELS.
scheduledDatestringNoISO 8601 date string to schedule the post.
cover_urlstringNoCustom cover image URL for Reels/Videos.
location_idstringNoInstagram Location ID to tag a place.
collaboratorsstringNoComma-separated list of usernames to invite as collaborators.
share_to_feedbooleanNoWhether to share Reels to Feed. Default: true.
audio_namestringNoCustom name for the audio track (Reels).
thumb_offsetstringNoTime offset (in ms) for the video thumbnail.

Example Request (Video/Reel)

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=My new reel! 🎥" \ -F "media_type=REELS" \ -F "cover_url=https://example.com/cover.jpg"

Upload a carousel (album) containing up to 10 photos and/or videos.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

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

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Instagram account.
photoFile[]YesArray of files (images and/or videos). Use the key photo for all items.
titlestringNoThe caption for the carousel.
scheduledDatestringNoISO 8601 date string to schedule the post.
location_idstringNoInstagram Location ID to tag a place.
collaboratorsstringNoComma-separated list of usernames to invite as collaborators.
user_tagsstringNoComma-separated list of usernames to tag in the first image.
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/photo1.jpg" \ -F "photo=@/path/to/video2.mp4" \ -F "photo=@/path/to/photo3.jpg" \ -F "title=My mixed media dump 📸🎥"

Example Response

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