LINE Messaging API · error code

LINE error unclassified: Unclassified webhook delivery error

RetryableWebhook configuration errors

Last verified against LINE Developers - Messaging API reference (error responses)

What LINE returns
unclassified

What error unclassified means

The catch-all webhook reason. LINE describes it as "An unknown error occurred that can't be categorized above," and lists three detail values: Session closed unexpectedly ("A webhook was sent to the bot server, but the connection was unexpectedly closed"), Stream closed unexpectedly ("A webhook was sent to the bot server, but the stream was unexpectedly closed"), and Unclassified webhook dispatch error ("An unclassifiable and unexpected error occurred").

The first two have something in common: the request reached your side and the connection died mid-exchange. That points at whatever sits between LINE and your process - a load balancer with an aggressive idle timeout, a proxy that resets HTTP/2 streams, a process that crashes or restarts while handling the request, or a container platform killing an instance during a deploy. LINE supports HTTP/1.0, 1.1 and 2 depending on the cipher suite, so HTTP/2 behavior in your proxy is in scope.

The third detail is genuinely opaque. If it is occasional, treat it as noise covered by redelivery; if persistent, correlate the Webhook errors timestamps (shown in UTC+9) with your access and proxy logs before contacting LINE.

What it looks like

// Webhook errors tab
Reason:  unclassified
Detail:  Stream closed unexpectedly

Why it happens

  • The app process crashed or was restarted (deploy, OOM kill, autoscaler scale-in) while a webhook was in flight.
  • A load balancer or reverse proxy closed the connection or reset the HTTP/2 stream before your app responded.
  • Proxy timeouts shorter than your handler's processing time.
  • An unidentified failure on the LINE side, reported as Unclassified webhook dispatch error.

How to fix LINE error unclassified

  1. 1Download the TSV from the Webhook errors tab and line up the Start and End times (UTC+9) with deploys, restarts, and proxy logs.
  2. 2Check proxy and load balancer logs for resets or 499-style client-closed entries at those times.
  3. 3Drain connections gracefully on deploy so in-flight webhooks complete before an instance stops.
  4. 4Answer the webhook quickly and do slow work asynchronously, which shrinks the window in which a reset can hit.
  5. 5Enable webhook redelivery so events lost to a reset are sent again, and deduplicate by webhookEventId.

How to stop it recurring

Graceful shutdown and fast acknowledgment remove most causes: the shorter the time a webhook spends on your side, the fewer chances a restart or proxy reset has to kill it. Redelivery is the safety net, but it is off by default, doesn't guarantee delivery, and can be forcibly disabled by LINE, so don't use it as your only recovery mechanism.

Official reference: LINE Developers - Messaging API reference (error responses). See all LINE error codes or the LINE limits and quotas.

Related codes

Error unclassified - quick answers

What does LINE error unclassified mean?

The catch-all webhook reason. LINE describes it as "An unknown error occurred that can't be categorized above," and lists three detail values: Session closed unexpectedly ( "A webhook was sent to the bot server, but the connection was unexpectedly closed" ), Stream closed unexpectedly ( "A webhook was sent to the bot server, but the stream was unexpectedly closed" ), and Unclassified webhook dispatch error ( "An uncl

How do I fix LINE error unclassified?

1. Download the TSV from the Webhook errors tab and line up the Start and End times (UTC+9) with deploys, restarts, and proxy logs. 2. Check proxy and load balancer logs for resets or 499-style client-closed entries at those times. 3. Drain connections gracefully on deploy so in-flight webhooks complete before an instance stops. 4. Answer the webhook quickly and do slow work asynchronously, which shrinks the window in which a reset can hit. 5. Enable webhook redelivery so…

Can I retry after error unclassified?

Yes - this is a retryable condition. Back off (start around one second and double on each attempt, with jitter) and watch for a retry-after hint from the platform before resending.

Stop debugging LINE by hand

Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.