> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish Post

> Publishes content to an Instagram Business/Creator account: single image, carousel (2 to 10 images and/or videos), reel, or a 24 hour story

Publishes content to an Instagram Business/Creator account: single image, carousel (2 to 10 images and/or videos), reel, or a 24 hour story. Instagram has no native scheduling; run this node from a scheduled workflow to schedule posts.

| | |
| - | - |
| **App** | Instagram Organic |
| **Operation ID** | `instagram_publish_post` |
| **Type** | Action |
| **Connection** | `instagram` (required) |
| **Credits per run** | 1 |
| **Agent / MCP tool** | Yes |
| **Requires approval** | Yes (write operation) |

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `account` | string or SelectItem | Yes | - | Select the Instagram Business/Creator account to publish to, ask the user for it if not provided |
| `post_type` | string or SelectableOption | Yes | - | Type of content to publish. Available options: 'image' (single image feed post), 'carousel' (2 to 10 images and/or videos in one post), 'reel' (video feed post; all Instagram feed videos are reels, recommended vertical 9:16, roughly 3 seconds to 15 minutes), 'story' (24 hour story from ONE image or ONE video; no caption). Instagram has no native scheduling; to schedule, run this node from a scheduled workflow. |
| `caption` | string | No | - | The caption text, up to 2200 characters. Used for image, carousel, and reel posts. Stories do not support captions. |
| `image_urls` | string or array of string | No | - | Image for image posts and image stories (exactly one URL). Instagram requires JPEG images, max 8MB, aspect ratio between 4:5 and 1.91:1 for feed posts. Accepts direct URLs or Google Drive share links with sharing set to 'Anyone with the link'. URLs must be publicly reachable since Instagram downloads them server side. |
| `video_url` | string | No | - | Video for reel and video story posts. Recommended vertical 9:16. Reels are roughly 3 seconds to 15 minutes; story videos up to roughly 60 seconds. Accepts direct URLs or Google Drive share links. Must be publicly reachable. |
| `media_urls` | string or array of string | No | - | Carousel items: 2 to 10 URLs as a list or one string separated by commas or new lines. Images and videos can be mixed; whether each item is an image or a video is detected automatically. |
| `cover_url` | string | No | - | Optional cover image URL for reels. If empty, Instagram picks a frame from the video. |
| `share_to_feed` | boolean | No | - | Reels only. Set to False to publish the reel to the Reels tab without showing it in the main feed. Default is True. |

### SelectItem

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | The value of the selectable item. |
| `label` | string | Yes | - | The label of the selectable item, used for display purposes. If not provided, defaults to the value. |

### SelectableOption

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | |
| `label` | string | Yes | - | |

## Output

**Type**: `Dict`

Returns the published media details. Instagram allows up to 50 API published posts per account per rolling 24 hours.

**Fields**: `post_id`, `post_url`, `account_id`, `account_name`, `post_type`, `status`

**Example**:

```json theme={"dark"}
{
  "post_id": "17900123456789012",
  "post_url": "https://www.instagram.com/p/AbCdEfG/",
  "account_id": "17841400000000000",
  "account_name": "mybrand",
  "post_type": "image",
  "status": "published"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.