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-token: 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 Media

Upload a single file (Image, Video, Reel, Story) or multiple files (Carousel) to a connected Instagram account.

Endpoint

POST /upload/instagram

Content-Type

multipart/form-data

Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Instagram account.
fileFileYes*The media file to upload. (*Required for single media).
filesFile[]Yes*Array of files for Carousel upload. (*Required for Carousel).
captionstringNoThe caption for the post.
media_typestringNoIMAGE, VIDEO, REELS, STORIES, CAROUSEL. Auto-detected as CAROUSEL if multiple files are sent.
schedule_datestringNoISO 8601 date string to schedule the post (e.g., 2025-12-25T10:00:00Z).
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.
user_tagsstringNoComma-separated list of usernames to tag in the image.
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 (Single Image/Video)

curl -X POST https://api.multi-upload-tool.com/api/v1/upload/instagram \ -H "x-api-token: YOUR_API_TOKEN" \ -F "accountId=123" \ -F "file=@/path/to/image.jpg" \ -F "caption=Hello Instagram! #vibes" \ -F "media_type=IMAGE" \ -F "location_id=123456789"
curl -X POST https://api.multi-upload-tool.com/api/v1/upload/instagram \ -H "x-api-token: YOUR_API_TOKEN" \ -F "accountId=123" \ -F "files=@/path/to/photo1.jpg" \ -F "files=@/path/to/photo2.jpg" \ -F "files=@/path/to/video3.mp4" \ -F "caption=My photo dump 📸" \ -F "media_type=CAROUSEL"

Example Response

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