API de publicação no LinkedIn para perfis e Páginas de empresa

Publique posts de texto, imagem, várias imagens e vídeo em um perfil do LinkedIn ou em uma Página de empresa que você administra, de forma agendada, a partir de um único endpoint REST. Sem precisar registrar um app de desenvolvedor do LinkedIn.

URL base https://api.so-me.studio/v1 · Autenticação X-API-Key · socialMedia: LINKEDIN_PAGE | LINKEDIN

O que você pode publicar em LinkedIn

Envie um destes valores em postType. Todo post precisa de texto, e fotos ou vídeos são anexados por fileId a partir da sua biblioteca de mídia.

TEXT

Uma atualização só com texto.

IMAGE

Uma imagem com o seu texto.

CAROUSEL

De 2 a 20 imagens em um único post com várias imagens.

VIDEO

Um vídeo nativo.

Agende um post em LinkedIn

Envie a mídia e depois crie o post. Omita scheduledAt para publicar na hora.

  1. Reserve uma URL de upload

    POST /v1/media/presign-upload adiciona o arquivo à sua biblioteca de mídia e devolve um fileId e um uploadUrl pré-assinado.

    Reserve uma URL de upload
    curl -X POST https://api.so-me.studio/v1/media/presign-upload \
      -H "X-API-Key: $SOME_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"files":[{"filename":"release-chart.png","mimetype":"image/png","size":734003}]}'
    
    # → [{ "fileId": "…", "uploadUrl": "https://…", "fileSrc": "…", "s3Key": "…" }]
  2. Envie o arquivo

    Faça um PUT dos bytes em uploadUrl com exatamente o Content-Type que você declarou. A URL é válida por uma hora.

    Envie o arquivo
    curl -X PUT "$UPLOAD_URL" \
      -H "Content-Type: image/png" \
      --upload-file ./release-chart.png
  3. Crie o post

    POST /v1/posts com o fileId. A resposta é o post com status SCHEDULED, e ele é publicado em scheduledAt por uma fila que tenta de novo em caso de falha.

    Crie o post
    curl -X POST https://api.so-me.studio/v1/posts \
      -H "X-API-Key: $SOME_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "socialMedia": "LINKEDIN_PAGE",
        "accountId": "<account id from GET /v1/accounts>",
        "postType": "IMAGE",
        "text": "Acabamos de lançar os relatórios agendados. Três gráficos mostram o que mudou.",
        "fileIds": ["<fileId>"],
        "scheduledAt": "2026-11-04T08:30:00Z",
        "firstComment": "Notas da versão: https://example.com/changelog"
      }'

accountId é opcional quando o workspace tem uma conta de LinkedIn. Caso contrário, passe um id de GET /v1/accounts.

Os arquivos anexados com fileIds são verificados contra os limites de LinkedIn abaixo antes de qualquer coisa entrar na fila. Um arquivo que viola uma regra retorna 400 com um relatório por arquivo.

Opções de LinkedIn

Os campos que mudam a forma como um post é publicado em LinkedIn.

CampoO que faz
socialMediaLINKEDIN publica em um perfil pessoal, LINKEDIN_PAGE em uma Página de empresa.
accountIdO perfil ou a Página de onde publicar, conforme listado por GET /v1/accounts. Necessário quando há mais de um conectado.
firstCommentUm comentário adicionado abaixo do post assim que ele vai ao ar, com até 1.250 caracteres. Útil para um link ou hashtags.

Limites de mídia de LinkedIn

O Social media studio verifica cada arquivo contra estes limites antes de publicar. São os limites que configuramos, não uma promessa de LinkedIn: GET /v1/media/rules devolve a tabela atual, e POST /v1/media/validate verifica um arquivo sem publicá-lo.

Tipo de post TEXT

Somente texto, sem mídia

Tipo de post IMAGE

Formatos
JPEG, PNG, WebP, GIF, HEIC
Tamanho máximo do arquivo
5 MB
Arquivos por post
1

Tipo de post CAROUSEL

Formatos
JPEG, PNG, WebP, HEIC
Tamanho máximo do arquivo
5 MB cada
Arquivos por post
2–20

Tipo de post VIDEO

Formatos
MP4, MOV
Tamanho máximo do arquivo
350 MB
Arquivos por post
1
Duração máxima
10 min
Dimensões
256 × 144 a 4096 × 2304 px
Proporção
1:2.4 a 2.4:1
Codecs de vídeo
H.264, H.265
Taxa de quadros
≤ 60 fps

Saiba quando está no ar

A publicação é assíncrona. Assine post.published e post.failed, ou consulte GET /v1/posts/:id até que postStatus seja POSTED ou FAILED.

Assine uma vez
curl -X POST https://api.so-me.studio/v1/webhooks/subscriptions \
  -H "X-API-Key: $SOME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/hooks/social",
    "categories": ["post"],
    "events": ["post.published", "post.failed"]
  }'

# The response includes the secret that signs every delivery.
Como é cada entrega
POST /hooks/social
X-Webhook-Event: post.published
X-Webhook-Signature: <hex HMAC-SHA256 of the raw body>

{
  "event": "post.published",
  "category": "post",
  "timestamp": "2026-11-03T15:00:07.412Z",
  "data": { "postId": "…", "platform": "LINKEDIN_PAGE" }
}

Toda entrega é assinada com HMAC-SHA256 em X-Webhook-Signature. post.failed é disparado após a última nova tentativa; corrija a causa e chame POST /v1/posts/:id/retry. Um primeiro comentário é reportado por conta própria, com post.first_comment_posted ou post.first_comment_failed.

Criando um agente de IA?

A mesma chave de API aciona um servidor MCP com mais de 200 ferramentas e uma CLI, para que um agente possa publicar em LinkedIn sem chamadas HTTP escritas à mão.

Servidor MCP

Adicione o servidor ao Claude, ao Cursor ou a qualquer cliente MCP com a sua chave de API. OAuth também funciona. Para LinkedIn, o agente chama estas ferramentas com os mesmos campos da requisição REST:

  • list_accounts
  • presign_media_upload
  • create_post
mcp.json
{
  "mcpServers": {
    "so-me-studio": {
      "url": "https://api.so-me.studio/mcp",
      "headers": { "X-API-Key": "sk_live_…" }
    }
  }
}

CLI

Instale com npm i -g @social-media-scheduler/cli. Ela envia os arquivos locais por você e imprime JSON, então um script ou um job de CI pode agendar um post em LinkedIn com um único comando.

so-me
so-me posts:create --platform LINKEDIN_PAGE -a <account-id> \
  --post-type IMAGE -m ./release-chart.png \
  -c "Acabamos de lançar os relatórios agendados." \
  -s 2026-11-04T08:30:00Z

O acesso à API, à CLI e ao MCP está incluído em todos os planos pagos: Lite, Creator, Standard, Advanced e Lifetime. Veja os planos e limites

Continue lendo

Guias de outras plataformas

Sim. Conecte a Página no painel como um dos administradores dela e envie socialMedia LINKEDIN_PAGE com essa Página como accountId.

Sim. Envie socialMedia LINKEDIN para publicar no perfil de membro que foi conectado.

De 2 a 20 em um post com várias imagens: envie postType CAROUSEL com os fileIds delas. Cada imagem pode ter até 5 MB.

Não. Você conecta a conta de LinkedIn uma única vez no painel do Social media studio, pelo login de LinkedIn. Os tokens ficam armazenados criptografados e são renovados do nosso lado, e o seu código envia apenas a sua chave de API do Social media studio no cabeçalho X-API-Key.

Não. Ele retorna assim que o post entra na fila. A publicação roda em um worker que tenta de novo em caso de falha, então escute post.published e post.failed, ou consulte GET /v1/posts/:id.

A API REST, a CLI e o servidor MCP estão incluídos em todos os planos pagos: Lite, Creator, Standard, Advanced e Lifetime. Lite, Creator, Standard e Advanced começam com um teste de 7 dias (cartão obrigatório), e o Lifetime é um pagamento único.

Agende uma vez.
Publique em todo lugar.

Pare de malabarismo com abas, escreva, adapte e publique em 20 plataformas a partir de um único calendário.

API do LinkedIn: agende posts de perfil e de Página