ReelspanUpload guidesInstagram

Post to Instagram automatically

Connect Instagram once, then send videos and photos to it from code, a workflow or an AI agent. The same call can post to every other network at the same time.
Sign in with Instagram2,200 characters9:164:51:17 sections

01

Connect Instagram

  1. In the dashboard, open Accounts and pick Instagram.
  2. Sign in with Instagram and allow Reelspan to post to your professional account.
  3. The account joins the profile you had open; every post to that profile can now include it.

Posting for clients? Send them a connect link so they connect their own Instagram account without a Reelspan login.

02

Get an API key

In the dashboard, open Developers → API keys and create one. Keep it in an environment variable such as REELSPAN_KEY; never in code you share.

03

Post with one request

Send the video as a file, or as a public URL like below. Add more platform[] fields to post the same thing everywhere at once.

curl
curl -X POST https://api.reelspan.com/v1/posts/video \
  -H "Authorization: Bearer $REELSPAN_KEY" \
  -F user=my-brand \
  -F "platform[]=instagram" \
  -F "video=https://example.com/clip.mp4" \
  -F "title=Your caption" \
  -F "media_type=…"
JavaScript (Node 18+)
const form = new FormData();
form.append('user', 'my-brand');
form.append('platform[]', 'instagram');
form.append('video', 'https://example.com/clip.mp4');
form.append('title', 'Your caption');

const res = await fetch('https://api.reelspan.com/v1/posts/video', {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.REELSPAN_KEY}` },
  body: form,
});
console.log(await res.json());
Python
import os, requests

res = requests.post(
    "https://api.reelspan.com/v1/posts/video",
    headers={"Authorization": f"Bearer {os.environ['REELSPAN_KEY']}"},
    files=[
        ("user", (None, "my-brand")),
        ("platform[]", (None, "instagram")),
        ("video", (None, "https://example.com/clip.mp4")),
        ("title", (None, "Your caption")),
    ],
)
print(res.json())

instagram_title sets the text for Instagram only, when it should differ from the other networks’.

04

Instagram options

media_type
REELS (the default for video) or STORIES.
collaborators
Invite collaborators to the Reel, comma-separated usernames.
cover_url
A cover image for the Reel.
user_tags
Tag accounts in photos.
first_comment
Post hashtags or a link as the first comment.
  • Videos go out as Reels; photos as a post or a carousel, videos mixed in.
  • Up to 30 hashtags and 20 mentions; add collaborators and a cover frame.
  • Stories too, one photo at a time.

Every field, with its limits: the docs.

05

Schedule it and check the result

  • Add scheduled_date (ISO 8601) and timezone to post later, or add_to_queue=true to take the next slot of your posting schedule.
  • The response has Instagram’s status and the post’s link. For big files send async_upload=true and check GET /v1/posts/status?request_id=…, or get a signed webhook when it’s live.
  • If Instagram refuses a post, the error says why in plain words, and you can retry just that network.

06

Without code

07

Ideas

  • Post carousels from a folder of product photos.
  • Share each Reel as a Story too.

More on Instagram: what you can post there. Other networks: all upload guides.

Questions?Talk to a person.Contact us