Instagram (Login) icon

Instagram (Login)

Use the Instagram API with Instagram Login (graph.instagram.com) - no Facebook Page required

Publish → Story

AI-generated

Summary

Publishes an image or video as an Instagram Story via graph.instagram.com. It optionally re-hosts the media or burns FFmpeg overlays onto videos first, creates a STORIES container, waits for processing, then publishes it.

Inputs

  • Story Media Type — Image (default) or Video. Determines whether the URL is sent as image_url or video_url.
  • Media URL (required) — Public URL of the story image or video.
  • Re-Host Media First — Default true. Downloads the media and re-uploads it to a public host (Catbox, falling back to 0x0.st; or Supabase) before giving the URL to Instagram. This avoids download timeouts and 403 errors from slow or blocked source servers.
  • Add Text / Watermark Overlay — Video stories only. Runs local FFmpeg to burn text onto the video, then re-uploads it. FFmpeg must be installed on the n8n host. It is ignored for image stories.
  • Episode Number — With overlays on, draws "{N}-QISM" at the bottom center. Leave empty to skip.
  • Username Watermark — With overlays on (default true), fetches the account username via /me and draws it as a semi-transparent @username watermark.
  • Overlay Options — FFmpeg path, font file (.ttf, auto-detected per OS if empty), episode and watermark font sizes, watermark opacity, and watermark position (top, bottom, or center).
  • Publish Options — Max poll attempts (default 30), poll interval in seconds (default 5), re-host method (Catbox or Supabase), Catbox-compatible upload URL, and Supabase project URL, bucket and service key. Supabase settings are required if Supabase is chosen.
  • Graph API Version — graph.instagram.com API version. Default v21.0.
  • Access Token (Override) — Overrides the Instagram Login API credential. Use an expression to post to different accounts per input item.

Output shape

One item per input item, containing creation_id (the media container ID) merged with the media_publish response (typically the published media id).

Processes each input item separately. Errors include a failed container (ERROR status), a timeout while polling, a failed re-host and a failed FFmpeg step. With Continue On Fail, an item with an error message is returned instead. Overlay settings only apply to video stories. The container is always polled until FINISHED before publishing.

Examples

Example 1: Post an image story from a URL

Story Media Type = Image, Media URL = https://example.com/story.jpg, Re-Host Media First = true

Example 2: Post a video story with an episode label and watermark

Story Media Type = Video, Media URL = video .mp4, Add Text / Watermark Overlay = true, Episode Number = 3, Username Watermark = true; FFmpeg installed on host

Example 3: Post to several accounts from input data

Access Token (Override) = {{ $json.account_token }}, Media URL = {{ $json.url }}, Re-Host Method = Supabase with URL, bucket and service key

Links

Discussion