· 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
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:
- 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.
- O post fica agendado para aquele instante exato, marcado com o fuso em que foi planejado.
- Na hora de publicar, a Hapi renova os tokens se precisar, publica em cada conta e registra o resultado de cada uma.
- Seu endpoint de webhook recebe um evento assinado
post.publishedoupost.failedpara 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:
"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):
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.