Skip to main content

Quick reference

Before you start

LinkedIn ships two distinct multi-image experiences with very different reach. Postbreeze exposes both:
  • Photo gallery (MultiImage) — 2–20 images in a swipeable gallery. Lighter feed treatment.
  • Document carousel (PDF) — your images composited into a single PDF that LinkedIn renders as a full-bleed slide deck. Typically 1.5–3× the organic reach of MultiImage posts.
Pick via postAsPdfCarousel: true | false on the platform options. See platform settings → LinkedIn Personal and LinkedIn Company.
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.
The _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 — no workspaceId argument. All examples use the flat shape (content + platforms); the nested shape at the bottom is equivalent and accepted by the same endpoint.
SDK
For details on 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. Send 2–20 images. Per-image alt text is supported via altText on each mediaItem.
Send 2+ images and postAsPdfCarousel: 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 from postAsPdfCarousel (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.
PDFs only work on LinkedIn. Cross-posting a type: "document" item to any non-LinkedIn target returns 400. Send PDFs to LinkedIn accounts only.

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

Pass firstComment 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.
Limit: 1,250 characters per LinkedIn comment (smaller than the 3,000 caption cap — surface this in your UI).

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 @Name in text but no structured tags)
  • ❌ Polls or events
  • ❌ Newsletters
  • ❌ Edit a post after publish
  • ❌ Stories (LinkedIn deprecated these)

Full control: nested shape

The targets / 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.