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_textis 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
articleUrland friends). - First comment / thread — reply containers are posted as native comments on the post.
Limits
| Property | Value |
|---|---|
| Character limit | ~3,000 (post commentary) |
| Media | One image, video, or document per post (first attachment used) |
| Video upload part size | 4 MiB per part (except the final part) |
| First comment / thread | Yes — 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.
| Field | Type | Default | Notes |
|---|---|---|---|
visibility | string | PUBLIC | One of PUBLIC, CONNECTIONS, LOGGED_IN. |
organizationId | string | — | Publish as this organization (the bare numeric id). Must match an organization stored on the connected account. |
organizationUrn | string | — | Full urn:li:organization:{id} author URN. Must match an allowed organization and takes precedence over organizationId. |
articleUrl | string | — | Share a link as an article instead of a media post. |
articleTitle | string | — | Article card title. |
articleDescription | string | — | Article card description. |
documentTitle | string | — | Title shown for a document attachment. |
Posting as an organization
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 & identityw_member_social— create member posts & commentsw_member_social_feed— member feed postingr_organization_social/w_organization_social— read & publish as an organizationw_organization_social_feed— organization feed postingr_member_postAnalytics— post analyticsr_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 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" } }
}'{
"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 }
]
}