LINE error 429: Too Many Requests (rate limit)
Last verified against LINE Developers - Messaging API reference (error responses)
The API rate limit has been exceeded. Try again later.What error 429 means
You sent requests faster than the endpoint's documented rate limit allows. The error messages table maps the body string directly: "The API rate limit has been exceeded. Try again later" means you "exceeded the rate limit for requests." But 429 on LINE is an overloaded status - the status codes table lists four distinct causes: the per-endpoint rate limit, the limit on concurrent audience operations, exceeding your free messages, and exceeding your configured cap of additional paid messages. Always read the body: quota exhaustion says You have reached your monthly limit. and needs a completely different response than throughput throttling.
The limits are per endpoint, per channel. The headline numbers from the reference: most endpoints - including reply and push - allow 2,000 requests per second; multicast allows 200 per second; broadcast and narrowcast allow 60 per hour; audience management runs at 60 per minute; the webhook settings endpoints at 1,000 per minute; rich menu create/delete at 100 per hour, the batch rich menu link at 3 per hour, and issuing short-lived tokens at 370 per second (full table at rate limits). The scope rules are documented too: the same URL with a different HTTP method is a different endpoint, parameters and IP addresses don't matter, and separate channels get independent budgets even against the same LINE Official Account.
Enforcement uses a token bucket, "rather than resetting the number of requests all at once at fixed intervals": each request spends tokens that refill gradually, short bursts can pass, and sustained overrun drains the bucket until 429s begin - then capacity returns gradually, not at the top of the minute. Notably, LINE does not document a Retry-After header or a reset timestamp, so your backoff has to be self-clocked. The push endpoint's error table also flags a subtler trigger: "a large number of messages were sent to the same user" can 429 even below the global rate.
LINE's development guidelines are blunt: "don't submit requests exceeding the rate limit." Requests refused with 429 were not processed - nothing sent, nothing charged - and are safe to retry after a delay.
What it looks like
HTTP/1.1 429 Too Many Requests
{
"message": "The API rate limit has been exceeded. Try again later."
}Why it happens
- A burst of push or reply calls beyond 2,000 requests/second on the channel - typically a fan-out loop without a limiter.
- Broadcast or narrowcast automation exceeding the 60-requests-per-hour budget for those endpoints.
- Sending one push per recipient instead of using multicast (500 recipients per request at 200 req/s).
- A large number of messages sent to the same user in a short period - documented as its own 429 trigger on push.
- Retry storms: failed requests re-queued immediately, so the retries themselves keep the bucket empty.
- Rich menu or audience tooling that treats hourly/minutely endpoints (100/hour, 3/hour, 60/min) like per-second ones.
How to fix LINE error 429
- 1Read the body first - if it says "You have reached your monthly limit." this is quota, not throughput, and waiting won't help.
- 2Back off exponentially with jitter; because refill is gradual (token bucket), immediate retries prolong the outage.
- 3Add a client-side rate limiter per endpoint per channel, matched to the documented values, in front of every LINE call.
- 4Convert per-user push loops into multicast batches of up to 500 user IDs to cut request counts by orders of magnitude.
- 5Attach X-Line-Retry-Key to push/multicast/narrowcast/broadcast retries so a request that actually got through isn't duplicated.
- 6Schedule hourly-budget operations (broadcast, narrowcast, rich menu create/delete) through a queue that enforces the hourly caps.
How to stop it recurring
Encode the rate-limit table into a shared throttling layer keyed by (channel, endpoint, method), and make bulk messaging flow through multicast rather than push loops. Alert on the first sustained 429 window and on throughput approaching budget, and keep retries idempotent with retry keys. Since separate channels have separate budgets, high-volume architectures can also legitimately partition traffic across channels.
Official reference: LINE Developers - Messaging API reference (error responses). See all LINE error codes or the LINE limits and quotas.
Related codes
Error 429 - quick answers
What does LINE error 429 mean?
You sent requests faster than the endpoint's documented rate limit allows. The error messages table maps the body string directly: "The API rate limit has been exceeded.
How do I fix LINE error 429?
1. Read the body first - if it says "You have reached your monthly limit." this is quota, not throughput, and waiting won't help. 2. Back off exponentially with jitter; because refill is gradual (token bucket), immediate retries prolong the outage. 3. Add a client-side rate limiter per endpoint per channel, matched to the documented values, in front of every LINE call. 4. Convert per-user push loops into multicast batches of up to 500 user IDs to cut request counts by…
Can I retry after error 429?
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.