Quick reference
Before you start
Required scopes:- Personal:
openid,profile,email,w_member_social,w_member_social_feed. - Company:
w_organization_social,r_organization_social,rw_organization_admin,w_organization_social_feed.
_feed scopes were added in May 2026 for first-comment support. Accounts connected before then need to reconnect — the compose UI shows a banner.
For analytics, additional scopes may be required and gated behind LinkedIn’s Marketing Developer Platform review (multi-week process). Posting works without them.
Quick start
Workspace is inferred from your API key — noworkspaceId argument.
All examples use the flat shape (content + platforms); the
nested shape at the bottom is equivalent
and accepted by the same endpoint.
SDK
mediaItems vs. pre-uploaded mediaIds, see media uploads.
Content types
Personal post
platform: "LINKEDIN_PERSON". Works for text-only, single image, single video, MultiImage gallery (2–20 images), PDF document, or PDF carousel (composited from images).
Company page post
platform: "LINKEDIN_COMPANY". Same supported shapes as Personal. The connected account must be on the workspace whose Company Page the user administers — the OAuth flow fans out one row per Page the user can post to. Company actors always render publicly server-side regardless of visibility.
MultiImage gallery (2–20 images)
Send 2–20 images. Per-image alt text is supported viaaltText on each mediaItem.
Document carousel (composited from images)
Send 2+ images andpostAsPdfCarousel: true. Postbreeze composites the images into a single PDF and uploads as a document — LinkedIn renders it as a swipeable slide deck. pdfCarouselTitle is required and shows under the carousel (≤ 100 chars).
Real PDF document
Attach an actual PDF — LinkedIn renders it as a swipeable carousel natively. This is separate frompostAsPdfCarousel (which composites images into a synthetic PDF); here you’re uploading a real document. Use type: "document" in mediaItems, or pass a med_… id from a presigned PDF upload via mediaIds.
Video
platform: "LINKEDIN_PERSON" (or LINKEDIN_COMPANY) with a single video mediaItem.
Media requirements
Images
Videos
Documents
Platform-specific fields
See platform settings for the canonical schema reference.Personal — #linkedin-personal
Company — #linkedin-company
First comment
PassfirstComment on the platform entry. Postbreeze waits 8 seconds after the main post (LinkedIn enforces a per-member 1-minute throttle on create-actions) and then posts as the same author. Supported on both Personal and Company.
Analytics
The Postbreeze analytics page detects when these scopes are missing and shows an “approval pending” banner instead of fake zeros.
Common errors
What you can’t do
- ❌ Schedule via LinkedIn’s native scheduler
- ❌ Mix image + video in one post
- ❌ Multi-video posts (1 video max)
- ❌ Image-in-first-comment (separate flow, deferred to v2)
- ❌ Tag specific users via API (you can include
@Namein text but no structured tags) - ❌ Polls or events
- ❌ Newsletters
- ❌ Edit a post after publish
- ❌ Stories (LinkedIn deprecated these)
Full control: nested shape
Thetargets / socialAccountId / caption / scheduledAt / mediaIds shape is the original API surface and remains fully supported. Use whichever you prefer — both go to the same POST /api/v1/posts endpoint.