Publiceren naar LinkedIn is één POST https://api.linkedin.com/rest/posts-aanroep, waarbij de URN van de gemaakte post terugkomt in de x-restli-id-responseheader in plaats van in de body. Media werkt door eerst een upload te registreren, de bytes te uploaden en vervolgens naar de teruggegeven URN te verwijzen. De complicaties zitten in het rechtenmodel en LinkedIns maandelijkse API-versiebeheer.
Wat kan de Posts API publiceren, en wat niet?
Voor organische (niet-gesponsorde) posts is LinkedIns contenttypetabel expliciet.
| Contenttype | Organische ondersteuning |
|---|---|
| Alleen tekst | Ja |
| Afbeeldingen | Ja |
| Video’s | Ja |
| Documenten (PDF, DOC, DOCX, PPT, PPTX) | Ja |
| Artikel | Ja |
| MultiImage | Ja |
| Poll | Ja |
| Carrousel | Nee, alleen gesponsord |
Documentposts zijn de aangename verrassing: PDF-carrousels, het format dat goed presteert op LinkedIn, worden volledig ondersteund via de Documents API. De limieten zijn een bestand van maximaal 100 MB en niet meer dan 300 pagina’s. Organische carrouselposts, in LinkedIns advertentiebetekenis van het woord, worden niet ondersteund; het organische equivalent is MultiImage. Artikelposts scrapen de URL niet automatisch, dus je moet zelf de titel, beschrijving en een thumbnail-afbeeldings-URN aanleveren.
De structurele knelpunt is de rechtensplitsing. Posten als persoon vereist w_member_social. Posten als bedrijfspagina vereist w_organization_social, met r_organization_social om terug te lezen, en het geauthenticeerde lid moet een ADMINISTRATOR-, CONTENT_ADMIN- of DIRECT_SPONSORED_CONTENT_POSTER-rol op die pagina hebben. In de praktijk zijn dit aparte API-producten met aparte toegangsaanvragen, wat de reden is dat een tool die op zowel een profiel als een pagina post, twee aparte LinkedIn-apps onderhoudt. Onze eigen integratie doet precies dat.
Let op: cijfers hier zijn geverifieerd tegen de documentatie van LinkedIns Posts API, Images API en Documents API op Microsoft Learn, geldig per september 2026. Platforms wijzigen deze zonder aankondiging.
Hoe werkt authenticatie, en hoe lang duurt toegangsbeoordeling?
Three-legged OAuth voor een member-token, en daarna draagt elk verzoek drie headers: Authorization: Bearer, X-Restli-Protocol-Version: 2.0.0, en LinkedIn-Version in YYYYMM-vorm. Die laatste is niet optioneel en niet permanent. LinkedIn brengt maandelijkse versies uit en zet oude versies uit, met een deprecation notice die momenteel op de pagina staat en meldt dat Marketing Version 202508 op 17 augustus 2026 wordt uitgefaseerd. Een versie die je vorig jaar hebt vastgepind, wordt een storing.
Toegang tot de community management-producten wordt per aanvraag verleend. LinkedIn publiceert geen beoordelingstermijn in deze developer docs, dus behandel de duur als onbekend. Merk ook op dat r_member_social een beperkte permissie is die “alleen beschikbaar is voor goedgekeurde gebruikers”, dus het terugvragen van de eigen posts van een lid is een aparte aanvraag ten opzichte van het schrijven ervan.
We konden LinkedIns toegangstoken-levensduur niet verifiëren vanuit de Posts, Images of Documents API-pagina’s, die deze niet vermelden. Lees het actuele cijfer uit LinkedIns eigen authenticatiedocumentatie in plaats van een getal in een blogpost, inclusief deze.
Hoe ziet de publicatievolgorde eruit?
Voor een tekstpost is het één aanroep. Voor media zijn het er drie:
POST /rest/images?action=initializeUpload(of/rest/documents?action=initializeUpload) met eeninitializeUploadRequest.owneringesteld op de URN van de persoon of organisatie.- Lees
uploadUrlen de asset-URN (imageofdocument) uit hetvalue-object van de response. - Upload de bytes naar
uploadUrl. Een succesvolle documentupload geeft 201 terug. POST /rest/postsmetauthor,commentary,visibility,distribution,lifecycleState: "PUBLISHED", encontent.media.idingesteld op de asset-URN.- Lees de URN van de gemaakte post uit de
x-restli-id-responseheader op de 201. Die staat niet in de body.
# 1. register the upload
curl -X POST 'https://api.linkedin.com/rest/documents?action=initializeUpload' \
-H "Authorization: Bearer $TOKEN" \
-H 'X-Restli-Protocol-Version: 2.0.0' -H 'LinkedIn-Version: 202608' \
-d '{"initializeUploadRequest":{"owner":"urn:li:organization:5515715"}}'
# -> value.uploadUrl, value.document = urn:li:document:...
# 2. upload the bytes
curl -i --upload-file ./deck.pdf -H "Authorization: Bearer $TOKEN" "$UPLOAD_URL"
# 3. create the post, then read x-restli-id from the 201
curl -i -X POST 'https://api.linkedin.com/rest/posts' \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-H 'X-Restli-Protocol-Version: 2.0.0' -H 'LinkedIn-Version: 202608' \
-d '{
"author": "urn:li:organization:5515715",
"commentary": "Our Q3 teardown, 12 pages.",
"visibility": "PUBLIC",
"distribution": {"feedDistribution":"MAIN_FEED","targetEntities":[],
"thirdPartyDistributionChannels":[]},
"content": {"media": {"title":"deck.pdf","id":"urn:li:document:..."}},
"lifecycleState": "PUBLISHED",
"isReshareDisabledByAuthor": false
}'
Assets hebben een eigen statusveld: WAITING_UPLOAD, PROCESSING, PROCESSING_FAILED of AVAILABLE. Verwijzen naar een asset die AVAILABLE nog niet heeft bereikt, is een veelvoorkomende oorzaak van een post die zonder media wordt gepubliceerd.
Wat zijn de rate limits?
LinkedIns foutentabel voor de Posts API documenteert 429 TOO_MANY_REQUESTS met de aanwijzing om de verzoekfrequentie te verlagen en na een vertraging opnieuw te proberen, maar de pagina noemt geen concrete cijfers per app of per lid. We konden geen concrete throttlecijfers verifiëren vanuit de Posts, Images of Documents API-pagina’s. LinkedIn publiceert applicatie- en lidniveaudrempels per dag in het developer portal voor je eigen app, en dat is de enige nauwkeurige bron voor jouw quotum, dus lees ze daar in plaats van een gedeeld cijfer aan te nemen.
Twee limieten zijn wel concreet gesteld en de moeite waard om rekening mee te houden: documenten zijn beperkt tot 100 MB en 300 pagina’s, en afbeeldingen moeten onder de 36.152.320 pixels blijven, in JPG, GIF of PNG, met GIF’s beperkt tot 250 frames.
Let op: cijfers hier zijn geverifieerd tegen de documentatie van LinkedIns Posts API, Images API en Documents API op Microsoft Learn, geldig per september 2026. Platforms wijzigen deze zonder aankondiging.
Wat kost je écht drie weken?
Twee apps, twee beoordelingen. Posten als persoonlijk profiel en posten als bedrijfspagina zijn aparte producten met aparte goedkeuringen. Belooft je product beide, dan draai je twee OAuth-flows, twee sets credentials en twee beoordelingsprocessen, en de ene kan worden goedgekeurd terwijl de andere niet wordt goedgekeurd.
Maandelijkse versiebeheer. LinkedIn-Version heeft een plan nodig: een geplande verhoging, een test die de huidige versie doorloopt, en iemand die de deprecation notices leest. Dit is de onderhoudskost die mensen vergeten wanneer ze de bouw inschatten.
Mediapipeline. Tweestapsupload voor afbeeldingen, documenten en video, elk met een eigen endpoint en een eigen assetstatus om op te wachten, plus formaat- en groottevalidatie voordat je een upload verspilt.
Async en gedeeltelijke fouten. Een 201 van /rest/posts is de sterkste bevestiging die alle grote platforms je geven, maar de assetstap ervoor is asynchroon, en lifecycleState kan terugkomen als PUBLISH_FAILED, wat een bewerking vereist om opnieuw te proberen. Modelleer een processing-status, zoals behandeld in onze gids voor social media inplannen via API, en meld nooit succes op basis van alleen de uploadaanroep.
Als je ook de tekst schrijft, laat de LinkedIn-tekenteller zien waar de “meer weergeven”-afkapping valt.
De korte versie
- Eén
POST /rest/posts-aanroep; de post-URN komt terug inx-restli-id, niet in de body. - Media vereist
initializeUpload, een upload, en daarna de asset-URN incontent.media.id. - Documenten (PDF en Office-bestanden) worden organisch ondersteund, tot 100 MB en 300 pagina’s.
- Persoonlijke profielen en bedrijfspagina’s gebruiken verschillende rechten en, in de praktijk, twee apps.
LinkedIn-Versionis verplicht en versies worden uitgefaseerd. Plan de updates in.
Dit één keer doen in plaats van per platform
Als LinkedIn een van meerdere netwerken is die je nodig hebt, telt het werk per platform op in plaats van bij elkaar op te tellen. BulkPublish publiceert naar 15 platforms via één REST API, inclusief LinkedIn-persoonlijke profielen en bedrijfspagina’s (beide apps, beide beoordelingen, al gedaan) en LinkedIn-documentposts. Versieheaders, asset-polling en tokenvernieuwing zitten aan onze kant, en een post die meerdere netwerken target meldt partial als er één misgaat, in plaats van te doen alsof het gelukt is. De API-referentie staat op /developers/ en het REST-integratieoverzicht op /integrations/rest-api/.