Saiba no mesmo instante se um post foi publicado ou não
Registre uma URL uma vez e FoPost a chama sempre que uma entrega é concluída. Cada evento traz o id do post, a conta, a plataforma, o permalink ou o texto do erro, para o seu sistema reagir sem polling.
curl -X POST https://api.fopost.com/v1/webhooks \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workspaceId": "9b2f6c1e-...",
"url": "https://yourbrand.com/hooks/social",
"events": ["delivery.published", "delivery.failed", "post.published", "post.failed"]
}'Dispara na conclusão
Um evento por entrega em cada conta, enviado assim que a rede confirma ou rejeita.
Assinado
Cada solicitação traz um cabeçalho de assinatura para você verificar que veio de nós.
Com novas tentativas
Uma resposta diferente de 2xx é repetida com backoff antes de o evento ser descartado.
Eventos que cobrem todo o ciclo de publicação
delivery.published dispara quando uma rede aceita a entrega de uma conta e inclui o permalink. delivery.failed dispara quando a publicação não vai acontecer e inclui o texto de erro da plataforma. post.published e post.failed disparam uma vez por post, depois que todas as contas forem concluídas.
Ler a referência de webhooks{
"event": "delivery.published",
"data": {
"postId": "7d3e0a52-...",
"postAccountId": "a3c5e7f9-...",
"accountId": "4a71d80b-...",
"platform": "linkedin",
"externalUrl": "https://linkedin.com/feed/update/..."
},
"timestamp": "2026-09-01T09:00:07Z"
}delivery.published
O permalink, pronto para guardar ou usar como link no seu CMS.
delivery.failed
A própria mensagem de erro da rede, para você corrigir a causa em vez de adivinhar.
Por espaço de trabalho
Um webhook pertence a um espaço de trabalho e só vê os posts desse espaço de trabalho.
Confirme a autenticidade do payload antes de agir
Cada solicitação é assinada com o segredo retornado quando você cria o webhook. Calcule a assinatura sobre o corpo bruto, compare com o cabeçalho e rejeite o que não corresponder. Responda 2xx rapidamente e faça o trabalho depois.
Ver a verificação de assinaturaapp.post('/hooks/social', async (req, res) => {
const signature = req.header(SIGNATURE_HEADER) // header name is in the docs;
if (!verify(req.rawBody, signature, process.env.WEBHOOK_SECRET)) {
return res.status(401).end();
}
const { event, data } = req.body;
await queue.add(event, data);
res.status(200).end();
});Cabeçalho de assinatura
Verifique com o segredo recebido na criação. Para trocá-lo, recrie o webhook.
Com timestamp
timestamp permite ignorar repetições antigas e ordenar os eventos corretamente.
Idempotente por id
As novas tentativas trazem o mesmo id de evento, então é fácil descartar uma entrega duplicada.
Crie, liste e remova endpoints por código
Webhooks são objetos simples da API. Crie um por ambiente, liste-os para auditar o que está registrado e exclua os que não precisa mais. Aponte para uma URL de staging durante o desenvolvimento e troque para produção com uma chamada.
Comece a construir
Listar endpoints
GET /v1/webhooks mostra cada URL e os eventos que ela assina.
Por ambiente
Registre uma URL separada para staging, assim os posts de teste nunca chegam à produção.
Escopo webhooks
O gerenciamento de endpoints tem escopo próprio. Uma chave apenas de publicação não pode adicionar um.
Perguntas sobre Webhooks, respondidas
Quais eventos estão disponíveis?
Como verifico um webhook?
E se o meu endpoint estiver fora do ar?
Posso receber eventos de apenas uma conta?
Posso testar sem publicar de verdade?
Preciso mesmo de webhooks?
Comece a construir com Webhooks hoje
Começar é grátis e a API completa está incluída. Crie uma chave e faça sua primeira chamada em minutos.
Obtenha sua chave de API