Publicar no LinkedIn é uma única chamada POST https://api.linkedin.com/rest/posts, com a URN da publicação criada retornada no cabeçalho de resposta x-restli-id, não no corpo. Mídia funciona registrando um envio primeiro, enviando os bytes e depois referenciando a URN retornada. As complicações são o modelo de permissões e o versionamento mensal da API do LinkedIn.
O que a Posts API consegue publicar, e o que ela não consegue?
Para publicações orgânicas (não patrocinadas), a tabela de tipos de conteúdo do LinkedIn é explícita.
| Tipo de conteúdo | Suporte orgânico |
|---|---|
| Somente texto | Sim |
| Imagens | Sim |
| Vídeos | Sim |
| Documentos (PDF, DOC, DOCX, PPT, PPTX) | Sim |
| Artigo | Sim |
| MultiImage | Sim |
| Enquete | Sim |
| Carrossel | Não, apenas patrocinado |
Publicações de documentos são a surpresa boa: carrosséis em PDF, o formato que performa bem no LinkedIn, têm suporte total pela Documents API. Os limites são um arquivo de no máximo 100 MB e no máximo 300 páginas. Publicações de carrossel orgânico, no sentido de anúncios do LinkedIn, não são suportadas; o equivalente orgânico é o MultiImage. Publicações de artigo não raspam a URL automaticamente para você, então é preciso fornecer o título, a descrição e uma URN de imagem de miniatura você mesmo.
A lacuna estrutural é a divisão de permissões. Publicar como pessoa precisa de w_member_social. Publicar como página de empresa precisa de w_organization_social, com r_organization_social para leitura de volta, e o membro autenticado precisa ter um papel de ADMINISTRATOR, CONTENT_ADMIN ou DIRECT_SPONSORED_CONTENT_POSTER nessa página. Na prática, são produtos de API diferentes com solicitações de acesso separadas, e é por isso que uma ferramenta que publica tanto em um perfil quanto em uma página acaba mantendo dois apps LinkedIn separados. A nossa própria integração faz exatamente isso.
Nota: os números aqui foram verificados na documentação da Posts API, Images API e Documents API do LinkedIn no Microsoft Learn, em setembro de 2026. As plataformas mudam esses dados sem aviso.
Como funciona a autenticação, e quanto tempo leva a revisão de acesso?
OAuth de três pernas para obter um token de membro, e então toda solicitação carrega três cabeçalhos: Authorization: Bearer, X-Restli-Protocol-Version: 2.0.0, e LinkedIn-Version no formato AAAAMM. Esse último não é opcional e não é permanente. O LinkedIn lança versões mensais e descontinua as antigas, com um aviso de descontinuação atualmente na página informando que a Marketing Version 202508 será descontinuada em 17 de agosto de 2026. Uma versão que você fixou no ano passado vira uma indisponibilidade.
O acesso aos produtos de gestão de comunidade é concedido por aplicação. O LinkedIn não publica um prazo de revisão nessa documentação para desenvolvedores, então trate a duração como desconhecida. Note também que r_member_social é uma permissão restrita “disponível apenas para usuários aprovados”, então ler as próprias publicações de um membro de volta é um pedido separado de escrevê-las.
Não conseguimos verificar os tempos de vida do token de acesso do LinkedIn nas páginas das APIs Posts, Images ou Documents, que não os declaram. Leia o número atual na própria documentação de autenticação do LinkedIn em vez de um número em um post de blog, incluindo este.
Qual é a sequência de chamadas de publicação?
Para uma publicação de texto é uma chamada. Para mídia são três:
POST /rest/images?action=initializeUpload(ou/rest/documents?action=initializeUpload) com uminitializeUploadRequest.ownerdefinido como a URN da pessoa ou organização.- Leia
uploadUrle a URN do recurso (imageoudocument) no objetovalueda resposta. - Envie os bytes para
uploadUrl. Um envio de documento bem-sucedido retorna 201. POST /rest/postscomauthor,commentary,visibility,distribution,lifecycleState: "PUBLISHED", econtent.media.iddefinido como a URN do recurso.- Leia a URN da publicação criada no cabeçalho de resposta
x-restli-iddo 201. Ela não está no corpo.
# 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
}'
Os recursos têm seu próprio campo de status: WAITING_UPLOAD, PROCESSING, PROCESSING_FAILED ou AVAILABLE. Referenciar um que ainda não chegou a AVAILABLE é uma causa comum de uma publicação que sai sem a mídia.
Quais são os limites de taxa?
A tabela de erros da Posts API do LinkedIn documenta 429 TOO_MANY_REQUESTS com a orientação de reduzir a frequência de solicitações e tentar novamente após um atraso, mas a página não informa números específicos por app ou por membro. Não conseguimos verificar números concretos de limitação nas páginas das APIs Posts, Images ou Documents. O LinkedIn publica limites diários no nível de aplicação e de membro no portal para desenvolvedores para o seu próprio app, que é a única fonte precisa para sua cota, então leia lá em vez de presumir um número compartilhado.
Dois limites são declarados de forma concreta e vale a pena projetar em torno deles: documentos têm limite de 100 MB e 300 páginas, e imagens precisam ter menos de 36.152.320 pixels, em JPG, GIF ou PNG, com GIFs limitados a 250 quadros.
Nota: os números aqui foram verificados na documentação da Posts API, Images API e Documents API do LinkedIn no Microsoft Learn, em setembro de 2026. As plataformas mudam esses dados sem aviso.
O que realmente vai custar três semanas?
Dois apps, duas revisões. Publicação em perfil pessoal e publicação em página de empresa são produtos separados com aprovações separadas. Se seu produto promete os dois, você está rodando dois fluxos OAuth, dois conjuntos de credenciais e dois processos de revisão, e um pode ser aprovado enquanto o outro não.
Versionamento mensal. LinkedIn-Version precisa de um plano: um aumento agendado, um teste que exercita a versão atual e alguém que leia os avisos de descontinuação. Esse é o custo de manutenção que as pessoas esquecem quando estimam a construção.
Pipeline de mídia. Envio em duas etapas para imagens, documentos e vídeo, cada um com seu próprio endpoint e seu próprio status de recurso para aguardar, além de validação de formato e tamanho antes de desperdiçar um envio.
Assíncrono e falha parcial. Um 201 de /rest/posts é a confirmação mais forte que qualquer uma das grandes plataformas dá, mas a etapa de recurso antes dela é assíncrona, e lifecycleState pode voltar como PUBLISH_FAILED, exigindo uma edição para tentar novamente. Modele um estado processing, como abordado em nosso guia de API de agendamento de redes sociais, e nunca reporte sucesso apenas com base na chamada de envio.
Se você também estiver redigindo o texto, o contador de caracteres do LinkedIn mostra onde cai o corte do “ver mais”.
A versão resumida
- Uma chamada
POST /rest/posts; a URN da publicação volta emx-restli-id, não no corpo. - Mídia precisa de
initializeUpload, um envio e então a URN do recurso emcontent.media.id. - Documentos (PDF e arquivos do Office) são suportados organicamente, até 100 MB e 300 páginas.
- Perfis pessoais e páginas de empresa usam permissões diferentes e, na prática, dois apps.
LinkedIn-Versioné obrigatório e as versões são descontinuadas. Agende os aumentos.
Fazer isso uma vez em vez de uma vez por plataforma
Se o LinkedIn é uma entre várias redes que você precisa cobrir, o trabalho por plataforma se multiplica em vez de somar. O BulkPublish publica em 15 plataformas por uma única API REST, incluindo perfis pessoais e páginas de empresa do LinkedIn (ambos os apps, ambas as revisões, já feitos) e publicações de documento do LinkedIn. Cabeçalhos de versão, verificação de recursos e renovação de token ficam do nosso lado, e uma publicação direcionada a várias redes reporta partial quando uma delas falha, em vez de fingir que deu certo. A referência da API está em /developers/ e a visão geral da integração REST em /integrations/rest-api/.