# OmniSocials Instagram API

> Publish posts, carousels, Stories and Reels. Answer comments and DMs, turn comments into DMs and read insights. One API key, on OmniSocials’ approved Meta app.

This is the machine-readable version of [omnisocials.com/instagram-api](https://omnisocials.com/instagram-api), maintained for AI agents. Facts checked against the OmniSocials app and API on October 17, 2026. Platform reference: [docs.omnisocials.com/platforms/instagram](https://docs.omnisocials.com/platforms/instagram). API reference: [docs.omnisocials.com/api](https://docs.omnisocials.com/api).

## Basics

- Base URL: `https://api.omnisocials.com/v1`
- Auth: `Authorization: Bearer omsk_live_...`. One key belongs to one workspace. Keys are created in the app under Settings, API.
- Channel id in `accounts`: `instagram`. The account connects inside the OmniSocials app, not through the API.
- Rate limit: 100 requests per minute per key. A 429 carries `Retry-After`.
- Responses use a `{ "data": ... }` envelope. Create returns `201`.
- Webhooks: `post.scheduled`, `post.published`, `post.failed`, `post.approved`, `post.rejected`, signed with HMAC-SHA256 in `X-OmniSocials-Signature`.

## Skip the Meta app review

Instagram's own API needs a Meta app, five approved permissions and a publish flow. OmniSocials already did that work.

- On your own: Meta app, 5 reviews, Verification, Hosting, Containers, Polling, Tokens, Scheduler, then the first post.
- Permissions your own app must get approved: `instagram_business_basic`, `instagram_business_content_publish`, `instagram_business_manage_comments`, `instagram_business_manage_messages`, `instagram_business_manage_insights`.
- On OmniSocials: sign in, create an API key, POST. All 5 permissions already approved.

## Schedule a post

```bash
curl -X POST https://api.omnisocials.com/v1/posts/create \
  -H "Authorization: Bearer $OMNISOCIALS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "reel",
  "content": "Post from your own code: SDKs in 8 languages.",
  "accounts": ["instagram"],
  "media_urls": ["https://cdn.example.com/sdks.mp4"],
  "schedule_at": "2026-10-22T18:00:00Z",
  "instagram": {
    "share_to_feed": true,
    "thumb_offset": 3000,
    "first_comment": "#instagramapi"
  }
}'
```

The answer (`201`, shortened):

```json
{
  "data": {
    "id": "1024",
    "status": "scheduled",
    "app_url": "https://app.omnisocials.com/create-post/1024"
  }
}
```

## Every format, one request

Posts, carousels of up to 10, Stories and Reels share one request shape. Set the type, add media URLs and a time. OmniSocials checks the media against Instagram’s rules before it uploads.

- **Posts and carousels.** One image, or up to 10 photos and videos in one carousel, with alt text per item and a first comment. (`media_urls`, `instagram.first_comment`)
- **Stories.** Each media item goes out as its own Story, in order. Up to 10 slides and 60 seconds per video. (`type: "story"`)
- **Reels.** Pick the cover frame, add licensed audio, share it to the grid or post it as a trial Reel. (`type: "reel"`, `thumb_offset`, `share_to_feed`)

### Post

```json
{
  "content": "The Social Inbox has an API now. Comment GUIDE and we DM you the setup guide.",
  "accounts": ["instagram"],
  "media_urls": ["https://cdn.example.com/inbox-api.jpg"],
  "schedule_at": "2026-10-24T09:00:00Z",
  "instagram": {
    "first_comment": "#socialmedia #api"
  }
}
```

### Carousel

```json
{
  "content": "Best times to post, worked out from your own posts. Swipe to see how.",
  "accounts": ["instagram"],
  "media_urls": [
    "https://cdn.example.com/best-times-1.jpg",
    "https://cdn.example.com/best-times-2.jpg"
  ],
  "schedule_at": "2026-10-25T12:00:00Z",
  "instagram": {
    "first_comment": "#socialmediatips"
  }
}
```

### Story

```json
{
  "type": "story",
  "content": "New this week",
  "accounts": ["instagram"],
  "media_urls": [
    "https://cdn.example.com/bluesky.jpg",
    "https://cdn.example.com/mastodon.jpg"
  ],
  "schedule_at": "2026-10-23T09:00:00Z"
}
```

### Reel

```json
{
  "type": "reel",
  "content": "Post from your own code: SDKs in 8 languages.",
  "accounts": ["instagram"],
  "media_urls": ["https://cdn.example.com/sdks.mp4"],
  "schedule_at": "2026-10-22T18:00:00Z",
  "instagram": {
    "share_to_feed": true,
    "thumb_offset": 3000,
    "first_comment": "#instagramapi"
  }
}
```

## Turn comments into DMs

Put an automation on a post. Everyone who comments a keyword gets your DM, once, with an optional public reply under the comment. Instagram’s limits are built in.

`POST /v1/automations`:

```json
{
  "name": "Setup guide",
  "post_id": "1019",
  "trigger": { "keywords": ["guide", "setup"] },
  "actions": {
    "dm": {
      "text": "Here is the guide: docs.omnisocials.com/automations"
    },
    "public_reply": {
      "enabled": true,
      "variations": [
        "Sent you a DM!",
        "Check your inbox, the guide is there."
      ]
    }
  },
  "limits": { "max_sends": 500 }
}
```

The answer:

```json
{ "data": { "id": "57", "status": "active" } }
```

- **Keyword triggers.** Match a word in a comment, a DM or a Story reply, on one post or on the next post you publish. (`trigger.keywords`, `trigger.kinds`)
- **A public reply too.** Post one of your reply variations under the comment, so the thread shows that a DM went out. (`actions.public_reply`)
- **Instagram’s rules built in.** One private reply per comment, within 7 days. At most 180 DMs an hour per account, and each person gets the DM once.

## Connect once, post from code

Sign in with Instagram once inside OmniSocials and create an API key. From then on, your code posts, replies and reports for that account.

- **Instagram Login.** Business and Creator accounts sign in with Instagram. Publishing needs no Facebook Page.
- **A key per workspace.** A key only reaches its own workspace. Inbox and automation access are switched on per key.
- **What each account can post.** The accounts call lists every connected account with the formats it takes. (`GET /v1/accounts`, `content_types`)

`GET /v1/accounts?platform=instagram` answers:

```json
{
  "data": [
    {
      "id": "4127_instagram",
      "platform": "instagram",
      "username": "omnisocials_",
      "display_name": "OmniSocials",
      "content_types": ["post", "story", "reel"],
      "status": "active"
    }
  ],
  "workspace_name": "OmniSocials"
}
```

## Answer comments and DMs

List Instagram comments, DMs and mentions, then reply, hide or delete from your own code. The API checks Meta’s 24-hour DM window before it sends.

- **Comments.** Reply under the comment, hide it or delete it. Each comment comes with the post it sits on. (`/inbox/messages/:id/hide`)
- **DMs.** Answer within Meta’s 24-hour window. Outside it the API says so with outside_messaging_window, before anything is sent. (`/conversations/:id/reply`)
- **Mentions.** Posts and comments that tag your account show up in the same list, ready for a reply. (`type=mention`)

`GET /v1/inbox/conversations?platform=instagram&type=dm` lists the conversations. Reply with `POST /v1/inbox/conversations/8812/reply`:

```json
{
  "text": "Yes, Reels work. Send a video URL with type reel."
}
```

## Read what Instagram reports

Views, reach, likes, comments, saves and shares per post, and the account’s numbers per day. The API returns the same numbers the app charts.

- **Per post and per Reel.** Views, reach, likes, comments, saves, shares, profile visits and follows, as Instagram reports them. (`/analytics/posts/:id`)
- **Per account and workspace.** A daily snapshot per connected account, and a workspace overview for 7, 30 or 90 days or your own dates. (`/analytics/accounts`, `/analytics/overview`)
- **Best times to post.** Days and hours worked out from your own Instagram history, once 15 of your posts are analyzed. (`/analytics/best-times`)

`GET /v1/analytics/posts/1019` answers:

```json
{
  "data": {
    "post_id": "1019",
    "platforms": {
      "instagram": {
        "metrics": {
          "views": 6412, "reach": 4236,
          "likes": 284, "comments": 347,
          "saves": 118, "shares": 52,
          "follows": 31
        }
      }
    }
  }
}
```

## Instagram’s rules, in one place

OmniSocials checks every post against them before it reaches Meta, so a bad file fails in your request, not at publish time.

| Limit | Value |
| --- | --- |
| Caption | 2,200 characters, 5 hashtags |
| First comment | 2,200 characters, not on Stories |
| Carousel | Up to 10 photos and videos |
| Story | Up to 10 slides, 60 seconds per video |
| Video | MP4 or MOV, up to 15 minutes and 300 MB |
| Image | JPEG, PNG or WebP, up to 8 MB |
| DM reply | 1,000 characters, within 24 hours |
| Replies | 1,000 a day per workspace |
| Rate limit | 100 requests a minute per API key |
| Accounts | Business or Creator, Instagram Login |

## Your first Reel in three steps

About five minutes from sign-up to a scheduled Reel. Then hand the key to your coding agent.

1. **Create an API key** (`Settings › API`). Start your trial, open Settings, API and create a key. It is shown once.
2. **Connect Instagram** (`GET /v1/accounts`). Sign in with Instagram in OmniSocials, once. Then list it from your code.
3. **Send your first Reel** (`POST /v1/posts/create`). Post now with create-and-publish, or add schedule_at to plan it.

## FAQ

### Do I need my own Meta app or an app review?

No. The Instagram account connects through OmniSocials’ approved Meta app, with Instagram’s own sign-in. You call the OmniSocials API with an API key and never handle Meta tokens.

### Which Instagram accounts can I post to?

Business and Creator accounts. They connect with Instagram Login, so publishing needs no Facebook Page. A linked Facebook Page is only needed for licensed Reel music and for mentions in the inbox.

### Can my own users connect their Instagram accounts through the API?

Not yet. Accounts connect inside the OmniSocials app. Every API key in that workspace can then post to them.

### Can I schedule Instagram posts through the API?

Yes. Send schedule_at with the request and OmniSocials keeps the queue and publishes on time. Instagram’s own API publishes right away only, so with it you run your own queue and workers.

### Can I post Reels with a cover, music or as a trial Reel?

Yes. In the instagram object, set thumb_offset in milliseconds or cover_url for the cover, audio_id for licensed music, share_to_feed to also show it on the grid, and is_trial_reel to show it to non-followers first.

### Can I read and answer Instagram comments and DMs?

Yes. The inbox endpoints list DMs, comments and mentions, and reply to them. DM replies follow Meta’s 24-hour window: outside it the API answers 422 outside_messaging_window. The API cannot start a new DM.

### Can the API send comment-to-DMs?

Yes. POST /v1/automations puts a keyword automation on a post. Instagram allows one private reply per comment, within 7 days of the comment, and OmniSocials sends at most 180 DMs an hour per account.

### How do webhooks work?

Register a URL and pick the events: post.scheduled, post.published, post.failed, post.approved and post.rejected. Every delivery is signed with HMAC-SHA256 in the X-OmniSocials-Signature header.

### What are the rate limits?

100 requests per minute per API key. The SDKs retry automatically and respect the Retry-After header.

### How much does OmniSocials cost?

One plan with every feature included: $10 per seat per month billed annually, or $12 billed monthly. Team members and client seats cost the same. Every account starts with a 14-day free trial.

The REST API, the SDKs, the CLI, webhooks and the MCP server are part of that one plan.

## Pricing

From $10 per seat a month, API included. 14-day free trial.

## Related

- [Instagram scheduler](https://omnisocials.com/instagram.md)
- [Instagram MCP server](https://omnisocials.com/instagram-mcp.md)
- [All channels](https://omnisocials.com/channels.md)
- [Instagram character limits](https://omnisocials.com/instagram-character-limits)
- [Instagram video lengths](https://omnisocials.com/instagram-video-lengths)

## Links

- Page: https://omnisocials.com/instagram-api
- Instagram platform docs: https://docs.omnisocials.com/platforms/instagram
- API reference: https://docs.omnisocials.com/api
- REST API overview: https://omnisocials.com/api.md
- MCP server: https://omnisocials.com/mcp.md
- Sign up: https://app.omnisocials.com/signup
