A WhatsApp connection depends on an access token. The token can expire or be revoked. The phone number, the account, and your templates cannot. This page explains when each connection method is safe from expiry and what Kylo does when a token stops working.

Which connections Kylo keeps alive

Meta warns that token lifetimes can change without notice and that tokens can expire early. Do not plan around exactly 60 days.

The daily sweep

Kylo runs a sweep every day at /api/cron/whatsapp-tokens. It scans connections whose recorded expiry is inside the next 14 days or already past.
  1. For each one, Kylo exchanges the stored token for a fresh long-lived token through Meta’s fb_exchange_token grant, while the old token is still valid. A successful exchange stores the new token and its new expiry. You see nothing.
  2. If Meta rejects the token as invalid, the exchange cannot recover it. Kylo sets the connection status to Disconnected.
  3. If the exchange fails for another reason, such as a Meta outage, Kylo leaves the connection as it is and tries again on the next sweep.
The token expiry timeline: a long-lived token lasts about 60 days, Kylo refreshes inside the 14 day window, and a dead token marks the connection Disconnected
The sweep only reads connections that have a recorded expiry. A connection made with the Access token tab has none, so the sweep never touches it, and an expired token there is found when a send fails.

What you see when a token dies

  • The Status row on the WhatsApp page, Connection tab reads Disconnected after the sweep marks it. The WhatsApp card on Channels still shows Manage.
  • Before the sweep runs, or for an access token connection, nothing marks it. Sends fail and the receipt keeps Meta’s error, typically error 190 “Access token expired”. See Send errors.

What does not expire

The access token is the only part that expires. The WhatsApp account, the phone number registration, the webhook subscription at Meta, and your templates are unaffected. Reconnecting restores sending without recreating them.

Fix a dead token

  1. Open Channels, then Manage on the WhatsApp card, and select Disconnect.
  2. Select Connect and run Facebook login again, or paste a new token on the Access token tab.
Templates and conversations stay, so nothing needs to be rebuilt.

A token that does not expire

Meta documents System User tokens as long-lived, with an expiration preference you choose when you generate the token, so a never-expiring credential is possible. Generate it in Meta Business Settings and connect with the Access token tab. Kylo then cannot warn you about expiry, because it records none. See Connect with an access token.

Sources