# OmniSocials LinkedIn Page API

> Publish posts, PDF document carousels, polls and links as your Company Page. Answer comments and mentions, and read Page analytics. One API key, on OmniSocials’ approved LinkedIn app.

This is the machine-readable version of [omnisocials.com/linkedin-page-api](https://omnisocials.com/linkedin-page-api), maintained for AI agents. Facts checked against the OmniSocials app and API on October 17, 2026. Platform reference: [docs.omnisocials.com/platforms/linkedin](https://docs.omnisocials.com/platforms/linkedin). 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`: `linkedin_page`. 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 LinkedIn app review

LinkedIn’s own API needs a developer app with the Community Management API approved, twelve scopes, a picker for the Pages you admin and a comment webhook a Super admin subscribes per Page. OmniSocials already did that work.

- On your own: LinkedIn app, App review, Dev tier, Page picker, Webhooks, Tokens, Versions, Uploads, then the first post.
- Permissions your own app must get approved: `w_organization_social`, `rw_organization_admin`, `r_organization_social_feed`, `r_basicprofile`, `w_organization_social_feed`, `r_organization_followers`, `r_organization_social`, `w_member_social`, `r_member_postAnalytics`, `r_member_profileAnalytics`, `w_member_social_feed`, `r_1st_connections_size`.
- On OmniSocials: sign in, create an API key, POST. All 12 scopes 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 '{
  "content": "SDKs in 8 languages. Docs in the first comment.",
  "accounts": ["linkedin_page"],
  "media_urls": ["https://cdn.example.com/sdks.jpg"],
  "schedule_at": "2026-10-22T18:00:00Z",
  "linkedin_page": {
    "first_comment": "https://omnisocials.com/sdk"
  }
}'
```

The answer (`201`, shortened):

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

## Every format, one request

Text, an image, a video, a PDF document, a poll or a link card share one request shape, posted as your Page. Add media URLs, a poll or a link and a time. OmniSocials checks the post against LinkedIn’s rules before it uploads.

- **Posts and first comments.** Text with an image or a video. Put the link in a first comment, posted as the Page right after the post goes live. (`media_urls`, `linkedin_page.first_comment`)
- **Documents.** Two or more images go out as a swipeable PDF document. A PDF you send goes out as the original file. (`media_urls`, `linkedin_page.document_source`)
- **Polls.** A question, 2 to 4 options and a duration from 1 day to 2 weeks. A poll can’t carry media or a link card. (`linkedin_poll`)

### Post

```json
{
  "content": "SDKs in 8 languages. Docs in the first comment.",
  "accounts": ["linkedin_page"],
  "media_urls": ["https://cdn.example.com/sdks.jpg"],
  "schedule_at": "2026-10-22T18:00:00Z",
  "linkedin_page": {
    "first_comment": "https://omnisocials.com/sdk"
  }
}
```

### Document

```json
{
  "content": "Best times to post, from your own posts.",
  "accounts": ["linkedin_page"],
  "media_urls": [
    "https://cdn.example.com/best-times-1.jpg",
    "https://cdn.example.com/best-times-2.jpg"
  ],
  "schedule_at": "2026-10-23T09:00:00Z"
}
```

### Poll

```json
{
  "content": "Help us plan what we build next.",
  "accounts": ["linkedin_page"],
  "schedule_at": "2026-10-25T10:00:00Z",
  "linkedin_poll": {
    "linkedin_page": {
      "question": "Which channel do you post to most?",
      "options": ["LinkedIn", "Instagram", "TikTok"],
      "duration": "FOURTEEN_DAYS"
    }
  }
}
```

### Link

```json
{
  "content": "What's new: https://omnisocials.com/changelog",
  "accounts": ["linkedin_page"],
  "link_url": "https://omnisocials.com/changelog",
  "schedule_at": "2026-10-22T11:00:00Z"
}
```

## Document carousels, without the PDF work

LinkedIn has no image carousel. Send two or more images and OmniSocials builds the swipeable PDF document. Send a PDF and LinkedIn gets the original file. Or post the images as a gallery.

`POST /v1/posts/create`:

```json
{
  "content": "Sidebar update: a new Home tab, and more.",
  "accounts": ["linkedin_page"],
  "media_urls": ["https://cdn.example.com/sidebar.pdf"],
  "schedule_at": "2026-10-24T09:00:00Z",
  "linkedin_page": {
    "document_source": "original_pdf"
  }
}
```

The answer:

```json
{
  "content": "Sidebar update: a new Home tab, and more.",
  "accounts": ["linkedin_page"],
  "media_urls": ["https://cdn.example.com/sidebar.pdf"],
  "schedule_at": "2026-10-24T09:00:00Z",
  "linkedin_page": {
    "document_source": "slides"
  }
}
```

The answer:

```json
{
  "content": "Sidebar update: a new Home tab, and more.",
  "accounts": ["linkedin_page"],
  "media_urls": ["https://cdn.example.com/sidebar.pdf"],
  "schedule_at": "2026-10-24T09:00:00Z",
  "linkedin_page": {
    "carousel_as_images": true
  }
}
```

- **Original PDF.** Send a PDF URL and LinkedIn gets the file itself, with sharp text, working links and up to 300 pages. Other channels get its pages as images. (`media_urls`, `linkedin_page.document_source`)
- **Document carousel.** Two or more images become one swipeable PDF document, titled with the caption’s first line. For a PDF, slides rebuilds it from the page images. (`document_source: "slides"`)
- **Image gallery.** Prefer LinkedIn’s classic multi-image post? Set carousel_as_images and the images go out as a gallery instead. (`carousel_as_images: true`)

## Connect your Page once, post from code

Sign in with LinkedIn once inside OmniSocials and pick the Page. Create an API key, and your code posts, replies and reports for that Page.

- **Pick the Page.** Sign in with LinkedIn and pick a Page you’re an admin of. With one admin Page, it’s picked for you.
- **A key per workspace.** A key only reaches its own workspace. Inbox access is switched on per key.
- **What the Page can post.** The accounts call lists the Page with the formats it takes, and says when it needs a reconnect. (`GET /v1/accounts`, `content_types`)

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

```json
{
  "data": [
    {
      "id": "4127_linkedin_page",
      "platform": "linkedin_page",
      "display_name": "OmniSocials",
      "content_types": ["post"],
      "status": "active"
    }
  ],
  "workspace_name": "OmniSocials"
}
```

## Answer comments and mentions

List the comments on your Page’s posts and the posts that mention your Page, then reply as the Page from your own code. LinkedIn’s API has no DMs.

- **Comments.** Reply under the comment, as the Page. LinkedIn’s API shares no commenter names, so they show as a private account. (`/conversations/:id/reply`, `message_id`)
- **Mentions.** Posts that mention your Page show up in the same list, next to the comments on your own posts. (`type=mention`)
- **Next unanswered.** Ask for the next comment still waiting for an answer, then reply. Your agent does the same over MCP. (`/inbox/next`, `reply_to_inbox`)

`GET /v1/inbox/conversations?platform=linkedin&type=comment` lists the conversations. Reply with `POST /v1/inbox/conversations/:id/reply`:

```json
{
  "text": "Yes. The MCP server has the same inbox tools.",
  "message_id": "90388"
}
```

## Read what your Page reports

Impressions, unique impressions, reactions by type, comments, shares, clicks and LinkedIn’s engagement rate per post. The Page adds followers, new followers and page views per day.

- **Per post.** Impressions, unique impressions, reactions by type, comments, shares, clicks and LinkedIn’s own engagement rate. Videos add views and watch time. (`/analytics/posts/:id`)
- **Per Page and workspace.** Followers, new followers, impressions, clicks and page views per day. Follower demographics are collected once a week. (`/analytics/accounts`, `/analytics/overview`)
- **Best times to post.** Days and hours worked out from your own Page history, once 15 of your posts are analyzed. (`/analytics/best-times`)

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

```json
{
  "data": {
    "post_id": "1019",
    "platforms": {
      "linkedin_page": {
        "metrics": {
          "impressions": 214,
          "unique_impressions": 131,
          "likes": 11, "comments": 4,
          "shares": 2, "clicks": 17,
          "engagement_rate": 15.8879,
          "reactions": {
            "like": 8, "praise": 2,
            "interest": 1
          }
        }
      }
    }
  }
}
```

## LinkedIn’s rules, in one place

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

| Limit | Value |
| --- | --- |
| Text | 3,000 characters |
| First comment | 1,250 characters |
| Images | JPEG, PNG, GIF or WebP, up to 10 MB each |
| Media | Images or one video per post, not both |
| PDF documents | The original file up to 100 MB, 300 pages |
| Video | MP4 or MOV, up to 30 minutes |
| Poll | A 140-character question, 2 to 4 options of 30 |
| Replies | 1,000 a day per workspace |
| Rate limit | 100 requests a minute per API key |
| Accounts | One Company Page per workspace |

## Your first Page post in three steps

About five minutes from sign-up to a scheduled post on your Company Page. 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 your Page** (`GET /v1/accounts`). Sign in with LinkedIn in OmniSocials once and pick the Page. Then list it from your code.
3. **Send your first post** (`POST /v1/posts/create`). Post now with create-and-publish, or add schedule_at to plan it.

## FAQ

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

No. The Page connects through OmniSocials’ LinkedIn app, which has the Community Management API approved. You call the OmniSocials API with an API key and never handle LinkedIn tokens.

### Which Pages can I post to?

A LinkedIn Company Page you’re an admin of. Each workspace connects one Page: with several admin Pages you pick one, and posts always go to the Page shown in OmniSocials. Posting images and video needs the Super admin or Content admin role. A second Page goes in a second workspace with its own key.

### Does the post show as the Page?

Yes. The post, its first comment and replies from the inbox all publish as the organization, not as you. To post as yourself, connect your profile: it is its own channel, linkedin.

### Which formats can I publish?

Text, one image, one video, two or more images as a swipeable PDF document or a gallery, a PDF as the original file, a poll and a link card. A post takes images or one video, not both, and a poll can’t carry media or a link card. LinkedIn articles aren’t supported.

### Can I read and answer comments?

Yes. The inbox endpoints list the comments on your Page’s posts and the posts that mention the Page, and reply as the Page under the comment. LinkedIn’s API has no DMs and doesn’t share who commented, so commenters show as a private account. Hide and delete aren’t available on LinkedIn.

### Can my coding agent answer comments?

Yes. The MCP server’s inbox tools cover LinkedIn Pages: list_inbox_conversations, get_next_unanswered and reply_to_inbox. Replies count toward the 1,000 a day per workspace.

### Which numbers does a Page report?

Per post: impressions, unique impressions, reactions by type, comments, shares, clicks and LinkedIn’s engagement rate, plus views and watch time on videos. LinkedIn Pages report no saves and no separate link clicks. Per Page: followers, new followers, impressions, clicks and page views per day.

### Do LinkedIn tokens expire?

LinkedIn access tokens last 60 days. OmniSocials refreshes them on its own from 14 days before they run out, with LinkedIn’s refresh token, which lasts a year. If a reconnect is ever needed, GET /v1/accounts says so with needs_reconnect.

### Can I post to my Page and my profile in one request?

Yes. Put both in accounts. content takes one text for both or a text per channel, the linkedin and linkedin_page objects carry each one’s first comment and carousel style, and linkedin_poll takes a poll per channel.

### What happens when a LinkedIn post fails to publish?

A temporary error is retried up to 3 times, 15 minutes apart, and a post that already went live is never sent again. Then post.published or post.failed fires on your webhook, signed with HMAC-SHA256.

### Does LinkedIn have an API, and is it free?

Yes. LinkedIn doesn’t charge for API calls, but posting through its API needs a developer app with the Community Management API approved. Through OmniSocials you post on its approved app, and the API is part of the plan, $10 per seat per month billed annually.

### What are the rate limits?

100 requests a minute per API key. Past that the API answers 429 with a Retry-After header that says when to try again. Comment and mention replies are capped at 1,000 a day per workspace.

### 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

- [LinkedIn Page scheduler](https://omnisocials.com/linkedin-page.md)
- [LinkedIn Page MCP server](https://omnisocials.com/linkedin-page-mcp.md)
- [All channels](https://omnisocials.com/channels.md)
- [LinkedIn character limits](https://omnisocials.com/linkedin-character-limits)
- [LinkedIn video lengths](https://omnisocials.com/linkedin-video-lengths)

## Links

- Page: https://omnisocials.com/linkedin-page-api
- LinkedIn Page platform docs: https://docs.omnisocials.com/platforms/linkedin
- 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
