Blog

· 3 min de leitura

Agende posts nas redes com uma API: X, LinkedIn e Bluesky em uma chamada

Um guia prático para agendar posts no X, no LinkedIn e no Bluesky via código, com fuso horário, novas tentativas e webhooks resolvidos para você.

Se você está colocando agendamento em um produto — um CMS, uma ferramenta de newsletter ou um assistente de conteúdo com IA — logo descobre que cada rede resolve isso de um jeito. Algumas têm um agendamento nativo limitado, outras não têm nenhum, e cada uma tem a própria autenticação, os próprios limites e os próprios modos de falha.

A resposta de sempre é guardar o post, rodar um job na hora certa e chamar cada API. Aí o agendador, a política de novas tentativas, a renovação de tokens e os erros que o usuário vê passam a ser seus.

Existe um caminho mais curto.

A versão de uma requisição

bash
curl -X POST https://hapi.tools/v1/posts \
  -H "Authorization: Bearer $HAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: campaign-42-post-1" \
  -d '{
    "content": "O lançamento de inverno está no ar. Veja o que mudou 👇",
    "platforms": ["x", "linkedin", "bluesky"],
    "scheduledAt": "2026-12-01T09:00:00-03:00",
    "timezone": "America/Sao_Paulo"
  }'

O que acontece:

  1. A Hapi valida o conteúdo contra os limites reais de cada plataforma antes de aceitar. Se o texto for longo demais para o Bluesky ou para o X, você recebe o erro de validação agora, e não um post que falha às 9h.
  2. O post fica agendado para aquele instante exato, marcado com o fuso em que foi planejado.
  3. Na hora de publicar, a Hapi renova os tokens se precisar, publica em cada conta e registra o resultado de cada uma.
  4. Seu endpoint de webhook recebe um evento assinado post.published ou post.failed para cada desfecho.

Fusos horários que não pegam você de surpresa

Sempre envie scheduledAt como um timestamp ISO 8601 com offset (2026-12-01T09:00:00-03:00) ou em UTC (2026-12-01T12:00:00Z). Um horário sem offset é rejeitado com erro de validação, então um post nunca sai na hora errada por causa do relógio do servidor. Acrescente um timezone IANA, como America/Sao_Paulo, para registrar em qual horário local o post foi planejado.

Dica: deixe uma biblioteca de datas calcular o offset, para o horário de verão ficar resolvido. Com o Luxon: DateTime.fromISO("2026-12-01T09:00", { zone: "America/Sao_Paulo" }).toISO() devolve 2026-12-01T09:00:00.000-03:00, que a Hapi aceita como está.

Um texto diferente para cada rede

O LinkedIn premia posts mais longos, o Bluesky corta em 300 caracteres e o X tem os próprios limites. Use platformOptions para adaptar cada um na mesma requisição:

json
"platformOptions": {
  "linkedin": { "content": "O lançamento de inverno está no ar.\n\nAs três coisas que os clientes mais pediram: ..." },
  "bluesky": { "content": "Lançamento de inverno no ar ❄️ hapi.tools/changelog" }
}

Saiba quando algo falha

Em muita solução caseira, o post agendado falha em silêncio. A Hapi assina cada webhook com HMAC-SHA256 e tenta de novo com backoff exponencial (até 6 tentativas):

text
hapi-signature: t=1764590400,v1=5f2b...

Confira a assinatura e avise a pessoa na hora: “Seu post no LinkedIn não saiu porque a conta foi desconectada. Reconectar?”

Reagende ou cancele

Posts agendados são recursos comuns. Busque, atualize o scheduledAt ou apague por /v1/posts/{id}. O painel da Hapi também tem um calendário de arrastar e soltar, se a equipe quiser organizar na mão.

Quais plataformas estão no ar

Hoje, agendamento e publicação estão no ar no X, LinkedIn, Bluesky, Telegram, Discord e Slack. Instagram, TikTok, YouTube, Threads, Facebook, Pinterest e outras estão em modo sandbox: a mesma API, validada contra os limites reais de cada plataforma, com resultados simulados. Dá para montar e testar a interface agora e trocar para o modo real quando elas entrarem no ar.

Experimente

Crie uma chave grátis e agende seu primeiro post →

Teste tudo por 15 dias por US$ 5. O Growth traz 25 contas, 5.000 posts por mês e webhooks por US$ 49/mês. Veja os preços.