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
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected Instagram account. |
file | File | Yes* | The media file to upload. (*Required for single media). |
files | File[] | Yes* | Array of files for Carousel upload. (*Required for Carousel). |
caption | string | No | The caption for the post. |
media_type | string | No | IMAGE, VIDEO, REELS, STORIES, CAROUSEL. Auto-detected as CAROUSEL if multiple files are sent. |
schedule_date | string | No | ISO 8601 date string to schedule the post (e.g., 2025-12-25T10:00:00Z). |
cover_url | string | No | Custom cover image URL for Reels/Videos. |
location_id | string | No | Instagram Location ID to tag a place. |
collaborators | string | No | Comma-separated list of usernames to invite as collaborators. |
user_tags | string | No | Comma-separated list of usernames to tag in the image. |
share_to_feed | boolean | No | Whether to share Reels to Feed. Default: true. |
audio_name | string | No | Custom name for the audio track (Reels). |
thumb_offset | string | No | Time 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"Example Request (Carousel)
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"
}
}