How to Migrate from LINE Mark as Read API (Old) Before October 2026
To migrate from LINE’s Mark as read API (old), capture markAsReadToken from each Messaging API webhook message event and send it to POST https://api.line.me/v2/bot/chat/markAsRead. The new endpoint requires no separate application and can work with the Official Account chat feature. LINE will stop accepting new applications for the old API at the end of October 2026, but existing users are not being switched off on that date.
Key takeaways
- LINE announced on May 18, 2026 that applications for the old corporate API will close at the end of October 2026; current users may continue after the application window closes.
- The recommended Messaging API endpoint takes an opaque
markAsReadTokenfrom a webhook message event, not a user ID generated by your application. POST /v2/bot/chat/markAsReadmarks the specified message and all earlier messages as read, so processing order and the moment you acknowledge the conversation matter.- The new endpoint can be used with Official Account Chat. The old API cannot, which makes this a workflow migration as well as an endpoint change.
- UnifyPort can carry a separate ordinary-account inbound workflow, but it has no message-read API and cannot produce LINE’s official
markAsReadToken.
What changes in the LINE Mark as Read API migration
LINE’s May 18 notice does not announce an October shutdown. It closes new applications for the Mark as read API (old) at the end of October 2026, lets existing approved accounts continue, and says LINE is considering deprecation. LINE recommends that new implementations use the Messaging API’s Mark messages as read flow instead.
The contracts are different enough that changing only the URL is unsafe:
| Decision area | Mark as read API (old) | Messaging API markAsRead |
|---|---|---|
| Access | Corporate optional function requiring an application | No separate application |
| Chat feature | Cannot be used together with Official Account Chat | Requires Chat to be on for manual read marking |
| Input | Old API’s user-oriented contract | markAsReadToken from a webhook message event |
| Scope | Displays read status for messages from a user | Marks the token’s message and all earlier messages as read |
| Recommended for new work | No | Yes |
If Chat is off in LINE Official Account Manager, user messages are automatically marked as read. In that configuration, adding an API call solves no problem. The new endpoint is for teams that keep Chat on but want their backend to control when the read status appears.
How to migrate to POST /v2/bot/chat/markAsRead
1. Define what “read” means in your support workflow
Choose the business event that deserves a user-visible read receipt: accepted into the queue, opened by an agent, or assigned to an automated handler. Do not automatically equate “webhook delivered” with “a person read the message.” Write the choice down before changing code, because the endpoint can acknowledge more than one pending message at once.
Inventory every old-API caller, retry job, Official Account, and environment. Record whether Chat is currently enabled. The old API documentation says enabling the old function disables automatic read behavior and prevents using Chat at the same time, so the current account setting is part of the migration state.
2. Capture the webhook read token as an opaque value
When a user sends a message to a LINE Official Account, the Messaging API message event can contain message.markAsReadToken. LINE says the token has no expiration date, but the reference marks it as not always included. Treat absence as a supported branch: log it and leave the conversation unread rather than inventing a token or deriving one from message.id.
Store the token with the webhook event ID, message ID, conversation owner, received time, and your processing state. Keep it out of analytics labels and client-side logs. The token is an action credential from LINE’s webhook contract, even though it is not a channel access token.
3. Call the Messaging API endpoint
Use the latest token that matches the point your workflow has actually processed:
curl -X POST "https://api.line.me/v2/bot/chat/markAsRead" \
-H "Authorization: Bearer ${LINE_CHANNEL_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"markAsReadToken":"30yhdy232..."}'
The official reference documents a 200 response with an empty JSON object, a 400 response for an invalid read token, and a rate limit of 2,000 requests per second. A successful call marks all messages sent before the specified message as read, not only one row in your database.
4. Preserve ordering and retry boundaries
Process read acknowledgements per conversation. If message B is newer than message A, acknowledging B also covers A. A global worker that races tokens from the same conversation can therefore make the UI look read before an earlier internal task has finished.
Persist the intended acknowledgement state before calling LINE, then persist the response. Treat 400 as a contract or data error that needs investigation. For timeouts or server failures, follow LINE’s current common retry guidance and cap retries; do not turn every error into an unlimited loop. Keep enough evidence to answer which token was attempted and which business event triggered it.
5. Cut over with an account-level acceptance test
Use a non-production Official Account or controlled test conversation. With Chat on, verify this sequence:
- a user message creates a webhook event containing
markAsReadToken; - no read status is shown before your chosen workflow checkpoint;
- the new endpoint returns
200at that checkpoint; - the current and earlier messages show as read;
- a missing or invalid token does not cause a later message to be acknowledged accidentally;
- Official Account Chat still works after the migration.
Remove the old caller only after the new path and the human-chat path pass. Existing old-API users have time to stage this safely; October is the application cutoff, not a reason for an untested one-night switch.
Where UnifyPort fits
The official markAsReadToken flow belongs to LINE Official Accounts and the Messaging API. Use it when the user’s LINE client must show the official read state.
UnifyPort addresses a different requirement: a connected ordinary LINE account can deliver supported inbound conversations as a normalized message.received event, using the same envelope as WhatsApp, Telegram, TikTok, Zalo, and X. If the webhook endpoint has a signing_secret, delivery uses X-Device-Timestamp and X-Device-Signature for HMAC-SHA256 verification.
That event does not contain LINE’s official markAsReadToken. UnifyPort’s current documentation also states that it has no message-read API. Keep the Official Account receipt worker and the UnifyPort inbound worker as separate capabilities instead of passing tokens or assumptions between them.
For the surrounding options, read how to receive LINE messages without an Official Account and why LINE analytics polling is not an inbound router.
Limitations and trade-offs
Use the official Messaging API when you need Official Account identity, Chat, official read receipts, rich menus, audience tools, or other LINE-native controls. The new markAsRead endpoint is the supported path for that read-receipt requirement.
An unofficial interface cannot grant Official Account features, change LINE’s application policy, or mark an Official Account conversation as read. It also should not claim that backend receipt equals human attention. If your team only needs a cross-channel inbound queue, evaluate that separately; if the LINE UI must display “Read,” keep the official endpoint in the architecture.
FAQ
Is the LINE Mark as read API (old) shutting down in October 2026?
No shutdown is announced for that date. LINE will stop accepting new applications at the end of October 2026, while already approved accounts may continue. LINE says it is considering deprecation and recommends migration.
Does the new LINE markAsRead endpoint require an application?
No. LINE says POST /v2/bot/chat/markAsRead requires no separate application. It uses a channel access token and a markAsReadToken received in a Messaging API webhook message event.
Can markAsRead work with LINE Official Account Chat?
Yes. Chat must be on for manual read marking with the Messaging API. If Chat is off, incoming user messages are automatically marked as read.
Does markAsReadToken expire?
LINE currently says read tokens have no expiration date. Still store them only as long as your operational and data-retention policy requires, and use the token associated with the workflow checkpoint you are acknowledging.
Can UnifyPort mark a LINE Official Account message as read?
No. UnifyPort can deliver supported inbound messages for a connected LINE account, but it has no message-read API and does not supply the Messaging API’s official markAsReadToken.
Next step
Map your old caller to the official Mark messages as read guide and run the six-step acceptance test on a controlled Official Account. If your separate need is ordinary-account inbound routing, review UnifyPort’s LINE authorization guide before designing that second path.
Sources
Official LINE sources checked on July 25, 2026: