Posts, documents, company vs personal pages.
Posting uses the LinkedIn Marketing Developer Platform API. OAuth scopes requested: w_member_social, r_basicprofile. For company pages, also w_organization_social and rw_organization_admin.
Post types
postType | What it is |
|---|---|
post | Standard text + optional media post |
document | PDF carousel (swipeable slides) |
article | Long-form; ties to LinkedIn Pulse. Limited API support |
Most users want post. Use document for slide decks, educational carousels, and reports.
Personal vs company pages
A LinkedIn accountId in Postato can point at:
- A personal profile (you, as a user)
- A company page (you, acting on behalf of an org you admin)
The OAuth flow surfaces both at connection time. Users pick which to connect. Each connected target is a distinct accountId.
Typical setup: connect one personal profile + one or more company pages the user admins. Then pick the right accountId at publish.
Text posts
{
"platform": "linkedin",
"postType": "post",
"content": "Announcing our Q2 results — revenue up 40%, customers up 60%. Read the recap at ..."
}Caption limit: 3,000 characters. LinkedIn truncates at 210 characters in the feed with a "see more" expander; front-load your hook.
Media
| Type | Max |
|---|---|
| Images | Up to 9 per post, 5 MB each, JPEG/PNG |
| Video | 1 per post, 200 MB, MP4, 10 minutes |
| Documents (as documents) | 1 PDF, 100 MB, 300 pages |
Document posts
postType: "document" with a PDF:
{
"platform": "linkedin",
"postType": "document",
"content": "Five lessons from our rebrand — swipe through the deck.",
"media": [{ "id": "med_01H...pdf" }]
}LinkedIn renders the PDF as a swipeable carousel inline. Each page becomes a slide. Pages 11+ are accessible via "see all" but only the first 10 are preloaded; keep important content early.
Hashtags and mentions
- Hashtags: any
#topicis auto-linked. No explicit field. - Mentions: LinkedIn's API requires a URN (not just a username) for reliable mentions. Postato accepts
@URNin the text and resolves; raw@usernamemay or may not link depending on LinkedIn's fuzzy match. Use the URN form in automated flows.
Scheduling
Supported. No special upper bound beyond our 1-year soft limit.
Gotchas
- "Unauthorized to post as organization": the connected user isn't a page admin on that company page. Check on linkedin.com/company/your-org/admin.
- Video processing delay: LinkedIn transcodes uploaded videos before making them visible. Expect 1–5 minutes after
publishwebhook fires before the video appears in feeds. - No story / reel equivalent: LinkedIn doesn't expose stories or reels via API. Don't send
postType: "story"or"reel"; it'll fail validation. - Analytics split: engagement data for personal vs company accounts sits in different LinkedIn endpoints. If you're reading back metrics (not via Postato yet), the account type matters.
- Character truncation in previews: the first 140 characters of your post appear in LinkedIn email digests. Put your strongest line there.