LINE: como funciona a entrega de webhooks

O LINE dá 2 segundos ao servidor do bot, e o reenvio vem desligado. O que está verificado, o que o LINE omite e um verificador Node para x-line-signature.

Comportamento de entrega

Lido na documentação do próprio provedor, verificado pela última vez em 2026-08-06. Onde o provedor não informa um número, esta tabela também não traz nenhum.

Prazo de resposta2 s

Conta como request_timeout quando o servidor do bot não responde em até 2 segundos

Verifique se seu handler responde a tempo

Novas tentativasReenvio de webhooks, desativado por padrão (ative nas configurações da Messaging API do canal); quantidade e intervalo não divulgados
DesistePode suspender o envio de webhooks se o servidor do bot continuar falhando em recebê-los; limite não publicado
Fontehttps://developers.line.biz/en/docs/messaging-api/receiving-messages/

Assinatura

Verificada com um verificador funcional, comprovado por uma suíte de testes, e não lida na documentação. Última verificação em 2026-08-20.

AlgoritmoHMAC-SHA256
Payload assinadoraw body
Codificaçãobase64
Cabeçalhox-line-signature = base64
Tolerâncianenhuma exigida

Verifique a assinatura

O corpo bruto da requisição, byte a byte, antes de qualquer parsing de JSON. Todos os esquemas desta página quebram no momento em que um framework serializa o payload de novo.

const crypto = require("node:crypto");

// base64(HMAC-SHA256(channel secret, raw body))
const expected = crypto
  .createHmac("sha256", channelSecret) // Messaging API → Basic settings
  .update(rawBody)
  .digest("base64");
const received = Buffer.from(req.headers["x-line-signature"] ?? "");
const wanted = Buffer.from(expected);
// timingSafeEqual throws on a length mismatch, so check that first.
const valid =
  received.length === wanted.length && crypto.timingSafeEqual(received, wanted);

Armadilhas

O reenvio existe, mas vem desativado: é preciso ativá-lo nas configurações da Messaging API do canal, e o LINE não divulga a quantidade nem o intervalo. Até você ativar, cada entrega com falha é uma mensagem perdida.

O LINE pode suspender totalmente o envio de webhooks se o servidor do bot continuar falhando em receber, e o limite não é publicado. Um relay que responde em cerca de um segundo e só recusa o que não consegue armazenar tira a maior parte dessa variável da equação.

Leia também

O AnyHook fica entre LINE e seus endpoints: responde em cerca de um segundo, tenta de novo segundo um cronograma próprio quando seu servidor está fora do ar e guarda cada evento disponível para replay. Troque uma URL e mantenha seu código.

Como funciona →