Quick reference
Connect an account
POST /v1/accounts/connect/linkedin. OAuth 2.0, three-legged. After the callback the provider calls /v2/userinfo to mint a stable urn:li:person:{id} author URN, stored on tokenMetadata.authorUrn. That URN is what posts.author carries on every publish.
Scopes
Until MDP clears for your app,
extended org scopes are off by default and any attempt to post against an org URN fails preflight.
Version pinning
LinkedIn sunset five API versions in six months from 2024 – 2025. letmepost pins a single version on theLinkedin-Version header and upgrades internally; the public version tracker (GET /v1/platform-versions) shows the current pin and any in-flight migration. When LinkedIn announces a sunset, version.deprecated fires on the affected accounts.
Token lifecycle
LinkedIn tokens last 60 days with no refresh — re-auth is mandatory at expiry. letmepost firestoken.expiring seven days ahead so you can prompt the user.
Post types
Text post
text.json
Wisdom (platform-specific things that bite)
Common errors
What you can’t do (yet)
- Organization / Company Page posts (requires MDP).
- Image, video, multi-image, or document posts (media slice deferred).
- Polls.
- First comment / threaded replies as the author.
- Mentions of other LinkedIn members (requires the v2 entity resolution surface).
- Reading post engagement, comments, or impressions.
- Scheduling via LinkedIn’s own scheduled-post API —
scheduledAtruns in letmepost’s queue instead.
API reference
POST /v1/posts— primary publish.POST /v1/accounts/connect/linkedin— start a LinkedIn OAuth flow.GET /v1/platform-versions— current pinned LinkedIn API version + migration state.

