LinkedIn

Publish text, image, video, document and article posts to a personal profile or an organization page. The platform id is linkedin. Posts are created through the versioned REST gateway; images, videos and documents are byte-uploaded, and a first comment or thread is posted as a native comment on the new post.

Supported content

  • Text — the main container’s content becomes the post commentary.
  • Image / GIF — uploaded and attached as an image; alt_text is carried through.
  • Video — multipart-uploaded in resumable ~4 MiB parts, then finalized and attached.
  • Document — a PDF/slide document attachment (set the title via documentTitle).
  • Article — a link share with an optional title, description and image thumbnail (set via articleUrl and friends).
  • First comment / thread — reply containers are posted as native comments on the post.

Limits

PropertyValue
Character limit~3,000 (post commentary)
MediaOne image, video, or document per post (first attachment used)
Video upload part size4 MiB per part (except the final part)
First comment / threadYes — native comments

Configuration fields

Set under config.linkedin. All fields are optional — a bare text/image post needs none. By default the post is authored by the connected member with PUBLIC visibility.

FieldTypeDefaultNotes
visibilitystringPUBLICOne of PUBLIC, CONNECTIONS, LOGGED_IN.
organizationIdstringPublish as this organization (the bare numeric id). Must match an organization stored on the connected account.
organizationUrnstringFull urn:li:organization:{id} author URN. Must match an allowed organization and takes precedence over organizationId.
articleUrlstringShare a link as an article instead of a media post.
articleTitlestringArticle card title.
articleDescriptionstringArticle card description.
documentTitlestringTitle shown for a document attachment.

Posting as an organization

When the member account is connected, PostFuze stores the organization URNs the grant says that member administers. You can target one of those stored pages per post by passing organizationId (or organizationUrn) in config.linkedin. Unknown or malformed organization authors are rejected before publishing.

Required scopes

Configure scopes on the BYOK network record. When none are set, PostFuze falls back to the full set below (openid, profile, email authenticate; w_member_social alone is enough to publish to a personal feed):

  • openid / profile / email — authentication & identity
  • w_member_social — create member posts & comments
  • w_member_social_feed — member feed posting
  • r_organization_social / w_organization_social — read & publish as an organization
  • w_organization_social_feed — organization feed posting
  • r_member_postAnalytics — post analytics
  • r_1st_connections_size — connection-count metric

LinkedIn does not create separate connected accounts per organization. Connect the member once; organization publishing is selected per post from the stored administered-organization allowlist.

Create a post

A text-and-image update to a LinkedIn account, with a first comment:

curl
curl https://api.postfuze.com/api/v1/posts \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "accounts": ["acct_li_01"],
    "containers": [
      {
        "content": "How we built a resumable upload pipeline that survives serverless timeouts. 🧵",
        "media": [{ "id": "media_diagram", "alt_text": "Pipeline architecture diagram" }]
      },
      { "content": "Read the full engineering deep-dive on our blog 👇 https://postfuze.com/blog/pipeline" }
    ],
    "config": { "linkedin": { "visibility": "PUBLIC" } }
  }'
201 Created
{
	"id": "post_a44c",
	"status": "queued",
	"is_draft": false,
	"default_config": { "linkedin": { "visibility": "PUBLIC" } },
	"containers": [
		{ "id": "ctr_l1", "position": 0, "role": "main", "content": "How we built a resumable upload pipeline that survives serverless timeouts. 🧵" },
		{ "id": "ctr_l2", "position": 1, "role": "first_comment", "content": "Read the full engineering deep-dive on our blog 👇 https://postfuze.com/blog/pipeline" }
	],
	"targets": [
		{ "id": "tgt_li1", "social_account_id": "acct_li_01", "platform": "linkedin", "status": "queued", "platform_post_id": null }
	]
}