Back to Blog
7 min read

Schedule Instagram Posts From n8n

Use our verified n8n node or HTTP Request to schedule Instagram Reels, photos and carousels—with dry-run checks and file limits.

Schedule Instagram Posts From n8n

Short answer: Yes. Status 200 Uploads documents an n8n community node that publishes and schedules Instagram posts (Reels, photos and carousels) with your rl_ API key, or the same contract through an HTTP Request node. In the node, set When to At a Set Time (documented up to 365 days ahead), or use Check Only (Dry Run) before you commit. Do not confuse n8n’s Schedule Trigger (when the workflow runs) with the post’s own schedule time. Sources: n8n integration, API reference, file size limits.

Key Takeaways

Point Details
One node, one network Our community node sends one post to one network per node; pick instagram as the platform.
Schedule the post, not only the workflow When: At a Set Time schedules the Instagram post; a Schedule Trigger only starts the workflow.
Dry-run before you commit Check Only (Dry Run) / dryRun: true runs publish checks and sends nothing.
Stay inside Instagram file limits Through us: images up to 8 MB; Reels up to 15 minutes and 300 MB.

This guide is Instagram-specific. For Facebook Pages from n8n, see n8n Facebook Post Automation. For the broader node overview, see n8n social media posting.

What the n8n node can do for Instagram

Our n8n integration page describes community package @status200uploads/n8n-nodes-status200uploads: it “publishes, schedules, checks and cancels posts, imports media from a URL, and reads your profiles and posts, with your rl_ API key.” It also states: “One node sends one post to one network.” n8n verified the node on 26 October 2026; the page lists package version 0.1.3 on npm as the verified version, with a live self-hosted test dated 29 September 2026 on 0.1.0 (later 0.1.x patch notes say they did not change how the node works for posting).

Instagram is listed among the networks you can schedule through Status 200 Uploads (Reels, photos and carousels). The node’s Post: Create action is documented to publish now, schedule with When: At a Set Time (up to 365 days ahead), or only check with Check Only (Dry Run), and it attaches an automatic Idempotency-Key. Post: Get / Get Many / Cancel read or stop a scheduled post that has not gone out. Media: Import From URL imports a public file, waits until it is ready, then passes the file id into Post: Create.

Building block Role for Instagram scheduling
Status 200 Uploads → Post: Create Create or schedule the Instagram post (platform: instagram).
When: At a Set Time Sets the future publish time for that post (node UI; maps to API scheduling).
Check Only (Dry Run) Validates without sending or scheduling.
Media: Import From URL Produces a ready file id for the post.
HTTP Request → POST /api/v2/posts Same REST contract when you prefer raw JSON.
n8n Schedule Trigger Starts the workflow on a clock; it does not by itself schedule the Instagram post.

n8n’s own Schedule Trigger docs describe a core node that runs workflows at fixed intervals and times, and remind you to save and publish a workflow that uses it. That is workflow timing. The Instagram publish time still comes from At a Set Time / post.scheduledFor.

Check the asset against the live platform file limits before you wire the node:

Instagram type (through us) Max size (documented)
Images 8 MB
Videos / Reels 300 MB; Reels up to 15 minutes (Instagram’s own API limit, as stated on our limits page)

Our platforms list documents Instagram as Reels, photos and carousels. The public API example uses instagram.postType: "reel" with shareToFeed: true for a Reel. Prefer a ready mediaID from import/upload for scheduled posts: the API reference says a file sent as mediaID is kept until the post goes out, while mediaUrls are fetched at publish time and no copy is kept.

Connect an Instagram-capable profile in the dashboard, then use Account: Get Posting Options (or GET /api/v2/accounts/{id}/options) so you only send values that account allows. Do not invent Stories fields for this guide: the live file-limits page section used here documents Reels, photos and carousels—not Stories.

Build the workflow (node path)

  1. Install the community node (n8n Cloud: owner/admin installs from the nodes panel; self-hosted: Settings → Community Nodes), using the package name on the integration page.
  2. Add credentials with your rl_ API key (server-side only).
  3. Optionally add Media: Import From URL, wait until the file is ready, and pass the file id forward.
  4. Add Post: Create: choose the account, set platform to Instagram, caption/text, media file ids or media URLs, and any Instagram fields the node exposes for that post type.
  5. Set When to At a Set Time with a future time that includes a zone, or first use Check Only (Dry Run).
  6. After a real schedule (not a dry run), save the returned id and use Post: Get / Cancel as needed.

One node posts to one network. To also post elsewhere, add another Post: Create node per network—same pattern as the worked X + LinkedIn example on the integration page. The API spaces posts to the same network; the integration page notes posts to the same network are spaced 20 seconds apart.

Same schedule with HTTP Request (dry-run example)

This example follows the documented /api/v2/posts Instagram Reel shape, scheduling field and dry-run flag. It is illustrative: no authenticated request was executed for this article. Replace profile, file id and time.

curl -X POST 'https://status200uploads.com/api/v2/posts' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer rl_your_api_key' \
  -d '{
    "dryRun": true,
    "post": {
      "accountId": "@myprofile",
      "platform": "instagram",
      "scheduledFor": "2026-11-10T18:00:00+01:00",
      "content": {
        "text": "Reel caption ready for review.",
        "mediaID": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
      },
      "instagram": {
        "postType": "reel",
        "shareToFeed": true
      }
    }
  }'

The API reference says dryRun: true runs every publish check and sends nothing; a dry run with a time can report outcome schedule and still schedules nothing. A real schedule (without dry-run) is answered with HTTP 202 and a scheduled_post_id when more than 60 seconds ahead, up to 365 days, within the documented waiting-post limits. A time without a zone is refused (scheduled_for_invalid). Put Instagram options inside post, next to content (for example post.instagram), not at the top level of the request.

Confirm, cancel, and avoid double schedules

Read the schedule with Post: Get or GET /api/v2/posts/{id} before and after the time. Cancel with Post: Cancel / DELETE /posts/{id} while it has not gone out; the API docs say there is no edit-in-place endpoint yet—cancel and schedule again if the time or asset must change.

Keep the automatic Idempotency-Key the node generates, or send your own on HTTP Request retries, so a timeout retry does not create a second schedule. Do not resend a successful create just to “check” it—read the saved id instead.

FAQ

Can n8n schedule an Instagram Reel through Status 200 Uploads?
Yes. The integration page documents scheduling through the community node (When: At a Set Time) and the same REST API via HTTP Request. Instagram Reels are a documented post type in the API examples.

Is the n8n Schedule Trigger enough?
No. Schedule Trigger runs the workflow. The Instagram post still needs At a Set Time or post.scheduledFor (or an immediate publish if you intend “now”).

Do I need my own Meta app?
For the Status 200 Uploads path, you use our node or REST API with your rl_ key and a connected Instagram profile. This guide does not document building a separate Meta app for Instagram Graph posting.

What file sizes work for Instagram through you?
Images up to 8 MB; Reels up to 15 minutes and 300 MB, per the file-limits page checked for this article.

Can one node post Instagram and TikTok together?
No. Documentation: one node sends one post to one network. Use one Post: Create per network.

Where do I dry-run?
In the node: Check Only (Dry Run). Over HTTP: "dryRun": true next to post (or validate instead of post).


Sourced

  • Status 200 Uploads n8n integration — publishes/schedules/checks/cancels; one node one network; When: At a Set Time up to 365 days; Check Only (Dry Run); Media Import; verified 26 Oct 2026; package @status200uploads/n8n-nodes-status200uploads 0.1.3: https://status200uploads.com/integrations/n8n
  • Status 200 Uploads API — Instagram Reel example (postType / shareToFeed), scheduledFor, dry-run, 202 scheduled, Idempotency-Key, mediaID retention: https://status200uploads.com/docs/api
  • Status 200 Uploads file size limits — Instagram images 8 MB; Reels 15 minutes / 300 MB: https://status200uploads.com/docs/file-limits
  • n8n Schedule Trigger docs — workflow runs at intervals/times; publish the workflow: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/
  • Related internal posts: /blog/n8n-facebook-post, /blog/n8n-social-media-posting
  • Soft CTA: /pricing